Commit 5ed55684 authored by dimitri's avatar dimitri

Release-1.2.18-20020927

parent 482b6bd4
DOXYGEN Version 1.2.18 DOXYGEN Version 1.2.18-20020927
Please read the installation section of the manual for instructions. Please read the installation section of the manual for instructions.
-------- --------
Dimitri van Heesch (18 September 2002) Dimitri van Heesch (27 September 2002)
DOXYGEN Version 1.2.18 DOXYGEN Version 1.2.18_20020927
Please read INSTALL for compilation instructions. Please read INSTALL for compilation instructions.
...@@ -17,4 +17,4 @@ to subscribe to the lists or to visit the archives. ...@@ -17,4 +17,4 @@ to subscribe to the lists or to visit the archives.
Enjoy, Enjoy,
Dimitri van Heesch (dimitri@stack.nl) (18 September 2002) Dimitri van Heesch (dimitri@stack.nl) (27 September 2002)
1.2.18 1.2.18-20020927
...@@ -266,11 +266,18 @@ void Wizard::saveAsFile() ...@@ -266,11 +266,18 @@ void Wizard::saveAsFile()
void Wizard::runDoxygen() void Wizard::runDoxygen()
{ {
saveFile(); saveFile();
QString s = "doxygen " + configFileName; QString orgDir = QDir::currentDirPath();
QFileInfo fi(configFileName);
// cd to the config dir
QDir::setCurrent(fi.dirPath());
// run doxygen on the config file
QString s = "doxygen \"" + fi.fileName() + "\"";
// actually run the exe
system((const char*)s); system((const char*)s);
statusBar()->message("doxygen completed: "+ configFileName, messageTimeout ); statusBar()->message("doxygen completed: "+ configFileName, messageTimeout );
hasChanged = FALSE; hasChanged = FALSE;
refreshCaption(); refreshCaption();
QDir::setCurrent(orgDir);
} }
......
...@@ -103,6 +103,7 @@ followed by the descriptions of the tags grouped by category. ...@@ -103,6 +103,7 @@ followed by the descriptions of the tags grouped by category.
\refitem cfg_full_path_names FULL_PATH_NAMES \refitem cfg_full_path_names FULL_PATH_NAMES
\refitem cfg_generate_buglist GENERATE_BUGLIST \refitem cfg_generate_buglist GENERATE_BUGLIST
\refitem cfg_generate_chi GENERATE_CHI \refitem cfg_generate_chi GENERATE_CHI
\refitem cfg_generate_todolist GENERATE_DEPRECIATELIST
\refitem cfg_generate_html GENERATE_HTML \refitem cfg_generate_html GENERATE_HTML
\refitem cfg_generate_htmlhelp GENERATE_HTMLHELP \refitem cfg_generate_htmlhelp GENERATE_HTMLHELP
\refitem cfg_generate_latex GENERATE_LATEX \refitem cfg_generate_latex GENERATE_LATEX
...@@ -459,6 +460,14 @@ followed by the descriptions of the tags grouped by category. ...@@ -459,6 +460,14 @@ followed by the descriptions of the tags grouped by category.
documentation sections, marked by \ref cmdif "\\if" \<section-label\> ... documentation sections, marked by \ref cmdif "\\if" \<section-label\> ...
\ref cmdendif "\\endif" blocks. \ref cmdendif "\\endif" blocks.
\anchor cfg_generate_deprecatedlist
<dt>\c GENERATE_DEPRECATEDLIST <dd>
\addindex GENERATE_DEPRECATEDLIST
The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or
disable (NO) the deprecated list. This list is created by
putting \ref cmddeprecated "\\deprecated"
commands in the documentation.
\anchor cfg_generate_todolist \anchor cfg_generate_todolist
<dt>\c GENERATE_TODOLIST <dd> <dt>\c GENERATE_TODOLIST <dd>
\addindex GENERATE_TODOLIST \addindex GENERATE_TODOLIST
......
...@@ -180,7 +180,8 @@ Thanks go to: ...@@ -180,7 +180,8 @@ Thanks go to:
All language maintainers for providing translations into many languages. All language maintainers for providing translations into many languages.
<li>Erik Jan Lingen of <a href="http://www.habanera.nl/">Habanera</a>, Mark <li>Erik Jan Lingen of <a href="http://www.habanera.nl/">Habanera</a>, Mark
Roddy, Paul Schwartz, Charles Duffy, Vadym Voznyuk, Philip Walton, Roddy, Paul Schwartz, Charles Duffy, Vadym Voznyuk, Philip Walton,
Dwight Browne, Andreas Fredriksson, and Karel Lindveld for donating money. Dwight Browne, Andreas Fredriksson, Karel Lindveld, and Ivan Lee
for donating money.
<li>The Comms group of <a href="http://www.symbian.com">Symbian</a> for donating <li>The Comms group of <a href="http://www.symbian.com">Symbian</a> for donating
an ultra cool <a href="http://www.psion.com/revoplus">Revo plus</a> an ultra cool <a href="http://www.psion.com/revoplus">Revo plus</a>
organizer! organizer!
......
Summary: A documentation system for C/C++. Summary: A documentation system for C/C++.
Name: doxygen Name: doxygen
Version: 1.2.18 Version: 1.2.18_20020927
Release: 1 Release: 1
Epoch: 1 Epoch: 1
Source0: ftp://ftp.stack.nl/pub/users/dimitri/%{name}-%{version}.src.tar.gz Source0: ftp://ftp.stack.nl/pub/users/dimitri/%{name}-%{version}.src.tar.gz
......
# Doxyfile 1.2.5-20010304 # Doxyfile 1.2.18
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# General configuration options # General configuration options
...@@ -10,35 +10,40 @@ OUTPUT_LANGUAGE = English ...@@ -10,35 +10,40 @@ OUTPUT_LANGUAGE = English
EXTRACT_ALL = YES EXTRACT_ALL = YES
EXTRACT_PRIVATE = YES EXTRACT_PRIVATE = YES
EXTRACT_STATIC = YES EXTRACT_STATIC = YES
EXTRACT_LOCAL_CLASSES = YES
HIDE_UNDOC_MEMBERS = NO HIDE_UNDOC_MEMBERS = NO
HIDE_UNDOC_CLASSES = NO HIDE_UNDOC_CLASSES = NO
HIDE_FRIEND_COMPOUNDS = NO
BRIEF_MEMBER_DESC = YES BRIEF_MEMBER_DESC = YES
REPEAT_BRIEF = YES REPEAT_BRIEF = YES
ALWAYS_DETAILED_SEC = NO ALWAYS_DETAILED_SEC = NO
INLINE_INHERITED_MEMB = NO
FULL_PATH_NAMES = YES FULL_PATH_NAMES = YES
STRIP_FROM_PATH = $(PWD)/ STRIP_FROM_PATH = $(PWD)/
INTERNAL_DOCS = NO INTERNAL_DOCS = NO
CLASS_DIAGRAMS = YES
SOURCE_BROWSER = YES
INLINE_SOURCES = NO
STRIP_CODE_COMMENTS = YES STRIP_CODE_COMMENTS = YES
CASE_SENSE_NAMES = NO CASE_SENSE_NAMES = NO
SHORT_NAMES = NO
HIDE_SCOPE_NAMES = NO HIDE_SCOPE_NAMES = NO
VERBATIM_HEADERS = YES VERBATIM_HEADERS = YES
SHOW_INCLUDE_FILES = YES SHOW_INCLUDE_FILES = YES
JAVADOC_AUTOBRIEF = YES JAVADOC_AUTOBRIEF = YES
MULTILINE_CPP_IS_BRIEF = NO
DETAILS_AT_TOP = NO
INHERIT_DOCS = YES INHERIT_DOCS = YES
INLINE_INFO = YES INLINE_INFO = YES
SORT_MEMBER_DOCS = YES SORT_MEMBER_DOCS = YES
DISTRIBUTE_GROUP_DOC = NO DISTRIBUTE_GROUP_DOC = NO
TAB_SIZE = 8 TAB_SIZE = 8
ENABLED_SECTIONS =
GENERATE_TODOLIST = YES GENERATE_TODOLIST = YES
GENERATE_TESTLIST = YES GENERATE_TESTLIST = YES
GENERATE_BUGLIST = YES GENERATE_BUGLIST = YES
GENERATE_DEPRECATEDLIST= YES
ALIASES = ALIASES =
ENABLED_SECTIONS =
MAX_INITIALIZER_LINES = 30 MAX_INITIALIZER_LINES = 30
OPTIMIZE_OUTPUT_FOR_C = NO OPTIMIZE_OUTPUT_FOR_C = NO
OPTIMIZE_OUTPUT_JAVA = NO
SHOW_USED_FILES = YES SHOW_USED_FILES = YES
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# configuration options related to warning and progress messages # configuration options related to warning and progress messages
...@@ -56,13 +61,23 @@ FILE_PATTERNS = *.h \ ...@@ -56,13 +61,23 @@ FILE_PATTERNS = *.h \
*.cpp \ *.cpp \
*.doc *.doc
RECURSIVE = NO RECURSIVE = NO
EXCLUDE =
EXCLUDE_SYMLINKS = NO
EXCLUDE_PATTERNS = EXCLUDE_PATTERNS =
EXAMPLE_PATH = EXAMPLE_PATH =
EXAMPLE_PATTERNS = EXAMPLE_PATTERNS =
EXAMPLE_RECURSIVE = NO
IMAGE_PATH = IMAGE_PATH =
INPUT_FILTER = INPUT_FILTER =
FILTER_SOURCE_FILES = NO FILTER_SOURCE_FILES = NO
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# configuration options related to source browsing
#---------------------------------------------------------------------------
SOURCE_BROWSER = YES
INLINE_SOURCES = NO
REFERENCED_BY_RELATION = YES
REFERENCES_RELATION = YES
#---------------------------------------------------------------------------
# configuration options related to the alphabetical class index # configuration options related to the alphabetical class index
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
ALPHABETICAL_INDEX = YES ALPHABETICAL_INDEX = YES
...@@ -73,11 +88,14 @@ IGNORE_PREFIX = Q ...@@ -73,11 +88,14 @@ IGNORE_PREFIX = Q
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
GENERATE_HTML = YES GENERATE_HTML = YES
HTML_OUTPUT = HTML_OUTPUT =
HTML_FILE_EXTENSION = .html
HTML_HEADER = HTML_HEADER =
HTML_FOOTER = HTML_FOOTER =
HTML_STYLESHEET = HTML_STYLESHEET =
HTML_ALIGN_MEMBERS = YES HTML_ALIGN_MEMBERS = YES
GENERATE_HTMLHELP = NO GENERATE_HTMLHELP = NO
CHM_FILE =
HHC_LOCATION =
GENERATE_CHI = NO GENERATE_CHI = NO
BINARY_TOC = NO BINARY_TOC = NO
TOC_EXPAND = NO TOC_EXPAND = NO
...@@ -90,6 +108,8 @@ TREEVIEW_WIDTH = 250 ...@@ -90,6 +108,8 @@ TREEVIEW_WIDTH = 250
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
GENERATE_LATEX = NO GENERATE_LATEX = NO
LATEX_OUTPUT = LATEX_OUTPUT =
LATEX_CMD_NAME = latex
MAKEINDEX_CMD_NAME = makeindex
COMPACT_LATEX = NO COMPACT_LATEX = NO
PAPER_TYPE = a4wide PAPER_TYPE = a4wide
EXTRA_PACKAGES = EXTRA_PACKAGES =
...@@ -105,12 +125,24 @@ RTF_OUTPUT = ...@@ -105,12 +125,24 @@ RTF_OUTPUT =
COMPACT_RTF = NO COMPACT_RTF = NO
RTF_HYPERLINKS = NO RTF_HYPERLINKS = NO
RTF_STYLESHEET_FILE = RTF_STYLESHEET_FILE =
RTF_EXTENSIONS_FILE =
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# configuration options related to the man page output # configuration options related to the man page output
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
GENERATE_MAN = NO GENERATE_MAN = NO
MAN_OUTPUT = MAN_OUTPUT =
MAN_EXTENSION = .3 MAN_EXTENSION = .3
MAN_LINKS = NO
#---------------------------------------------------------------------------
# configuration options related to the XML output
#---------------------------------------------------------------------------
GENERATE_XML = YES
XML_SCHEMA =
XML_DTD =
#---------------------------------------------------------------------------
# configuration options for the AutoGen Definitions output
#---------------------------------------------------------------------------
GENERATE_AUTOGEN_DEF = NO
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# Configuration options related to the preprocessor # Configuration options related to the preprocessor
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
...@@ -122,23 +154,30 @@ INCLUDE_PATH = ...@@ -122,23 +154,30 @@ INCLUDE_PATH =
INCLUDE_FILE_PATTERNS = INCLUDE_FILE_PATTERNS =
PREDEFINED = PREDEFINED =
EXPAND_AS_DEFINED = EXPAND_AS_DEFINED =
SKIP_FUNCTION_MACROS = YES
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# Configuration::addtions related to external references # Configuration::addtions related to external references
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
TAGFILES = TAGFILES =
GENERATE_TAGFILE = ../qtools_docs/qtools.tag GENERATE_TAGFILE = ../qtools_docs/qtools.tag
ALLEXTERNALS = NO ALLEXTERNALS = NO
EXTERNAL_GROUPS = YES
PERL_PATH = /usr/bin/perl PERL_PATH = /usr/bin/perl
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# Configuration options related to the dot tool # Configuration options related to the dot tool
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
CLASS_DIAGRAMS = YES
HIDE_UNDOC_RELATIONS = YES
HAVE_DOT = YES HAVE_DOT = YES
CLASS_GRAPH = YES CLASS_GRAPH = YES
COLLABORATION_GRAPH = YES COLLABORATION_GRAPH = YES
TEMPLATE_RELATIONS = YES
INCLUDE_GRAPH = YES INCLUDE_GRAPH = YES
INCLUDED_BY_GRAPH = NO INCLUDED_BY_GRAPH = NO
GRAPHICAL_HIERARCHY = YES GRAPHICAL_HIERARCHY = YES
DOT_IMAGE_FORMAT = png
DOT_PATH = DOT_PATH =
DOTFILE_DIRS =
MAX_DOT_GRAPH_WIDTH = 2048 MAX_DOT_GRAPH_WIDTH = 2048
MAX_DOT_GRAPH_HEIGHT = 2048 MAX_DOT_GRAPH_HEIGHT = 2048
GENERATE_LEGEND = YES GENERATE_LEGEND = YES
......
...@@ -790,9 +790,7 @@ void ClassDef::writeDocumentation(OutputList &ol) ...@@ -790,9 +790,7 @@ void ClassDef::writeDocumentation(OutputList &ol)
} }
ol.endTextLink(); ol.endTextLink();
ol.popGeneratorState(); ol.popGeneratorState();
ol.disable(OutputGenerator::Man);
ol.newParagraph(); ol.newParagraph();
ol.enable(OutputGenerator::Man);
} }
} }
ol.writeSynopsis(); ol.writeSynopsis();
......
...@@ -175,6 +175,7 @@ CommandMap htmlTagMap[] = ...@@ -175,6 +175,7 @@ CommandMap htmlTagMap[] =
{ "h1", HTML_H1 }, { "h1", HTML_H1 },
{ "h2", HTML_H2 }, { "h2", HTML_H2 },
{ "h3", HTML_H3 }, { "h3", HTML_H3 },
{ 0, 0 }
}; };
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
......
...@@ -1458,13 +1458,6 @@ void Config::create() ...@@ -1458,13 +1458,6 @@ void Config::create()
"Set it to YES to include the internal documentation. \n", "Set it to YES to include the internal documentation. \n",
FALSE FALSE
); );
cb = addBool(
"STRIP_CODE_COMMENTS",
"Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct \n"
"doxygen to hide any special comment blocks from generated source code \n"
"fragments. Normal C and C++ comments will always remain visible. \n",
TRUE
);
cb = addBool( cb = addBool(
"CASE_SENSE_NAMES", "CASE_SENSE_NAMES",
"If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate \n" "If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate \n"
...@@ -1784,6 +1777,13 @@ void Config::create() ...@@ -1784,6 +1777,13 @@ void Config::create()
"of functions and classes directly in the documentation. \n", "of functions and classes directly in the documentation. \n",
FALSE FALSE
); );
cb = addBool(
"STRIP_CODE_COMMENTS",
"Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct \n"
"doxygen to hide any special comment blocks from generated source code \n"
"fragments. Normal C and C++ comments will always remain visible. \n",
TRUE
);
cb = addBool( "REFERENCED_BY_RELATION", cb = addBool( "REFERENCED_BY_RELATION",
"If the REFERENCED_BY_RELATION tag is set to YES (the default) \n" "If the REFERENCED_BY_RELATION tag is set to YES (the default) \n"
"then for each documented function all documented \n" "then for each documented function all documented \n"
......
This diff is collapsed.
This diff is collapsed.
...@@ -19,8 +19,9 @@ ...@@ -19,8 +19,9 @@
#ifndef _DOCTOKENIZER_H #ifndef _DOCTOKENIZER_H
#define _DOCTOKENIZER_H #define _DOCTOKENIZER_H
#include <qcstring.h> #include <qstring.h>
#include <qlist.h> #include <qlist.h>
#include "htmlattrib.h"
enum Tokens enum Tokens
{ {
...@@ -53,24 +54,16 @@ enum Tokens ...@@ -53,24 +54,16 @@ enum Tokens
RetVal_SwitchLang = 0x1000E RetVal_SwitchLang = 0x1000E
}; };
struct Option
{
QCString name;
QCString value;
};
struct TokenInfo struct TokenInfo
{ {
TokenInfo() { options.setAutoDelete(TRUE); }
// unknown token // unknown token
char unknownChar; char unknownChar;
// command token // command token
QCString name; QString name;
// command text (RCS tag) // command text (RCS tag)
QCString text; QString text;
// comment blocks // comment blocks
...@@ -79,23 +72,23 @@ struct TokenInfo ...@@ -79,23 +72,23 @@ struct TokenInfo
int indent; int indent;
// sections // sections
QCString sectionId; QString sectionId;
// simple section // simple section
QCString simpleSectName; QString simpleSectName;
// verbatim fragment // verbatim fragment
QCString verb; QString verb;
// xrefitem // xrefitem
int id; int id;
// html tag // html tag
QList<Option> options; HtmlAttribList attribs;
bool endTag; bool endTag;
// whitespace // whitespace
QCString chars; QString chars;
}; };
// globals // globals
......
...@@ -19,7 +19,7 @@ ...@@ -19,7 +19,7 @@
%{ %{
#include <qfile.h> #include <qfile.h>
#include <qcstring.h> #include <qstring.h>
#include <qstack.h> #include <qstack.h>
#include <qdict.h> #include <qdict.h>
...@@ -36,7 +36,7 @@ static int g_commentState; ...@@ -36,7 +36,7 @@ static int g_commentState;
TokenInfo *g_token = 0; TokenInfo *g_token = 0;
static int g_inputPos = 0; static int g_inputPos = 0;
static const char *g_inputString; static const char *g_inputString;
static QCString g_fileName; static QString g_fileName;
struct DocLexerContext struct DocLexerContext
{ {
...@@ -122,69 +122,68 @@ static int computeIndent(const char *str,int length) ...@@ -122,69 +122,68 @@ static int computeIndent(const char *str,int length)
return indent; return indent;
} }
/*! converts input string \a opt into a list of Options. Each /*! converts input string \a opt into a list of Html Attributes. Each
* option is a name, value pair. The result is stored in g_token->options * attribute is a name, value pair. The result is stored in g_token->attribs
*/ */
static void parseOptions(const QCString &opt) static void parseHtmlAttribs(const char *att)
{ {
//printf("parseOptions(%s)\n",opt.data()); //printf("parseHtmlAttribs(%s)\n",opt.data());
QCString options=opt; QCString attribs=att;
g_token->options.clear(); int len = attribs.length();
int len = options.length();
char c; char c;
int i=0,startName,endName,startOption,endOption; int i=0,startName,endName,startAttrib,endAttrib;
while (i<len) while (i<len)
{ {
c=options.at(i); c=attribs.at(i);
// skip spaces // skip spaces
while (i<len && c==' ') { c=options.at(++i); } while (i<len && c==' ') { c=attribs.at(++i); }
startName=i; startName=i;
// search for end of name // search for end of name
while (i<len && c!=' ' && c!='=') { c=options.at(++i); } while (i<len && c!=' ' && c!='=') { c=attribs.at(++i); }
endName=i; endName=i;
Option *opt = new Option; HtmlAttrib opt;
opt->name = options.mid(startName,endName-startName).lower(); opt.name = attribs.mid(startName,endName-startName).lower();
// skip spaces // skip spaces
while (i<len && c==' ') { c=options.at(++i); } while (i<len && c==' ') { c=attribs.at(++i); }
if (options.at(i)=='=') // option has value if (attribs.at(i)=='=') // option has value
{ {
i++; i++;
// skip spaces // skip spaces
while (i<len && c==' ') { c=options.at(++i); } while (i<len && c==' ') { c=attribs.at(++i); }
if (options.at(i)=='\'') // option '...' if (attribs.at(i)=='\'') // option '...'
{ {
i++; i++;
startOption=i; startAttrib=i;
// search for matching quote // search for matching quote
while (i<len && c!='\'') { c=options.at(++i); } while (i<len && c!='\'') { c=attribs.at(++i); }
endOption=i; endAttrib=i;
i++; i++;
} }
else if (options.at(i)=='"') // option "..." else if (attribs.at(i)=='"') // option "..."
{ {
i++; i++;
startOption=i; startAttrib=i;
// search for matching quote // search for matching quote
while (i<len && c!='"') { c=options.at(++i); } while (i<len && c!='"') { c=attribs.at(++i); }
endOption=i; endAttrib=i;
i++; i++;
} }
else // value without any quotes else // value without any quotes
{ {
startOption=i; startAttrib=i;
// search for separator // search for separator
while (i<len && c!=' ') { c=options.at(++i); } while (i<len && c!=' ') { c=attribs.at(++i); }
endOption=i; endAttrib=i;
i++; i++;
} }
opt->value = options.mid(startOption,endOption-startOption); opt.value = attribs.mid(startAttrib,endAttrib-startAttrib);
} }
else // start next option else // start next option
{ {
} }
//printf("=====> Adding option name=<%s> value=<%s>\n", //printf("=====> Adding option name=<%s> value=<%s>\n",
// opt->name.data(),opt->value.data()); // opt->name.data(),opt->value.data());
g_token->options.append(opt); g_token->attribs.append(&opt);
} }
} }
...@@ -241,7 +240,7 @@ WORD1 [^ \t\n\r\\@<>&$#,.]+ ...@@ -241,7 +240,7 @@ WORD1 [^ \t\n\r\\@<>&$#,.]+
WORD2 "."|"," WORD2 "."|","
WORD1NQ [^ \t\n\r\\@<>&$#,."]+ WORD1NQ [^ \t\n\r\\@<>&$#,."]+
WORD2NQ "."|"," WORD2NQ "."|","
HTMLTAG "<"(("/")?){ID}({BLANK}+{ATTRIB})*">" HTMLTAG "<"(("/")?){ID}({WS}+{ATTRIB})*">"
%option noyywrap %option noyywrap
%option yylineno %option yylineno
...@@ -269,14 +268,14 @@ HTMLTAG "<"(("/")?){ID}({BLANK}+{ATTRIB})*">" ...@@ -269,14 +268,14 @@ HTMLTAG "<"(("/")?){ID}({BLANK}+{ATTRIB})*">"
%% %%
<St_Para>\r /* skip carriage return */ <St_Para>\r /* skip carriage return */
<St_Para>^{LISTITEM} { /* list item */ <St_Para>^{LISTITEM} { /* list item */
QCString text=yytext; QString text=yytext;
int dashPos = text.findRev('-'); int dashPos = text.findRev('-');
g_token->isEnumList = text.at(dashPos+1)=='#'; g_token->isEnumList = text.at(dashPos+1)=='#';
g_token->indent = computeIndent(yytext,dashPos); g_token->indent = computeIndent(yytext,dashPos);
return TK_LISTITEM; return TK_LISTITEM;
} }
<St_Para>{BLANK}*\n{LISTITEM} { /* list item on next line */ <St_Para>{BLANK}*\n{LISTITEM} { /* list item on next line */
QCString text=yytext; QString text=yytext;
text=text.right(text.length()-text.find('\n')-1); text=text.right(text.length()-text.find('\n')-1);
int dashPos = text.findRev('-'); int dashPos = text.findRev('-');
g_token->isEnumList = text.at(dashPos+1)=='#'; g_token->isEnumList = text.at(dashPos+1)=='#';
...@@ -284,12 +283,12 @@ HTMLTAG "<"(("/")?){ID}({BLANK}+{ATTRIB})*">" ...@@ -284,12 +283,12 @@ HTMLTAG "<"(("/")?){ID}({BLANK}+{ATTRIB})*">"
return TK_LISTITEM; return TK_LISTITEM;
} }
<St_Para>^{ENDLIST} { /* end list */ <St_Para>^{ENDLIST} { /* end list */
int dotPos = QCString(yytext).findRev('.'); int dotPos = QString(yytext).findRev('.');
g_token->indent = computeIndent(yytext,dotPos); g_token->indent = computeIndent(yytext,dotPos);
return TK_ENDLIST; return TK_ENDLIST;
} }
<St_Para>{BLANK}*\n{ENDLIST} { /* end list on next line */ <St_Para>{BLANK}*\n{ENDLIST} { /* end list on next line */
QCString text=yytext; QString text=yytext;
text=text.right(text.length()-text.find('\n')-1); text=text.right(text.length()-text.find('\n')-1);
int dotPos = text.findRev('.'); int dotPos = text.findRev('.');
g_token->indent = computeIndent(text,dotPos); g_token->indent = computeIndent(text,dotPos);
...@@ -302,7 +301,7 @@ HTMLTAG "<"(("/")?){ID}({BLANK}+{ATTRIB})*">" ...@@ -302,7 +301,7 @@ HTMLTAG "<"(("/")?){ID}({BLANK}+{ATTRIB})*">"
<St_Para>{SPCMD3} { <St_Para>{SPCMD3} {
g_token->name = "form"; g_token->name = "form";
bool ok; bool ok;
g_token->id = QCString(yytext).right(yyleng-6).toInt(&ok); g_token->id = QString(yytext).right(yyleng-6).toInt(&ok);
ASSERT(ok); ASSERT(ok);
return TK_COMMAND; return TK_COMMAND;
} }
...@@ -320,7 +319,7 @@ HTMLTAG "<"(("/")?){ID}({BLANK}+{ATTRIB})*">" ...@@ -320,7 +319,7 @@ HTMLTAG "<"(("/")?){ID}({BLANK}+{ATTRIB})*">"
return TK_URL; return TK_URL;
} }
<St_Para>"$"{ID}":"[^\n$]+"$" { /* RCS tag */ <St_Para>"$"{ID}":"[^\n$]+"$" { /* RCS tag */
QCString tagName(yytext+1); QString tagName(yytext+1);
int i=tagName.find(':'); int i=tagName.find(':');
g_token->name = tagName.left(i); g_token->name = tagName.left(i);
g_token->text = tagName.mid(i+1,tagName.length()-i-2); g_token->text = tagName.mid(i+1,tagName.length()-i-2);
...@@ -334,13 +333,14 @@ HTMLTAG "<"(("/")?){ID}({BLANK}+{ATTRIB})*">" ...@@ -334,13 +333,14 @@ HTMLTAG "<"(("/")?){ID}({BLANK}+{ATTRIB})*">"
} }
<St_Para>{HTMLTAG} { /* html tag */ <St_Para>{HTMLTAG} { /* html tag */
g_token->name = yytext; g_token->name = yytext;
g_token->attribs.clear();
int startNamePos=1; int startNamePos=1;
if (g_token->name.at(1)=='/') startNamePos++; if (g_token->name.at(1)=='/') startNamePos++;
int optSep = g_token->name.find(' '); int attSep = g_token->name.find(' ');
if (optSep!=-1) // tag has one or more options if (attSep!=-1) // tag has one or more options
{ {
parseOptions(g_token->name.mid(optSep+1,g_token->name.length()-optSep-2)); parseHtmlAttribs(g_token->name.mid(attSep+1,g_token->name.length()-attSep-2));
g_token->name=g_token->name.mid(startNamePos,optSep-1).lower(); g_token->name=g_token->name.mid(startNamePos,attSep-1).lower();
} }
else // tag without options, strip brackets else // tag without options, strip brackets
{ {
...@@ -539,7 +539,7 @@ HTMLTAG "<"(("/")?){ID}({BLANK}+{ATTRIB})*">" ...@@ -539,7 +539,7 @@ HTMLTAG "<"(("/")?){ID}({BLANK}+{ATTRIB})*">"
return 0; return 0;
} }
<St_XRefItem>[0-9]+\n { <St_XRefItem>[0-9]+\n {
QCString numStr=yytext; QString numStr=yytext;
numStr=numStr.left(yyleng-1); numStr=numStr.left(yyleng-1);
g_token->id=numStr.toInt(); g_token->id=numStr.toInt();
return RetVal_OK; return RetVal_OK;
...@@ -567,7 +567,7 @@ HTMLTAG "<"(("/")?){ID}({BLANK}+{ATTRIB})*">" ...@@ -567,7 +567,7 @@ HTMLTAG "<"(("/")?){ID}({BLANK}+{ATTRIB})*">"
return TK_WORD; return TK_WORD;
} }
<St_File>"\""[^\n\"]+"\"" { <St_File>"\""[^\n\"]+"\"" {
QCString text=yytext; QString text=yytext;
g_token->name = text.mid(1,text.length()-2); g_token->name = text.mid(1,text.length()-2);
return TK_WORD; return TK_WORD;
} }
...@@ -615,25 +615,25 @@ void doctokenizerYYsetStateTitle() ...@@ -615,25 +615,25 @@ void doctokenizerYYsetStateTitle()
void doctokenizerYYsetStateCode() void doctokenizerYYsetStateCode()
{ {
g_token->verb.resize(0); g_token->verb="";
BEGIN(St_Code); BEGIN(St_Code);
} }
void doctokenizerYYsetStateHtmlOnly() void doctokenizerYYsetStateHtmlOnly()
{ {
g_token->verb.resize(0); g_token->verb="";
BEGIN(St_HtmlOnly); BEGIN(St_HtmlOnly);
} }
void doctokenizerYYsetStateLatexOnly() void doctokenizerYYsetStateLatexOnly()
{ {
g_token->verb.resize(0); g_token->verb="";
BEGIN(St_LatexOnly); BEGIN(St_LatexOnly);
} }
void doctokenizerYYsetStateVerbatim() void doctokenizerYYsetStateVerbatim()
{ {
g_token->verb.resize(0); g_token->verb="";
BEGIN(St_Verbatim); BEGIN(St_Verbatim);
} }
......
...@@ -19,6 +19,7 @@ ...@@ -19,6 +19,7 @@
#ifndef _DOCVISITOR_H #ifndef _DOCVISITOR_H
#define _DOCVISITOR_H #define _DOCVISITOR_H
// forward declarations
class DocWord; class DocWord;
class DocWhiteSpace; class DocWhiteSpace;
class DocAutoList; class DocAutoList;
...@@ -73,7 +74,9 @@ class DocCopy; ...@@ -73,7 +74,9 @@ class DocCopy;
class DocVisitor class DocVisitor
{ {
public: public:
/*! @name Visitor functions for leaf nodes */ /*! @name Visitor functions for leaf nodes
* @{
*/
virtual void visit(DocWord *) = 0; virtual void visit(DocWord *) = 0;
virtual void visit(DocWhiteSpace *) = 0; virtual void visit(DocWhiteSpace *) = 0;
virtual void visit(DocSymbol *) = 0; virtual void visit(DocSymbol *) = 0;
...@@ -88,8 +91,11 @@ class DocVisitor ...@@ -88,8 +91,11 @@ class DocVisitor
virtual void visit(DocFormula *) = 0; virtual void visit(DocFormula *) = 0;
virtual void visit(DocLinkedWord *) = 0; virtual void visit(DocLinkedWord *) = 0;
virtual void visit(DocIndexEntry *) = 0; virtual void visit(DocIndexEntry *) = 0;
/*! @} */
/*! @name Visitor functions for internal nodes */ /*! @name Visitor functions for internal nodes
* @{
*/
virtual void visitPre(DocAutoList *) = 0; virtual void visitPre(DocAutoList *) = 0;
virtual void visitPost(DocAutoList *) = 0; virtual void visitPost(DocAutoList *) = 0;
virtual void visitPre(DocAutoListItem *) = 0; virtual void visitPre(DocAutoListItem *) = 0;
...@@ -158,6 +164,7 @@ class DocVisitor ...@@ -158,6 +164,7 @@ class DocVisitor
virtual void visitPost(DocInternalRef *) = 0; virtual void visitPost(DocInternalRef *) = 0;
virtual void visitPre(DocCopy *) = 0; virtual void visitPre(DocCopy *) = 0;
virtual void visitPost(DocCopy *) = 0; virtual void visitPost(DocCopy *) = 0;
/*! @} */
}; };
#endif #endif
...@@ -1899,7 +1899,7 @@ static void buildFunctionList(Entry *root) ...@@ -1899,7 +1899,7 @@ static void buildFunctionList(Entry *root)
{ {
Debug::print(Debug::Functions,0, Debug::print(Debug::Functions,0,
"FUNCTION_SEC:\n" "FUNCTION_SEC:\n"
" `%s' `%s'::`%s' `%s' relates=`%s' file=`%s' line=`%d' bodyLine=`%d' #tArgLists=%d mGrpId=%d memSpec=%d proto=%d\n", " `%s' `%s'::`%s' `%s' relates=`%s' file=`%s' line=`%d' bodyLine=`%d' #tArgLists=%d mGrpId=%d memSpec=%d proto=%d docFile=%s\n",
root->type.data(), root->type.data(),
root->parent->name.data(), root->parent->name.data(),
root->name.data(), root->name.data(),
...@@ -1913,7 +1913,8 @@ static void buildFunctionList(Entry *root) ...@@ -1913,7 +1913,8 @@ static void buildFunctionList(Entry *root)
//root->mtArgList ? (int)root->mtArgList->count() : -1, //root->mtArgList ? (int)root->mtArgList->count() : -1,
root->mGrpId, root->mGrpId,
root->memSpec, root->memSpec,
root->proto root->proto,
root->docFile.data()
); );
bool isFriend=root->type.find("friend ")!=-1; bool isFriend=root->type.find("friend ")!=-1;
......
...@@ -186,6 +186,7 @@ void FileDef::writeDocumentation(OutputList &ol) ...@@ -186,6 +186,7 @@ void FileDef::writeDocumentation(OutputList &ol)
if (Config_getBool("DETAILS_AT_TOP")) if (Config_getBool("DETAILS_AT_TOP"))
{ {
writeDetailedDocumentation(ol); writeDetailedDocumentation(ol);
ol.newParagraph();
} }
else if (briefDescription()) else if (briefDescription())
{ {
......
...@@ -392,6 +392,7 @@ void GroupDef::writeDocumentation(OutputList &ol) ...@@ -392,6 +392,7 @@ void GroupDef::writeDocumentation(OutputList &ol)
if (Config_getBool("DETAILS_AT_TOP")) if (Config_getBool("DETAILS_AT_TOP"))
{ {
writeDetailedDocumentation(ol); writeDetailedDocumentation(ol);
ol.newParagraph();
} }
else if (!briefDescription().isEmpty()) else if (!briefDescription().isEmpty())
{ {
......
/******************************************************************************
*
*
*
* Copyright (C) 1997-2002 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
* granted. No representations are made about the suitability of this software
* for any purpose. It is provided "as is" without express or implied warranty.
* See the GNU General Public License for more details.
*
*/
#ifndef _HTMLATTRIB_H
#define _HTMLATTRIB_H
/*! A Html option. A name, value pair */
struct HtmlAttrib
{
QString name;
QString value;
};
/*! @brief A list of Html attributes.
*
* The Html attributes are deeply copied into the list.
*/
class HtmlAttribList : public QList<HtmlAttrib>
{
public:
HtmlAttribList() : QList<HtmlAttrib>() { setAutoDelete(TRUE); }
~HtmlAttribList() { clear(); }
HtmlAttribList(const HtmlAttribList &l) : QList<HtmlAttrib>()
{ operator=(l); }
HtmlAttribList &operator=(const HtmlAttribList &l)
{ clear(); QList<HtmlAttrib>::operator=(l); return *this; }
private:
QCollection::Item newItem( QCollection::Item d )
{ return (QCollection::Item)new HtmlAttrib(*(HtmlAttrib *)d); }
void deleteItem(QCollection::Item d)
{ delete (HtmlAttrib *)d; }
};
/*! @brief Html attribute list iterator */
class HtmlAttribListIterator : public QListIterator<HtmlAttrib>
{
public:
HtmlAttribListIterator(const HtmlAttribList &l) : QListIterator<HtmlAttrib>(l) {}
};
#endif
...@@ -25,6 +25,24 @@ ...@@ -25,6 +25,24 @@
#include "dot.h" #include "dot.h"
#include "message.h" #include "message.h"
static QString htmlAttribsToString(const HtmlAttribList &attribs)
{
QString result;
HtmlAttribListIterator li(attribs);
HtmlAttrib *att;
for (li.toFirst();(att=li.current());++li)
{
printf("Found attion name=`%s' value=`%s'\n",
att->name.data(),att->value.data());
result+=" ";
result+=att->name;
if (!att->value.isEmpty()) result+="=\""+att->value+"\"";
}
return result;
}
//-------------------------------------------------------------------------
HtmlDocVisitor::HtmlDocVisitor(QTextStream &t,BaseCodeDocInterface &ci) HtmlDocVisitor::HtmlDocVisitor(QTextStream &t,BaseCodeDocInterface &ci)
: m_t(t), m_ci(ci), m_insidePre(FALSE), m_hide(FALSE) : m_t(t), m_ci(ci), m_insidePre(FALSE), m_hide(FALSE)
{ {
...@@ -147,7 +165,7 @@ void HtmlDocVisitor::visit(DocVerbatim *s) ...@@ -147,7 +165,7 @@ void HtmlDocVisitor::visit(DocVerbatim *s)
{ {
case DocVerbatim::Code: // fall though case DocVerbatim::Code: // fall though
m_t << "<div class=\"fragment\"><pre>"; m_t << "<div class=\"fragment\"><pre>";
parseCode(m_ci,s->context(),s->text(),FALSE,0); parseCode(m_ci,s->context(),s->text().latin1(),FALSE,0);
m_t << "</pre></div>"; m_t << "</pre></div>";
break; break;
case DocVerbatim::Verbatim: case DocVerbatim::Verbatim:
...@@ -177,7 +195,7 @@ void HtmlDocVisitor::visit(DocInclude *inc) ...@@ -177,7 +195,7 @@ void HtmlDocVisitor::visit(DocInclude *inc)
{ {
case DocInclude::Include: case DocInclude::Include:
m_t << "<div class=\"fragment\"><pre>"; m_t << "<div class=\"fragment\"><pre>";
parseCode(m_ci,inc->context(),inc->text(),FALSE,0); parseCode(m_ci,inc->context(),inc->text().latin1(),FALSE,0);
m_t << "</pre></div>"; m_t << "</pre></div>";
break; break;
case DocInclude::DontInclude: case DocInclude::DontInclude:
...@@ -204,7 +222,7 @@ void HtmlDocVisitor::visit(DocIncOperator *op) ...@@ -204,7 +222,7 @@ void HtmlDocVisitor::visit(DocIncOperator *op)
} }
if (op->type()!=DocIncOperator::Skip) if (op->type()!=DocIncOperator::Skip)
{ {
parseCode(m_ci,op->context(),op->text(),FALSE,0); parseCode(m_ci,op->context(),op->text().latin1(),FALSE,0);
} }
if (op->isLast()) if (op->isLast())
{ {
...@@ -395,9 +413,9 @@ void HtmlDocVisitor::visitPost(DocSection *) ...@@ -395,9 +413,9 @@ void HtmlDocVisitor::visitPost(DocSection *)
void HtmlDocVisitor::visitPre(DocHtmlList *s) void HtmlDocVisitor::visitPre(DocHtmlList *s)
{ {
if (s->type()==DocHtmlList::Ordered) if (s->type()==DocHtmlList::Ordered)
m_t << "<ol>\n"; m_t << "<ol" << htmlAttribsToString(s->attribs()) << ">\n";
else else
m_t << "<ul>\n"; m_t << "<ul" << htmlAttribsToString(s->attribs()) << ">\n";
} }
void HtmlDocVisitor::visitPost(DocHtmlList *s) void HtmlDocVisitor::visitPost(DocHtmlList *s)
...@@ -408,9 +426,9 @@ void HtmlDocVisitor::visitPost(DocHtmlList *s) ...@@ -408,9 +426,9 @@ void HtmlDocVisitor::visitPost(DocHtmlList *s)
m_t << "</ul>\n"; m_t << "</ul>\n";
} }
void HtmlDocVisitor::visitPre(DocHtmlListItem *) void HtmlDocVisitor::visitPre(DocHtmlListItem *i)
{ {
m_t << "<li>\n"; m_t << "<li" << htmlAttribsToString(i->attribs()) << ">\n";
} }
void HtmlDocVisitor::visitPost(DocHtmlListItem *) void HtmlDocVisitor::visitPost(DocHtmlListItem *)
...@@ -418,9 +436,9 @@ void HtmlDocVisitor::visitPost(DocHtmlListItem *) ...@@ -418,9 +436,9 @@ void HtmlDocVisitor::visitPost(DocHtmlListItem *)
m_t << "</li>\n"; m_t << "</li>\n";
} }
void HtmlDocVisitor::visitPre(DocHtmlPre *) void HtmlDocVisitor::visitPre(DocHtmlPre *p)
{ {
m_t << "<pre>\n"; m_t << "<pre" << htmlAttribsToString(p->attribs()) << ">\n";
m_insidePre=TRUE; m_insidePre=TRUE;
} }
...@@ -430,9 +448,9 @@ void HtmlDocVisitor::visitPost(DocHtmlPre *) ...@@ -430,9 +448,9 @@ void HtmlDocVisitor::visitPost(DocHtmlPre *)
m_t << "</pre>\n"; m_t << "</pre>\n";
} }
void HtmlDocVisitor::visitPre(DocHtmlDescList *) void HtmlDocVisitor::visitPre(DocHtmlDescList *dl)
{ {
m_t << "<dl>\n"; m_t << "<dl" << htmlAttribsToString(dl->attribs()) << ">\n";
} }
void HtmlDocVisitor::visitPost(DocHtmlDescList *) void HtmlDocVisitor::visitPost(DocHtmlDescList *)
...@@ -440,9 +458,9 @@ void HtmlDocVisitor::visitPost(DocHtmlDescList *) ...@@ -440,9 +458,9 @@ void HtmlDocVisitor::visitPost(DocHtmlDescList *)
m_t << "</dl>\n"; m_t << "</dl>\n";
} }
void HtmlDocVisitor::visitPre(DocHtmlDescTitle *) void HtmlDocVisitor::visitPre(DocHtmlDescTitle *dt)
{ {
m_t << "<dt>"; m_t << "<dt" << htmlAttribsToString(dt->attribs()) << ">";
} }
void HtmlDocVisitor::visitPost(DocHtmlDescTitle *) void HtmlDocVisitor::visitPost(DocHtmlDescTitle *)
...@@ -450,9 +468,9 @@ void HtmlDocVisitor::visitPost(DocHtmlDescTitle *) ...@@ -450,9 +468,9 @@ void HtmlDocVisitor::visitPost(DocHtmlDescTitle *)
m_t << "</dt>\n"; m_t << "</dt>\n";
} }
void HtmlDocVisitor::visitPre(DocHtmlDescData *) void HtmlDocVisitor::visitPre(DocHtmlDescData *dd)
{ {
m_t << "<dd>"; m_t << "<dd" << htmlAttribsToString(dd->attribs()) << ">";
} }
void HtmlDocVisitor::visitPost(DocHtmlDescData *) void HtmlDocVisitor::visitPost(DocHtmlDescData *)
...@@ -460,9 +478,25 @@ void HtmlDocVisitor::visitPost(DocHtmlDescData *) ...@@ -460,9 +478,25 @@ void HtmlDocVisitor::visitPost(DocHtmlDescData *)
m_t << "</dd>\n"; m_t << "</dd>\n";
} }
void HtmlDocVisitor::visitPre(DocHtmlTable *) void HtmlDocVisitor::visitPre(DocHtmlTable *t)
{ {
m_t << "<table border=\"1\" cellspacing=\"3\" cellpadding=\"3\">\n"; bool hasBorder = FALSE;
bool hasCellSpacing = FALSE;
bool hasCellPadding = FALSE;
HtmlAttribListIterator li(t->attribs());
HtmlAttrib *att;
for (li.toFirst();(att=li.current());++li)
{
if (att->name=="border") hasBorder=TRUE;
else if (att->name=="cellspacing") hasCellSpacing=TRUE;
else if (att->name=="cellpadding") hasCellPadding=TRUE;
}
m_t << "<table" << htmlAttribsToString(t->attribs());
if (!hasBorder) m_t << " border=\"1\"";
if (!hasCellSpacing) m_t << " cellspacing=\"3\"";
if (!hasCellPadding) m_t << " cellpadding=\"3\"";
m_t << ">\n";
} }
void HtmlDocVisitor::visitPost(DocHtmlTable *) void HtmlDocVisitor::visitPost(DocHtmlTable *)
...@@ -470,9 +504,9 @@ void HtmlDocVisitor::visitPost(DocHtmlTable *) ...@@ -470,9 +504,9 @@ void HtmlDocVisitor::visitPost(DocHtmlTable *)
m_t << "</table>\n"; m_t << "</table>\n";
} }
void HtmlDocVisitor::visitPre(DocHtmlRow *) void HtmlDocVisitor::visitPre(DocHtmlRow *tr)
{ {
m_t << "<tr>\n"; m_t << "<tr" << htmlAttribsToString(tr->attribs()) << ">\n";
} }
void HtmlDocVisitor::visitPost(DocHtmlRow *) void HtmlDocVisitor::visitPost(DocHtmlRow *)
...@@ -482,7 +516,14 @@ void HtmlDocVisitor::visitPost(DocHtmlRow *) ...@@ -482,7 +516,14 @@ void HtmlDocVisitor::visitPost(DocHtmlRow *)
void HtmlDocVisitor::visitPre(DocHtmlCell *c) void HtmlDocVisitor::visitPre(DocHtmlCell *c)
{ {
if (c->isHeading()) m_t << "<th>"; else m_t << "<td>"; if (c->isHeading())
{
m_t << "<th" << htmlAttribsToString(c->attribs()) << ">";
}
else
{
m_t << "<td" << htmlAttribsToString(c->attribs()) << ">";
}
} }
void HtmlDocVisitor::visitPost(DocHtmlCell *c) void HtmlDocVisitor::visitPost(DocHtmlCell *c)
...@@ -490,9 +531,18 @@ void HtmlDocVisitor::visitPost(DocHtmlCell *c) ...@@ -490,9 +531,18 @@ void HtmlDocVisitor::visitPost(DocHtmlCell *c)
if (c->isHeading()) m_t << "</th>"; else m_t << "</td>"; if (c->isHeading()) m_t << "</th>"; else m_t << "</td>";
} }
void HtmlDocVisitor::visitPre(DocHtmlCaption *) void HtmlDocVisitor::visitPre(DocHtmlCaption *c)
{ {
m_t << "<caption align=\"bottom\">"; bool hasAlign = FALSE;
HtmlAttribListIterator li(c->attribs());
HtmlAttrib *att;
for (li.toFirst();(att=li.current());++li)
{
if (att->name=="align") hasAlign=TRUE;
}
m_t << "<caption" << htmlAttribsToString(c->attribs());
if (!hasAlign) m_t << " align=\"bottom\"";
m_t << ">";
} }
void HtmlDocVisitor::visitPost(DocHtmlCaption *) void HtmlDocVisitor::visitPost(DocHtmlCaption *)
...@@ -523,7 +573,8 @@ void HtmlDocVisitor::visitPost(DocHRef *) ...@@ -523,7 +573,8 @@ void HtmlDocVisitor::visitPost(DocHRef *)
void HtmlDocVisitor::visitPre(DocHtmlHeader *header) void HtmlDocVisitor::visitPre(DocHtmlHeader *header)
{ {
m_t << "<h" << header->level() << ">"; m_t << "<h" << header->level()
<< htmlAttribsToString(header->attribs()) << ">";
} }
void HtmlDocVisitor::visitPost(DocHtmlHeader *header) void HtmlDocVisitor::visitPost(DocHtmlHeader *header)
...@@ -535,7 +586,7 @@ void HtmlDocVisitor::visitPre(DocImage *img) ...@@ -535,7 +586,7 @@ void HtmlDocVisitor::visitPre(DocImage *img)
{ {
if (img->type()==DocImage::Html) if (img->type()==DocImage::Html)
{ {
QCString baseName=img->name(); QString baseName=img->name();
int i; int i;
if ((i=baseName.findRev('/'))!=-1 || (i=baseName.findRev('\\'))!=-1) if ((i=baseName.findRev('/'))!=-1 || (i=baseName.findRev('\\'))!=-1)
{ {
...@@ -573,13 +624,13 @@ void HtmlDocVisitor::visitPost(DocImage *img) ...@@ -573,13 +624,13 @@ void HtmlDocVisitor::visitPost(DocImage *img)
void HtmlDocVisitor::visitPre(DocDotFile *df) void HtmlDocVisitor::visitPre(DocDotFile *df)
{ {
QCString baseName=df->file(); QString baseName=df->file();
int i; int i;
if ((i=baseName.findRev('/'))!=-1) if ((i=baseName.findRev('/'))!=-1)
{ {
baseName=baseName.right(baseName.length()-i-1); baseName=baseName.right(baseName.length()-i-1);
} }
QCString outDir = Config_getString("HTML_OUTPUT"); QString outDir = Config_getString("HTML_OUTPUT");
writeDotGraphFromFile(df->file(),outDir,baseName,BITMAP); writeDotGraphFromFile(df->file(),outDir,baseName,BITMAP);
m_t << "<div align=\"center\">" << endl; m_t << "<div align=\"center\">" << endl;
m_t << "<img src=\"" << baseName << "." m_t << "<img src=\"" << baseName << "."
...@@ -624,8 +675,9 @@ void HtmlDocVisitor::visitPost(DocRef *) ...@@ -624,8 +675,9 @@ void HtmlDocVisitor::visitPost(DocRef *)
void HtmlDocVisitor::visitPre(DocSecRefItem *ref) void HtmlDocVisitor::visitPre(DocSecRefItem *ref)
{ {
QCString refName=ref->file(); QString refName=ref->file();
if (refName.right(Doxygen::htmlFileExtension.length())!=Doxygen::htmlFileExtension) if (refName.right(Doxygen::htmlFileExtension.length())!=
QString(Doxygen::htmlFileExtension))
{ {
refName+=Doxygen::htmlFileExtension; refName+=Doxygen::htmlFileExtension;
} }
...@@ -752,7 +804,7 @@ void HtmlDocVisitor::filter(const char *str) ...@@ -752,7 +804,7 @@ void HtmlDocVisitor::filter(const char *str)
} }
} }
void HtmlDocVisitor::startLink(const QCString &ref,const QCString &file,const QCString &anchor) void HtmlDocVisitor::startLink(const QString &ref,const QString &file,const QString &anchor)
{ {
QCString *dest; QCString *dest;
if (!ref.isEmpty()) // link to entity imported via tag file if (!ref.isEmpty()) // link to entity imported via tag file
......
...@@ -23,7 +23,7 @@ ...@@ -23,7 +23,7 @@
class QTextStream; class QTextStream;
class BaseCodeDocInterface; class BaseCodeDocInterface;
class QCString; class QString;
/*! @brief Concrete visitor implementation for HTML output. */ /*! @brief Concrete visitor implementation for HTML output. */
class HtmlDocVisitor : public DocVisitor class HtmlDocVisitor : public DocVisitor
...@@ -130,8 +130,8 @@ class HtmlDocVisitor : public DocVisitor ...@@ -130,8 +130,8 @@ class HtmlDocVisitor : public DocVisitor
//-------------------------------------- //--------------------------------------
void filter(const char *str); void filter(const char *str);
void startLink(const QCString &ref,const QCString &file, void startLink(const QString &ref,const QString &file,
const QCString &anchor); const QString &anchor);
void endLink(); void endLink();
//-------------------------------------- //--------------------------------------
......
...@@ -336,8 +336,11 @@ void HtmlGenerator::writeStyleInfo(int part) ...@@ -336,8 +336,11 @@ void HtmlGenerator::writeStyleInfo(int part)
} }
else else
{ {
// convert style sheet to string
QCString fileStr = fileToString(cssname);
// write the string into the output dir
startPlainFile(cssfi.fileName()); startPlainFile(cssfi.fileName());
t << fileToString(cssname); t << fileStr;
endPlainFile(); endPlainFile();
} }
} }
......
...@@ -26,9 +26,9 @@ ...@@ -26,9 +26,9 @@
#include "util.h" #include "util.h"
#include "message.h" #include "message.h"
static QCString escapeLabelName(const char *s) static QString escapeLabelName(const char *s)
{ {
QCString result; QString result;
const char *p=s; const char *p=s;
char c; char c;
while ((c=*p++)) while ((c=*p++))
...@@ -44,9 +44,9 @@ static QCString escapeLabelName(const char *s) ...@@ -44,9 +44,9 @@ static QCString escapeLabelName(const char *s)
return result; return result;
} }
QCString LatexDocVisitor::escapeMakeIndexChars(const char *s) QString LatexDocVisitor::escapeMakeIndexChars(const char *s)
{ {
QCString result; QString result;
const char *p=s; const char *p=s;
char str[2]; str[1]=0; char str[2]; str[1]=0;
char c; char c;
...@@ -211,7 +211,7 @@ void LatexDocVisitor::visit(DocVerbatim *s) ...@@ -211,7 +211,7 @@ void LatexDocVisitor::visit(DocVerbatim *s)
{ {
case DocVerbatim::Code: // fall though case DocVerbatim::Code: // fall though
m_t << "\n\n\\footnotesize\\begin{verbatim}"; m_t << "\n\n\\footnotesize\\begin{verbatim}";
parseCode(m_ci,s->context(),s->text(),FALSE,0); parseCode(m_ci,s->context(),s->text().latin1(),FALSE,0);
m_t << "\\end{verbatim}\\normalsize" << endl; m_t << "\\end{verbatim}\\normalsize" << endl;
break; break;
case DocVerbatim::Verbatim: case DocVerbatim::Verbatim:
...@@ -246,7 +246,7 @@ void LatexDocVisitor::visit(DocInclude *inc) ...@@ -246,7 +246,7 @@ void LatexDocVisitor::visit(DocInclude *inc)
{ {
case DocInclude::Include: case DocInclude::Include:
m_t << "\n\n\\footnotesize\\begin{verbatim}"; m_t << "\n\n\\footnotesize\\begin{verbatim}";
parseCode(m_ci,inc->context(),inc->text(),FALSE,0); parseCode(m_ci,inc->context(),inc->text().latin1(),FALSE,0);
m_t << "\\end{verbatim}\\normalsize" << endl; m_t << "\\end{verbatim}\\normalsize" << endl;
break; break;
case DocInclude::DontInclude: case DocInclude::DontInclude:
...@@ -272,7 +272,7 @@ void LatexDocVisitor::visit(DocIncOperator *op) ...@@ -272,7 +272,7 @@ void LatexDocVisitor::visit(DocIncOperator *op)
} }
if (op->type()!=DocIncOperator::Skip) if (op->type()!=DocIncOperator::Skip)
{ {
parseCode(m_ci,op->context(),op->text(),FALSE,0); parseCode(m_ci,op->context(),op->text().latin1(),FALSE,0);
} }
if (op->isLast()) if (op->isLast())
{ {
...@@ -648,7 +648,7 @@ void LatexDocVisitor::visitPre(DocImage *img) ...@@ -648,7 +648,7 @@ void LatexDocVisitor::visitPre(DocImage *img)
{ {
m_t << "\\mbox{"; m_t << "\\mbox{";
} }
QCString gfxName = img->name(); QString gfxName = img->name();
if (gfxName.right(4)==".eps" || gfxName.right(4)==".pdf") if (gfxName.right(4)==".eps" || gfxName.right(4)==".pdf")
{ {
gfxName=gfxName.left(gfxName.length()-4); gfxName=gfxName.left(gfxName.length()-4);
...@@ -693,7 +693,7 @@ void LatexDocVisitor::visitPost(DocImage *img) ...@@ -693,7 +693,7 @@ void LatexDocVisitor::visitPost(DocImage *img)
void LatexDocVisitor::visitPre(DocDotFile *df) void LatexDocVisitor::visitPre(DocDotFile *df)
{ {
QCString baseName=df->file(); QString baseName=df->file();
int i; int i;
if ((i=baseName.findRev('/'))!=-1) if ((i=baseName.findRev('/'))!=-1)
{ {
...@@ -703,7 +703,7 @@ void LatexDocVisitor::visitPre(DocDotFile *df) ...@@ -703,7 +703,7 @@ void LatexDocVisitor::visitPre(DocDotFile *df)
{ {
baseName=baseName.left(baseName.length()-4); baseName=baseName.left(baseName.length()-4);
} }
QCString outDir = Config_getString("LATEX_OUTPUT"); QString outDir = Config_getString("LATEX_OUTPUT");
writeDotGraphFromFile(df->file(),outDir,baseName,EPS); writeDotGraphFromFile(df->file(),outDir,baseName,EPS);
if (df->hasCaption()) if (df->hasCaption())
{ {
...@@ -883,7 +883,7 @@ void LatexDocVisitor::filter(const char *str) ...@@ -883,7 +883,7 @@ void LatexDocVisitor::filter(const char *str)
filterLatexString(m_t,str,FALSE,m_insidePre); filterLatexString(m_t,str,FALSE,m_insidePre);
} }
void LatexDocVisitor::startLink(const QCString &ref,const QCString &file,const QCString &anchor) void LatexDocVisitor::startLink(const QString &ref,const QString &file,const QString &anchor)
{ {
if (ref.isEmpty() && Config_getBool("PDF_HYPERLINKS")) if (ref.isEmpty() && Config_getBool("PDF_HYPERLINKS"))
{ {
......
...@@ -23,7 +23,7 @@ ...@@ -23,7 +23,7 @@
class QTextStream; class QTextStream;
class BaseCodeDocInterface; class BaseCodeDocInterface;
class QCString; class QString;
/*! @brief Concrete visitor implementation for LaTeX output. */ /*! @brief Concrete visitor implementation for LaTeX output. */
class LatexDocVisitor : public DocVisitor class LatexDocVisitor : public DocVisitor
...@@ -130,10 +130,10 @@ class LatexDocVisitor : public DocVisitor ...@@ -130,10 +130,10 @@ class LatexDocVisitor : public DocVisitor
//-------------------------------------- //--------------------------------------
void filter(const char *str); void filter(const char *str);
void startLink(const QCString &ref,const QCString &file, void startLink(const QString &ref,const QString &file,
const QCString &anchor); const QString &anchor);
void endLink(); void endLink();
QCString escapeMakeIndexChars(const char *s); QString escapeMakeIndexChars(const char *s);
//-------------------------------------- //--------------------------------------
// state variables // state variables
......
...@@ -45,6 +45,7 @@ HEADERS = bufstr.h \ ...@@ -45,6 +45,7 @@ HEADERS = bufstr.h \
formula.h \ formula.h \
ftvhelp.h \ ftvhelp.h \
groupdef.h \ groupdef.h \
htmlattrib.h \
htmldocvisitor.h \ htmldocvisitor.h \
htmlgen.h \ htmlgen.h \
htmlhelp.h \ htmlhelp.h \
...@@ -55,6 +56,7 @@ HEADERS = bufstr.h \ ...@@ -55,6 +56,7 @@ HEADERS = bufstr.h \
latexdocvisitor.h \ latexdocvisitor.h \
latexgen.h \ latexgen.h \
logos.h \ logos.h \
mandocvisitor.h \
mangen.h \ mangen.h \
memberdef.h \ memberdef.h \
membergroup.h \ membergroup.h \
...@@ -152,6 +154,7 @@ SOURCES = ce_lex.cpp \ ...@@ -152,6 +154,7 @@ SOURCES = ce_lex.cpp \
latexdocvisitor.cpp \ latexdocvisitor.cpp \
latexgen.cpp \ latexgen.cpp \
logos.cpp \ logos.cpp \
mandocvisitor.cpp \
mangen.cpp \ mangen.cpp \
memberdef.cpp \ memberdef.cpp \
membergroup.cpp \ membergroup.cpp \
......
This diff is collapsed.
/******************************************************************************
*
*
*
*
* Copyright (C) 1997-2002 by Dimitri van Heesch.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby
* granted. No representations are made about the suitability of this software
* for any purpose. It is provided "as is" without express or implied warranty.
* See the GNU General Public License for more details.
*
* Documents produced by Doxygen are derivative works derived from the
* input used in their production; they are not affected by this license.
*
*/
#ifndef _MANDOCVISITOR_H
#define _MANDOCVISITOR_H
#include "docvisitor.h"
class QTextStream;
class BaseCodeDocInterface;
class QString;
/*! @brief Concrete visitor implementation for LaTeX output. */
class ManDocVisitor : public DocVisitor
{
public:
ManDocVisitor(QTextStream &t,BaseCodeDocInterface &ci);
//--------------------------------------
// visitor functions for leaf nodes
//--------------------------------------
void visit(DocWord *);
void visit(DocLinkedWord *);
void visit(DocWhiteSpace *);
void visit(DocSymbol *);
void visit(DocURL *);
void visit(DocLineBreak *);
void visit(DocHorRuler *);
void visit(DocStyleChange *);
void visit(DocVerbatim *);
void visit(DocAnchor *);
void visit(DocInclude *);
void visit(DocIncOperator *);
void visit(DocFormula *);
void visit(DocIndexEntry *);
//--------------------------------------
// visitor functions for compound nodes
//--------------------------------------
void visitPre(DocAutoList *);
void visitPost(DocAutoList *);
void visitPre(DocAutoListItem *);
void visitPost(DocAutoListItem *);
void visitPre(DocPara *);
void visitPost(DocPara *);
void visitPre(DocRoot *);
void visitPost(DocRoot *);
void visitPre(DocSimpleSect *);
void visitPost(DocSimpleSect *);
void visitPre(DocTitle *);
void visitPost(DocTitle *);
void visitPre(DocSimpleList *);
void visitPost(DocSimpleList *);
void visitPre(DocSimpleListItem *);
void visitPost(DocSimpleListItem *);
void visitPre(DocSection *s);
void visitPost(DocSection *);
void visitPre(DocHtmlList *s);
void visitPost(DocHtmlList *s);
void visitPre(DocHtmlListItem *);
void visitPost(DocHtmlListItem *);
void visitPre(DocHtmlPre *);
void visitPost(DocHtmlPre *);
void visitPre(DocHtmlDescList *);
void visitPost(DocHtmlDescList *);
void visitPre(DocHtmlDescTitle *);
void visitPost(DocHtmlDescTitle *);
void visitPre(DocHtmlDescData *);
void visitPost(DocHtmlDescData *);
void visitPre(DocHtmlTable *t);
void visitPost(DocHtmlTable *t);
void visitPre(DocHtmlCaption *);
void visitPost(DocHtmlCaption *);
void visitPre(DocHtmlRow *);
void visitPost(DocHtmlRow *) ;
void visitPre(DocHtmlCell *);
void visitPost(DocHtmlCell *);
void visitPre(DocInternal *);
void visitPost(DocInternal *);
void visitPre(DocHRef *);
void visitPost(DocHRef *);
void visitPre(DocHtmlHeader *);
void visitPost(DocHtmlHeader *) ;
void visitPre(DocImage *);
void visitPost(DocImage *);
void visitPre(DocDotFile *);
void visitPost(DocDotFile *);
void visitPre(DocLink *lnk);
void visitPost(DocLink *);
void visitPre(DocRef *ref);
void visitPost(DocRef *);
void visitPre(DocSecRefItem *);
void visitPost(DocSecRefItem *);
void visitPre(DocSecRefList *);
void visitPost(DocSecRefList *);
void visitPre(DocLanguage *);
void visitPost(DocLanguage *);
void visitPre(DocParamSect *);
void visitPost(DocParamSect *);
void visitPre(DocParamList *);
void visitPost(DocParamList *);
void visitPre(DocXRefItem *);
void visitPost(DocXRefItem *);
void visitPre(DocInternalRef *);
void visitPost(DocInternalRef *);
void visitPre(DocCopy *);
void visitPost(DocCopy *);
private:
//--------------------------------------
// helper functions
//--------------------------------------
void filter(const char *str);
//--------------------------------------
// state variables
//--------------------------------------
QTextStream &m_t;
BaseCodeDocInterface &m_ci;
bool m_insidePre;
bool m_hide;
};
#endif
...@@ -29,6 +29,7 @@ ...@@ -29,6 +29,7 @@
#include "doxygen.h" #include "doxygen.h"
#include <string.h> #include <string.h>
#include "docparser.h" #include "docparser.h"
#include "mandocvisitor.h"
static QCString getExtension() static QCString getExtension()
{ {
...@@ -613,7 +614,10 @@ void ManGenerator::endParamList() ...@@ -613,7 +614,10 @@ void ManGenerator::endParamList()
{ {
} }
void ManGenerator::printDoc(DocNode *) void ManGenerator::printDoc(DocNode *n)
{ {
ManDocVisitor *visitor = new ManDocVisitor(t,*this);
n->accept(visitor);
delete visitor;
} }
...@@ -554,8 +554,8 @@ bool MemberDef::isBriefSectionVisible() const ...@@ -554,8 +554,8 @@ bool MemberDef::isBriefSectionVisible() const
{ {
//printf("Member %s grpId=%d docs=%s file=%s args=%s\n", //printf("Member %s grpId=%d docs=%s file=%s args=%s\n",
// name().data(), // name().data(),
// grpId,grpId==-1?"<none>":Doxygen::memberDocDict[grpId]->data(), // 0,"", //grpId,grpId==-1?"<none>":Doxygen::memberDocDict[grpId]->data(),
// getFileDef()->name().data(), // "", //getFileDef()->name().data(),
// argsString()); // argsString());
bool hasDocs = hasDocumentation() || bool hasDocs = hasDocumentation() ||
// part of a documented member group // part of a documented member group
...@@ -600,8 +600,10 @@ bool MemberDef::isBriefSectionVisible() const ...@@ -600,8 +600,10 @@ bool MemberDef::isBriefSectionVisible() const
); );
// hide member if it overrides a member in a superclass and has no // hide member if it overrides a member in a superclass and has no
// documentation // documentation of its own
bool visibleIfDocVirtual = (reimplements() || hasDocs); //bool visibleIfDocVirtual = !reimplements() ||
// !Config_getBool("INHERIT_DOCS") ||
// hasDocs;
// true if this member is a constructor or destructor // true if this member is a constructor or destructor
bool cOrDTor = isConstructor() || isDestructor(); bool cOrDTor = isConstructor() || isDestructor();
...@@ -624,7 +626,7 @@ bool MemberDef::isBriefSectionVisible() const ...@@ -624,7 +626,7 @@ bool MemberDef::isBriefSectionVisible() const
bool visible = visibleIfStatic && visibleIfDocumented && bool visible = visibleIfStatic && visibleIfDocumented &&
visibleIfEnabled && visibleIfPrivate && visibleIfEnabled && visibleIfPrivate &&
visibleIfDocVirtual && visibleIfNotDefaultCDTor && /*visibleIfDocVirtual &&*/ visibleIfNotDefaultCDTor &&
visibleIfFriendCompound && visibleIfFriendCompound &&
!annScope; !annScope;
//printf("MemberDef::isBriefSectionVisible() %d\n",visible); //printf("MemberDef::isBriefSectionVisible() %d\n",visible);
...@@ -1539,6 +1541,10 @@ void MemberDef::warnIfUndocumented() ...@@ -1539,6 +1541,10 @@ void MemberDef::warnIfUndocumented()
else else
t="file", d=fd; t="file", d=fd;
//printf("warnIfUndoc: d->isLinkable()=%d isLinkable()=%d "
// "isDocumentedFriendClass()=%d name()=%s prot=%d\n",
// d->isLinkable(),isLinkable(),isDocumentedFriendClass(),
// name().data(),prot);
if (d && d->isLinkable() && !isLinkable() && if (d && d->isLinkable() && !isLinkable() &&
!isDocumentedFriendClass() && !isDocumentedFriendClass() &&
name().find('@')==-1 && name().find('@')==-1 &&
......
...@@ -248,6 +248,7 @@ void NamespaceDef::writeDocumentation(OutputList &ol) ...@@ -248,6 +248,7 @@ void NamespaceDef::writeDocumentation(OutputList &ol)
if (Config_getBool("DETAILS_AT_TOP")) if (Config_getBool("DETAILS_AT_TOP"))
{ {
writeDetailedDocumentation(ol); writeDetailedDocumentation(ol);
ol.newParagraph();
} }
else if (!briefDescription().isEmpty()) else if (!briefDescription().isEmpty())
{ {
......
...@@ -32,9 +32,9 @@ RTFDocVisitor::RTFDocVisitor(QTextStream &t,BaseCodeDocInterface &ci) ...@@ -32,9 +32,9 @@ RTFDocVisitor::RTFDocVisitor(QTextStream &t,BaseCodeDocInterface &ci)
{ {
} }
QCString RTFDocVisitor::getStyle(const char *name) QString RTFDocVisitor::getStyle(const char *name)
{ {
QCString n; QString n;
n.sprintf("%s%d",name,m_indentLevel); n.sprintf("%s%d",name,m_indentLevel);
StyleData *sd = rtf_Style[n]; StyleData *sd = rtf_Style[n];
ASSERT(sd!=0); ASSERT(sd!=0);
...@@ -271,7 +271,7 @@ void RTFDocVisitor::visit(DocVerbatim *s) ...@@ -271,7 +271,7 @@ void RTFDocVisitor::visit(DocVerbatim *s)
m_t << "{" << endl; m_t << "{" << endl;
m_t << "\\par" << endl; m_t << "\\par" << endl;
m_t << rtf_Style_Reset << getStyle("CodeExample"); m_t << rtf_Style_Reset << getStyle("CodeExample");
parseCode(m_ci,s->context(),s->text(),FALSE,0); parseCode(m_ci,s->context(),s->text().latin1(),FALSE,0);
m_t << "\\par" << endl; m_t << "\\par" << endl;
m_t << "}" << endl; m_t << "}" << endl;
break; break;
...@@ -295,7 +295,7 @@ void RTFDocVisitor::visit(DocVerbatim *s) ...@@ -295,7 +295,7 @@ void RTFDocVisitor::visit(DocVerbatim *s)
void RTFDocVisitor::visit(DocAnchor *anc) void RTFDocVisitor::visit(DocAnchor *anc)
{ {
if (m_hide) return; if (m_hide) return;
QCString anchor; QString anchor;
if (!anc->file().isEmpty()) if (!anc->file().isEmpty())
{ {
anchor+=anc->file(); anchor+=anc->file();
...@@ -321,7 +321,7 @@ void RTFDocVisitor::visit(DocInclude *inc) ...@@ -321,7 +321,7 @@ void RTFDocVisitor::visit(DocInclude *inc)
m_t << "{" << endl; m_t << "{" << endl;
m_t << "\\par" << endl; m_t << "\\par" << endl;
m_t << rtf_Style_Reset << getStyle("CodeExample"); m_t << rtf_Style_Reset << getStyle("CodeExample");
parseCode(m_ci,inc->context(),inc->text(),FALSE,0); parseCode(m_ci,inc->context(),inc->text().latin1(),FALSE,0);
m_t << "\\par" << endl; m_t << "\\par" << endl;
m_t << "}" << endl; m_t << "}" << endl;
break; break;
...@@ -353,7 +353,7 @@ void RTFDocVisitor::visit(DocIncOperator *op) ...@@ -353,7 +353,7 @@ void RTFDocVisitor::visit(DocIncOperator *op)
} }
if (op->type()!=DocIncOperator::Skip) if (op->type()!=DocIncOperator::Skip)
{ {
parseCode(m_ci,op->context(),op->text(),FALSE,0); parseCode(m_ci,op->context(),op->text().latin1(),FALSE,0);
} }
if (op->isLast()) if (op->isLast())
{ {
...@@ -534,7 +534,7 @@ void RTFDocVisitor::visitPre(DocSection *s) ...@@ -534,7 +534,7 @@ void RTFDocVisitor::visitPre(DocSection *s)
{ {
m_t << "{" // start section m_t << "{" // start section
<< rtf_Style_Reset; << rtf_Style_Reset;
QCString heading; QString heading;
int level = QMIN(s->level()+2,4); int level = QMIN(s->level()+2,4);
heading.sprintf("Heading%d",level); heading.sprintf("Heading%d",level);
// set style // set style
...@@ -750,7 +750,7 @@ void RTFDocVisitor::visitPre(DocHtmlHeader *header) ...@@ -750,7 +750,7 @@ void RTFDocVisitor::visitPre(DocHtmlHeader *header)
{ {
m_t << "{" // start section m_t << "{" // start section
<< rtf_Style_Reset; << rtf_Style_Reset;
QCString heading; QString heading;
int level = QMIN(header->level()+2,4); int level = QMIN(header->level()+2,4);
heading.sprintf("Heading%d",level); heading.sprintf("Heading%d",level);
// set style // set style
...@@ -793,13 +793,13 @@ void RTFDocVisitor::visitPost(DocImage *) ...@@ -793,13 +793,13 @@ void RTFDocVisitor::visitPost(DocImage *)
void RTFDocVisitor::visitPre(DocDotFile *df) void RTFDocVisitor::visitPre(DocDotFile *df)
{ {
QCString baseName=df->file(); QString baseName=df->file();
int i; int i;
if ((i=baseName.findRev('/'))!=-1) if ((i=baseName.findRev('/'))!=-1)
{ {
baseName=baseName.right(baseName.length()-i-1); baseName=baseName.right(baseName.length()-i-1);
} }
QCString outDir = Config_getString("RTF_OUTPUT"); QString outDir = Config_getString("RTF_OUTPUT");
writeDotGraphFromFile(df->file(),outDir,baseName,BITMAP); writeDotGraphFromFile(df->file(),outDir,baseName,BITMAP);
m_t << "\\par" << endl; m_t << "\\par" << endl;
m_t << "{" << endl; m_t << "{" << endl;
...@@ -927,7 +927,7 @@ void RTFDocVisitor::visitPre(DocXRefItem *x) ...@@ -927,7 +927,7 @@ void RTFDocVisitor::visitPre(DocXRefItem *x)
m_t << "\\par" << endl; m_t << "\\par" << endl;
if (Config_getBool("RTF_HYPERLINKS")) if (Config_getBool("RTF_HYPERLINKS"))
{ {
QCString refName; QString refName;
if (!x->file().isEmpty()) if (!x->file().isEmpty())
{ {
refName+=x->file(); refName+=x->file();
...@@ -1033,11 +1033,11 @@ void RTFDocVisitor::filter(const char *str) ...@@ -1033,11 +1033,11 @@ void RTFDocVisitor::filter(const char *str)
} }
} }
void RTFDocVisitor::startLink(const QCString &ref,const QCString &file,const QCString &anchor) void RTFDocVisitor::startLink(const QString &ref,const QString &file,const QString &anchor)
{ {
if (ref.isEmpty() && Config_getBool("RTF_HYPERLINKS")) if (ref.isEmpty() && Config_getBool("RTF_HYPERLINKS"))
{ {
QCString refName; QString refName;
if (!file.isEmpty()) if (!file.isEmpty())
{ {
refName+=file; refName+=file;
...@@ -1059,7 +1059,7 @@ void RTFDocVisitor::startLink(const QCString &ref,const QCString &file,const QCS ...@@ -1059,7 +1059,7 @@ void RTFDocVisitor::startLink(const QCString &ref,const QCString &file,const QCS
} }
} }
void RTFDocVisitor::endLink(const QCString &ref) void RTFDocVisitor::endLink(const QString &ref)
{ {
if (ref.isEmpty() && Config_getBool("RTF_HYPERLINKS")) if (ref.isEmpty() && Config_getBool("RTF_HYPERLINKS"))
{ {
......
...@@ -23,7 +23,7 @@ ...@@ -23,7 +23,7 @@
class QTextStream; class QTextStream;
class BaseCodeDocInterface; class BaseCodeDocInterface;
class QCString; class QString;
/*! @brief Concrete visitor implementation for RTF output. */ /*! @brief Concrete visitor implementation for RTF output. */
class RTFDocVisitor : public DocVisitor class RTFDocVisitor : public DocVisitor
...@@ -130,10 +130,10 @@ class RTFDocVisitor : public DocVisitor ...@@ -130,10 +130,10 @@ class RTFDocVisitor : public DocVisitor
//-------------------------------------- //--------------------------------------
void filter(const char *str); void filter(const char *str);
void startLink(const QCString &ref,const QCString &file, void startLink(const QString &ref,const QString &file,
const QCString &anchor); const QString &anchor);
void endLink(const QCString &ref); void endLink(const QString &ref);
QCString getStyle(const char *name); QString getStyle(const char *name);
void incIndentLevel(); void incIndentLevel();
void decIndentLevel(); void decIndentLevel();
......
...@@ -3925,33 +3925,33 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'")) ...@@ -3925,33 +3925,33 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
yyLineNr++; yyLineNr++;
} }
<SkipSection>"//"|"*/" <SkipSection>"//"|"*/"
<ClassDoc,LineDoc,AfterDocLine,AfterDocBrief,Doc,JavaDoc,AfterDoc,PageDoc,ExampleDoc>{CMD}"elseif"/[^a-z_A-Z0-9] { <ClassDoc,ClassDocBrief,LineDoc,AfterDocLine,AfterDocBrief,Doc,JavaDoc,AfterDoc,PageDoc,ExampleDoc>{CMD}"elseif"/[^a-z_A-Z0-9] {
// previous section enabled => skip now // previous section enabled => skip now
depthIf=1; depthIf=1;
BEGIN(SkipSection); BEGIN(SkipSection);
} }
<ClassDoc,LineDoc,AfterDocLine,AfterDocBrief,Doc,JavaDoc,AfterDoc,PageDoc,ExampleDoc>{CMD}"else"/[^a-z_A-Z0-9] { <ClassDoc,ClassDocBrief,LineDoc,AfterDocLine,AfterDocBrief,Doc,JavaDoc,AfterDoc,PageDoc,ExampleDoc>{CMD}"else"/[^a-z_A-Z0-9] {
// section was enabled => skip now // section was enabled => skip now
depthIf=1; depthIf=1;
BEGIN(SkipSection); BEGIN(SkipSection);
} }
<ClassDoc,LineDoc,AfterDocLine,AfterDocBrief,Doc,JavaDoc,AfterDoc,PageDoc,ExampleDoc>{CMD}"endif"/[^a-z_A-Z0-9] { <ClassDoc,ClassDocBrief,LineDoc,AfterDocLine,AfterDocBrief,Doc,JavaDoc,AfterDoc,PageDoc,ExampleDoc>{CMD}"endif"/[^a-z_A-Z0-9] {
// section enabled => absorb endif // section enabled => absorb endif
} }
<ClassDoc,LineDoc,AfterDocLine,AfterDocBrief,Doc,JavaDoc,AfterDoc>{CMD}"ingroup"{B}+ { <ClassDoc,ClassDocBrief,LineDoc,AfterDocLine,AfterDocBrief,Doc,JavaDoc,AfterDoc>{CMD}"ingroup"{B}+ {
lastGroupContext = YY_START; lastGroupContext = YY_START;
lineCount(); lineCount();
BEGIN( GroupName ); BEGIN( GroupName );
} }
<ClassDoc,LineDoc,AfterDocLine,AfterDocBrief,Doc,JavaDoc,AfterDoc>{CMD}"nosubgrouping"/[^a-z_A-Z0-9] { <ClassDoc,ClassDocBrief,LineDoc,AfterDocLine,AfterDocBrief,Doc,JavaDoc,AfterDoc>{CMD}"nosubgrouping"/[^a-z_A-Z0-9] {
current->subGrouping = FALSE; current->subGrouping = FALSE;
} }
<ClassDoc,LineDoc,AfterDocLine,AfterDocBrief,Doc,JavaDoc,AfterDoc>{CMD}"showinitializer"/[^a-z_A-Z0-9] { <ClassDoc,ClassDocBrief,LineDoc,AfterDocLine,AfterDocBrief,Doc,JavaDoc,AfterDoc>{CMD}"showinitializer"/[^a-z_A-Z0-9] {
current->initLines = 100000; // ON current->initLines = 100000; // ON
} }
<ClassDoc,LineDoc,AfterDocLine,AfterDocBrief,Doc,JavaDoc,AfterDoc>{CMD}"hideinitializer"/[^a-z_A-Z0-9] { <ClassDoc,ClassDocBrief,LineDoc,AfterDocLine,AfterDocBrief,Doc,JavaDoc,AfterDoc>{CMD}"hideinitializer"/[^a-z_A-Z0-9] {
current->initLines = 0; // OFF current->initLines = 0; // OFF
} }
<GroupName>{ID} { <GroupName>{ID} {
...@@ -3992,7 +3992,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'")) ...@@ -3992,7 +3992,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
} }
else else
{ {
yyLineNr++; if (yytext[yyleng-1]=='\n') yyLineNr++;
} }
BEGIN( lastBriefContext ); BEGIN( lastBriefContext );
} }
...@@ -4295,7 +4295,18 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'")) ...@@ -4295,7 +4295,18 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
<Doc,ClassDoc,PageDoc,ExampleDoc,AfterDoc>"\\"[a-z_A-Z][a-z_A-Z0-9]*[\\] { // directory type of text <Doc,ClassDoc,PageDoc,ExampleDoc,AfterDoc>"\\"[a-z_A-Z][a-z_A-Z0-9]*[\\] { // directory type of text
current->doc+=yytext; current->doc+=yytext;
} }
<Doc,ClassDoc,PageDoc,ExampleDoc,AfterDoc,CopyArgComment,SkipSection>{CMD}[a-z_A-Z][a-z_A-Z0-9]* { <SkipSection>{CMD}[a-z_A-Z][a-z_A-Z0-9]* {
QCString *pValue=Doxygen::aliasDict[yytext+1];
if (pValue)
{
int i,l=pValue->length();
for (i=l-1;i>=0;i--)
{
unput(pValue->at(i));
}
}
}
<Doc,ClassDoc,PageDoc,ExampleDoc,AfterDoc,CopyArgComment>{CMD}[a-z_A-Z][a-z_A-Z0-9]* {
bool handled=FALSE; bool handled=FALSE;
if ( useOverrideCommands) if ( useOverrideCommands)
{ {
...@@ -4338,9 +4349,12 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'")) ...@@ -4338,9 +4349,12 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
if (pValue) if (pValue)
{ {
int i,l=pValue->length(); int i,l=pValue->length();
char c;
for (i=l-1;i>=0;i--) for (i=l-1;i>=0;i--)
{ {
unput(pValue->at(i)); c=pValue->at(i);
unput(c);
if (c=='\n') yyLineNr--;
} }
} }
else else
......
...@@ -37,6 +37,8 @@ ...@@ -37,6 +37,8 @@
* -------------+------------------------------------------------------------ * -------------+------------------------------------------------------------
* 2002-07-11 | Update for new since 1.2.16 * 2002-07-11 | Update for new since 1.2.16
* -------------+------------------------------------------------------------ * -------------+------------------------------------------------------------
* 2002-09-24 | Update for new since 1.2.17
* -------------+------------------------------------------------------------
*/ */
#ifndef TRANSLATOR_FR_H #ifndef TRANSLATOR_FR_H
#define TRANSLATOR_FR_H #define TRANSLATOR_FR_H
...@@ -1268,6 +1270,17 @@ class TranslatorFrench : public TranslatorAdapter_1_2_17 ...@@ -1268,6 +1270,17 @@ class TranslatorFrench : public TranslatorAdapter_1_2_17
return "Table des matières"; return "Table des matières";
} }
//////////////////////////////////////////////////////////////////////////
// new since 1.2.17
//////////////////////////////////////////////////////////////////////////
/*! Used as the header of the list of item that have been
* flagged deprecated
*/
virtual QCString trDeprecatedList()
{
return "Liste obsolète";
}
}; };
......
...@@ -2569,9 +2569,11 @@ bool generateLink(OutputDocInterface &od,const char *clName, ...@@ -2569,9 +2569,11 @@ bool generateLink(OutputDocInterface &od,const char *clName,
} }
else if (compound) // link to compound else if (compound) // link to compound
{ {
if (lt==0 && compound->definitionType()==Definition::TypeGroup) if (lt==0 && anchor.isEmpty() && /* compound link */
compound->definitionType()==Definition::TypeGroup /* is group */
)
{ {
linkText=((GroupDef *)compound)->groupTitle(); linkText=((GroupDef *)compound)->groupTitle(); // use group's title as link
} }
od.writeObjectLink(compound->getReference(), od.writeObjectLink(compound->getReference(),
compound->getOutputFileBase(),anchor,linkText); compound->getOutputFileBase(),anchor,linkText);
......
...@@ -148,7 +148,7 @@ void XmlDocVisitor::visit(DocVerbatim *s) ...@@ -148,7 +148,7 @@ void XmlDocVisitor::visit(DocVerbatim *s)
{ {
case DocVerbatim::Code: // fall though case DocVerbatim::Code: // fall though
m_t << "<programlisting>"; m_t << "<programlisting>";
parseCode(m_ci,s->context(),s->text(),FALSE,0); parseCode(m_ci,s->context(),s->text().latin1(),FALSE,0);
m_t << "</programlisting>"; m_t << "</programlisting>";
break; break;
case DocVerbatim::Verbatim: case DocVerbatim::Verbatim:
...@@ -182,7 +182,7 @@ void XmlDocVisitor::visit(DocInclude *inc) ...@@ -182,7 +182,7 @@ void XmlDocVisitor::visit(DocInclude *inc)
{ {
case DocInclude::Include: case DocInclude::Include:
m_t << "<programlisting>"; m_t << "<programlisting>";
parseCode(m_ci,inc->context(),inc->text(),FALSE,0); parseCode(m_ci,inc->context(),inc->text().latin1(),FALSE,0);
m_t << "</programlisting>"; m_t << "</programlisting>";
break; break;
case DocInclude::DontInclude: case DocInclude::DontInclude:
...@@ -211,7 +211,7 @@ void XmlDocVisitor::visit(DocIncOperator *op) ...@@ -211,7 +211,7 @@ void XmlDocVisitor::visit(DocIncOperator *op)
} }
if (op->type()!=DocIncOperator::Skip) if (op->type()!=DocIncOperator::Skip)
{ {
parseCode(m_ci,op->context(),op->text(),FALSE,0); parseCode(m_ci,op->context(),op->text().latin1(),FALSE,0);
} }
if (op->isLast()) if (op->isLast())
{ {
...@@ -536,7 +536,7 @@ void XmlDocVisitor::visitPre(DocImage *img) ...@@ -536,7 +536,7 @@ void XmlDocVisitor::visitPre(DocImage *img)
} }
m_t << "\""; m_t << "\"";
QCString baseName=img->name(); QString baseName=img->name();
int i; int i;
if ((i=baseName.findRev('/'))!=-1 || (i=baseName.findRev('\\'))!=-1) if ((i=baseName.findRev('/'))!=-1 || (i=baseName.findRev('\\'))!=-1)
{ {
...@@ -719,7 +719,7 @@ void XmlDocVisitor::filter(const char *str) ...@@ -719,7 +719,7 @@ void XmlDocVisitor::filter(const char *str)
} }
} }
void XmlDocVisitor::startLink(const QCString &ref,const QCString &file,const QCString &anchor) void XmlDocVisitor::startLink(const QString &ref,const QString &file,const QString &anchor)
{ {
m_t << "<ref refid=\"" << file; m_t << "<ref refid=\"" << file;
if (!anchor.isEmpty()) m_t << "_1" << anchor; if (!anchor.isEmpty()) m_t << "_1" << anchor;
......
...@@ -23,9 +23,9 @@ ...@@ -23,9 +23,9 @@
class QTextStream; class QTextStream;
class BaseCodeDocInterface; class BaseCodeDocInterface;
class QCString; class QString;
/*! @brief Concrete visitor implementation for HTML output. */ /*! @brief Concrete visitor implementation for XML output. */
class XmlDocVisitor : public DocVisitor class XmlDocVisitor : public DocVisitor
{ {
public: public:
...@@ -130,8 +130,8 @@ class XmlDocVisitor : public DocVisitor ...@@ -130,8 +130,8 @@ class XmlDocVisitor : public DocVisitor
//-------------------------------------- //--------------------------------------
void filter(const char *str); void filter(const char *str);
void startLink(const QCString &ref,const QCString &file, void startLink(const QString &ref,const QString &file,
const QCString &anchor); const QString &anchor);
void endLink(); void endLink();
//-------------------------------------- //--------------------------------------
......
...@@ -1199,7 +1199,7 @@ static void writeXMLDocBlock(QTextStream &t, ...@@ -1199,7 +1199,7 @@ static void writeXMLDocBlock(QTextStream &t,
const QCString &text) const QCString &text)
{ {
QCString stext = text.stripWhiteSpace(); QCString stext = text.stripWhiteSpace();
if (text.isEmpty()) return; if (stext.isEmpty()) return;
// convert the documentation string into an abstract syntax tree // convert the documentation string into an abstract syntax tree
DocNode *root = validatingParseDoc(fileName,lineNr,scope,md,stext); DocNode *root = validatingParseDoc(fileName,lineNr,scope,md,stext);
// create a code generator // create a code generator
...@@ -1489,20 +1489,20 @@ static void generateXMLForMember(MemberDef *md,QTextStream &ti,QTextStream &t,De ...@@ -1489,20 +1489,20 @@ static void generateXMLForMember(MemberDef *md,QTextStream &ti,QTextStream &t,De
t << "</initializer>" << endl; t << "</initializer>" << endl;
} }
t << " <briefdescription>" << endl; t << " <briefdescription>" << endl;
writeXMLDocBlock(t,emd->getDefFileName(),emd->getDefLine(),scopeName,emd,emd->briefDescription()); writeXMLDocBlock(t,emd->briefFile(),emd->briefLine(),scopeName,emd,emd->briefDescription());
t << " </briefdescription>" << endl; t << " </briefdescription>" << endl;
t << " <detaileddescription>" << endl; t << " <detaileddescription>" << endl;
writeXMLDocBlock(t,emd->getDefFileName(),emd->getDefLine(),scopeName,emd,emd->documentation()); writeXMLDocBlock(t,emd->docFile(),emd->docLine(),scopeName,emd,emd->documentation());
t << " </detaileddescription>" << endl; t << " </detaileddescription>" << endl;
t << " </enumvalue>" << endl; t << " </enumvalue>" << endl;
} }
} }
} }
t << " <briefdescription>" << endl; t << " <briefdescription>" << endl;
writeXMLDocBlock(t,md->getDefFileName(),md->getDefLine(),scopeName,md,md->briefDescription()); writeXMLDocBlock(t,md->briefFile(),md->briefLine(),scopeName,md,md->briefDescription());
t << " </briefdescription>" << endl; t << " </briefdescription>" << endl;
t << " <detaileddescription>" << endl; t << " <detaileddescription>" << endl;
writeXMLDocBlock(t,md->getDefFileName(),md->getDefLine(),scopeName,md,md->documentation()); writeXMLDocBlock(t,md->docFile(),md->docLine(),scopeName,md,md->documentation());
t << " </detaileddescription>" << endl; t << " </detaileddescription>" << endl;
if (md->getDefLine()!=-1) if (md->getDefLine()!=-1)
{ {
...@@ -1763,10 +1763,10 @@ static void generateXMLForClass(ClassDef *cd,QTextStream &ti) ...@@ -1763,10 +1763,10 @@ static void generateXMLForClass(ClassDef *cd,QTextStream &ti)
generateXMLSection(cd,ti,t,&cd->related,"related"); generateXMLSection(cd,ti,t,&cd->related,"related");
t << " <briefdescription>" << endl; t << " <briefdescription>" << endl;
writeXMLDocBlock(t,cd->getDefFileName(),cd->getDefLine(),cd->name(),0,cd->briefDescription()); writeXMLDocBlock(t,cd->briefFile(),cd->briefLine(),cd->name(),0,cd->briefDescription());
t << " </briefdescription>" << endl; t << " </briefdescription>" << endl;
t << " <detaileddescription>" << endl; t << " <detaileddescription>" << endl;
writeXMLDocBlock(t,cd->getDefFileName(),cd->getDefLine(),cd->name(),0,cd->documentation()); writeXMLDocBlock(t,cd->docFile(),cd->docLine(),cd->name(),0,cd->documentation());
t << " </detaileddescription>" << endl; t << " </detaileddescription>" << endl;
DotClassGraph inheritanceGraph(cd,DotClassGraph::Inheritance); DotClassGraph inheritanceGraph(cd,DotClassGraph::Inheritance);
if (!inheritanceGraph.isTrivial()) if (!inheritanceGraph.isTrivial())
...@@ -1868,10 +1868,10 @@ static void generateXMLForNamespace(NamespaceDef *nd,QTextStream &ti) ...@@ -1868,10 +1868,10 @@ static void generateXMLForNamespace(NamespaceDef *nd,QTextStream &ti)
generateXMLSection(nd,ti,t,&nd->decVarMembers,"var"); generateXMLSection(nd,ti,t,&nd->decVarMembers,"var");
t << " <briefdescription>" << endl; t << " <briefdescription>" << endl;
writeXMLDocBlock(t,nd->getDefFileName(),nd->getDefLine(),0,0,nd->briefDescription()); writeXMLDocBlock(t,nd->briefFile(),nd->briefLine(),0,0,nd->briefDescription());
t << " </briefdescription>" << endl; t << " </briefdescription>" << endl;
t << " <detaileddescription>" << endl; t << " <detaileddescription>" << endl;
writeXMLDocBlock(t,nd->getDefFileName(),nd->getDefLine(),0,0,nd->documentation()); writeXMLDocBlock(t,nd->docFile(),nd->docLine(),0,0,nd->documentation());
t << " </detaileddescription>" << endl; t << " </detaileddescription>" << endl;
t << " <location file=\"" t << " <location file=\""
<< nd->getDefFileName() << "\" line=\"" << nd->getDefFileName() << "\" line=\""
...@@ -2002,10 +2002,10 @@ static void generateXMLForFile(FileDef *fd,QTextStream &ti) ...@@ -2002,10 +2002,10 @@ static void generateXMLForFile(FileDef *fd,QTextStream &ti)
generateXMLSection(fd,ti,t,&fd->decVarMembers,"var"); generateXMLSection(fd,ti,t,&fd->decVarMembers,"var");
t << " <briefdescription>" << endl; t << " <briefdescription>" << endl;
writeXMLDocBlock(t,fd->getDefFileName(),fd->getDefLine(),0,0,fd->briefDescription()); writeXMLDocBlock(t,fd->briefFile(),fd->briefLine(),0,0,fd->briefDescription());
t << " </briefdescription>" << endl; t << " </briefdescription>" << endl;
t << " <detaileddescription>" << endl; t << " <detaileddescription>" << endl;
writeXMLDocBlock(t,fd->getDefFileName(),fd->getDefLine(),0,0,fd->documentation()); writeXMLDocBlock(t,fd->docFile(),fd->docLine(),0,0,fd->documentation());
t << " </detaileddescription>" << endl; t << " </detaileddescription>" << endl;
t << " <programlisting>" << endl; t << " <programlisting>" << endl;
writeXMLCodeBlock(t,fd); writeXMLCodeBlock(t,fd);
...@@ -2125,10 +2125,10 @@ static void generateXMLForGroup(GroupDef *gd,QTextStream &ti) ...@@ -2125,10 +2125,10 @@ static void generateXMLForGroup(GroupDef *gd,QTextStream &ti)
generateXMLSection(gd,ti,t,&gd->decVarMembers,"var"); generateXMLSection(gd,ti,t,&gd->decVarMembers,"var");
t << " <briefdescription>" << endl; t << " <briefdescription>" << endl;
writeXMLDocBlock(t,gd->getDefFileName(),gd->getDefLine(),0,0,gd->briefDescription()); writeXMLDocBlock(t,gd->briefFile(),gd->briefLine(),0,0,gd->briefDescription());
t << " </briefdescription>" << endl; t << " </briefdescription>" << endl;
t << " <detaileddescription>" << endl; t << " <detaileddescription>" << endl;
writeXMLDocBlock(t,gd->getDefFileName(),gd->getDefLine(),0,0,gd->documentation()); writeXMLDocBlock(t,gd->docFile(),gd->docLine(),0,0,gd->documentation());
t << " </detaileddescription>" << endl; t << " </detaileddescription>" << endl;
t << " </compounddef>" << endl; t << " </compounddef>" << endl;
t << "</doxygen>" << endl; t << "</doxygen>" << endl;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment