Commit adb81f79 authored by Dimitri van Heesch's avatar Dimitri van Heesch

Release-1.1.5

parent 9b285300
DOXYGEN Version 1.1.4-20000625 DOXYGEN Version 1.1.5
CONTENTS CONTENTS
-------- --------
...@@ -15,8 +15,8 @@ INSTALLATION INSTRUCTIONS FOR UNIX: ...@@ -15,8 +15,8 @@ INSTALLATION INSTRUCTIONS FOR UNIX:
1. Unpack the archive, unless you already have: 1. Unpack the archive, unless you already have:
gunzip doxygen-1.1.4-20000625.src.tar.gz # uncompress the archive gunzip doxygen-1.1.5.src.tar.gz # uncompress the archive
tar xf doxygen-1.1.4-20000625.src.tar # unpack it tar xf doxygen-1.1.5.src.tar # unpack it
2. Run the configure script: 2. Run the configure script:
...@@ -255,4 +255,4 @@ The latest version of doxygen can be obtained at ...@@ -255,4 +255,4 @@ The latest version of doxygen can be obtained at
Enjoy, Enjoy,
Dimitri van Heesch (25 June 2000) Dimitri van Heesch (02 July 2000)
DOXYGEN Version 1.1.4-20000625 DOXYGEN Version 1.1.5
Please read INSTALL for compilation instructions. Please read INSTALL for compilation instructions.
...@@ -7,4 +7,4 @@ The latest version of doxygen can be obtained at ...@@ -7,4 +7,4 @@ The latest version of doxygen can be obtained at
Enjoy, Enjoy,
Dimitri van Heesch (25 June 2000) Dimitri van Heesch (02 July 2000)
1.1.4-20000625 1.1.5
...@@ -82,8 +82,6 @@ static bool * b=0; ...@@ -82,8 +82,6 @@ static bool * b=0;
static QStrList * l=0; static QStrList * l=0;
static int lastState; static int lastState;
static QCString elemStr; static QCString elemStr;
//static QCString tabSizeString;
//static QCString colsInAlphaIndexString;
#CONFIG Static #CONFIG Static
/* ----------------------------------------------------------------- /* -----------------------------------------------------------------
...@@ -313,6 +311,56 @@ void configStrToVal() ...@@ -313,6 +311,56 @@ void configStrToVal()
} }
Config::colsInAlphaIndex=cols; Config::colsInAlphaIndex=cols;
} }
if (maxDotGraphWidthString.isEmpty())
{
Config::maxDotGraphWidth=1024;
}
else
{
bool ok;
int width =maxDotGraphWidthString.toInt(&ok);
if (!ok)
{
warn_cont("Warning: argument of MAX_DOT_GRAPH_WIDTH is not a valid number in the range [1..20]!\n"
"Using the default of 1024 pixels!\n");
width=1024;
}
else if (width<250) // clip to lower bound
{
width=250;
}
else if (width>30000) // clip to upper bound
{
width=30000;
}
Config::maxDotGraphWidth=width;
}
if (maxDotGraphHeightString.isEmpty())
{
Config::maxDotGraphHeight=1024;
}
else
{
bool ok;
int height =maxDotGraphHeightString.toInt(&ok);
if (!ok)
{
warn_cont("Warning: argument of MAX_DOT_GRAPH_WIDTH is not a valid number in the range [1..20]!\n"
"Using the default of 1024 pixels!\n");
height=1024;
}
else if (height<250) // clip to lower bound
{
height=250;
}
else if (height>30000) // clip to upper bound
{
height=30000;
}
Config::maxDotGraphHeight=height;
}
} }
static void substEnvVarsInString(QCString &s) static void substEnvVarsInString(QCString &s)
......
...@@ -1338,6 +1338,16 @@ void init() ...@@ -1338,6 +1338,16 @@ void init()
"Note: wordpad (write) and others do not support links. \n" "Note: wordpad (write) and others do not support links. \n"
); );
addDependency("rtfHyperFlag","generateRTF"); addDependency("rtfHyperFlag","generateRTF");
ConfigString::add("rtfStylesheetFile",
"RTF_STYLESHEET_FILE",
"",
"file to load stylesheet definitions from",
"Load stylesheet definitions from file. Syntax is similar to doxygen's \n"
"config file, i.e. a series of assigments. You only have to provide \n"
"replacements, missing definitions are set to their default value. \n",
ConfigString::File
);
addDependency("rtfStylesheetFile","generateRTF");
//----------------------------------------------------------------------------------------------- //-----------------------------------------------------------------------------------------------
ConfigInfo::add( "Man","configuration options related to the man page output"); ConfigInfo::add( "Man","configuration options related to the man page output");
//----------------------------------------------------------------------------------------------- //-----------------------------------------------------------------------------------------------
...@@ -1383,9 +1393,19 @@ void init() ...@@ -1383,9 +1393,19 @@ void init()
"expand macros in the source.", "expand macros in the source.",
"If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro \n" "If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro \n"
"names in the source code. If set to NO (the default) only conditional \n" "names in the source code. If set to NO (the default) only conditional \n"
"compilation will be performed. \n" "compilation will be performed. Macro expansion can be done in a controlled \n"
"way by setting EXPAND_ONLY_PREDEF to YES. \n"
); );
addDependency("macroExpansionFlag","preprocessingFlag"); addDependency("macroExpansionFlag","preprocessingFlag");
ConfigBool::add( "onlyPredefinedFlag",
"EXPAND_ONLY_PREDEF",
"FALSE",
"expand only predefined macros",
"If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES \n"
"then the macro expansion is limited to the macros specified with the \n"
"PREDEFINED and EXPAND_AS_PREDEFINED tags. \n"
);
addDependency("onlyPredefinedFlag","preprocessingFlag");
ConfigBool::add( "searchIncludeFlag", ConfigBool::add( "searchIncludeFlag",
"SEARCH_INCLUDES", "SEARCH_INCLUDES",
"TRUE", "TRUE",
...@@ -1415,15 +1435,15 @@ void init() ...@@ -1415,15 +1435,15 @@ void init()
"omitted =1 is assumed. \n" "omitted =1 is assumed. \n"
); );
addDependency("predefined","preprocessingFlag"); addDependency("predefined","preprocessingFlag");
ConfigBool::add( "onlyPredefinedFlag", ConfigList::add( "expandAsDefinedList",
"EXPAND_ONLY_PREDEF", "EXPAND_AS_DEFINED",
"FALSE", "",
"expand only predefined macros", "list of defines to expand",
"If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES \n" "If the MACRO_EXPANSION and EXPAND_PREDEF_ONLY tags are set to YES then \n"
"then the macro expansion is limited to the macros specified with the \n" "this tag can be used to specify a list of macro names that should be expanded. \n"
"PREDEFINED tag. \n" "The macro definition that is found in the sources will be used. \n"
"Use the PREDEFINED tag if you want to use a different macro definition. \n"
); );
addDependency("onlyPredefinedFlag","preprocessingFlag");
//----------------------------------------------------------------------------------------------- //-----------------------------------------------------------------------------------------------
ConfigInfo::add( "External","Configuration::addtions related to external references "); ConfigInfo::add( "External","Configuration::addtions related to external references ");
//----------------------------------------------------------------------------------------------- //-----------------------------------------------------------------------------------------------
......
...@@ -353,6 +353,8 @@ if test "$f_shared" = NO; then ...@@ -353,6 +353,8 @@ if test "$f_shared" = NO; then
cat >> .tmakeconfig <<EOF cat >> .tmakeconfig <<EOF
TMAKE_LFLAGS = -non_shared TMAKE_LFLAGS = -non_shared
EOF EOF
elif test "$f_platform" = "solaris-cc"; then
TMAKE_LFLAGS = -Bstatic
else else
cat >> .tmakeconfig <<EOF cat >> .tmakeconfig <<EOF
TMAKE_LFLAGS = -static TMAKE_LFLAGS = -static
......
...@@ -131,6 +131,7 @@ followed by the descriptions of the tags grouped by category. ...@@ -131,6 +131,7 @@ followed by the descriptions of the tags grouped by category.
<li> \refitem cfg_repeat_brief REPEAT_BRIEF <li> \refitem cfg_repeat_brief REPEAT_BRIEF
<li> \refitem cfg_rtf_hyperlinks RTF_HYPERLINKS <li> \refitem cfg_rtf_hyperlinks RTF_HYPERLINKS
<li> \refitem cfg_rtf_output RTF_OUTPUT <li> \refitem cfg_rtf_output RTF_OUTPUT
<li> \refitem cfg_rtf_stylesheet_file RTF_STYLESHEET_FILE
<li> \refitem cfg_search_includes SEARCH_INCLUDES <li> \refitem cfg_search_includes SEARCH_INCLUDES
<li> \refitem cfg_searchengine SEARCHENGINE <li> \refitem cfg_searchengine SEARCHENGINE
<li> \refitem cfg_show_include_files SHOW_INCLUDE_FILES <li> \refitem cfg_show_include_files SHOW_INCLUDE_FILES
...@@ -194,7 +195,7 @@ followed by the descriptions of the tags grouped by category. ...@@ -194,7 +195,7 @@ followed by the descriptions of the tags grouped by category.
\addindex DISABLE_INDEX \addindex DISABLE_INDEX
If you want full control over the layout of the generated HTML pages it If you want full control over the layout of the generated HTML pages it
might be necessary to disable the index and replace it with your own. might be necessary to disable the index and replace it with your own.
The DISABLE_INDEX tag can be used to turn on/off the condensed index at The \c DISABLE_INDEX tag can be used to turn on/off the condensed index at
top of each page. A value of NO (the default) enables the index and the top of each page. A value of NO (the default) enables the index and the
value YES disables it. value YES disables it.
...@@ -311,7 +312,7 @@ followed by the descriptions of the tags grouped by category. ...@@ -311,7 +312,7 @@ followed by the descriptions of the tags grouped by category.
\anchor cfg_strip_code_comments \anchor cfg_strip_code_comments
<dt>\c STRIP_CODE_COMMENTS <dd> <dt>\c STRIP_CODE_COMMENTS <dd>
\addindex STRIP_CODE_COMMENTS \addindex STRIP_CODE_COMMENTS
Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct Setting the \c STRIP_CODE_COMMENTS tag to \c YES (the default) will instruct
doxygen to hide any special comment blocks from generated source code doxygen to hide any special comment blocks from generated source code
fragments. Normal C and C++ comments will always remain visible. fragments. Normal C and C++ comments will always remain visible.
...@@ -327,9 +328,9 @@ followed by the descriptions of the tags grouped by category. ...@@ -327,9 +328,9 @@ followed by the descriptions of the tags grouped by category.
\anchor cfg_hide_scope_names \anchor cfg_hide_scope_names
<dt>\c HIDE_SCOPE_NAMES <dd> <dt>\c HIDE_SCOPE_NAMES <dd>
\addindex HIDE_SCOPE_NAMES \addindex HIDE_SCOPE_NAMES
If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen If the \c HIDE_SCOPE_NAMES tag is set to \c NO (the default) then Doxygen
will show members with their full class and namespace scopes in the will show members with their full class and namespace scopes in the
documentation. If set to YES the scope will be hidden. documentation. If set to \c YES the scope will be hidden.
\anchor cfg_verbatim_headers \anchor cfg_verbatim_headers
<dt>\c VERBATIM_HEADERS <dd> <dt>\c VERBATIM_HEADERS <dd>
...@@ -370,9 +371,9 @@ followed by the descriptions of the tags grouped by category. ...@@ -370,9 +371,9 @@ followed by the descriptions of the tags grouped by category.
\anchor cfg_sort_member_docs \anchor cfg_sort_member_docs
<dt>\c SORT_MEMBER_DOCS <dd> <dt>\c SORT_MEMBER_DOCS <dd>
\addindex SORT_MEMBER_DOCS \addindex SORT_MEMBER_DOCS
If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen If the \c SORT_MEMBER_DOCS tag is set to \c YES (the default) then doxygen
will sort the (detailed) documentation of file and class members will sort the (detailed) documentation of file and class members
alphabetically by member name. If set to NO the members will appear in alphabetically by member name. If set to \c NO the members will appear in
declaration order. declaration order.
\anchor cfg_tab_size \anchor cfg_tab_size
...@@ -413,8 +414,8 @@ followed by the descriptions of the tags grouped by category. ...@@ -413,8 +414,8 @@ followed by the descriptions of the tags grouped by category.
\anchor cfg_warn_if_undocumented \anchor cfg_warn_if_undocumented
<dt>\c WARN_IF_UNDOCUMENTED <dd> <dt>\c WARN_IF_UNDOCUMENTED <dd>
\addindex WARN_IF_UNDOCUMENTED \addindex WARN_IF_UNDOCUMENTED
If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings If \c WARN_IF_UNDOCUMENTED is set to \c YES, then doxygen will generate warnings
for undocumented members. If EXTRACT_ALL is set to YES then this flag will for undocumented members. If \c EXTRACT_ALL is set to \c YES then this flag will
automatically be disabled. automatically be disabled.
\anchor cfg_warn_format \anchor cfg_warn_format
...@@ -467,7 +468,7 @@ followed by the descriptions of the tags grouped by category. ...@@ -467,7 +468,7 @@ followed by the descriptions of the tags grouped by category.
\anchor cfg_exclude_patterns \anchor cfg_exclude_patterns
<dt>\c EXCLUDE_PATTERNS <dd> <dt>\c EXCLUDE_PATTERNS <dd>
\addindex EXCLUDE_PATTERNS \addindex EXCLUDE_PATTERNS
If the value of the INPUT tag contains directories, you can use the If the value of the \c INPUT tag contains directories, you can use the
\c EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude \c EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
certain files from those directories. certain files from those directories.
...@@ -575,8 +576,8 @@ followed by the descriptions of the tags grouped by category. ...@@ -575,8 +576,8 @@ followed by the descriptions of the tags grouped by category.
<code>\$projectnumber</code>. <code>\$projectnumber</code>.
Doxygen will replace them by respectively Doxygen will replace them by respectively
the title of the page, the current date and time, only the current date, the title of the page, the current date and time, only the current date,
the version number of doxygen, the project name (see PROJECT_NAME), or the the version number of doxygen, the project name (see \c PROJECT_NAME), or the
project number (see PROJECT_NUMBER). project number (see \c PROJECT_NUMBER).
\anchor cfg_html_footer \anchor cfg_html_footer
<dt>\c HTML_FOOTER <dd> <dt>\c HTML_FOOTER <dd>
...@@ -596,8 +597,8 @@ followed by the descriptions of the tags grouped by category. ...@@ -596,8 +597,8 @@ followed by the descriptions of the tags grouped by category.
<code>\$projectnumber</code>. <code>\$projectnumber</code>.
Doxygen will replace them by respectively Doxygen will replace them by respectively
the title of the page, the current date and time, only the current date, the title of the page, the current date and time, only the current date,
the version number of doxygen, the project name (see PROJECT_NAME), or the the version number of doxygen, the project name (see \c PROJECT_NAME), or the
project number (see PROJECT_NUMBER). project number (see \c PROJECT_NUMBER).
\anchor cfg_html_stylesheet \anchor cfg_html_stylesheet
...@@ -638,10 +639,10 @@ FONT.charliteral { color: #008080 } ...@@ -638,10 +639,10 @@ FONT.charliteral { color: #008080 }
\addindex HTML_ALIGN_MEMBERS \addindex HTML_ALIGN_MEMBERS
If the \c HTML_ALIGN_MEMBERS tag is set to \c YES, the members of classes, If the \c HTML_ALIGN_MEMBERS tag is set to \c YES, the members of classes,
files or namespaces will be aligned in HTML using tables. If set to files or namespaces will be aligned in HTML using tables. If set to
NO a bullet list will be used. \c NO a bullet list will be used.
<b>Note:</b> <b>Note:</b>
Setting this tag to NO will become obsolete in the future, since I only Setting this tag to \c NO will become obsolete in the future, since I only
intent to support and test the aligned representation. intent to support and test the aligned representation.
\anchor cfg_generate_htmlhelp \anchor cfg_generate_htmlhelp
...@@ -695,7 +696,7 @@ FONT.charliteral { color: #008080 } ...@@ -695,7 +696,7 @@ FONT.charliteral { color: #008080 }
\anchor cfg_paper_type \anchor cfg_paper_type
<dt>\c PAPER_TYPE <dd> <dt>\c PAPER_TYPE <dd>
\addindex PAPER_TYPE \addindex PAPER_TYPE
The PAPER_TYPE tag can be used to set the paper type that is used The \c PAPER_TYPE tag can be used to set the paper type that is used
by the printer. Possible values are: by the printer. Possible values are:
<ul> <ul>
<li><code>a4</code> (210 x 297 mm). <li><code>a4</code> (210 x 297 mm).
...@@ -758,8 +759,8 @@ EXTRA_PACKAGES = times ...@@ -758,8 +759,8 @@ EXTRA_PACKAGES = times
<code>\$projectnumber</code>. <code>\$projectnumber</code>.
Doxygen will replace them by respectively Doxygen will replace them by respectively
the title of the page, the current date and time, only the current date, the title of the page, the current date and time, only the current date,
the version number of doxygen, the project name (see PROJECT_NAME), or the the version number of doxygen, the project name (see \c PROJECT_NAME), or the
project number (see PROJECT_NUMBER). project number (see \c PROJECT_NUMBER).
\anchor cfg_pdf_hyperlinks \anchor cfg_pdf_hyperlinks
<dt>\c PDF_HYPERLINKS <dd> <dt>\c PDF_HYPERLINKS <dd>
...@@ -796,7 +797,7 @@ EXTRA_PACKAGES = times ...@@ -796,7 +797,7 @@ EXTRA_PACKAGES = times
<dt>\c RTF_OUTPUT <dd> <dt>\c RTF_OUTPUT <dd>
\addindex RTF_OUTPUT \addindex RTF_OUTPUT
The \c RTF_OUTPUT tag is used to specify where the RTF docs will be put. The \c RTF_OUTPUT tag is used to specify where the RTF docs will be put.
If a relative path is entered the value of OUTPUT_DIRECTORY will be If a relative path is entered the value of \c OUTPUT_DIRECTORY will be
put in front of it. If left blank \c rtf will be used as the default path. put in front of it. If left blank \c rtf will be used as the default path.
\anchor cfg_compact_rtf \anchor cfg_compact_rtf
...@@ -818,6 +819,90 @@ EXTRA_PACKAGES = times ...@@ -818,6 +819,90 @@ EXTRA_PACKAGES = times
\par note: \par note:
wordpad (write) and others do not support links. wordpad (write) and others do not support links.
\anchor cfg_rtf_stylesheet_file RTF_STYLESHEET_FILE
<dt>\c RTF_STYLESHEET_FILE <dd>
\addindex RTF_STYLESHEET_FILE
Load stylesheet definitions from file. Syntax is similar to doxygen's
config file, i.e. a series of assigments. You only have to provide
replacements, missing definitions are set to their default value.
\htmlonly
Here are the default settings:
<font size=2><pre>Reset = \\pard\\plain
Heading1 = \\s1\\sb240\\sa60\\keepn\\widctlpar\\adjustright \\b\\f1\\fs36\\kerning36\\cgrid
Heading2 = \\s2\\sb240\\sa60\\keepn\\widctlpar\\adjustright \\b\\f1\\fs28\\kerning28\\cgrid
Heading3 = \\s3\\sb240\\sa60\\keepn\\widctlpar\\adjustright \\b\\f1\\cgrid
Heading4 = \\s4\\sb240\\sa60\\keepn\\widctlpar\\adjustright \\b\\f1\\fs20\\cgrid
Title = \\s15\\qc\\sb240\\sa60\\widctlpar\\outlinelevel0\\adjustright \\b\\f1\\fs32\\kerning28\\cgrid
SubTitle = \\s16\\qc\\sa60\\widctlpar\\outlinelevel1\\adjustright \\f1\\cgrid
BodyText = \\s17\\sa60\\sb30\\widctlpar\\qj \\fs22\\cgrid
DenseText = \\s18\\widctlpar\\fs22\\cgrid
Header = \\s28\\widctlpar\\tqc\\tx4320\\tqr\\tx8640\\adjustright \\fs20\\cgrid
Footer = \\s29\\widctlpar\\tqc\\tx4320\\tqr\\tx8640\\qr\\adjustright \\fs20\\cgrid
GroupHeader = \\s30\\li360\\sa60\\sb120\\keepn\\widctlpar\\adjustright \\b\\f1\\fs20\\cgrid
CodeExample0 = \\s40\\li0\\widctlpar\\adjustright \\shading1000\\cbpat8 \\f2\\fs16\\cgrid
CodeExample1 = \\s41\\li360\\widctlpar\\adjustright \\shading1000\\cbpat8 \\f2\\fs16\\cgrid
CodeExample2 = \\s42\\li720\\widctlpar\\adjustright \\shading1000\\cbpat8 \\f2\\fs16\\cgrid
CodeExample3 = \\s43\\li1080\\widctlpar\\adjustright \\shading1000\\cbpat8 \\f2\\fs16\\cgrid
CodeExample4 = \\s44\\li1440\\widctlpar\\adjustright \\shading1000\\cbpat8 \\f2\\fs16\\cgrid
CodeExample5 = \\s45\\li1800\\widctlpar\\adjustright \\shading1000\\cbpat8 \\f2\\fs16\\cgrid
CodeExample6 = \\s46\\li2160\\widctlpar\\adjustright \\shading1000\\cbpat8 \\f2\\fs16\\cgrid
CodeExample7 = \\s47\\li2520\\widctlpar\\adjustright \\shading1000\\cbpat8 \\f2\\fs16\\cgrid
CodeExample8 = \\s48\\li2880\\widctlpar\\adjustright \\shading1000\\cbpat8 \\f2\\fs16\\cgrid
CodeExample9 = \\s49\\li3240\\widctlpar\\adjustright \\shading1000\\cbpat8 \\f2\\fs16\\cgrid
ListContinue0 = \\s50\\li0\\sa60\\sb30\\qj\\widctlpar\\qj\\adjustright \\fs20\\cgrid
ListContinue1 = \\s51\\li360\\sa60\\sb30\\qj\\widctlpar\\qj\\adjustright \\fs20\\cgrid
ListContinue2 = \\s52\\li720\\sa60\\sb30\\qj\\widctlpar\\qj\\adjustright \\fs20\\cgrid
ListContinue3 = \\s53\\li1080\\sa60\\sb30\\qj\\widctlpar\\qj\\adjustright \\fs20\\cgrid
ListContinue4 = \\s54\\li1440\\sa60\\sb30\\qj\\widctlpar\\qj\\adjustright \\fs20\\cgrid
ListContinue5 = \\s55\\li1800\\sa60\\sb30\\qj\\widctlpar\\qj\\adjustright \\fs20\\cgrid
ListContinue6 = \\s56\\li2160\\sa60\\sb30\\qj\\widctlpar\\qj\\adjustright \\fs20\\cgrid
ListContinue7 = \\s57\\li2520\\sa60\\sb30\\qj\\widctlpar\\qj\\adjustright \\fs20\\cgrid
ListContinue8 = \\s58\\li2880\\sa60\\sb30\\qj\\widctlpar\\qj\\adjustright \\fs20\\cgrid
ListContinue9 = \\s59\\li3240\\sa60\\sb30\\qj\\widctlpar\\qj\\adjustright \\fs20\\cgrid
DescContinue0 = \\s60\\li0\\widctlpar\\ql\\adjustright \\fs20\\cgrid
DescContinue1 = \\s61\\li360\\widctlpar\\ql\\adjustright \\fs20\\cgrid
DescContinue2 = \\s62\\li720\\widctlpar\\ql\\adjustright \\fs20\\cgrid
DescContinue3 = \\s63\\li1080\\widctlpar\\ql\\adjustright \\fs20\\cgrid
DescContinue4 = \\s64\\li1440\\widctlpar\\ql\\adjustright \\fs20\\cgrid
DescContinue5 = \\s65\\li1800\\widctlpar\\ql\\adjustright \\fs20\\cgrid
DescContinue6 = \\s66\\li2160\\widctlpar\\ql\\adjustright \\fs20\\cgrid
DescContinue7 = \\s67\\li2520\\widctlpar\\ql\\adjustright \\fs20\\cgrid
DescContinue8 = \\s68\\li2880\\widctlpar\\ql\\adjustright \\fs20\\cgrid
DescContinue9 = \\s69\\li3240\\widctlpar\\ql\\adjustright \\fs20\\cgrid
LatexTOC0 = \\s70\\li0\\sa30\\sb30\\widctlpar\\tqr\\tldot\\tx8640\\adjustright \\fs20\\cgrid
LatexTOC1 = \\s71\\li360\\sa27\\sb27\\widctlpar\\tqr\\tldot\\tx8640\\adjustright \\fs20\\cgrid
LatexTOC2 = \\s72\\li720\\sa24\\sb24\\widctlpar\\tqr\\tldot\\tx8640\\adjustright \\fs20\\cgrid
LatexTOC3 = \\s73\\li1080\\sa21\\sb21\\widctlpar\\tqr\\tldot\\tx8640\\adjustright \\fs20\\cgrid
LatexTOC4 = \\s74\\li1440\\sa18\\sb18\\widctlpar\\tqr\\tldot\\tx8640\\adjustright \\fs20\\cgrid
LatexTOC5 = \\s75\\li1800\\sa15\\sb15\\widctlpar\\tqr\\tldot\\tx8640\\adjustright \\fs20\\cgrid
LatexTOC6 = \\s76\\li2160\\sa12\\sb12\\widctlpar\\tqr\\tldot\\tx8640\\adjustright \\fs20\\cgrid
LatexTOC7 = \\s77\\li2520\\sa9\\sb9\\widctlpar\\tqr\\tldot\\tx8640\\adjustright \\fs20\\cgrid
LatexTOC8 = \\s78\\li2880\\sa6\\sb6\\widctlpar\\tqr\\tldot\\tx8640\\adjustright \\fs20\\cgrid
LatexTOC9 = \\s79\\li3240\\sa3\\sb3\\widctlpar\\tqr\\tldot\\tx8640\\adjustright \\fs20\\cgrid
ListBullet0 = \\s80\\fi-360\\li360\\widctlpar\\jclisttab\\tx360{\\*\\pn \\pnlvlbody\\ilvl0\\ls1\\pnrnot0\\pndec }\\ls1\\adjustright \\fs20\\cgrid
ListBullet1 = \\s81\\fi-360\\li720\\widctlpar\\jclisttab\\tx720{\\*\\pn \\pnlvlbody\\ilvl0\\ls2\\pnrnot0\\pndec }\\ls2\\adjustright \\fs20\\cgrid
ListBullet2 = \\s82\\fi-360\\li1080\\widctlpar\\jclisttab\\tx1080{\\*\\pn \\pnlvlbody\\ilvl0\\ls3\\pnrnot0\\pndec }\\ls3\\adjustright \\fs20\\cgrid
ListBullet3 = \\s83\\fi-360\\li1440\\widctlpar\\jclisttab\\tx1440{\\*\\pn \\pnlvlbody\\ilvl0\\ls4\\pnrnot0\\pndec }\\ls4\\adjustright \\fs20\\cgrid
ListBullet4 = \\s84\\fi-360\\li1800\\widctlpar\\jclisttab\\tx1800{\\*\\pn \\pnlvlbody\\ilvl0\\ls5\\pnrnot0\\pndec }\\ls5\\adjustright \\fs20\\cgrid
ListBullet5 = \\s85\\fi-360\\li2160\\widctlpar\\jclisttab\\tx2160{\\*\\pn \\pnlvlbody\\ilvl0\\ls6\\pnrnot0\\pndec }\\ls6\\adjustright \\fs20\\cgrid
ListBullet6 = \\s86\\fi-360\\li2520\\widctlpar\\jclisttab\\tx2520{\\*\\pn \\pnlvlbody\\ilvl0\\ls7\\pnrnot0\\pndec }\\ls7\\adjustright \\fs20\\cgrid
ListBullet7 = \\s87\\fi-360\\li2880\\widctlpar\\jclisttab\\tx2880{\\*\\pn \\pnlvlbody\\ilvl0\\ls8\\pnrnot0\\pndec }\\ls8\\adjustright \\fs20\\cgrid
ListBullet8 = \\s88\\fi-360\\li3240\\widctlpar\\jclisttab\\tx3240{\\*\\pn \\pnlvlbody\\ilvl0\\ls9\\pnrnot0\\pndec }\\ls9\\adjustright \\fs20\\cgrid
ListBullet9 = \\s89\\fi-360\\li3600\\widctlpar\\jclisttab\\tx3600{\\*\\pn \\pnlvlbody\\ilvl0\\ls10\\pnrnot0\\pndec }\\ls10\\adjustright \\fs20\\cgrid
ListEnum0 = \\s90\\fi-360\\li360\\widctlpar\\fs20\\cgrid
ListEnum1 = \\s91\\fi-360\\li720\\widctlpar\\fs20\\cgrid
ListEnum2 = \\s92\\fi-360\\li1080\\widctlpar\\fs20\\cgrid
ListEnum3 = \\s93\\fi-360\\li1440\\widctlpar\\fs20\\cgrid
ListEnum4 = \\s94\\fi-360\\li1800\\widctlpar\\fs20\\cgrid
ListEnum4 = \\s95\\fi-360\\li2160\\widctlpar\\fs20\\cgrid
ListEnum5 = \\s96\\fi-360\\li2520\\widctlpar\\fs20\\cgrid
ListEnum6 = \\s97\\fi-360\\li2880\\widctlpar\\fs20\\cgrid
ListEnum7 = \\s98\\fi-360\\li3240\\widctlpar\\fs20\\cgrid
ListEnum8 = \\s99\\fi-360\\li3600\\widctlpar\\fs20\\cgrid
</pre></font>
\endhtmlonly
</dl> </dl>
\subsection man_output Man page related options \subsection man_output Man page related options
...@@ -860,7 +945,15 @@ EXTRA_PACKAGES = times ...@@ -860,7 +945,15 @@ EXTRA_PACKAGES = times
\addindex MACRO_EXPANSION \addindex MACRO_EXPANSION
If the \c MACRO_EXPANSION tag is set to \c YES Doxygen will expand all macro If the \c MACRO_EXPANSION tag is set to \c YES Doxygen will expand all macro
names in the source code. If set to \c NO (the default) only conditional names in the source code. If set to \c NO (the default) only conditional
compilation will be performed. compilation will be performed. Macro expansion can be done in a controlled
way by setting \c EXPAND_ONLY_PREDEF to \c YES.
\anchor cfg_expand_only_predef
<dt>\c EXPAND_ONLY_PREDEF <dd>
\addindex EXPAND_ONLY_PREDEF
If the \c EXPAND_ONLY_PREDEF and \c MACRO_EXPANSION tags are both set to YES
then the macro expansion is limited to the macros specified with the
\c PREDEFINED and \c EXPAND_AS_PREDEFINED tags.
\anchor cfg_search_includes \anchor cfg_search_includes
<dt>\c SEARCH_INCLUDES <dd> <dt>\c SEARCH_INCLUDES <dd>
...@@ -884,12 +977,13 @@ EXTRA_PACKAGES = times ...@@ -884,12 +977,13 @@ EXTRA_PACKAGES = times
<code>name</code> or <code>name=definition</code> (no spaces). <code>name</code> or <code>name=definition</code> (no spaces).
If the definition and the = are omitted =1 is assumed. If the definition and the = are omitted =1 is assumed.
\anchor cfg_expand_only_predef \anchor cfg_expand_as_defined
<dt>\c EXPAND_ONLY_PREDEF <dd> <dt>\c EXPAND_AS_DEFINED <dd>
\addindex EXPAND_ONLY_PREDEF \addindex EXPAND_AS_DEFINED
If the \c EXPAND_ONLY_PREDEF and \c MACRO_EXPANSION tags are both set to YES If the \c MACRO_EXPANSION and \c EXPAND_PREDEF_ONLY tags are set to \c YES then
then the macro expansion is limited to the macros specified with the this tag can be used to specify a list of macro names that should be expanded.
\c PREDEFINED tag. The macro definition that is found in the sources will be used.
Use the \c PREDEFINED tag if you want to use a different macro definition.
</dl> </dl>
\subsection config_extref External reference options \subsection config_extref External reference options
......
...@@ -59,7 +59,7 @@ Here is a list of the languages and their current maintainers: ...@@ -59,7 +59,7 @@ Here is a list of the languages and their current maintainers:
</TD> </TD>
<TD> <TD>
<a href="mailto:bordeux@NOSPAM.lig.di.epfl.ch"> <a href="mailto:bordeux@NOSPAM.lig.di.epfl.ch">
bordeux@NOSPAM.lig.di.epfl.ch</a> bordeux@NOSPAM.lig.di.epfl.ch</a>
</TD> </TD>
</TR> </TR>
<TR BGCOLOR="#ffffff"> <TR BGCOLOR="#ffffff">
...@@ -72,9 +72,9 @@ Here is a list of the languages and their current maintainers: ...@@ -72,9 +72,9 @@ Here is a list of the languages and their current maintainers:
</TD> </TD>
<TD> <TD>
<a href="mailto:sahag96@NOSPAM.nts.mh.se"> <a href="mailto:sahag96@NOSPAM.nts.mh.se">
sahag96@NOSPAM.nts.mh.se</a><br> sahag96@NOSPAM.nts.mh.se</a><br>
<a href="mailto:xet@NOSPAM.hem.passagen.se"> <a href="mailto:xet@NOSPAM.hem.passagen.se">
xet@NOSPAM.hem.passagen.se</a> xet@NOSPAM.hem.passagen.se</a>
</TD> </TD>
</TR> </TR>
<TR BGCOLOR="#ffffff"> <TR BGCOLOR="#ffffff">
...@@ -82,9 +82,12 @@ Here is a list of the languages and their current maintainers: ...@@ -82,9 +82,12 @@ Here is a list of the languages and their current maintainers:
Czech Czech
</TD> </TD>
<TD> <TD>
Petr Prikryl<BR>
Vlastimil Havran Vlastimil Havran
</TD> </TD>
<TD> <TD>
<a href="mailto:prikrylp@NOSPAM.skil.cz">
prikrylp@NOSPAM.skil.cz</a>
<a href="mailto:havran@NOSPAM.fel.cvut.cz"> <a href="mailto:havran@NOSPAM.fel.cvut.cz">
havran@NOSPAM.fel.cvut.cz</a> havran@NOSPAM.fel.cvut.cz</a>
</TD> </TD>
...@@ -206,7 +209,8 @@ Here is a list of the languages and their current maintainers: ...@@ -206,7 +209,8 @@ Here is a list of the languages and their current maintainers:
Swedish & Samuel H\"agglund & {\tt sahag96@nts.mh.se} \\ Swedish & Samuel H\"agglund & {\tt sahag96@nts.mh.se} \\
& XeT Erixon & {\tt xet@hem.passagen.se} \\ & XeT Erixon & {\tt xet@hem.passagen.se} \\
\hline \hline
Czech & Vlastimil Havran & {\tt havran@fel.cvut.cz} \\ Czech & Petr Prikryl & {\tt prikrylp@skil.cz} \\
& Vlastimil Havran & {\tt havran@fel.cvut.cz} \\
\hline \hline
Romanian & Ionutz Borcoman & {\tt borco@borco-ei.eng.hokudai.ac.jp} \\ Romanian & Ionutz Borcoman & {\tt borco@borco-ei.eng.hokudai.ac.jp} \\
\hline \hline
......
Name: doxygen Name: doxygen
Version: 1.1.4-20000625 Version: 1.1.5
Summary: documentation system for C, C++ and IDL Summary: documentation system for C, C++ and IDL
Release: 1 Release: 1
Source0: doxygen-%{version}.src.tar.gz Source0: doxygen-%{version}.src.tar.gz
......
...@@ -1605,8 +1605,14 @@ void ClassDef::determineImplUsageRelation() ...@@ -1605,8 +1605,14 @@ void ClassDef::determineImplUsageRelation()
int brCount=1; int brCount=1;
while (te<typeLen && brCount!=0) while (te<typeLen && brCount!=0)
{ {
if (type.at(te)=='<') brCount++; if (type.at(te)=='<')
if (type.at(te)=='>') brCount--; {
if (te<typeLen-1 && type.at(te+1)=='<') te++; else brCount++;
}
if (type.at(te)=='>')
{
if (te<typeLen-1 && type.at(te+1)=='>') te++; else brCount--;
}
te++; te++;
} }
} }
...@@ -1614,6 +1620,7 @@ void ClassDef::determineImplUsageRelation() ...@@ -1614,6 +1620,7 @@ void ClassDef::determineImplUsageRelation()
if (te>ts) templSpec = type.mid(ts,te-ts); if (te>ts) templSpec = type.mid(ts,te-ts);
ClassDef *cd=getResolvedClass(name()+"::"+type.mid(i,l)); ClassDef *cd=getResolvedClass(name()+"::"+type.mid(i,l));
if (cd==0) cd=getResolvedClass(type.mid(i,l)); // TODO: also try inbetween scopes! if (cd==0) cd=getResolvedClass(type.mid(i,l)); // TODO: also try inbetween scopes!
//printf("Search for class %s result=%p\n",type.mid(i,l).data(),cd);
if (cd) // class exists if (cd) // class exists
{ {
found=TRUE; found=TRUE;
......
...@@ -118,6 +118,7 @@ static const char * g_currentFontClass; ...@@ -118,6 +118,7 @@ static const char * g_currentFontClass;
static bool g_searchingForBody; static bool g_searchingForBody;
static bool g_insideBody; static bool g_insideBody;
static int g_bodyCurlyCount; static int g_bodyCurlyCount;
static ClassDef * g_classVar;
/*! start a new line of code, inserting a line number if g_sourceFileDef /*! start a new line of code, inserting a line number if g_sourceFileDef
* is TRUE. If a definition starts at the current line, then the line * is TRUE. If a definition starts at the current line, then the line
...@@ -341,6 +342,34 @@ static void generateClassLink(OutputList &ol,char *clName,int *clNameLen=0) ...@@ -341,6 +342,34 @@ static void generateClassLink(OutputList &ol,char *clName,int *clNameLen=0)
} }
} }
static ClassDef *stripClassName(const char *s)
{
QCString tmp=s;
if (tmp.isEmpty()) return 0;
static const QRegExp re("[a-z_A-Z][a-z_A-Z0-9:]*");
int p=0,i,l;
while ((i=re.match(tmp,p,&l))!=-1)
{
ClassDef *cd=0;
QCString clName = tmp.mid(i,l);
//printf("g_classScope=`%s' clName=`%s'\n",g_classScope.data(),clName.data());
if (!g_classScope.isEmpty())
{
cd=getResolvedClass(g_classScope+"::"+clName);
}
if (cd==0)
{
cd=getResolvedClass(clName);
}
if (cd)
{
return cd;
}
p=i+l;
}
return 0;
}
static bool getLink(const char *className, static bool getLink(const char *className,
const char *memberName,OutputList &result, const char *memberName,OutputList &result,
const char *text=0) const char *text=0)
...@@ -375,10 +404,11 @@ static bool getLink(const char *className, ...@@ -375,10 +404,11 @@ static bool getLink(const char *className,
} }
} }
Definition *d=0; Definition *d=0;
if (cd) d=cd; else if (cd) d=nd; else if (fd) d=fd; else d=gd; if (cd) d=cd; else if (nd) d=nd; else if (fd) d=fd; else d=gd;
if (d && d->isLinkable()) if (d && d->isLinkable())
{ {
g_classVar = stripClassName(md->typeString());
if (g_currentDefinition && g_currentMemberDef && if (g_currentDefinition && g_currentMemberDef &&
md!=g_currentMemberDef && g_insideBody) md!=g_currentMemberDef && g_insideBody)
{ {
...@@ -393,32 +423,47 @@ static bool getLink(const char *className, ...@@ -393,32 +423,47 @@ static bool getLink(const char *className,
return FALSE; return FALSE;
} }
static ClassDef *stripClassName(const char *s) static bool generateClassMemberLink(OutputList &ol,ClassDef *mcd,const char *memName)
{ {
QCString tmp=s; //printf("generateClassMemberLink(%s,%s)\n",mcd->name().data(),memName);
if (tmp.isEmpty()) return 0; MemberName *mmn=memberNameDict[memName];
static const QRegExp re("[a-z_A-Z][a-z_A-Z0-9:]*"); if (mmn)
int p=0,i,l;
while ((i=re.match(tmp,p,&l))!=-1)
{ {
ClassDef *cd=0; MemberNameIterator mmni(*mmn);
QCString clName = tmp.mid(i,l); MemberDef *mmd,*xmd=0;
//printf("g_classScope=`%s' clName=`%s'\n",g_classScope.data(),clName.data()); ClassDef *xcd=0;
if (!g_classScope.isEmpty()) const int maxInheritanceDepth = 100000;
{ int mdist=maxInheritanceDepth;
cd=getResolvedClass(g_classScope+"::"+clName); for (;(mmd=mmni.current());++mmni)
}
if (cd==0)
{ {
cd=getResolvedClass(clName); int m=minClassDistance(mcd,mmd->memberClass());
if (m<mdist && mmd->memberClass()->isLinkable())
{
mdist=m;
xcd=mmd->memberClass();
xmd=mmd;
}
} }
if (cd) if (mdist!=maxInheritanceDepth)
{ {
return cd; // extract class definition of the return type in order to resolve
// a->b()->c() like call chains
g_classVar = stripClassName(xmd->typeString());
// add usage reference
if (g_currentDefinition && g_currentMemberDef &&
xmd!=g_currentMemberDef && g_insideBody)
{
xmd->addSourceReference(g_currentMemberDef);
}
// write the actual link
writeMultiLineCodeLink(ol,xcd->getReference(),
xcd->getOutputFileBase(),xmd->anchor(),memName);
return TRUE;
} }
p=i+l;
} }
return 0; return FALSE;
} }
static void generateMemberLink(OutputList &ol,const char *varName, static void generateMemberLink(OutputList &ol,const char *varName,
...@@ -493,6 +538,8 @@ static void generateMemberLink(OutputList &ol,const char *varName, ...@@ -493,6 +538,8 @@ static void generateMemberLink(OutputList &ol,const char *varName,
ClassDef *mcd=stripClassName(vmd->typeString()); ClassDef *mcd=stripClassName(vmd->typeString());
if (mcd && mcd->isLinkable()) if (mcd && mcd->isLinkable())
{ {
if (generateClassMemberLink(ol,mcd,memName)) return;
#if 0
//printf("Found class `%s'\n",mcd->name().data()); //printf("Found class `%s'\n",mcd->name().data());
MemberName *mmn=memberNameDict[memName]; MemberName *mmn=memberNameDict[memName];
if (mmn) if (mmn)
...@@ -524,6 +571,7 @@ static void generateMemberLink(OutputList &ol,const char *varName, ...@@ -524,6 +571,7 @@ static void generateMemberLink(OutputList &ol,const char *varName,
return; return;
} }
} }
#endif
} }
} }
} }
...@@ -925,9 +973,21 @@ TYPEKW ("bool"|"char"|"double"|"float"|"int"|"long"|"short"|"signed"|"unsigned" ...@@ -925,9 +973,21 @@ TYPEKW ("bool"|"char"|"double"|"float"|"int"|"long"|"short"|"signed"|"unsigned"
} }
<MemberCall>{SCOPENAME}/{B}*"(" { <MemberCall>{SCOPENAME}/{B}*"(" {
if (!g_name.isEmpty()) if (!g_name.isEmpty())
{
generateMemberLink(*g_code,g_name,yytext); generateMemberLink(*g_code,g_name,yytext);
}
else if (g_classVar)
{
if (!generateClassMemberLink(*g_code,g_classVar,yytext))
{
g_code->codify(yytext);
}
g_classVar=0;
}
else else
{
g_code->codify(yytext); g_code->codify(yytext);
}
g_name.resize(0);g_type.resize(0); g_name.resize(0);g_type.resize(0);
g_bracketCount=0; g_bracketCount=0;
BEGIN(FuncCall); BEGIN(FuncCall);
...@@ -1350,6 +1410,7 @@ void parseCode(OutputList &ol,const char *className,const QCString &s, ...@@ -1350,6 +1410,7 @@ void parseCode(OutputList &ol,const char *className,const QCString &s,
g_bodyCurlyCount = 0; g_bodyCurlyCount = 0;
g_bracketCount = 0; g_bracketCount = 0;
g_sharpCount = 0; g_sharpCount = 0;
g_classVar = 0;
g_classScope = className; g_classScope = className;
g_exampleBlock = exBlock; g_exampleBlock = exBlock;
g_exampleName = exName; g_exampleName = exName;
......
...@@ -96,15 +96,17 @@ struct Config ...@@ -96,15 +96,17 @@ struct Config
static QCString rtfOutputDir; // the directory to put the RTF files static QCString rtfOutputDir; // the directory to put the RTF files
static bool compactRTFFlag; // generate more compact RTF static bool compactRTFFlag; // generate more compact RTF
static bool rtfHyperFlag; // generate hyper links in RTF static bool rtfHyperFlag; // generate hyper links in RTF
static QCString rtfStylesheetFile; // file to load stylesheet definitions from
static bool generateMan; // generate Man pages static bool generateMan; // generate Man pages
static QCString manOutputDir; // the directory to put the man pages static QCString manOutputDir; // the directory to put the man pages
static QCString manExtension; // extension the man page files static QCString manExtension; // extension the man page files
static bool preprocessingFlag; // enable preprocessing static bool preprocessingFlag; // enable preprocessing
static bool macroExpansionFlag; // expand macros in the source. static bool macroExpansionFlag; // expand macros in the source.
static bool onlyPredefinedFlag; // expand only predefined macros
static bool searchIncludeFlag; // search for included files static bool searchIncludeFlag; // search for included files
static QStrList includePath; // list of include paths static QStrList includePath; // list of include paths
static QStrList predefined; // list of predefined macro names. static QStrList predefined; // list of predefined macro names.
static bool onlyPredefinedFlag; // expand only predefined macros static QStrList expandAsDefinedList; // list of defines to expand
static QStrList tagFileList; // list of tag files static QStrList tagFileList; // list of tag files
static QCString genTagFile; // the tag file to generate static QCString genTagFile; // the tag file to generate
static bool allExtFlag; // include all external classes flag static bool allExtFlag; // include all external classes flag
......
...@@ -131,15 +131,17 @@ bool Config::generateRTF = TRUE; ...@@ -131,15 +131,17 @@ bool Config::generateRTF = TRUE;
QCString Config::rtfOutputDir = "rtf"; QCString Config::rtfOutputDir = "rtf";
bool Config::compactRTFFlag = FALSE; bool Config::compactRTFFlag = FALSE;
bool Config::rtfHyperFlag = FALSE; bool Config::rtfHyperFlag = FALSE;
QCString Config::rtfStylesheetFile;
bool Config::generateMan = TRUE; bool Config::generateMan = TRUE;
QCString Config::manOutputDir = "man"; QCString Config::manOutputDir = "man";
QCString Config::manExtension = ".3"; QCString Config::manExtension = ".3";
bool Config::preprocessingFlag = TRUE; bool Config::preprocessingFlag = TRUE;
bool Config::macroExpansionFlag = FALSE; bool Config::macroExpansionFlag = FALSE;
bool Config::onlyPredefinedFlag = FALSE;
bool Config::searchIncludeFlag = TRUE; bool Config::searchIncludeFlag = TRUE;
QStrList Config::includePath; QStrList Config::includePath;
QStrList Config::predefined; QStrList Config::predefined;
bool Config::onlyPredefinedFlag = FALSE; QStrList Config::expandAsDefinedList;
QStrList Config::tagFileList; QStrList Config::tagFileList;
QCString Config::genTagFile; QCString Config::genTagFile;
bool Config::allExtFlag = FALSE; bool Config::allExtFlag = FALSE;
...@@ -175,8 +177,6 @@ static bool * b=0; ...@@ -175,8 +177,6 @@ static bool * b=0;
static QStrList * l=0; static QStrList * l=0;
static int lastState; static int lastState;
static QCString elemStr; static QCString elemStr;
//static QCString tabSizeString;
//static QCString colsInAlphaIndexString;
static QCString tabSizeString; static QCString tabSizeString;
static QCString colsInAlphaIndexString; static QCString colsInAlphaIndexString;
static QCString maxDotGraphWidthString; static QCString maxDotGraphWidthString;
...@@ -279,15 +279,17 @@ static int yyread(char *buf,int max_size) ...@@ -279,15 +279,17 @@ static int yyread(char *buf,int max_size)
<Start>"RTF_OUTPUT"[ \t]*"=" { BEGIN(GetString); s=&Config::rtfOutputDir; s->resize(0); } <Start>"RTF_OUTPUT"[ \t]*"=" { BEGIN(GetString); s=&Config::rtfOutputDir; s->resize(0); }
<Start>"COMPACT_RTF"[ \t]*"=" { BEGIN(GetBool); b=&Config::compactRTFFlag; } <Start>"COMPACT_RTF"[ \t]*"=" { BEGIN(GetBool); b=&Config::compactRTFFlag; }
<Start>"RTF_HYPERLINKS"[ \t]*"=" { BEGIN(GetBool); b=&Config::rtfHyperFlag; } <Start>"RTF_HYPERLINKS"[ \t]*"=" { BEGIN(GetBool); b=&Config::rtfHyperFlag; }
<Start>"RTF_STYLESHEET_FILE"[ \t]*"=" { BEGIN(GetString); s=&Config::rtfStylesheetFile; s->resize(0); }
<Start>"GENERATE_MAN"[ \t]*"=" { BEGIN(GetBool); b=&Config::generateMan; } <Start>"GENERATE_MAN"[ \t]*"=" { BEGIN(GetBool); b=&Config::generateMan; }
<Start>"MAN_OUTPUT"[ \t]*"=" { BEGIN(GetString); s=&Config::manOutputDir; s->resize(0); } <Start>"MAN_OUTPUT"[ \t]*"=" { BEGIN(GetString); s=&Config::manOutputDir; s->resize(0); }
<Start>"MAN_EXTENSION"[ \t]*"=" { BEGIN(GetString); s=&Config::manExtension; s->resize(0); } <Start>"MAN_EXTENSION"[ \t]*"=" { BEGIN(GetString); s=&Config::manExtension; s->resize(0); }
<Start>"ENABLE_PREPROCESSING"[ \t]*"=" { BEGIN(GetBool); b=&Config::preprocessingFlag; } <Start>"ENABLE_PREPROCESSING"[ \t]*"=" { BEGIN(GetBool); b=&Config::preprocessingFlag; }
<Start>"MACRO_EXPANSION"[ \t]*"=" { BEGIN(GetBool); b=&Config::macroExpansionFlag; } <Start>"MACRO_EXPANSION"[ \t]*"=" { BEGIN(GetBool); b=&Config::macroExpansionFlag; }
<Start>"EXPAND_ONLY_PREDEF"[ \t]*"=" { BEGIN(GetBool); b=&Config::onlyPredefinedFlag; }
<Start>"SEARCH_INCLUDES"[ \t]*"=" { BEGIN(GetBool); b=&Config::searchIncludeFlag; } <Start>"SEARCH_INCLUDES"[ \t]*"=" { BEGIN(GetBool); b=&Config::searchIncludeFlag; }
<Start>"INCLUDE_PATH"[ \t]*"=" { BEGIN(GetStrList); l=&Config::includePath; l->clear(); elemStr=""; } <Start>"INCLUDE_PATH"[ \t]*"=" { BEGIN(GetStrList); l=&Config::includePath; l->clear(); elemStr=""; }
<Start>"PREDEFINED"[ \t]*"=" { BEGIN(GetStrList); l=&Config::predefined; l->clear(); elemStr=""; } <Start>"PREDEFINED"[ \t]*"=" { BEGIN(GetStrList); l=&Config::predefined; l->clear(); elemStr=""; }
<Start>"EXPAND_ONLY_PREDEF"[ \t]*"=" { BEGIN(GetBool); b=&Config::onlyPredefinedFlag; } <Start>"EXPAND_AS_DEFINED"[ \t]*"=" { BEGIN(GetStrList); l=&Config::expandAsDefinedList; l->clear(); elemStr=""; }
<Start>"TAGFILES"[ \t]*"=" { BEGIN(GetStrList); l=&Config::tagFileList; l->clear(); elemStr=""; } <Start>"TAGFILES"[ \t]*"=" { BEGIN(GetStrList); l=&Config::tagFileList; l->clear(); elemStr=""; }
<Start>"GENERATE_TAGFILE"[ \t]*"=" { BEGIN(GetString); s=&Config::genTagFile; s->resize(0); } <Start>"GENERATE_TAGFILE"[ \t]*"=" { BEGIN(GetString); s=&Config::genTagFile; s->resize(0); }
<Start>"ALLEXTERNALS"[ \t]*"=" { BEGIN(GetBool); b=&Config::allExtFlag; } <Start>"ALLEXTERNALS"[ \t]*"=" { BEGIN(GetBool); b=&Config::allExtFlag; }
...@@ -546,6 +548,7 @@ void dumpConfig() ...@@ -546,6 +548,7 @@ void dumpConfig()
printf("rtfOutputDir=`%s'\n",Config::rtfOutputDir.data()); printf("rtfOutputDir=`%s'\n",Config::rtfOutputDir.data());
printf("compactRTFFlag=`%d'\n",Config::compactRTFFlag); printf("compactRTFFlag=`%d'\n",Config::compactRTFFlag);
printf("rtfHyperFlag=`%d'\n",Config::rtfHyperFlag); printf("rtfHyperFlag=`%d'\n",Config::rtfHyperFlag);
printf("rtfStylesheetFile=`%s'\n",Config::rtfStylesheetFile.data());
printf("# configuration options related to the man page output\n"); printf("# configuration options related to the man page output\n");
printf("generateMan=`%d'\n",Config::generateMan); printf("generateMan=`%d'\n",Config::generateMan);
printf("manOutputDir=`%s'\n",Config::manOutputDir.data()); printf("manOutputDir=`%s'\n",Config::manOutputDir.data());
...@@ -553,6 +556,7 @@ void dumpConfig() ...@@ -553,6 +556,7 @@ void dumpConfig()
printf("# Configuration options related to the preprocessor \n"); printf("# Configuration options related to the preprocessor \n");
printf("preprocessingFlag=`%d'\n",Config::preprocessingFlag); printf("preprocessingFlag=`%d'\n",Config::preprocessingFlag);
printf("macroExpansionFlag=`%d'\n",Config::macroExpansionFlag); printf("macroExpansionFlag=`%d'\n",Config::macroExpansionFlag);
printf("onlyPredefinedFlag=`%d'\n",Config::onlyPredefinedFlag);
printf("searchIncludeFlag=`%d'\n",Config::searchIncludeFlag); printf("searchIncludeFlag=`%d'\n",Config::searchIncludeFlag);
{ {
char *is=Config::includePath.first(); char *is=Config::includePath.first();
...@@ -570,7 +574,14 @@ void dumpConfig() ...@@ -570,7 +574,14 @@ void dumpConfig()
is=Config::predefined.next(); is=Config::predefined.next();
} }
} }
printf("onlyPredefinedFlag=`%d'\n",Config::onlyPredefinedFlag); {
char *is=Config::expandAsDefinedList.first();
while (is)
{
printf("expandAsDefinedList=`%s'\n",is);
is=Config::expandAsDefinedList.next();
}
}
printf("# Configuration::addtions related to external references \n"); printf("# Configuration::addtions related to external references \n");
{ {
char *is=Config::tagFileList.first(); char *is=Config::tagFileList.first();
...@@ -677,15 +688,17 @@ void Config::init() ...@@ -677,15 +688,17 @@ void Config::init()
Config::rtfOutputDir = "rtf"; Config::rtfOutputDir = "rtf";
Config::compactRTFFlag = FALSE; Config::compactRTFFlag = FALSE;
Config::rtfHyperFlag = FALSE; Config::rtfHyperFlag = FALSE;
Config::rtfStylesheetFile.resize(0);
Config::generateMan = TRUE; Config::generateMan = TRUE;
Config::manOutputDir = "man"; Config::manOutputDir = "man";
Config::manExtension = ".3"; Config::manExtension = ".3";
Config::preprocessingFlag = TRUE; Config::preprocessingFlag = TRUE;
Config::macroExpansionFlag = FALSE; Config::macroExpansionFlag = FALSE;
Config::onlyPredefinedFlag = FALSE;
Config::searchIncludeFlag = TRUE; Config::searchIncludeFlag = TRUE;
Config::includePath.clear(); Config::includePath.clear();
Config::predefined.clear(); Config::predefined.clear();
Config::onlyPredefinedFlag = FALSE; Config::expandAsDefinedList.clear();
Config::tagFileList.clear(); Config::tagFileList.clear();
Config::genTagFile.resize(0); Config::genTagFile.resize(0);
Config::allExtFlag = FALSE; Config::allExtFlag = FALSE;
...@@ -1554,6 +1567,17 @@ void writeTemplateConfig(QFile *f,bool sl) ...@@ -1554,6 +1567,17 @@ void writeTemplateConfig(QFile *f,bool sl)
writeBoolValue(t,Config::rtfHyperFlag); writeBoolValue(t,Config::rtfHyperFlag);
t << "\n"; t << "\n";
if (!sl) if (!sl)
{
t << "\n";
t << "# Load stylesheet definitions from file. Syntax is similar to doxygen's \n";
t << "# config file, i.e. a series of assigments. You only have to provide \n";
t << "# replacements, missing definitions are set to their default value. \n";
t << "\n";
}
t << "RTF_STYLESHEET_FILE = ";
writeStringValue(t,Config::rtfStylesheetFile);
t << "\n";
if (!sl)
{ {
t << "\n"; t << "\n";
} }
...@@ -1614,13 +1638,25 @@ void writeTemplateConfig(QFile *f,bool sl) ...@@ -1614,13 +1638,25 @@ void writeTemplateConfig(QFile *f,bool sl)
t << "\n"; t << "\n";
t << "# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro \n"; t << "# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro \n";
t << "# names in the source code. If set to NO (the default) only conditional \n"; t << "# names in the source code. If set to NO (the default) only conditional \n";
t << "# compilation will be performed. \n"; t << "# compilation will be performed. Macro expansion can be done in a controlled \n";
t << "# way by setting EXPAND_ONLY_PREDEF to YES. \n";
t << "\n"; t << "\n";
} }
t << "MACRO_EXPANSION = "; t << "MACRO_EXPANSION = ";
writeBoolValue(t,Config::macroExpansionFlag); writeBoolValue(t,Config::macroExpansionFlag);
t << "\n"; t << "\n";
if (!sl) if (!sl)
{
t << "\n";
t << "# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES \n";
t << "# then the macro expansion is limited to the macros specified with the \n";
t << "# PREDEFINED and EXPAND_AS_PREDEFINED tags. \n";
t << "\n";
}
t << "EXPAND_ONLY_PREDEF = ";
writeBoolValue(t,Config::onlyPredefinedFlag);
t << "\n";
if (!sl)
{ {
t << "\n"; t << "\n";
t << "# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files \n"; t << "# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files \n";
...@@ -1657,13 +1693,14 @@ void writeTemplateConfig(QFile *f,bool sl) ...@@ -1657,13 +1693,14 @@ void writeTemplateConfig(QFile *f,bool sl)
if (!sl) if (!sl)
{ {
t << "\n"; t << "\n";
t << "# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES \n"; t << "# If the MACRO_EXPANSION and EXPAND_PREDEF_ONLY tags are set to YES then \n";
t << "# then the macro expansion is limited to the macros specified with the \n"; t << "# this tag can be used to specify a list of macro names that should be expanded. \n";
t << "# PREDEFINED tag. \n"; t << "# The macro definition that is found in the sources will be used. \n";
t << "# Use the PREDEFINED tag if you want to use a different macro definition. \n";
t << "\n"; t << "\n";
} }
t << "EXPAND_ONLY_PREDEF = "; t << "EXPAND_AS_DEFINED = ";
writeBoolValue(t,Config::onlyPredefinedFlag); writeStringList(t,Config::expandAsDefinedList);
t << "\n"; t << "\n";
if (!sl) if (!sl)
{ {
...@@ -1942,6 +1979,56 @@ void configStrToVal() ...@@ -1942,6 +1979,56 @@ void configStrToVal()
} }
Config::colsInAlphaIndex=cols; Config::colsInAlphaIndex=cols;
} }
if (maxDotGraphWidthString.isEmpty())
{
Config::maxDotGraphWidth=1024;
}
else
{
bool ok;
int width =maxDotGraphWidthString.toInt(&ok);
if (!ok)
{
warn_cont("Warning: argument of MAX_DOT_GRAPH_WIDTH is not a valid number in the range [1..20]!\n"
"Using the default of 1024 pixels!\n");
width=1024;
}
else if (width<250) // clip to lower bound
{
width=250;
}
else if (width>30000) // clip to upper bound
{
width=30000;
}
Config::maxDotGraphWidth=width;
}
if (maxDotGraphHeightString.isEmpty())
{
Config::maxDotGraphHeight=1024;
}
else
{
bool ok;
int height =maxDotGraphHeightString.toInt(&ok);
if (!ok)
{
warn_cont("Warning: argument of MAX_DOT_GRAPH_WIDTH is not a valid number in the range [1..20]!\n"
"Using the default of 1024 pixels!\n");
height=1024;
}
else if (height<250) // clip to lower bound
{
height=250;
}
else if (height>30000) // clip to upper bound
{
height=30000;
}
Config::maxDotGraphHeight=height;
}
} }
static void substEnvVarsInString(QCString &s) static void substEnvVarsInString(QCString &s)
...@@ -2073,10 +2160,12 @@ void substituteEnvironmentVars() ...@@ -2073,10 +2160,12 @@ void substituteEnvironmentVars()
substEnvVarsInStrList( Config::extraPackageList ); substEnvVarsInStrList( Config::extraPackageList );
substEnvVarsInString( Config::latexHeaderFile ); substEnvVarsInString( Config::latexHeaderFile );
substEnvVarsInString( Config::rtfOutputDir ); substEnvVarsInString( Config::rtfOutputDir );
substEnvVarsInString( Config::rtfStylesheetFile );
substEnvVarsInString( Config::manOutputDir ); substEnvVarsInString( Config::manOutputDir );
substEnvVarsInString( Config::manExtension ); substEnvVarsInString( Config::manExtension );
substEnvVarsInStrList( Config::includePath ); substEnvVarsInStrList( Config::includePath );
substEnvVarsInStrList( Config::predefined ); substEnvVarsInStrList( Config::predefined );
substEnvVarsInStrList( Config::expandAsDefinedList );
substEnvVarsInStrList( Config::tagFileList ); substEnvVarsInStrList( Config::tagFileList );
substEnvVarsInString( Config::genTagFile ); substEnvVarsInString( Config::genTagFile );
substEnvVarsInString( Config::perlPath ); substEnvVarsInString( Config::perlPath );
......
...@@ -143,7 +143,7 @@ static bool readCodeFragment(const char *fileName, ...@@ -143,7 +143,7 @@ static bool readCodeFragment(const char *fileName,
{ {
// skip until the opening bracket or lonely : is found // skip until the opening bracket or lonely : is found
bool found=FALSE; bool found=FALSE;
char cn; char cn=0;
while (lineNr<=endLine && !f.atEnd() && !found) while (lineNr<=endLine && !f.atEnd() && !found)
{ {
while ((c=f.getch())!='{' && c!=':' && c!=-1) if (c=='\n') lineNr++; while ((c=f.getch())!='{' && c!=':' && c!=-1) if (c=='\n') lineNr++;
......
...@@ -996,7 +996,8 @@ static void findMaximalDotGraph(DotNode *root, ...@@ -996,7 +996,8 @@ static void findMaximalDotGraph(DotNode *root,
readBoundingBoxDot(baseName+"_tmp.dot",&width,&height); readBoundingBoxDot(baseName+"_tmp.dot",&width,&height);
width = width *96/72; // 96 pixels/inch, 72 points/inch width = width *96/72; // 96 pixels/inch, 72 points/inch
height = height*96/72; // 96 pixels/inch, 72 points/inch height = height*96/72; // 96 pixels/inch, 72 points/inch
//printf("Found bounding box (%d,%d)\n",width,height); //printf("Found bounding box (%d,%d) max (%d,%d)\n",width,height,
// Config::maxDotGraphWidth,Config::maxDotGraphHeight);
lastFit=(width<Config::maxDotGraphWidth && height<Config::maxDotGraphHeight); lastFit=(width<Config::maxDotGraphWidth && height<Config::maxDotGraphHeight);
if (lastFit) // image is small enough if (lastFit) // image is small enough
......
...@@ -81,10 +81,6 @@ MemberNameDict functionNameDict(10007); // all functions ...@@ -81,10 +81,6 @@ MemberNameDict functionNameDict(10007); // all functions
StringDict substituteDict(1009); // class name substitutes StringDict substituteDict(1009); // class name substitutes
SectionDict sectionDict(257); // all page sections SectionDict sectionDict(257); // all page sections
StringDict excludeNameDict(1009); // sections StringDict excludeNameDict(1009); // sections
//FileNameDict inputNameDict(1009); // sections
//FileNameDict includeNameDict(1009); // include names
//FileNameDict exampleNameDict(1009); // examples
//FileNameDict imageNameDict(257); // images
FileNameDict *inputNameDict; // sections FileNameDict *inputNameDict; // sections
FileNameDict *includeNameDict; // include names FileNameDict *includeNameDict; // include names
FileNameDict *exampleNameDict; // examples FileNameDict *exampleNameDict; // examples
...@@ -96,6 +92,7 @@ FormulaDict formulaNameDict(1009); // the label name of all formulas ...@@ -96,6 +92,7 @@ FormulaDict formulaNameDict(1009); // the label name of all formulas
StringDict tagDestinationDict(257); // all tag locations StringDict tagDestinationDict(257); // all tag locations
// a member group // a member group
QDict<void> compoundKeywordDict(7); // keywords recognised as compounds QDict<void> compoundKeywordDict(7); // keywords recognised as compounds
QDict<void> expandAsDefinedDict(257); // all macros that should be expanded
OutputList *outputList = 0; // list of output generating objects OutputList *outputList = 0; // list of output generating objects
PageInfo *mainPage = 0; PageInfo *mainPage = 0;
...@@ -906,6 +903,15 @@ static MemberDef *addVariableToClass( ...@@ -906,6 +903,15 @@ static MemberDef *addVariableToClass(
root->protection, root->protection,
fromAnnScope fromAnnScope
); );
// class friends may be templatized
//QCString name=n;
//int i;
//if (root->type.left(7)=="friend " && (i=name.find('<'))!=-1)
//{
// name=name.left(i);
//}
// add template names, if the class is a non-specialized template // add template names, if the class is a non-specialized template
//if (scope.find('<')==-1 && cd->templateArguments()) //if (scope.find('<')==-1 && cd->templateArguments())
//{ //{
...@@ -1332,7 +1338,7 @@ static void buildMemberList(Entry *root) ...@@ -1332,7 +1338,7 @@ static void buildMemberList(Entry *root)
ClassDef *cd=0; ClassDef *cd=0;
// check if this function's parent is a class // check if this function's parent is a class
QRegExp re("([a-zA-Z0-9: ]*[ *]*[ ]*"); QRegExp re("([a-z_A-Z0-9: ]*[ *]*[ ]*");
//printf("root->parent=`%s' cd=%p root->type.find(re,0)=%d\n", //printf("root->parent=`%s' cd=%p root->type.find(re,0)=%d\n",
// root->parent->name.data(),getClass(root->parent->name), // root->parent->name.data(),getClass(root->parent->name),
// root->type.find(re,0)); // root->type.find(re,0));
...@@ -1896,7 +1902,7 @@ static bool findBaseClassRelation(Entry *root,ClassDef *cd, ...@@ -1896,7 +1902,7 @@ static bool findBaseClassRelation(Entry *root,ClassDef *cd,
templSpec=baseClassName.mid(i,e-i); templSpec=baseClassName.mid(i,e-i);
baseClassName=baseClassName.left(i)+baseClassName.right(baseClassName.length()-e); baseClassName=baseClassName.left(i)+baseClassName.right(baseClassName.length()-e);
baseClass=getResolvedClass(baseClassName); baseClass=getResolvedClass(baseClassName);
//printf("baseClass=%p baseClass=%s templSpec=%s\n", //printf("baseClass=%p -> baseClass=%s templSpec=%s\n",
// baseClass,baseClassName.data(),templSpec.data()); // baseClass,baseClassName.data(),templSpec.data());
} }
} }
...@@ -2823,10 +2829,10 @@ static void findMember(Entry *root,QCString funcDecl,QCString related,bool overl ...@@ -2823,10 +2829,10 @@ static void findMember(Entry *root,QCString funcDecl,QCString related,bool overl
{ {
Debug::print(Debug::FindMembers,0, Debug::print(Debug::FindMembers,0,
"1. funcName=`%s'\n",funcName.data()); "1. funcName=`%s'\n",funcName.data());
//if (!funcTempList.isEmpty()) // try with member specialization if (!funcTempList.isEmpty()) // try with member specialization
//{ {
// mn=memberNameDict[funcName+funcTempList]; mn=memberNameDict[funcName+funcTempList];
//} }
if (mn==0) // try without specialization if (mn==0) // try without specialization
{ {
mn=memberNameDict[funcName]; mn=memberNameDict[funcName];
...@@ -2978,15 +2984,39 @@ static void findMember(Entry *root,QCString funcDecl,QCString related,bool overl ...@@ -2978,15 +2984,39 @@ static void findMember(Entry *root,QCString funcDecl,QCString related,bool overl
"Warning: no matching class member found for \n %s", "Warning: no matching class member found for \n %s",
fullFuncDecl.data() fullFuncDecl.data()
); );
int candidates=0;
if (mn->count()>0) if (mn->count()>0)
{
md=mn->first();
while (md)
{
ClassDef *cd=md->memberClass();
if (cd!=0 && cd->name()==className) candidates++;
md=mn->next();
}
}
if (candidates>0)
{ {
warn_cont("Possible candidates:\n"); warn_cont("Possible candidates:\n");
md=mn->first(); md=mn->first();
while (md) while (md)
{ {
ClassDef *cd=md->memberClass(); ClassDef *cd=md->memberClass();
if (!cd || cd->name()==className) if (cd!=0 && cd->name()==className)
warn_cont(" %s\n",md->declaration()); {
warn_cont(" %s",md->declaration());
#if 0
if (cd->name().at(0)!='@')
{
warn_cont(" in class %s",cd->name().data());
}
if (!md->getDefFileName().isEmpty() && md->getDefLine()!=-1)
{
warn_cont(" defined at line %d of file %s",md->getDefLine(),md->getDefFileName().data());
}
#endif
warn_cont("\n");
}
md=mn->next(); md=mn->next();
} }
} }
...@@ -3207,7 +3237,7 @@ static void findMember(Entry *root,QCString funcDecl,QCString related,bool overl ...@@ -3207,7 +3237,7 @@ static void findMember(Entry *root,QCString funcDecl,QCString related,bool overl
static void findMemberDocumentation(Entry *root) static void findMemberDocumentation(Entry *root)
{ {
int i=-1,l; int i=-1,l;
QRegExp re("([a-zA-Z0-9: ]*\\*+[ \\*]*"); QRegExp re("([a-z_A-Z0-9: ]*\\*+[ \\*]*");
Debug::print(Debug::FindMembers,0, Debug::print(Debug::FindMembers,0,
"root->type=`%s' root->inside=`%s' root->name=`%s' root->args=`%s' section=%x root->memSpec=%d root->mGrpId=%d\n", "root->type=`%s' root->inside=`%s' root->name=`%s' root->args=`%s' section=%x root->memSpec=%d root->mGrpId=%d\n",
root->type.data(),root->inside.data(),root->name.data(),root->args.data(),root->section,root->memSpec,root->mGrpId root->type.data(),root->inside.data(),root->name.data(),root->args.data(),root->section,root->memSpec,root->mGrpId
...@@ -4374,6 +4404,12 @@ static void generateGroupDocs() ...@@ -4374,6 +4404,12 @@ static void generateGroupDocs()
{ {
//printf("group %s #members=%d\n",gd->name().data(),gd->countMembers()); //printf("group %s #members=%d\n",gd->name().data(),gd->countMembers());
if (gd->countMembers()>0) gd->writeDocumentation(*outputList); if (gd->countMembers()>0) gd->writeDocumentation(*outputList);
else
{
warn(gd->getDefFileName(),gd->getDefLine(),
"Warning: group %s does not have any (documented) members.",
gd->name().data());
}
} }
} }
...@@ -4540,7 +4576,8 @@ static void generateSearchIndex() ...@@ -4540,7 +4576,8 @@ static void generateSearchIndex()
if (f.open(IO_WriteOnly)) if (f.open(IO_WriteOnly))
{ {
QTextStream t(&f); QTextStream t(&f);
t << Config::docURL << endl << Config::cgiURL << "/" << Config::cgiName << endl; t << Config::docURL << endl << Config::cgiURL
<< "/" << Config::cgiName << endl;
f.close(); f.close();
} }
else else
...@@ -5276,9 +5313,21 @@ int main(int argc,char **argv) ...@@ -5276,9 +5313,21 @@ int main(int argc,char **argv)
&inputFiles,0); &inputFiles,0);
s=Config::inputSources.next(); s=Config::inputSources.next();
} }
//msg("Input size %d bytes\n",inputSize);
// add predefined macro name to a dictionary
s=Config::expandAsDefinedList.first();
while (s)
{
if (expandAsDefinedDict[s]==0)
{
expandAsDefinedDict.insert(s,(void *)666);
}
s=Config::expandAsDefinedList.next();
}
BufStr input(inputSize+1); // Add one byte extra for \0 termination BufStr input(inputSize+1); // Add one byte extra for \0 termination
// read and preprocess all input files
readFiles(input); readFiles(input);
if (input.isEmpty()) if (input.isEmpty())
...@@ -5288,9 +5337,10 @@ int main(int argc,char **argv) ...@@ -5288,9 +5337,10 @@ int main(int argc,char **argv)
} }
else else
{ {
msg("Read %d bytes\n",input.length()); msg("Read %d bytes\n",input.curPos());
} }
/************************************************************************** /**************************************************************************
* Handle Tag Files * * Handle Tag Files *
**************************************************************************/ **************************************************************************/
......
...@@ -126,6 +126,7 @@ extern PageInfo *mainPage; ...@@ -126,6 +126,7 @@ extern PageInfo *mainPage;
extern StringDict tagDestinationDict; extern StringDict tagDestinationDict;
extern QIntDict<QCString> memberHeaderDict; // dictionary of the member groups heading extern QIntDict<QCString> memberHeaderDict; // dictionary of the member groups heading
extern QIntDict<QCString> memberDocDict; // dictionary of the member groups heading extern QIntDict<QCString> memberDocDict; // dictionary of the member groups heading
extern QDict<void> expandAsDefinedDict;
extern int annotatedClasses; extern int annotatedClasses;
extern int hierarchyClasses; extern int hierarchyClasses;
......
...@@ -203,7 +203,7 @@ QCString unhtmlify(const char *str) ...@@ -203,7 +203,7 @@ QCString unhtmlify(const char *str)
<Start>^"<h1 align=center>" { // Qt variant <Start>^"<h1 align=center>" { // Qt variant
BEGIN( ReadClassName ); BEGIN( ReadClassName );
} }
<Start>^"<h1>" { // Doxygen variant <Start>^("<hr>")?"<h1>" { // Doxygen variant
BEGIN( ReadClassName ); BEGIN( ReadClassName );
} }
<Start>^"Inherits " { <Start>^"Inherits " {
...@@ -223,7 +223,7 @@ QCString unhtmlify(const char *str) ...@@ -223,7 +223,7 @@ QCString unhtmlify(const char *str)
BEGIN( SkipHTMLTag ); BEGIN( SkipHTMLTag );
} }
<Start>"&"[a-zA-Z]+";" <Start>"&"[a-zA-Z]+";"
<Start>[a-z_A-Z][a-z_A-Z0-9]* { <Start,SkipPreformated>[a-z_A-Z][a-z_A-Z0-9]* {
//printf("tag: %s#%s ref: %s word: `%s'\n", //printf("tag: %s#%s ref: %s word: `%s'\n",
// docBaseLink.data(),docAnchor.data(), // docBaseLink.data(),docAnchor.data(),
// docRefName.data(),yytext); // docRefName.data(),yytext);
...@@ -235,7 +235,7 @@ QCString unhtmlify(const char *str) ...@@ -235,7 +235,7 @@ QCString unhtmlify(const char *str)
<SkipPreformated>"</pre>" { <SkipPreformated>"</pre>" {
BEGIN( Start ); BEGIN( Start );
} }
<SkipPreformated>[^\<]+ <SkipPreformated>[^\<\n]+
<CheckConstructor>[a-z_A-Z0-9~:]+ { <CheckConstructor>[a-z_A-Z0-9~:]+ {
QCString s=yytext; QCString s=yytext;
if (s.find("::")!=-1) if (s.find("::")!=-1)
......
...@@ -80,7 +80,8 @@ void HtmlGenerator::startFile(const char *name,const char *title,bool external) ...@@ -80,7 +80,8 @@ void HtmlGenerator::startFile(const char *name,const char *title,bool external)
"<title>" << title << "</title>\n"; "<title>" << title << "</title>\n";
t << "<link "; t << "<link ";
if (external) if (external)
t << "doxygen=\"_doc:\" href=\"/"; t << "doxygen=\"_doc:" << Config::docURL
<< "\" href=\"" << Config::docURL << "/";
else else
t << "href=\""; t << "href=\"";
if (Config::htmlStyleSheet.isEmpty()) if (Config::htmlStyleSheet.isEmpty())
...@@ -147,7 +148,8 @@ void HtmlGenerator::writeFooter(int part,bool external) ...@@ -147,7 +148,8 @@ void HtmlGenerator::writeFooter(int part,bool external)
t << endl << "<img "; t << endl << "<img ";
if (external) if (external)
{ {
t << "doxygen=\"_doc:\" src=\"/"; t << "doxygen=\"_doc:" << Config::docURL
<< "\" src=\"" << Config::docURL << "/";
} }
else else
{ {
......
...@@ -547,7 +547,7 @@ int countNamespaces() ...@@ -547,7 +547,7 @@ int countNamespaces()
NamespaceDef *nd; NamespaceDef *nd;
for (;(nd=nli.current());++nli) for (;(nd=nli.current());++nli)
{ {
if (nd->isLinkableInProject()) count++; if (nd->isLinkableInProject() && nd->countMembers()>0) count++;
} }
return count; return count;
} }
...@@ -583,7 +583,7 @@ void writeNamespaceIndex(OutputList &ol) ...@@ -583,7 +583,7 @@ void writeNamespaceIndex(OutputList &ol)
NamespaceDef *nd=namespaceList.first(); NamespaceDef *nd=namespaceList.first();
while (nd) while (nd)
{ {
if (nd->isLinkableInProject()) if (nd->isLinkableInProject() && nd->countMembers()>0)
{ {
ol.writeStartAnnoItem("namespace",nd->getOutputFileBase(),0,nd->name()); ol.writeStartAnnoItem("namespace",nd->getOutputFileBase(),0,nd->name());
ol.docify(" ("); ol.docify(" (");
...@@ -1456,7 +1456,6 @@ int countGroups() ...@@ -1456,7 +1456,6 @@ int countGroups()
for (;(gd=gli.current());++gli) for (;(gd=gli.current());++gli)
{ {
if (gd->countMembers()>0) count++; if (gd->countMembers()>0) count++;
gd=groupList.next();
} }
return count; return count;
} }
...@@ -1513,7 +1512,6 @@ void writeGroupIndex(OutputList &ol) ...@@ -1513,7 +1512,6 @@ void writeGroupIndex(OutputList &ol)
htmlHelp->incContentsDepth(); htmlHelp->incContentsDepth();
} }
parseText(ol,theTranslator->trModulesDescription()); parseText(ol,theTranslator->trModulesDescription());
//ol.newParagraph();
ol.endTextBlock(); ol.endTextBlock();
writeGroupList(ol); writeGroupList(ol);
if (hasHtmlHelp) if (hasHtmlHelp)
...@@ -1521,7 +1519,6 @@ void writeGroupIndex(OutputList &ol) ...@@ -1521,7 +1519,6 @@ void writeGroupIndex(OutputList &ol)
htmlHelp->decContentsDepth(); htmlHelp->decContentsDepth();
} }
endFile(ol); endFile(ol);
//ol.enable(OutputGenerator::Man);
ol.popGeneratorState(); ol.popGeneratorState();
} }
......
...@@ -15,6 +15,7 @@ ...@@ -15,6 +15,7 @@
* *
*/ */
#include "message.h"
#include "language.h" #include "language.h"
#if !defined(ENGLISH_ONLY) #if !defined(ENGLISH_ONLY)
#include "translator_nl.h" #include "translator_nl.h"
...@@ -51,6 +52,10 @@ bool setTranslator(const char *langName) ...@@ -51,6 +52,10 @@ bool setTranslator(const char *langName)
} }
else if (L_EQUAL("czech")) else if (L_EQUAL("czech"))
{ {
#ifndef _WIN32
err("Warning: The Czech translation uses the windows code page 1250 encoding.\n"
"Please convert translator_cz.h to ISO Latin-2 to use it under UNIX.\n");
#endif
theTranslator=new TranslatorCzech; theTranslator=new TranslatorCzech;
} }
else if (L_EQUAL("french")) else if (L_EQUAL("french"))
......
...@@ -216,17 +216,37 @@ void LatexGenerator::startIndexSection(IndexSections is) ...@@ -216,17 +216,37 @@ void LatexGenerator::startIndexSection(IndexSections is)
<< " linkcolor=blue" << endl << " linkcolor=blue" << endl
<< " ]{hyperref}" << endl; << " ]{hyperref}" << endl;
} }
if (!theTranslator->latexBabelPackage().isEmpty()) // Try to get the command for switching on the language
// support
QCString sLanguageSupportCommand(
theTranslator->latexLanguageSupportCommand());
if (!sLanguageSupportCommand.isEmpty())
{
// The command is not empty. The language does
// not want to use the babel package. Use this
// command instead.
t << sLanguageSupportCommand;
}
else
{ {
if (theTranslator->latexBabelPackage()=="russian") if (!theTranslator->latexBabelPackage().isEmpty())
{ {
// The result of the LatexLanguageSupportCommand()
// is empty, which means that the language prefers
// the babel package, or no package is needed at all.
if (theTranslator->latexBabelPackage()=="russian")
{
// The russian babel package also needs an encoding.
// Assume the encoding matched the platform.
#if defined(_WIN32) #if defined(_WIN32)
t << "\\usepackage[cp1251]{inputenc}\n"; t << "\\usepackage[cp1251]{inputenc}\n";
#else #else
t << "\\usepackage[koi8-r]{inputenc}\n"; t << "\\usepackage[koi8-r]{inputenc}\n";
#endif #endif
}
t << "\\usepackage[" << theTranslator->latexBabelPackage() << "]{babel}\n";
} }
t << "\\usepackage[" << theTranslator->latexBabelPackage() << "]{babel}\n";
} }
const char *s=Config::extraPackageList.first(); const char *s=Config::extraPackageList.first();
...@@ -425,7 +445,7 @@ void LatexGenerator::endIndexSection(IndexSections is) ...@@ -425,7 +445,7 @@ void LatexGenerator::endIndexSection(IndexSections is)
bool found=FALSE; bool found=FALSE;
while (gd && !found) while (gd && !found)
{ {
if (gd->isLinkableInProject() || gd->countMembers()>0) if (gd->countMembers()>0)
{ {
t << "}\n\\input{" << gd->getOutputFileBase() << "}\n"; t << "}\n\\input{" << gd->getOutputFileBase() << "}\n";
found=TRUE; found=TRUE;
...@@ -434,7 +454,7 @@ void LatexGenerator::endIndexSection(IndexSections is) ...@@ -434,7 +454,7 @@ void LatexGenerator::endIndexSection(IndexSections is)
} }
while (gd) while (gd)
{ {
if (gd->isLinkableInProject() || gd->countMembers()>0) if (gd->countMembers()>0)
{ {
if (Config::compactLatexFlag) t << "\\input"; else t << "\\include"; if (Config::compactLatexFlag) t << "\\input"; else t << "\\include";
t << "{" << gd->getOutputFileBase() << "}\n"; t << "{" << gd->getOutputFileBase() << "}\n";
...@@ -602,14 +622,14 @@ void LatexGenerator::writeStyleInfo(int part) ...@@ -602,14 +622,14 @@ void LatexGenerator::writeStyleInfo(int part)
break; break;
case 2: case 2:
{ {
t << " Dimitri van Heesch (c) 1997-2000}]{}\n"; t << " Dimitri van Heesch \\copyright{} 1997-2000}]{}\n";
//QCString dtString=dateToString(FALSE); //QCString dtString=dateToString(FALSE);
t << "\\lfoot[]{\\fancyplain{}{\\bfseries\\scriptsize "; t << "\\lfoot[]{\\fancyplain{}{\\bfseries\\scriptsize ";
} }
break; break;
case 4: case 4:
{ {
t << " Dimitri van Heesch (c) 1997-2000}}\n"; t << " Dimitri van Heesch \\copyright{} 1997-2000}}\n";
t << "\\cfoot{}\n"; t << "\\cfoot{}\n";
t << "\\newenvironment{CompactList}\n"; t << "\\newenvironment{CompactList}\n";
t << "{\\begin{list}{}{\n"; t << "{\\begin{list}{}{\n";
...@@ -812,7 +832,7 @@ void LatexGenerator::startPageRef() ...@@ -812,7 +832,7 @@ void LatexGenerator::startPageRef()
void LatexGenerator::endPageRef(const char *clname, const char *anchor) void LatexGenerator::endPageRef(const char *clname, const char *anchor)
{ {
t << "~\\pageref{"; t << "\\,\\pageref{";
if (clname) t << clname; if (clname) t << clname;
if (anchor) t << "_" << anchor; if (anchor) t << "_" << anchor;
t << "})}"; t << "})}";
...@@ -998,7 +1018,8 @@ void LatexGenerator::writeSectionRef(const char *,const char *lab, ...@@ -998,7 +1018,8 @@ void LatexGenerator::writeSectionRef(const char *,const char *lab,
{ {
if (strcmp(lab,text)!=0) // lab!=text if (strcmp(lab,text)!=0) // lab!=text
{ {
t << "{\\bf " << text << " (\\ref " << lab << ")}}"; // todo: don't hardcode p. here!
t << "{\\bf " << text << "} (p.\\,\\pageref{" << lab << "})";
} }
else else
{ {
...@@ -1022,7 +1043,7 @@ void LatexGenerator::writeSectionRefAnchor(const char *,const char *lab, ...@@ -1022,7 +1043,7 @@ void LatexGenerator::writeSectionRefAnchor(const char *,const char *lab,
startBold(); startBold();
docify(title); docify(title);
endBold(); endBold();
t << " (p.~\\pageref{" << lab << "})" << endl; t << " (p.\\,\\pageref{" << lab << "})" << endl;
} }
//void LatexGenerator::docify(const char *str) //void LatexGenerator::docify(const char *str)
...@@ -1033,9 +1054,10 @@ void LatexGenerator::writeSectionRefAnchor(const char *,const char *lab, ...@@ -1033,9 +1054,10 @@ void LatexGenerator::writeSectionRefAnchor(const char *,const char *lab,
//void LatexGenerator::docifyStatic(QTextStream &t,const char *str) //void LatexGenerator::docifyStatic(QTextStream &t,const char *str)
void LatexGenerator::docify(const char *str) void LatexGenerator::docify(const char *str)
{ {
static bool isJapanese = theTranslator->latexBabelPackage()=="a4j"; static bool isCzech = theTranslator->idLanguage()=="czech";
static bool isRussian = theTranslator->latexBabelPackage()=="russian"; static bool isJapanese = theTranslator->idLanguage()=="japanese";
static bool isGerman = theTranslator->latexBabelPackage()=="german"; static bool isRussian = theTranslator->idLanguage()=="russian";
static bool isGerman = theTranslator->idLanguage()=="german";
if (str) if (str)
{ {
const unsigned char *p=(const unsigned char *)str; const unsigned char *p=(const unsigned char *)str;
......
...@@ -445,8 +445,9 @@ void MemberDef::setMemberDefTemplateArguments(ArgumentList *tal) ...@@ -445,8 +445,9 @@ void MemberDef::setMemberDefTemplateArguments(ArgumentList *tal)
void MemberDef::writeLink(OutputList &ol,ClassDef *cd,NamespaceDef *nd, void MemberDef::writeLink(OutputList &ol,ClassDef *cd,NamespaceDef *nd,
FileDef *fd,GroupDef *gd) FileDef *fd,GroupDef *gd)
{ {
Definition *d; Definition *d=0;
if (cd) d=cd; else if (nd) d=nd; else if (fd) d=fd; else if (gd) d=gd; if (cd) d=cd; else if (nd) d=nd; else if (fd) d=fd; else if (gd) d=gd;
if (d==0) return;
ol.writeObjectLink(d->getReference(),d->getOutputFileBase(),anchor(),name()); ol.writeObjectLink(d->getReference(),d->getOutputFileBase(),anchor(),name());
} }
......
...@@ -758,6 +758,10 @@ Define *newDefine() ...@@ -758,6 +758,10 @@ Define *newDefine()
def->fileName = g_yyFileName; def->fileName = g_yyFileName;
def->lineNr = g_yyLineNr; def->lineNr = g_yyLineNr;
def->varArgs = g_defVarArgs; def->varArgs = g_defVarArgs;
if (!def->name.isEmpty() && expandAsDefinedDict[def->name])
{
def->isPredefined=TRUE;
}
return def; return def;
} }
...@@ -1505,7 +1509,8 @@ BN [ \t\r\n] ...@@ -1505,7 +1509,8 @@ BN [ \t\r\n]
{ {
addDefine(); addDefine();
} }
if (/*!Config::onlyPredefinedFlag &&*/ (def=g_fileDefineDict->find(g_defName))==0) def=g_fileDefineDict->find(g_defName);
if (def==0) // new define
{ {
g_fileDefineDict->insert(g_defName,newDefine()); g_fileDefineDict->insert(g_defName,newDefine());
} }
......
...@@ -4,6 +4,8 @@ ...@@ -4,6 +4,8 @@
* *
* Copyright (C) 1997-2000 by Parker Waechter & Dimitri van Heesch. * Copyright (C) 1997-2000 by Parker Waechter & Dimitri van Heesch.
* *
* Style sheet additions by Alexander Bartolich
*
* Permission to use, copy, modify, and distribute this software and its * Permission to use, copy, modify, and distribute this software and its
* documentation under the terms of the GNU General Public License is hereby * documentation under the terms of the GNU General Public License is hereby
* granted. No representations are made about the suitability of this software * granted. No representations are made about the suitability of this software
...@@ -19,7 +21,7 @@ ...@@ -19,7 +21,7 @@
#include "qtbc.h" #include "qtbc.h"
#include <qdir.h> #include <qdir.h>
#include <qstack.h> #include <qregexp.h>
#include "rtfgen.h" #include "rtfgen.h"
#include "config.h" #include "config.h"
...@@ -112,6 +114,277 @@ OutputGenerator *RTFGenerator::copy() ...@@ -112,6 +114,277 @@ OutputGenerator *RTFGenerator::copy()
return result; return result;
} }
static const struct
{
const char *name;
const char *value;
} Rtf_Style_Default[] =
{
{ "Reset",
"\\pard\\plain "
},
{ "Heading1",
"\\s1\\sb240\\sa60\\keepn\\widctlpar\\adjustright \\b\\f1\\fs36\\kerning36\\cgrid "
},
{ "Heading2",
"\\s2\\sb240\\sa60\\keepn\\widctlpar\\adjustright \\b\\f1\\fs28\\kerning28\\cgrid "
},
{ "Heading3",
"\\s3\\sb240\\sa60\\keepn\\widctlpar\\adjustright \\b\\f1\\cgrid "
},
{ "Heading4",
"\\s4\\sb240\\sa60\\keepn\\widctlpar\\adjustright \\b\\f1\\fs20\\cgrid "
},
{ "Title",
"\\s15\\qc\\sb240\\sa60\\widctlpar\\outlinelevel0\\adjustright \\b\\f1\\fs32\\kerning28\\cgrid "
},
{ "SubTitle",
"\\s16\\qc\\sa60\\widctlpar\\outlinelevel1\\adjustright \\f1\\cgrid "
},
{ "BodyText",
"\\s17\\sa60\\sb30\\widctlpar\\qj \\fs22\\cgrid "
},
{ "DenseText",
"\\s18\\widctlpar\\fs22\\cgrid "
},
{ "Header",
"\\s28\\widctlpar\\tqc\\tx4320\\tqr\\tx8640\\adjustright \\fs20\\cgrid "
},
{ "Footer",
"\\s29\\widctlpar\\tqc\\tx4320\\tqr\\tx8640\\qr\\adjustright \\fs20\\cgrid "
},
{ "GroupHeader",
"\\s30\\li360\\sa60\\sb120\\keepn\\widctlpar\\adjustright \\b\\f1\\fs20\\cgrid "
},
{ "CodeExample0",
"\\s40\\li0\\widctlpar\\adjustright \\shading1000\\cbpat8 \\f2\\fs16\\cgrid "
},
{ "CodeExample1",
"\\s41\\li360\\widctlpar\\adjustright \\shading1000\\cbpat8 \\f2\\fs16\\cgrid "
},
{ "CodeExample2",
"\\s42\\li720\\widctlpar\\adjustright \\shading1000\\cbpat8 \\f2\\fs16\\cgrid "
},
{ "CodeExample3",
"\\s43\\li1080\\widctlpar\\adjustright \\shading1000\\cbpat8 \\f2\\fs16\\cgrid "
},
{ "CodeExample4",
"\\s44\\li1440\\widctlpar\\adjustright \\shading1000\\cbpat8 \\f2\\fs16\\cgrid "
},
{ "CodeExample5",
"\\s45\\li1800\\widctlpar\\adjustright \\shading1000\\cbpat8 \\f2\\fs16\\cgrid "
},
{ "CodeExample6",
"\\s46\\li2160\\widctlpar\\adjustright \\shading1000\\cbpat8 \\f2\\fs16\\cgrid "
},
{ "CodeExample7",
"\\s47\\li2520\\widctlpar\\adjustright \\shading1000\\cbpat8 \\f2\\fs16\\cgrid "
},
{ "CodeExample8",
"\\s48\\li2880\\widctlpar\\adjustright \\shading1000\\cbpat8 \\f2\\fs16\\cgrid "
},
{ "CodeExample9",
"\\s49\\li3240\\widctlpar\\adjustright \\shading1000\\cbpat8 \\f2\\fs16\\cgrid "
},
{ "ListContinue0",
"\\s50\\li0\\sa60\\sb30\\qj\\widctlpar\\qj\\adjustright \\fs20\\cgrid "
},
{ "ListContinue1",
"\\s51\\li360\\sa60\\sb30\\qj\\widctlpar\\qj\\adjustright \\fs20\\cgrid "
},
{ "ListContinue2",
"\\s52\\li720\\sa60\\sb30\\qj\\widctlpar\\qj\\adjustright \\fs20\\cgrid "
},
{ "ListContinue3",
"\\s53\\li1080\\sa60\\sb30\\qj\\widctlpar\\qj\\adjustright \\fs20\\cgrid "
},
{ "ListContinue4",
"\\s54\\li1440\\sa60\\sb30\\qj\\widctlpar\\qj\\adjustright \\fs20\\cgrid "
},
{ "ListContinue5",
"\\s55\\li1800\\sa60\\sb30\\qj\\widctlpar\\qj\\adjustright \\fs20\\cgrid "
},
{ "ListContinue6",
"\\s56\\li2160\\sa60\\sb30\\qj\\widctlpar\\qj\\adjustright \\fs20\\cgrid "
},
{ "ListContinue7",
"\\s57\\li2520\\sa60\\sb30\\qj\\widctlpar\\qj\\adjustright \\fs20\\cgrid "
},
{ "ListContinue8",
"\\s58\\li2880\\sa60\\sb30\\qj\\widctlpar\\qj\\adjustright \\fs20\\cgrid "
},
{ "ListContinue9",
"\\s59\\li3240\\sa60\\sb30\\qj\\widctlpar\\qj\\adjustright \\fs20\\cgrid "
},
{ "DescContinue0",
"\\s60\\li0\\widctlpar\\ql\\adjustright \\fs20\\cgrid "
},
{ "DescContinue1",
"\\s61\\li360\\widctlpar\\ql\\adjustright \\fs20\\cgrid "
},
{ "DescContinue2",
"\\s62\\li720\\widctlpar\\ql\\adjustright \\fs20\\cgrid "
},
{ "DescContinue3",
"\\s63\\li1080\\widctlpar\\ql\\adjustright \\fs20\\cgrid "
},
{ "DescContinue4",
"\\s64\\li1440\\widctlpar\\ql\\adjustright \\fs20\\cgrid "
},
{ "DescContinue5",
"\\s65\\li1800\\widctlpar\\ql\\adjustright \\fs20\\cgrid "
},
{ "DescContinue6",
"\\s66\\li2160\\widctlpar\\ql\\adjustright \\fs20\\cgrid "
},
{ "DescContinue7",
"\\s67\\li2520\\widctlpar\\ql\\adjustright \\fs20\\cgrid "
},
{ "DescContinue8",
"\\s68\\li2880\\widctlpar\\ql\\adjustright \\fs20\\cgrid "
},
{ "DescContinue9",
"\\s69\\li3240\\widctlpar\\ql\\adjustright \\fs20\\cgrid "
},
{ "LatexTOC0",
"\\s70\\li0\\sa30\\sb30\\widctlpar\\tqr\\tldot\\tx8640\\adjustright \\fs20\\cgrid "
},
{ "LatexTOC1",
"\\s71\\li360\\sa27\\sb27\\widctlpar\\tqr\\tldot\\tx8640\\adjustright \\fs20\\cgrid "
},
{ "LatexTOC2",
"\\s72\\li720\\sa24\\sb24\\widctlpar\\tqr\\tldot\\tx8640\\adjustright \\fs20\\cgrid "
},
{ "LatexTOC3",
"\\s73\\li1080\\sa21\\sb21\\widctlpar\\tqr\\tldot\\tx8640\\adjustright \\fs20\\cgrid "
},
{ "LatexTOC4",
"\\s74\\li1440\\sa18\\sb18\\widctlpar\\tqr\\tldot\\tx8640\\adjustright \\fs20\\cgrid "
},
{ "LatexTOC5",
"\\s75\\li1800\\sa15\\sb15\\widctlpar\\tqr\\tldot\\tx8640\\adjustright \\fs20\\cgrid "
},
{ "LatexTOC6",
"\\s76\\li2160\\sa12\\sb12\\widctlpar\\tqr\\tldot\\tx8640\\adjustright \\fs20\\cgrid "
},
{ "LatexTOC7",
"\\s77\\li2520\\sa9\\sb9\\widctlpar\\tqr\\tldot\\tx8640\\adjustright \\fs20\\cgrid "
},
{ "LatexTOC8",
"\\s78\\li2880\\sa6\\sb6\\widctlpar\\tqr\\tldot\\tx8640\\adjustright \\fs20\\cgrid "
},
{ "LatexTOC9",
"\\s79\\li3240\\sa3\\sb3\\widctlpar\\tqr\\tldot\\tx8640\\adjustright \\fs20\\cgrid "
},
{ "ListBullet0",
"\\s80\\fi-360\\li360\\widctlpar\\jclisttab\\tx360{\\*\\pn \\pnlvlbody\\ilvl0\\ls1\\pnrnot0\\pndec }\\ls1\\adjustright \\fs20\\cgrid "
},
{ "ListBullet1",
"\\s81\\fi-360\\li720\\widctlpar\\jclisttab\\tx720{\\*\\pn \\pnlvlbody\\ilvl0\\ls2\\pnrnot0\\pndec }\\ls2\\adjustright \\fs20\\cgrid "
},
{ "ListBullet2",
"\\s82\\fi-360\\li1080\\widctlpar\\jclisttab\\tx1080{\\*\\pn \\pnlvlbody\\ilvl0\\ls3\\pnrnot0\\pndec }\\ls3\\adjustright \\fs20\\cgrid "
},
{ "ListBullet3",
"\\s83\\fi-360\\li1440\\widctlpar\\jclisttab\\tx1440{\\*\\pn \\pnlvlbody\\ilvl0\\ls4\\pnrnot0\\pndec }\\ls4\\adjustright \\fs20\\cgrid "
},
{ "ListBullet4",
"\\s84\\fi-360\\li1800\\widctlpar\\jclisttab\\tx1800{\\*\\pn \\pnlvlbody\\ilvl0\\ls5\\pnrnot0\\pndec }\\ls5\\adjustright \\fs20\\cgrid "
},
{ "ListBullet5",
"\\s85\\fi-360\\li2160\\widctlpar\\jclisttab\\tx2160{\\*\\pn \\pnlvlbody\\ilvl0\\ls6\\pnrnot0\\pndec }\\ls6\\adjustright \\fs20\\cgrid "
},
{ "ListBullet6",
"\\s86\\fi-360\\li2520\\widctlpar\\jclisttab\\tx2520{\\*\\pn \\pnlvlbody\\ilvl0\\ls7\\pnrnot0\\pndec }\\ls7\\adjustright \\fs20\\cgrid "
},
{ "ListBullet7",
"\\s87\\fi-360\\li2880\\widctlpar\\jclisttab\\tx2880{\\*\\pn \\pnlvlbody\\ilvl0\\ls8\\pnrnot0\\pndec }\\ls8\\adjustright \\fs20\\cgrid "
},
{ "ListBullet8",
"\\s88\\fi-360\\li3240\\widctlpar\\jclisttab\\tx3240{\\*\\pn \\pnlvlbody\\ilvl0\\ls9\\pnrnot0\\pndec }\\ls9\\adjustright \\fs20\\cgrid "
},
{ "ListBullet9",
"\\s89\\fi-360\\li3600\\widctlpar\\jclisttab\\tx3600{\\*\\pn \\pnlvlbody\\ilvl0\\ls10\\pnrnot0\\pndec }\\ls10\\adjustright \\fs20\\cgrid "
},
{ "ListEnum0",
"\\s90\\fi-360\\li360\\widctlpar\\fs20\\cgrid "
},
{ "ListEnum1",
"\\s91\\fi-360\\li720\\widctlpar\\fs20\\cgrid "
},
{ "ListEnum2",
"\\s92\\fi-360\\li1080\\widctlpar\\fs20\\cgrid "
},
{ "ListEnum3",
"\\s93\\fi-360\\li1440\\widctlpar\\fs20\\cgrid "
},
{ "ListEnum4",
"\\s94\\fi-360\\li1800\\widctlpar\\fs20\\cgrid "
},
{ "ListEnum4",
"\\s95\\fi-360\\li2160\\widctlpar\\fs20\\cgrid "
},
{ "ListEnum5",
"\\s96\\fi-360\\li2520\\widctlpar\\fs20\\cgrid "
},
{ "ListEnum6",
"\\s97\\fi-360\\li2880\\widctlpar\\fs20\\cgrid "
},
{ "ListEnum7",
"\\s98\\fi-360\\li3240\\widctlpar\\fs20\\cgrid "
},
{ "ListEnum8",
"\\s99\\fi-360\\li3600\\widctlpar\\fs20\\cgrid "
},
{ 0,
0
}
};
static QDict<char> Rtf_Style(257);
static void loadStylesheet(const char *name)
{
QFile file(name);
if (!file.open(IO_ReadOnly))
{
err("Can't open RTF style sheet file %s. Using defaults.\n",name);
return;
}
msg("Loading RTF style sheet %s...\n",name);
static const QRegExp separator("[ \t]*=[ \t]*");
uint lineNr=1;
QTextStream t(&file);
while (!t.eof())
{
QCString s(4096); // string buffer of max line length
s = t.readLine().stripWhiteSpace();
if (s.length()==0 || s.at(0)=='#') continue; // skip blanks & comments
int sepLength;
int sepStart = separator.match(s,0,&sepLength);
if (sepStart<=0) // no valid assignment statement
{
warn(name,lineNr,"Assignment of style sheet name expected!\n");
continue;
}
QCString key=s.left(sepStart);
if (Rtf_Style[key]==0) // not a valid style sheet name
{
warn(name,lineNr,"Invalid style sheet name %s ignored.\n",key.data());
continue;
}
s+=" "; // add command separator
Rtf_Style.remove(key); // remove old key
int l = strlen(s.data()+sepStart+sepLength);
char *value = new char[l+1];
strcpy(value,s.data()+sepStart+sepLength);
Rtf_Style.insert(key,value); // insert new key
lineNr++;
}
}
void RTFGenerator::init() void RTFGenerator::init()
{ {
QCString dir=Config::rtfOutputDir; QCString dir=Config::rtfOutputDir;
...@@ -121,98 +394,31 @@ void RTFGenerator::init() ...@@ -121,98 +394,31 @@ void RTFGenerator::init()
err("Could not create output directory %s\n",dir.data()); err("Could not create output directory %s\n",dir.data());
exit(1); exit(1);
} }
Rtf_Style.setAutoDelete(TRUE);
int i=0;
while (Rtf_Style_Default[i].name!=0)
{
int l = strlen(Rtf_Style_Default[i].value);
char *value = new char[l+1];
strcpy(value,Rtf_Style_Default[i].value);
Rtf_Style.insert(Rtf_Style_Default[i].name,value);
i++;
}
if (!Config::rtfStylesheetFile.isEmpty())
{
loadStylesheet(Config::rtfStylesheetFile);
}
} }
const char *Rtf_Style_Reset = "\\pard\\plain ";
const char *Rtf_Style_Heading1 = "\\s1\\sb240\\sa60\\keepn\\widctlpar\\adjustright \\b\\f1\\fs36\\kerning36\\cgrid "; static QCString makeIndexName(const char *s,int i)
const char *Rtf_Style_Heading2 = "\\s2\\sb240\\sa60\\keepn\\widctlpar\\adjustright \\b\\f1\\fs28\\kerning28\\cgrid "; {
const char *Rtf_Style_Heading3 = "\\s3\\sb240\\sa60\\keepn\\widctlpar\\adjustright \\b\\f1\\cgrid "; QCString result=s;
const char *Rtf_Style_Heading4 = "\\s4\\sb240\\sa60\\keepn\\widctlpar\\adjustright \\b\\f1\\fs20\\cgrid "; result+=(char)(i+'0');
const char *Rtf_Style_Title = "\\s15\\qc\\sb240\\sa60\\widctlpar\\outlinelevel0\\adjustright \\b\\f1\\fs32\\kerning28\\cgrid "; return result;
const char *Rtf_Style_SubTitle = "\\s16\\qc\\sa60\\widctlpar\\outlinelevel1\\adjustright \\f1\\cgrid "; }
const char *Rtf_Style_BodyText = "\\s17\\sa60\\sb30\\widctlpar\\qj \\fs22\\cgrid ";
const char *Rtf_Style_DenseText = "\\s18\\widctlpar\\fs22\\cgrid ";
const char *Rtf_Style_Header = "\\s28\\widctlpar\\tqc\\tx4320\\tqr\\tx8640\\adjustright \\fs20\\cgrid ";
const char *Rtf_Style_Footer = "\\s29\\widctlpar\\tqc\\tx4320\\tqr\\tx8640\\qr\\adjustright \\fs20\\cgrid ";
const char *Rtf_Style_GroupHeader = "\\s30\\li360\\sa60\\sb120\\keepn\\widctlpar\\adjustright \\b\\f1\\fs20\\cgrid ";
const char *Rtf_Style_CodeExample[] =
{
"\\s40\\li0\\widctlpar\\adjustright \\shading1000\\cbpat8 \\f2\\fs16\\cgrid ",
"\\s41\\li360\\widctlpar\\adjustright \\shading1000\\cbpat8 \\f2\\fs16\\cgrid ",
"\\s42\\li720\\widctlpar\\adjustright \\shading1000\\cbpat8 \\f2\\fs16\\cgrid ",
"\\s43\\li1080\\widctlpar\\adjustright \\shading1000\\cbpat8 \\f2\\fs16\\cgrid ",
"\\s44\\li1440\\widctlpar\\adjustright \\shading1000\\cbpat8 \\f2\\fs16\\cgrid ",
"\\s45\\li1800\\widctlpar\\adjustright \\shading1000\\cbpat8 \\f2\\fs16\\cgrid ",
"\\s46\\li2160\\widctlpar\\adjustright \\shading1000\\cbpat8 \\f2\\fs16\\cgrid ",
"\\s47\\li2520\\widctlpar\\adjustright \\shading1000\\cbpat8 \\f2\\fs16\\cgrid ",
"\\s48\\li2880\\widctlpar\\adjustright \\shading1000\\cbpat8 \\f2\\fs16\\cgrid ",
"\\s49\\li3240\\widctlpar\\adjustright \\shading1000\\cbpat8 \\f2\\fs16\\cgrid "
};
const char *Rtf_Style_ListContinue[] =
{
"\\s50\\li0\\sa60\\sb30\\qj\\widctlpar\\qj\\adjustright \\fs20\\cgrid ",
"\\s51\\li360\\sa60\\sb30\\qj\\widctlpar\\qj\\adjustright \\fs20\\cgrid ",
"\\s52\\li720\\sa60\\sb30\\qj\\widctlpar\\qj\\adjustright \\fs20\\cgrid ",
"\\s53\\li1080\\sa60\\sb30\\qj\\widctlpar\\qj\\adjustright \\fs20\\cgrid ",
"\\s54\\li1440\\sa60\\sb30\\qj\\widctlpar\\qj\\adjustright \\fs20\\cgrid ",
"\\s55\\li1800\\sa60\\sb30\\qj\\widctlpar\\qj\\adjustright \\fs20\\cgrid ",
"\\s56\\li2160\\sa60\\sb30\\qj\\widctlpar\\qj\\adjustright \\fs20\\cgrid ",
"\\s57\\li2520\\sa60\\sb30\\qj\\widctlpar\\qj\\adjustright \\fs20\\cgrid ",
"\\s58\\li2880\\sa60\\sb30\\qj\\widctlpar\\qj\\adjustright \\fs20\\cgrid ",
"\\s59\\li3240\\sa60\\sb30\\qj\\widctlpar\\qj\\adjustright \\fs20\\cgrid "
};
const char *Rtf_Style_DescContinue[] =
{
"\\s60\\li0\\widctlpar\\qj\\adjustright \\fs20\\cgrid ",
"\\s61\\li360\\widctlpar\\qj\\adjustright \\fs20\\cgrid ",
"\\s62\\li720\\widctlpar\\qj\\adjustright \\fs20\\cgrid ",
"\\s63\\li1080\\widctlpar\\qj\\adjustright \\fs20\\cgrid ",
"\\s64\\li1440\\widctlpar\\qj\\adjustright \\fs20\\cgrid ",
"\\s65\\li1800\\widctlpar\\qj\\adjustright \\fs20\\cgrid ",
"\\s66\\li2160\\widctlpar\\qj\\adjustright \\fs20\\cgrid ",
"\\s67\\li2520\\widctlpar\\qj\\adjustright \\fs20\\cgrid ",
"\\s68\\li2880\\widctlpar\\qj\\adjustright \\fs20\\cgrid ",
"\\s69\\li3240\\widctlpar\\qj\\adjustright \\fs20\\cgrid "
};
const char *Rtf_Style_LatexTOC[] =
{
"\\s70\\li0\\sa30\\sb30\\widctlpar\\tqr\\tldot\\tx8640\\adjustright \\fs20\\cgrid ",
"\\s71\\li360\\sa27\\sb27\\widctlpar\\tqr\\tldot\\tx8640\\adjustright \\fs20\\cgrid ",
"\\s72\\li720\\sa24\\sb24\\widctlpar\\tqr\\tldot\\tx8640\\adjustright \\fs20\\cgrid ",
"\\s73\\li1080\\sa21\\sb21\\widctlpar\\tqr\\tldot\\tx8640\\adjustright \\fs20\\cgrid ",
"\\s74\\li1440\\sa18\\sb18\\widctlpar\\tqr\\tldot\\tx8640\\adjustright \\fs20\\cgrid ",
"\\s75\\li1800\\sa15\\sb15\\widctlpar\\tqr\\tldot\\tx8640\\adjustright \\fs20\\cgrid ",
"\\s76\\li2160\\sa12\\sb12\\widctlpar\\tqr\\tldot\\tx8640\\adjustright \\fs20\\cgrid ",
"\\s77\\li2520\\sa9\\sb9\\widctlpar\\tqr\\tldot\\tx8640\\adjustright \\fs20\\cgrid ",
"\\s78\\li2880\\sa6\\sb6\\widctlpar\\tqr\\tldot\\tx8640\\adjustright \\fs20\\cgrid ",
"\\s79\\li3240\\sa3\\sb3\\widctlpar\\tqr\\tldot\\tx8640\\adjustright \\fs20\\cgrid "
};
const char *Rtf_Style_ListBullet[] =
{
"\\s80\\fi-360\\li360\\widctlpar\\jclisttab\\tx360{\\*\\pn \\pnlvlbody\\ilvl0\\ls1\\pnrnot0\\pndec }\\ls1\\adjustright \\fs20\\cgrid ",
"\\s81\\fi-360\\li720\\widctlpar\\jclisttab\\tx720{\\*\\pn \\pnlvlbody\\ilvl0\\ls2\\pnrnot0\\pndec }\\ls2\\adjustright \\fs20\\cgrid ",
"\\s82\\fi-360\\li1080\\widctlpar\\jclisttab\\tx1080{\\*\\pn \\pnlvlbody\\ilvl0\\ls3\\pnrnot0\\pndec }\\ls3\\adjustright \\fs20\\cgrid ",
"\\s83\\fi-360\\li1440\\widctlpar\\jclisttab\\tx1440{\\*\\pn \\pnlvlbody\\ilvl0\\ls4\\pnrnot0\\pndec }\\ls4\\adjustright \\fs20\\cgrid ",
"\\s84\\fi-360\\li1800\\widctlpar\\jclisttab\\tx1800{\\*\\pn \\pnlvlbody\\ilvl0\\ls5\\pnrnot0\\pndec }\\ls5\\adjustright \\fs20\\cgrid ",
"\\s85\\fi-360\\li2160\\widctlpar\\jclisttab\\tx2160{\\*\\pn \\pnlvlbody\\ilvl0\\ls6\\pnrnot0\\pndec }\\ls6\\adjustright \\fs20\\cgrid ",
"\\s86\\fi-360\\li2520\\widctlpar\\jclisttab\\tx2520{\\*\\pn \\pnlvlbody\\ilvl0\\ls7\\pnrnot0\\pndec }\\ls7\\adjustright \\fs20\\cgrid ",
"\\s87\\fi-360\\li2880\\widctlpar\\jclisttab\\tx2880{\\*\\pn \\pnlvlbody\\ilvl0\\ls8\\pnrnot0\\pndec }\\ls8\\adjustright \\fs20\\cgrid ",
"\\s88\\fi-360\\li3240\\widctlpar\\jclisttab\\tx3240{\\*\\pn \\pnlvlbody\\ilvl0\\ls9\\pnrnot0\\pndec }\\ls9\\adjustright \\fs20\\cgrid ",
"\\s89\\fi-360\\li3600\\widctlpar\\jclisttab\\tx3600{\\*\\pn \\pnlvlbody\\ilvl0\\ls10\\pnrnot0\\pndec }\\ls10\\adjustright \\fs20\\cgrid "
};
const char *Rtf_Style_ListEnum[] =
{
"\\s90\\fi-360\\li360\\widctlpar\\fs20\\cgrid ",
"\\s91\\fi-360\\li720\\widctlpar\\fs20\\cgrid ",
"\\s92\\fi-360\\li1080\\widctlpar\\fs20\\cgrid ",
"\\s93\\fi-360\\li1440\\widctlpar\\fs20\\cgrid ",
"\\s94\\fi-360\\li1800\\widctlpar\\fs20\\cgrid ",
"\\s95\\fi-360\\li2160\\widctlpar\\fs20\\cgrid ",
"\\s96\\fi-360\\li2520\\widctlpar\\fs20\\cgrid ",
"\\s97\\fi-360\\li2880\\widctlpar\\fs20\\cgrid ",
"\\s98\\fi-360\\li3240\\widctlpar\\fs20\\cgrid ",
"\\s99\\fi-360\\li3600\\widctlpar\\fs20\\cgrid "
};
void RTFGenerator::beginRTFDocument() void RTFGenerator::beginRTFDocument()
{ {
...@@ -251,47 +457,53 @@ void RTFGenerator::beginRTFDocument() ...@@ -251,47 +457,53 @@ void RTFGenerator::beginRTFDocument()
t <<"{\\comment Begining style list}\n"; t <<"{\\comment Begining style list}\n";
t <<"{\\stylesheet\n"; t <<"{\\stylesheet\n";
t <<"{\\widctlpar\\adjustright \\fs20\\cgrid \\snext0 Normal;}\n"; t <<"{\\widctlpar\\adjustright \\fs20\\cgrid \\snext0 Normal;}\n";
t <<"{" << Rtf_Style_Heading1 <<"\\sbasedon0 \\snext0 heading 1;}\n"; t <<"{" << Rtf_Style["Heading1"] <<"\\sbasedon0 \\snext0 heading 1;}\n";
t <<"{" << Rtf_Style_Heading2 <<"\\sbasedon0 \\snext0 heading 2;}\n"; t <<"{" << Rtf_Style["Heading2"] <<"\\sbasedon0 \\snext0 heading 2;}\n";
t <<"{" << Rtf_Style_Heading3 <<"\\sbasedon0 \\snext0 heading 3;}\n"; t <<"{" << Rtf_Style["Heading3"] <<"\\sbasedon0 \\snext0 heading 3;}\n";
t <<"{" << Rtf_Style_Heading4 <<"\\sbasedon0 \\snext0 heading 4;}\n"; t <<"{" << Rtf_Style["Heading4"] <<"\\sbasedon0 \\snext0 heading 4;}\n";
t <<"{\\*\\cs10 \\additive Default Paragraph Font;}\n"; t <<"{\\*\\cs10 \\additive Default Paragraph Font;}\n";
t <<"{" << Rtf_Style_Title << "\\sbasedon0 \\snext15 Title;}\n"; t <<"{" << Rtf_Style["Title"] << "\\sbasedon0 \\snext15 Title;}\n";
t <<"{" << Rtf_Style_SubTitle << "\\sbasedon0 \\snext16 Subtitle;}\n"; t <<"{" << Rtf_Style["SubTitle"] << "\\sbasedon0 \\snext16 Subtitle;}\n";
t <<"{" << Rtf_Style_BodyText << "\\sbasedon0 \\snext17 BodyText;}\n"; t <<"{" << Rtf_Style["BodyText"] << "\\sbasedon0 \\snext17 BodyText;}\n";
t <<"{" << Rtf_Style_DenseText << "\\sbasedon0 \\snext18 DenseText;}\n"; t <<"{" << Rtf_Style["DenseText"] << "\\sbasedon0 \\snext18 DenseText;}\n";
t <<"{" << Rtf_Style_Header << "\\sbasedon0 \\snext28 header;}\n"; t <<"{" << Rtf_Style["Header"] << "\\sbasedon0 \\snext28 header;}\n";
t <<"{" << Rtf_Style_Footer << "\\sbasedon0 \\snext29 footer;}\n"; t <<"{" << Rtf_Style["Footer"] << "\\sbasedon0 \\snext29 footer;}\n";
t <<"{" << Rtf_Style_GroupHeader << "\\sbasedon0 \\snext30 GroupHeader}\n"; t <<"{" << Rtf_Style["GroupHeader"] << "\\sbasedon0 \\snext30 GroupHeader}\n";
for (i=0;i<indentLevels;i++) for (i=0;i<indentLevels;i++)
{ {
t <<"{" << Rtf_Style_CodeExample[i] <<"\\sbasedon0 \\snext4" QCString n=makeIndexName("CodeExample",i);
t <<"{" << Rtf_Style[n] <<"\\sbasedon0 \\snext4"
<< (QMIN(i+1,indentLevels-1)) << " Code Example " << i << ";}\n"; << (QMIN(i+1,indentLevels-1)) << " Code Example " << i << ";}\n";
} }
for (i=0;i<indentLevels;i++) for (i=0;i<indentLevels;i++)
{ {
t <<"{" << Rtf_Style_ListContinue[i] << "\\sbasedon0 \\snext5" QCString n=makeIndexName("ListContinue",i);
t <<"{" << Rtf_Style[n] << "\\sbasedon0 \\snext5"
<< (QMIN(i+1,indentLevels-1)) << " List Continue " << i << ";}\n"; << (QMIN(i+1,indentLevels-1)) << " List Continue " << i << ";}\n";
} }
for (i=0;i<indentLevels;i++) for (i=0;i<indentLevels;i++)
{ {
t <<"{" << Rtf_Style_DescContinue[i] << "\\sbasedon0 \\snext6" QCString n=makeIndexName("DescContinue",i);
t <<"{" << Rtf_Style[n] << "\\sbasedon0 \\snext6"
<< (QMIN(i+1,indentLevels-1)) << " DescContinue " << i << ";}\n"; << (QMIN(i+1,indentLevels-1)) << " DescContinue " << i << ";}\n";
} }
for (i=0;i<indentLevels;i++) for (i=0;i<indentLevels;i++)
{ {
t <<"{" << Rtf_Style_LatexTOC[i] << "\\sbasedon50 \\snext7" QCString n=makeIndexName("LatexTOC",i);
t <<"{" << Rtf_Style[n] << "\\sbasedon50 \\snext7"
<< (QMIN(i+1,indentLevels-1)) << " LatexTOC " << i << ";}\n"; << (QMIN(i+1,indentLevels-1)) << " LatexTOC " << i << ";}\n";
} }
for (i=0;i<indentLevels;i++) for (i=0;i<indentLevels;i++)
{ {
t <<"{" << Rtf_Style_ListBullet[i] << "\\sbasedon0 \\snext8" QCString n=makeIndexName("ListBullet",i);
t <<"{" << Rtf_Style[n] << "\\sbasedon0 \\snext8"
<< (QMIN(i+1,indentLevels-1)) << " \\sautoupd List Bullet " << i << ";}\n"; << (QMIN(i+1,indentLevels-1)) << " \\sautoupd List Bullet " << i << ";}\n";
} }
for (i=0;i<indentLevels;i++) for (i=0;i<indentLevels;i++)
{ {
t <<"{" << Rtf_Style_ListEnum[i] << "\\sbasedon0 \\snext9" QCString n=makeIndexName("ListEnum",i);
t <<"{" << Rtf_Style[n] << "\\sbasedon0 \\snext9"
<< (QMIN(i+1,indentLevels-1)) << " \\sautoupd List Enum " << i << ";}\n"; << (QMIN(i+1,indentLevels-1)) << " \\sautoupd List Enum " << i << ";}\n";
} }
t <<"}" << endl; t <<"}" << endl;
...@@ -301,7 +513,7 @@ void RTFGenerator::beginRTFDocument() ...@@ -301,7 +513,7 @@ void RTFGenerator::beginRTFDocument()
void RTFGenerator::beginRTFChapter() void RTFGenerator::beginRTFChapter()
{ {
t <<"\n{\\comment Begin Chapter}\n" << Rtf_Style_Reset; t <<"\n{\\comment Begin Chapter}\n" << Rtf_Style["Reset"];
// if we are compact, no extra page breaks... // if we are compact, no extra page breaks...
if (Config::compactRTFFlag) if (Config::compactRTFFlag)
...@@ -314,12 +526,12 @@ void RTFGenerator::beginRTFChapter() ...@@ -314,12 +526,12 @@ void RTFGenerator::beginRTFChapter()
t <<"\\sect\\sbkpage\n"; t <<"\\sect\\sbkpage\n";
//t <<"\\sect\\sectd\\sbkpage\n"; //t <<"\\sect\\sectd\\sbkpage\n";
t << Rtf_Style_Heading1 << "\n"; t << Rtf_Style["Heading1"] << "\n";
} }
void RTFGenerator::beginRTFSection() void RTFGenerator::beginRTFSection()
{ {
t <<"\n{\\comment Begin Section}\n" << Rtf_Style_Reset; t <<"\n{\\comment Begin Section}\n" << Rtf_Style["Reset"];
// if we are compact, no extra page breaks... // if we are compact, no extra page breaks...
if (Config::compactRTFFlag) if (Config::compactRTFFlag)
...@@ -332,7 +544,7 @@ void RTFGenerator::beginRTFSection() ...@@ -332,7 +544,7 @@ void RTFGenerator::beginRTFSection()
t <<"\\sect\\sbkpage\n"; t <<"\\sect\\sbkpage\n";
//t <<"\\sect\\sectd\\sbkpage\n"; //t <<"\\sect\\sectd\\sbkpage\n";
t << Rtf_Style_Heading2 << "\n"; t << Rtf_Style["Heading2"] << "\n";
} }
void RTFGenerator::startFile(const char *name,const char *, bool ) void RTFGenerator::startFile(const char *name,const char *, bool )
...@@ -509,14 +721,14 @@ void RTFGenerator::endIndexSection(IndexSections is) ...@@ -509,14 +721,14 @@ void RTFGenerator::endIndexSection(IndexSections is)
"}{\\comment end of infoblock}\n"; "}{\\comment end of infoblock}\n";
// setup for this section // setup for this section
t << Rtf_Style_Reset <<"\n"; t << Rtf_Style["Reset"] <<"\n";
t <<"\\sectd\\pgnlcrm\n"; t <<"\\sectd\\pgnlcrm\n";
t <<"{\\footer "<<Rtf_Style_Footer << "{\\chpgn}}\n"; t <<"{\\footer "<<Rtf_Style["Footer"] << "{\\chpgn}}\n";
// the title entry // the title entry
t << "{\\comment begin title page}\n"; t << "{\\comment begin title page}\n";
t << Rtf_Style_Reset << Rtf_Style_Title << endl; // set to title style t << Rtf_Style["Reset"] << Rtf_Style["Title"] << endl; // set to title style
t << "{\\field\\fldedit {\\*\\fldinst TITLE \\\\*MERGEFORMAT}{\\fldrslt TITLE}}\\par" << endl; t << "{\\field\\fldedit {\\*\\fldinst TITLE \\\\*MERGEFORMAT}{\\fldrslt TITLE}}\\par" << endl;
t << Rtf_Style_Reset << Rtf_Style_SubTitle << endl; // set to subtitle style t << Rtf_Style["Reset"] << Rtf_Style["SubTitle"] << endl; // set to subtitle style
t << "{\\field\\fldedit {\\*\\fldinst AUTHOR \\\\*MERGEFORMAT}{\\fldrslt AUTHOR}}\\par" << endl; t << "{\\field\\fldedit {\\*\\fldinst AUTHOR \\\\*MERGEFORMAT}{\\fldrslt AUTHOR}}\\par" << endl;
t << "{\\field\\fldedit {\\*\\fldinst CREATEDATE \\\\*MERGEFORMAT}" t << "{\\field\\fldedit {\\*\\fldinst CREATEDATE \\\\*MERGEFORMAT}"
"{\\fldrslt CREATEDATE}}\\par"<<endl; "{\\fldrslt CREATEDATE}}\\par"<<endl;
...@@ -524,44 +736,44 @@ void RTFGenerator::endIndexSection(IndexSections is) ...@@ -524,44 +736,44 @@ void RTFGenerator::endIndexSection(IndexSections is)
// table of contents section // table of contents section
t << "{\\comment Table of contents}\n"; t << "{\\comment Table of contents}\n";
t << Rtf_Style_Reset << endl; t << Rtf_Style["Reset"] << endl;
t << "{\\field\\fldedit {\\*\\fldinst TOC \\\\f \\\\*MERGEFORMAT}{\\fldrslt Table of contents}}\\par\n"; t << "{\\field\\fldedit {\\*\\fldinst TOC \\\\f \\\\*MERGEFORMAT}{\\fldrslt Table of contents}}\\par\n";
t << Rtf_Style_Reset << endl; t << Rtf_Style["Reset"] << endl;
} }
break; break;
case isMainPage: case isMainPage:
t << "\\par " << Rtf_Style_Reset << endl; t << "\\par " << Rtf_Style["Reset"] << endl;
t << "{\\tc \\v " << theTranslator->trMainPage() << "}"<< endl; t << "{\\tc \\v " << theTranslator->trMainPage() << "}"<< endl;
t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \"index.rtf\" \\\\*MERGEFORMAT}{\\fldrslt includedstuff}}\n"; t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \"index.rtf\" \\\\*MERGEFORMAT}{\\fldrslt includedstuff}}\n";
break; break;
case isModuleIndex: case isModuleIndex:
t << "\\par " << Rtf_Style_Reset << endl; t << "\\par " << Rtf_Style["Reset"] << endl;
t << "{\\tc \\v " << theTranslator->trModuleIndex() << "}"<< endl; t << "{\\tc \\v " << theTranslator->trModuleIndex() << "}"<< endl;
t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \"modules.rtf\" \\\\*MERGEFORMAT}{\\fldrslt includedstuff}}\n"; t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \"modules.rtf\" \\\\*MERGEFORMAT}{\\fldrslt includedstuff}}\n";
break; break;
case isNamespaceIndex: case isNamespaceIndex:
t << "\\par " << Rtf_Style_Reset << endl; t << "\\par " << Rtf_Style["Reset"] << endl;
t << "{\\tc \\v " << theTranslator->trNamespaceIndex() << "}"<< endl; t << "{\\tc \\v " << theTranslator->trNamespaceIndex() << "}"<< endl;
t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \"namespaces.rtf\" \\\\*MERGEFORMAT}{\\fldrslt includedstuff}}\n"; t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \"namespaces.rtf\" \\\\*MERGEFORMAT}{\\fldrslt includedstuff}}\n";
break; break;
case isClassHierarchyIndex: case isClassHierarchyIndex:
t << "\\par " << Rtf_Style_Reset << endl; t << "\\par " << Rtf_Style["Reset"] << endl;
t << "{\\tc \\v " << theTranslator->trHierarchicalIndex() << "}"<< endl; t << "{\\tc \\v " << theTranslator->trHierarchicalIndex() << "}"<< endl;
t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \"hierarchy.rtf\" \\\\*MERGEFORMAT}{\\fldrslt includedstuff}}\n"; t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \"hierarchy.rtf\" \\\\*MERGEFORMAT}{\\fldrslt includedstuff}}\n";
break; break;
case isCompoundIndex: case isCompoundIndex:
t << "\\par " << Rtf_Style_Reset << endl; t << "\\par " << Rtf_Style["Reset"] << endl;
t << "{\\tc \\v " << theTranslator->trCompoundIndex() << "}"<< endl; t << "{\\tc \\v " << theTranslator->trCompoundIndex() << "}"<< endl;
t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \"annotated.rtf\" \\\\*MERGEFORMAT}{\\fldrslt includedstuff}}\n"; t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \"annotated.rtf\" \\\\*MERGEFORMAT}{\\fldrslt includedstuff}}\n";
break; break;
case isFileIndex: case isFileIndex:
t << "\\par " << Rtf_Style_Reset << endl; t << "\\par " << Rtf_Style["Reset"] << endl;
t << "{\\tc \\v " << theTranslator->trFileIndex() << "}"<< endl; t << "{\\tc \\v " << theTranslator->trFileIndex() << "}"<< endl;
t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \"files.rtf\" \\\\*MERGEFORMAT}{\\fldrslt includedstuff}}\n"; t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \"files.rtf\" \\\\*MERGEFORMAT}{\\fldrslt includedstuff}}\n";
break; break;
case isPageIndex: case isPageIndex:
t << "\\par " << Rtf_Style_Reset << endl; t << "\\par " << Rtf_Style["Reset"] << endl;
t << "{\\tc \\v " << theTranslator->trPageIndex() << "}"<< endl; t << "{\\tc \\v " << theTranslator->trPageIndex() << "}"<< endl;
t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \"pages.rtf\" \\\\*MERGEFORMAT}{\\fldrslt includedstuff}}\n"; t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \"pages.rtf\" \\\\*MERGEFORMAT}{\\fldrslt includedstuff}}\n";
break; break;
...@@ -572,9 +784,9 @@ void RTFGenerator::endIndexSection(IndexSections is) ...@@ -572,9 +784,9 @@ void RTFGenerator::endIndexSection(IndexSections is)
t << "{\\tc \\v " << theTranslator->trModuleDocumentation() << "}"<< endl; t << "{\\tc \\v " << theTranslator->trModuleDocumentation() << "}"<< endl;
while (gd && !found) while (gd && !found)
{ {
if (gd->isLinkableInProject() || gd->countMembers()>0) if (gd->countMembers()>0)
{ {
t << "\\par " << Rtf_Style_Reset << endl; t << "\\par " << Rtf_Style["Reset"] << endl;
t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \""; t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \"";
t << gd->getOutputFileBase(); t << gd->getOutputFileBase();
t << ".rtf\" \\\\*MERGEFORMAT}{\\fldrslt includedstuff}}\n"; t << ".rtf\" \\\\*MERGEFORMAT}{\\fldrslt includedstuff}}\n";
...@@ -585,9 +797,9 @@ void RTFGenerator::endIndexSection(IndexSections is) ...@@ -585,9 +797,9 @@ void RTFGenerator::endIndexSection(IndexSections is)
} }
while (gd) while (gd)
{ {
if (gd->isLinkableInProject() || gd->countMembers()>0) if (gd->countMembers()>0)
{ {
t << "\\par " << Rtf_Style_Reset << endl; t << "\\par " << Rtf_Style["Reset"] << endl;
beginRTFSection(); beginRTFSection();
t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \""; t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \"";
t << gd->getOutputFileBase(); t << gd->getOutputFileBase();
...@@ -605,7 +817,7 @@ void RTFGenerator::endIndexSection(IndexSections is) ...@@ -605,7 +817,7 @@ void RTFGenerator::endIndexSection(IndexSections is)
{ {
if (nd->isLinkableInProject() || nd->countMembers()>0) if (nd->isLinkableInProject() || nd->countMembers()>0)
{ {
t << "\\par " << Rtf_Style_Reset << endl; t << "\\par " << Rtf_Style["Reset"] << endl;
t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \""; t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \"";
t << nd->getOutputFileBase(); t << nd->getOutputFileBase();
t << ".rtf\" \\\\*MERGEFORMAT}{\\fldrslt includedstuff}}\n"; t << ".rtf\" \\\\*MERGEFORMAT}{\\fldrslt includedstuff}}\n";
...@@ -617,7 +829,7 @@ void RTFGenerator::endIndexSection(IndexSections is) ...@@ -617,7 +829,7 @@ void RTFGenerator::endIndexSection(IndexSections is)
{ {
if (nd->isLinkableInProject() || nd->countMembers()>0) if (nd->isLinkableInProject() || nd->countMembers()>0)
{ {
t << "\\par " << Rtf_Style_Reset << endl; t << "\\par " << Rtf_Style["Reset"] << endl;
beginRTFSection(); beginRTFSection();
t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \""; t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \"";
t << nd->getOutputFileBase(); t << nd->getOutputFileBase();
...@@ -637,7 +849,7 @@ void RTFGenerator::endIndexSection(IndexSections is) ...@@ -637,7 +849,7 @@ void RTFGenerator::endIndexSection(IndexSections is)
{ {
if (cd->isLinkableInProject()) if (cd->isLinkableInProject())
{ {
t << "\\par " << Rtf_Style_Reset << endl; t << "\\par " << Rtf_Style["Reset"] << endl;
t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \""; t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \"";
t << cd->getOutputFileBase(); t << cd->getOutputFileBase();
t << ".rtf\" \\\\*MERGEFORMAT}{\\fldrslt includedstuff}}\n"; t << ".rtf\" \\\\*MERGEFORMAT}{\\fldrslt includedstuff}}\n";
...@@ -649,7 +861,7 @@ void RTFGenerator::endIndexSection(IndexSections is) ...@@ -649,7 +861,7 @@ void RTFGenerator::endIndexSection(IndexSections is)
{ {
if (cd->isLinkableInProject()) if (cd->isLinkableInProject())
{ {
t << "\\par " << Rtf_Style_Reset << endl; t << "\\par " << Rtf_Style["Reset"] << endl;
beginRTFSection(); beginRTFSection();
t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \""; t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \"";
t << cd->getOutputFileBase(); t << cd->getOutputFileBase();
...@@ -674,7 +886,7 @@ void RTFGenerator::endIndexSection(IndexSections is) ...@@ -674,7 +886,7 @@ void RTFGenerator::endIndexSection(IndexSections is)
{ {
if (isFirst) if (isFirst)
{ {
t << "\\par " << Rtf_Style_Reset << endl; t << "\\par " << Rtf_Style["Reset"] << endl;
t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \""; t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \"";
t << fd->getOutputFileBase(); t << fd->getOutputFileBase();
t << ".rtf\" \\\\*MERGEFORMAT}{\\fldrslt includedstuff}}\n"; t << ".rtf\" \\\\*MERGEFORMAT}{\\fldrslt includedstuff}}\n";
...@@ -682,7 +894,7 @@ void RTFGenerator::endIndexSection(IndexSections is) ...@@ -682,7 +894,7 @@ void RTFGenerator::endIndexSection(IndexSections is)
} }
else else
{ {
t << "\\par " << Rtf_Style_Reset << endl; t << "\\par " << Rtf_Style["Reset"] << endl;
beginRTFSection(); beginRTFSection();
t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \""; t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \"";
t << fd->getOutputFileBase(); t << fd->getOutputFileBase();
...@@ -702,7 +914,7 @@ void RTFGenerator::endIndexSection(IndexSections is) ...@@ -702,7 +914,7 @@ void RTFGenerator::endIndexSection(IndexSections is)
t << "{\\tc \\v " << theTranslator->trExampleDocumentation() << "}"<< endl; t << "{\\tc \\v " << theTranslator->trExampleDocumentation() << "}"<< endl;
if (pi) if (pi)
{ {
t << "\\par " << Rtf_Style_Reset << endl; t << "\\par " << Rtf_Style["Reset"] << endl;
t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \""; t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \"";
t << convertSlashes(pi->name,TRUE); t << convertSlashes(pi->name,TRUE);
t << "-example.rtf\" \\\\*MERGEFORMAT}{\\fldrslt includedstuff}}\n"; t << "-example.rtf\" \\\\*MERGEFORMAT}{\\fldrslt includedstuff}}\n";
...@@ -710,7 +922,7 @@ void RTFGenerator::endIndexSection(IndexSections is) ...@@ -710,7 +922,7 @@ void RTFGenerator::endIndexSection(IndexSections is)
} }
while (pi) while (pi)
{ {
t << "\\par " << Rtf_Style_Reset << endl; t << "\\par " << Rtf_Style["Reset"] << endl;
beginRTFSection(); beginRTFSection();
t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \""; t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \"";
t << convertSlashes(pi->name,TRUE); t << convertSlashes(pi->name,TRUE);
...@@ -730,7 +942,7 @@ void RTFGenerator::endIndexSection(IndexSections is) ...@@ -730,7 +942,7 @@ void RTFGenerator::endIndexSection(IndexSections is)
pageName=pi->name.copy(); pageName=pi->name.copy();
else else
pageName=pi->name.lower(); pageName=pi->name.lower();
t << "\\par " << Rtf_Style_Reset << endl; t << "\\par " << Rtf_Style["Reset"] << endl;
t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \""; t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \"";
t << pageName; t << pageName;
t << ".rtf\" \\\\*MERGEFORMAT}{\\fldrslt includedstuff}}\n"; t << ".rtf\" \\\\*MERGEFORMAT}{\\fldrslt includedstuff}}\n";
...@@ -743,7 +955,7 @@ void RTFGenerator::endIndexSection(IndexSections is) ...@@ -743,7 +955,7 @@ void RTFGenerator::endIndexSection(IndexSections is)
pageName=pi->name.copy(); pageName=pi->name.copy();
else else
pageName=pi->name.lower(); pageName=pi->name.lower();
//t << "\\par " << Rtf_Style_Reset << endl; //t << "\\par " << Rtf_Style["Reset"] << endl;
//beginRTFSection(); //beginRTFSection();
t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \""; t << "{\\field\\fldedit{\\*\\fldinst INCLUDETEXT \"";
t << pageName; t << pageName;
...@@ -754,9 +966,9 @@ void RTFGenerator::endIndexSection(IndexSections is) ...@@ -754,9 +966,9 @@ void RTFGenerator::endIndexSection(IndexSections is)
break; break;
case isEndIndex: case isEndIndex:
beginRTFChapter(); beginRTFChapter();
t << Rtf_Style_Heading1; t << Rtf_Style["Heading1"];
t << "Index\\par "<< endl; t << "Index\\par "<< endl;
t << Rtf_Style_Reset<< endl; t << Rtf_Style["Reset"] << endl;
t << "{\\tc \\v Index}" << endl; t << "{\\tc \\v Index}" << endl;
t << "{\\field\\fldedit {\\*\\fldinst INDEX \\\\c2 \\\\*MERGEFORMAT}{\\fldrslt INDEX}}\n"; t << "{\\field\\fldedit {\\*\\fldinst INDEX \\\\c2 \\\\*MERGEFORMAT}{\\fldrslt INDEX}}\n";
...@@ -772,8 +984,8 @@ void RTFGenerator::lastIndexPage() ...@@ -772,8 +984,8 @@ void RTFGenerator::lastIndexPage()
t <<"\\sect \\sectd \\sbknone \\pgndec\n"; t <<"\\sect \\sectd \\sbknone \\pgndec\n";
// set footer // set footer
t <<"{\\footer "<< Rtf_Style_Footer << "{\\chpgn}}\n"; t <<"{\\footer "<< Rtf_Style["Footer"] << "{\\chpgn}}\n";
//t << Rtf_Style_Heading1 << "\n"; //t << Rtf_Style["Heading1"] << "\n";
} }
...@@ -798,7 +1010,7 @@ void RTFGenerator::startIndexList() ...@@ -798,7 +1010,7 @@ void RTFGenerator::startIndexList()
t << "{\\comment (startIndexList)}" << endl; t << "{\\comment (startIndexList)}" << endl;
t << "{" << endl; t << "{" << endl;
incrementIndentLevel(); incrementIndentLevel();
t << Rtf_Style_Reset << Rtf_LCList_DepthStyle() << endl; t << Rtf_Style["Reset"] << Rtf_LCList_DepthStyle() << endl;
newParagraph(); newParagraph();
m_omitParagraph=TRUE; m_omitParagraph=TRUE;
} }
...@@ -819,7 +1031,7 @@ void RTFGenerator::startItemList() ...@@ -819,7 +1031,7 @@ void RTFGenerator::startItemList()
t << "{"; t << "{";
incrementIndentLevel(); incrementIndentLevel();
listItemInfo[m_listLevel].isEnum = FALSE; listItemInfo[m_listLevel].isEnum = FALSE;
//t << Rtf_Style_Reset << Rtf_BList_DepthStyle(); //t << Rtf_Style["Reset"] << Rtf_BList_DepthStyle();
} }
/*! end bullet list */ /*! end bullet list */
...@@ -830,7 +1042,7 @@ void RTFGenerator::endItemList() ...@@ -830,7 +1042,7 @@ void RTFGenerator::endItemList()
t << "}"; t << "}";
decrementIndentLevel(); decrementIndentLevel();
m_omitParagraph=TRUE; m_omitParagraph=TRUE;
//t << Rtf_Style_Reset << styleStack.top() << endl; //t << Rtf_Style["Reset"] << styleStack.top() << endl;
//printf("RTFGenerator::endItemList() `%s'\n",styleStack.top()); //printf("RTFGenerator::endItemList() `%s'\n",styleStack.top());
//newParagraph(); //newParagraph();
} }
...@@ -843,7 +1055,7 @@ void RTFGenerator::startEnumList() // starts an enumeration list ...@@ -843,7 +1055,7 @@ void RTFGenerator::startEnumList() // starts an enumeration list
incrementIndentLevel(); incrementIndentLevel();
listItemInfo[m_listLevel].isEnum = TRUE; listItemInfo[m_listLevel].isEnum = TRUE;
listItemInfo[m_listLevel].number = 1; listItemInfo[m_listLevel].number = 1;
//t << Rtf_Style_Reset << Rtf_EList_DepthStyle() << endl; //t << Rtf_Style["Reset"] << Rtf_EList_DepthStyle() << endl;
//newParagraph(); //newParagraph();
//m_omitParagraph=TRUE; //m_omitParagraph=TRUE;
...@@ -864,7 +1076,7 @@ void RTFGenerator::writeListItem() ...@@ -864,7 +1076,7 @@ void RTFGenerator::writeListItem()
{ {
t << "{\\comment (writeListItem)}" << endl; t << "{\\comment (writeListItem)}" << endl;
newParagraph(); newParagraph();
t << Rtf_Style_Reset; t << Rtf_Style["Reset"];
if (listItemInfo[m_listLevel].isEnum) if (listItemInfo[m_listLevel].isEnum)
{ {
t << Rtf_EList_DepthStyle() << endl; t << Rtf_EList_DepthStyle() << endl;
...@@ -980,14 +1192,14 @@ void RTFGenerator::writeEndAnnoItem(const char *name) ...@@ -980,14 +1192,14 @@ void RTFGenerator::writeEndAnnoItem(const char *name)
void RTFGenerator::startSubsection() void RTFGenerator::startSubsection()
{ {
//beginRTFSubSection(); //beginRTFSubSection();
t <<"\n{\\comment Begin SubSection}\n" << Rtf_Style_Reset; t <<"\n{\\comment Begin SubSection}\n" << Rtf_Style["Reset"];
t << Rtf_Style_Heading3 << "\n"; t << Rtf_Style["Heading3"] << "\n";
} }
void RTFGenerator::endSubsection() void RTFGenerator::endSubsection()
{ {
newParagraph(); newParagraph();
t << Rtf_Style_Reset << endl; t << Rtf_Style["Reset"] << endl;
} }
void RTFGenerator::startSubsubsection() void RTFGenerator::startSubsubsection()
...@@ -995,7 +1207,7 @@ void RTFGenerator::startSubsubsection() ...@@ -995,7 +1207,7 @@ void RTFGenerator::startSubsubsection()
//beginRTFSubSubSection(); //beginRTFSubSubSection();
t << "\n{\\comment Begin SubSubSection}\n"; t << "\n{\\comment Begin SubSubSection}\n";
t << "{" << endl; t << "{" << endl;
t << Rtf_Style_Reset << Rtf_Style_Heading4 << "\n"; t << Rtf_Style["Reset"] << Rtf_Style["Heading4"] << "\n";
} }
void RTFGenerator::endSubsubsection() void RTFGenerator::endSubsubsection()
...@@ -1135,13 +1347,13 @@ void RTFGenerator::startTitleHead(const char *) ...@@ -1135,13 +1347,13 @@ void RTFGenerator::startTitleHead(const char *)
t <<"{\\comment startTitleHead}" << endl; t <<"{\\comment startTitleHead}" << endl;
// beginRTFSection(); // beginRTFSection();
t << Rtf_Style_Reset << Rtf_Style_Heading2 << endl; t << Rtf_Style["Reset"] << Rtf_Style["Heading2"] << endl;
} }
void RTFGenerator::endTitleHead(const char *fileName,const char *name) void RTFGenerator::endTitleHead(const char *fileName,const char *name)
{ {
t <<"{\\comment endTitleHead}" << endl; t <<"{\\comment endTitleHead}" << endl;
t << "\\par " << Rtf_Style_Reset << endl; t << "\\par " << Rtf_Style["Reset"] << endl;
if (name) if (name)
{ {
// make table of contents entry // make table of contents entry
...@@ -1177,8 +1389,8 @@ void RTFGenerator::startGroupHeader() ...@@ -1177,8 +1389,8 @@ void RTFGenerator::startGroupHeader()
{ {
t <<"{\\comment startGroupHeader}" << endl; t <<"{\\comment startGroupHeader}" << endl;
newParagraph(); newParagraph();
t << Rtf_Style_Reset; t << Rtf_Style["Reset"];
t << Rtf_Style_Heading3; t << Rtf_Style["Heading3"];
t << endl; t << endl;
} }
...@@ -1186,7 +1398,7 @@ void RTFGenerator::endGroupHeader() ...@@ -1186,7 +1398,7 @@ void RTFGenerator::endGroupHeader()
{ {
t <<"{\\comment endGroupHeader}" << endl; t <<"{\\comment endGroupHeader}" << endl;
newParagraph(); newParagraph();
t << Rtf_Style_Reset << endl; t << Rtf_Style["Reset"] << endl;
} }
void RTFGenerator::startMemberDoc(const char *clname, void RTFGenerator::startMemberDoc(const char *clname,
...@@ -1200,11 +1412,10 @@ void RTFGenerator::startMemberDoc(const char *clname, ...@@ -1200,11 +1412,10 @@ void RTFGenerator::startMemberDoc(const char *clname,
addToIndex(memname,clname); addToIndex(memname,clname);
addToIndex(clname,memname); addToIndex(clname,memname);
} }
//t << Rtf_Style_Reset << Rtf_Style_ListBullet1; t << Rtf_Style["Reset"] << Rtf_Style["Heading4"];
t << Rtf_Style_Reset << Rtf_Style_Heading4;
//styleStack.push(Rtf_Style_Heading4); //styleStack.push(Rtf_Style_Heading4);
t << "{" << endl; t << "{" << endl;
//printf("RTFGenerator::startMemberDoc() `%s'\n",Rtf_Style_Heading4); //printf("RTFGenerator::startMemberDoc() `%s'\n",Rtf_Style["Heading4"]);
startBold(); startBold();
t << endl; t << endl;
} }
...@@ -1215,7 +1426,7 @@ void RTFGenerator::endMemberDoc() ...@@ -1215,7 +1426,7 @@ void RTFGenerator::endMemberDoc()
t << "}" << endl; t << "}" << endl;
//const char *style = styleStack.pop(); //const char *style = styleStack.pop();
//printf("RTFGenerator::endMemberDoc() `%s'\n",style); //printf("RTFGenerator::endMemberDoc() `%s'\n",style);
//ASSERT(style==Rtf_Style_Heading4); //ASSERT(style==Rtf_Style["Heading4"]);
endBold(); endBold();
newParagraph(); newParagraph();
} }
...@@ -1295,7 +1506,7 @@ void RTFGenerator::startIndent() ...@@ -1295,7 +1506,7 @@ void RTFGenerator::startIndent()
incrementIndentLevel(); incrementIndentLevel();
t << "{\\comment (startIndent) }" << endl; t << "{\\comment (startIndent) }" << endl;
t << "{" << endl; t << "{" << endl;
t << Rtf_Style_Reset << Rtf_CList_DepthStyle() << endl; t << Rtf_Style["Reset"] << Rtf_CList_DepthStyle() << endl;
//styleStack.push(style); //styleStack.push(style);
} }
...@@ -1311,7 +1522,7 @@ void RTFGenerator::startDescription() ...@@ -1311,7 +1522,7 @@ void RTFGenerator::startDescription()
{ {
t << "{\\comment (startDescription)}" << endl; t << "{\\comment (startDescription)}" << endl;
t << "{" << endl; t << "{" << endl;
t << Rtf_Style_Reset << Rtf_CList_DepthStyle(); t << Rtf_Style["Reset"] << Rtf_CList_DepthStyle();
} }
void RTFGenerator::endDescription() void RTFGenerator::endDescription()
...@@ -1340,7 +1551,7 @@ void RTFGenerator::startMemberDescription() ...@@ -1340,7 +1551,7 @@ void RTFGenerator::startMemberDescription()
t << "{\\comment (startMemberDescription)}" << endl; t << "{\\comment (startMemberDescription)}" << endl;
t << "{" << endl; t << "{" << endl;
incrementIndentLevel(); incrementIndentLevel();
t << Rtf_Style_Reset << Rtf_CList_DepthStyle(); t << Rtf_Style["Reset"] << Rtf_CList_DepthStyle();
startEmphasis(); startEmphasis();
} }
...@@ -1364,16 +1575,16 @@ void RTFGenerator::endDescTitle() ...@@ -1364,16 +1575,16 @@ void RTFGenerator::endDescTitle()
{ {
t << "{\\comment (endDescTitle) }" << endl; t << "{\\comment (endDescTitle) }" << endl;
newParagraph(); newParagraph();
//t << Rtf_Style_Reset << styleStack.top(); //t << Rtf_Style["Reset"] << styleStack.top();
incrementIndentLevel(); incrementIndentLevel();
t << Rtf_Style_Reset << Rtf_DList_DepthStyle(); t << Rtf_Style["Reset"] << Rtf_DList_DepthStyle();
} }
void RTFGenerator::writeDescItem() void RTFGenerator::writeDescItem()
{ {
t << "{\\comment (writeDescItem) }" << endl; t << "{\\comment (writeDescItem) }" << endl;
// incrementIndentLevel(); // incrementIndentLevel();
//t << Rtf_Style_Reset << Rtf_CList_DepthStyle(); //t << Rtf_Style["Reset"] << Rtf_CList_DepthStyle();
} }
void RTFGenerator::endDescList() void RTFGenerator::endDescList()
...@@ -1383,18 +1594,18 @@ void RTFGenerator::endDescList() ...@@ -1383,18 +1594,18 @@ void RTFGenerator::endDescList()
t << "}"; t << "}";
decrementIndentLevel(); decrementIndentLevel();
m_omitParagraph = TRUE; m_omitParagraph = TRUE;
//t << Rtf_Style_Reset << styleStack.top() << endl; //t << Rtf_Style["Reset"] << styleStack.top() << endl;
} }
void RTFGenerator::writeSection(const char *lab,const char *title,bool sub) void RTFGenerator::writeSection(const char *lab,const char *title,bool sub)
{ {
t << "{\\comment (writeSection)}" << endl; t << "{\\comment (writeSection)}" << endl;
t << "{"; t << "{";
t<< Rtf_Style_Reset; t<< Rtf_Style["Reset"];
if (sub) if (sub)
{ {
// set style // set style
t << Rtf_Style_Heading3; t << Rtf_Style["Heading3"];
// make table of contents entry // make table of contents entry
t << "{\\tc\\tcl3 \\v "; t << "{\\tc\\tcl3 \\v ";
docify(title); docify(title);
...@@ -1403,7 +1614,7 @@ void RTFGenerator::writeSection(const char *lab,const char *title,bool sub) ...@@ -1403,7 +1614,7 @@ void RTFGenerator::writeSection(const char *lab,const char *title,bool sub)
else else
{ {
// set style // set style
t << Rtf_Style_Heading2; t << Rtf_Style["Heading2"];
// make table of contents entry // make table of contents entry
t << "{\\tc\\tcl2 \\v "; t << "{\\tc\\tcl2 \\v ";
docify(title); docify(title);
...@@ -1530,7 +1741,7 @@ void RTFGenerator::endClassDiagram(ClassDiagram &d, ...@@ -1530,7 +1741,7 @@ void RTFGenerator::endClassDiagram(ClassDiagram &d,
// display the file // display the file
t << "{" << endl; t << "{" << endl;
t << Rtf_Style_Reset << endl; t << Rtf_Style["Reset"] << endl;
t << "\\par\\pard \\qc {\\field\\flddirty {\\*\\fldinst INCLUDEPICTURE "; t << "\\par\\pard \\qc {\\field\\flddirty {\\*\\fldinst INCLUDEPICTURE ";
t << fileName << ".gif"; t << fileName << ".gif";
t << " \\\\*MERGEFORMAT}{\\fldrslt IMAGE}}\\par" << endl; t << " \\\\*MERGEFORMAT}{\\fldrslt IMAGE}}\\par" << endl;
...@@ -1545,7 +1756,7 @@ void RTFGenerator::writeFormula(const char *,const char *text) ...@@ -1545,7 +1756,7 @@ void RTFGenerator::writeFormula(const char *,const char *text)
void RTFGenerator::startMemberItem(int) void RTFGenerator::startMemberItem(int)
{ {
t <<"{\\comment startMemberItem }" << endl; t <<"{\\comment startMemberItem }" << endl;
t << Rtf_Style_Reset << Rtf_BList_DepthStyle() << endl; // set style to apropriate depth t << Rtf_Style["Reset"] << Rtf_BList_DepthStyle() << endl; // set style to apropriate depth
} }
void RTFGenerator::endMemberItem(bool) void RTFGenerator::endMemberItem(bool)
...@@ -1575,7 +1786,7 @@ void RTFGenerator::startCodeFragment() ...@@ -1575,7 +1786,7 @@ void RTFGenerator::startCodeFragment()
{ {
t << "{" << endl; t << "{" << endl;
newParagraph(); newParagraph();
t << Rtf_Style_Reset << Rtf_Code_DepthStyle(); t << Rtf_Style["Reset"] << Rtf_Code_DepthStyle();
//styleStack.push(Rtf_Style_CodeExample); //styleStack.push(Rtf_Style_CodeExample);
} }
...@@ -1584,7 +1795,7 @@ void RTFGenerator::endCodeFragment() ...@@ -1584,7 +1795,7 @@ void RTFGenerator::endCodeFragment()
newParagraph(); newParagraph();
//styleStack.pop(); //styleStack.pop();
//printf("RTFGenerator::endCodeFrament() top=%s\n",styleStack.top()); //printf("RTFGenerator::endCodeFrament() top=%s\n",styleStack.top());
//t << Rtf_Style_Reset << styleStack.top() << endl; //t << Rtf_Style["Reset"] << styleStack.top() << endl;
t << "}" << endl; t << "}" << endl;
m_omitParagraph = TRUE; m_omitParagraph = TRUE;
} }
...@@ -1633,7 +1844,7 @@ void RTFGenerator::startDescTable() ...@@ -1633,7 +1844,7 @@ void RTFGenerator::startDescTable()
t << "{\\comment (startDescTable) }" << endl; t << "{\\comment (startDescTable) }" << endl;
t << "{" << endl; t << "{" << endl;
//incrementIndentLevel(); //incrementIndentLevel();
//t << Rtf_Style_Reset << Rtf_CList_DepthStyle(); //t << Rtf_Style["Reset"] << Rtf_CList_DepthStyle();
} }
void RTFGenerator::endDescTable() void RTFGenerator::endDescTable()
...@@ -1641,7 +1852,7 @@ void RTFGenerator::endDescTable() ...@@ -1641,7 +1852,7 @@ void RTFGenerator::endDescTable()
//decrementIndentLevel(); //decrementIndentLevel();
t << "{\\comment (endDescTable)}" << endl; t << "{\\comment (endDescTable)}" << endl;
t << "}" << endl; t << "}" << endl;
//t << Rtf_Style_Reset << styleStack.top(); //t << Rtf_Style["Reset"] << styleStack.top();
} }
void RTFGenerator::startDescTableTitle() void RTFGenerator::startDescTableTitle()
...@@ -1694,49 +1905,55 @@ void RTFGenerator::decrementIndentLevel() ...@@ -1694,49 +1905,55 @@ void RTFGenerator::decrementIndentLevel()
// a style for list formatted with "list continue" style // a style for list formatted with "list continue" style
const char * RTFGenerator::Rtf_CList_DepthStyle() const char * RTFGenerator::Rtf_CList_DepthStyle()
{ {
return Rtf_Style_ListContinue[m_listLevel]; QCString n=makeIndexName("ListContinue",m_listLevel);
return Rtf_Style[n];
} }
// a style for list formatted as a "latext style" table of contents // a style for list formatted as a "latext style" table of contents
const char * RTFGenerator::Rtf_LCList_DepthStyle() const char * RTFGenerator::Rtf_LCList_DepthStyle()
{ {
return Rtf_Style_LatexTOC[m_listLevel]; QCString n=makeIndexName("LatexTOC",m_listLevel);
return Rtf_Style[n];
} }
// a style for list formatted as a "bullet" style // a style for list formatted as a "bullet" style
const char * RTFGenerator::Rtf_BList_DepthStyle() const char * RTFGenerator::Rtf_BList_DepthStyle()
{ {
return Rtf_Style_ListBullet[m_listLevel]; QCString n=makeIndexName("ListBullet",m_listLevel);
return Rtf_Style[n];
} }
// a style for list formatted as a "enumeration" style // a style for list formatted as a "enumeration" style
const char * RTFGenerator::Rtf_EList_DepthStyle() const char * RTFGenerator::Rtf_EList_DepthStyle()
{ {
return Rtf_Style_ListEnum[m_listLevel]; QCString n=makeIndexName("ListEnum",m_listLevel);
return Rtf_Style[n];
} }
const char * RTFGenerator::Rtf_DList_DepthStyle() const char * RTFGenerator::Rtf_DList_DepthStyle()
{ {
return Rtf_Style_DescContinue[m_listLevel]; QCString n=makeIndexName("DescContinue",m_listLevel);
return Rtf_Style[n];
} }
const char * RTFGenerator::Rtf_Code_DepthStyle() const char * RTFGenerator::Rtf_Code_DepthStyle()
{ {
return Rtf_Style_CodeExample[m_listLevel]; QCString n=makeIndexName("CodeExample",m_listLevel);
return Rtf_Style[n];
} }
void RTFGenerator::startTextBlock(bool dense) void RTFGenerator::startTextBlock(bool dense)
{ {
t << "{\\comment Start TextBlock}" << endl; t << "{\\comment Start TextBlock}" << endl;
t << "{" << endl; t << "{" << endl;
t << Rtf_Style_Reset; t << Rtf_Style["Reset"];
if (dense) // no spacing between "paragraphs" if (dense) // no spacing between "paragraphs"
{ {
t << Rtf_Style_DenseText; t << Rtf_Style["DenseText"];
} }
else // some spacing else // some spacing
{ {
t << Rtf_Style_BodyText; t << Rtf_Style["BodyText"];
} }
} }
...@@ -1757,7 +1974,7 @@ void RTFGenerator::newParagraph() ...@@ -1757,7 +1974,7 @@ void RTFGenerator::newParagraph()
void RTFGenerator::startMemberSubtitle() void RTFGenerator::startMemberSubtitle()
{ {
t << "{" << endl; t << "{" << endl;
t << Rtf_Style_Reset << Rtf_CList_DepthStyle() << endl; t << Rtf_Style["Reset"] << Rtf_CList_DepthStyle() << endl;
} }
void RTFGenerator::endMemberSubtitle() void RTFGenerator::endMemberSubtitle()
...@@ -1953,7 +2170,7 @@ void RTFGenerator::endDotGraph(DotClassGraph &g) ...@@ -1953,7 +2170,7 @@ void RTFGenerator::endDotGraph(DotClassGraph &g)
// display the file // display the file
t << "{" << endl; t << "{" << endl;
t << Rtf_Style_Reset << endl; t << Rtf_Style["Reset"] << endl;
t << "\\par\\pard \\qc {\\field\\flddirty {\\*\\fldinst INCLUDEPICTURE "; t << "\\par\\pard \\qc {\\field\\flddirty {\\*\\fldinst INCLUDEPICTURE ";
t << g.diskName() << ".gif"; t << g.diskName() << ".gif";
t << " \\\\*MERGEFORMAT}{\\fldrslt IMAGE}}\\par" << endl; t << " \\\\*MERGEFORMAT}{\\fldrslt IMAGE}}\\par" << endl;
...@@ -1977,7 +2194,7 @@ void RTFGenerator::endInclDepGraph(DotInclDepGraph &g) ...@@ -1977,7 +2194,7 @@ void RTFGenerator::endInclDepGraph(DotInclDepGraph &g)
// display the file // display the file
t << "{" << endl; t << "{" << endl;
t << Rtf_Style_Reset << endl; t << Rtf_Style["Reset"] << endl;
t << "\\par\\pard \\qc {\\field\\flddirty {\\*\\fldinst INCLUDEPICTURE "; t << "\\par\\pard \\qc {\\field\\flddirty {\\*\\fldinst INCLUDEPICTURE ";
t << g.diskName() << ".gif"; t << g.diskName() << ".gif";
t << " \\\\*MERGEFORMAT}{\\fldrslt IMAGE}}\\par" << endl; t << " \\\\*MERGEFORMAT}{\\fldrslt IMAGE}}\\par" << endl;
...@@ -2037,14 +2254,14 @@ void RTFGenerator::startMemberGroupHeader(bool hasHeader) ...@@ -2037,14 +2254,14 @@ void RTFGenerator::startMemberGroupHeader(bool hasHeader)
t << "{\\comment startMemberGroupHeader}" << endl; t << "{\\comment startMemberGroupHeader}" << endl;
t << "{" << endl; t << "{" << endl;
if (hasHeader) incrementIndentLevel(); if (hasHeader) incrementIndentLevel();
t << Rtf_Style_Reset << Rtf_Style_GroupHeader; t << Rtf_Style["Reset"] << Rtf_Style["GroupHeader"];
} }
void RTFGenerator::endMemberGroupHeader() void RTFGenerator::endMemberGroupHeader()
{ {
t << "{\\comment endMemberGroupHeader}" << endl; t << "{\\comment endMemberGroupHeader}" << endl;
newParagraph(); newParagraph();
t << Rtf_Style_Reset << Rtf_CList_DepthStyle(); t << Rtf_Style["Reset"] << Rtf_CList_DepthStyle();
} }
void RTFGenerator::startMemberGroupDocs() void RTFGenerator::startMemberGroupDocs()
...@@ -2063,7 +2280,7 @@ void RTFGenerator::endMemberGroupDocs() ...@@ -2063,7 +2280,7 @@ void RTFGenerator::endMemberGroupDocs()
void RTFGenerator::startMemberGroup() void RTFGenerator::startMemberGroup()
{ {
t << "{\\comment startMemberGroup}" << endl; t << "{\\comment startMemberGroup}" << endl;
t << Rtf_Style_Reset << Rtf_BList_DepthStyle() << endl; t << Rtf_Style["Reset"] << Rtf_BList_DepthStyle() << endl;
} }
void RTFGenerator::endMemberGroup(bool hasHeader) void RTFGenerator::endMemberGroup(bool hasHeader)
......
...@@ -1758,12 +1758,11 @@ DOCPARAM ([a-z_A-Z0-9:\<\>\=\.\-]+)|("\"".*"\"") ...@@ -1758,12 +1758,11 @@ DOCPARAM ([a-z_A-Z0-9:\<\>\=\.\-]+)|("\"".*"\"")
{ {
//outDoc->writeSectionRefAnchor(sec->fileName,sec->label,text); //outDoc->writeSectionRefAnchor(sec->fileName,sec->label,text);
outDoc->writeObjectLink(0,sec->fileName,sec->label,text); outDoc->writeObjectLink(0,sec->fileName,sec->label,text);
//printf("Writing page ref `%s'\n",sec->label.data());
writePageRef(*outDoc,sec->label,0); writePageRef(*outDoc,sec->label,0);
} }
else else
{ {
//printf(" ref sec=%p sec->fileName=%s\n",sec,sec->fileName.data()); //printf(" ref sec=%p sec->fileName=%s text=%s\n",sec,sec->fileName.data(),text.data());
outDoc->writeSectionRef(sec->fileName,sec->label,text); outDoc->writeSectionRef(sec->fileName,sec->label,text);
} }
} }
...@@ -3246,7 +3245,7 @@ DOCPARAM ([a-z_A-Z0-9:\<\>\=\.\-]+)|("\"".*"\"") ...@@ -3246,7 +3245,7 @@ DOCPARAM ([a-z_A-Z0-9:\<\>\=\.\-]+)|("\"".*"\"")
<MemberSpec>([*&]*{BN}*)*{ID}("["[a-z_A-Z0-9]*"]")* { // the [] part could be improved. <MemberSpec>([*&]*{BN}*)*{ID}("["[a-z_A-Z0-9]*"]")* { // the [] part could be improved.
lineCount(); lineCount();
int i=0,l=yyleng,j; int i=0,l=yyleng,j;
while (i<l && (!isalpha(yytext[i]))) i++; while (i<l && (!isId(yytext[i]))) i++;
msName = yytext; msName = yytext;
msName = msName.right(msName.length()-i); msName = msName.right(msName.length()-i);
j=msName.find("["); j=msName.find("[");
...@@ -3300,7 +3299,14 @@ DOCPARAM ([a-z_A-Z0-9:\<\>\=\.\-]+)|("\"".*"\"") ...@@ -3300,7 +3299,14 @@ DOCPARAM ([a-z_A-Z0-9:\<\>\=\.\-]+)|("\"".*"\"")
// current->parent->section & Entry::COMPOUND_MASK) // current->parent->section & Entry::COMPOUND_MASK)
// varEntry->type+=current->parent->name+"::"; // varEntry->type+=current->parent->name+"::";
if (isTypedef) if (isTypedef)
{
varEntry->type.prepend("typedef "); varEntry->type.prepend("typedef ");
//printf("current->name = %s %s\n",current->name.data(),msName.data());
if (!current->name.isEmpty() && current->name.at(0)!='@')
{
typedefDict.insert(msName,new QCString(current->name));
}
}
varEntry->type+=current->name+msType; varEntry->type+=current->name+msType;
varEntry->fileName = yyFileName; varEntry->fileName = yyFileName;
varEntry->startLine = yyLineNr; varEntry->startLine = yyLineNr;
...@@ -4671,12 +4677,12 @@ DOCPARAM ([a-z_A-Z0-9:\<\>\=\.\-]+)|("\"".*"\"") ...@@ -4671,12 +4677,12 @@ DOCPARAM ([a-z_A-Z0-9:\<\>\=\.\-]+)|("\"".*"\"")
<Doc,JavaDoc,LineDoc,ExampleDoc,ClassDocBrief,PageDoc,ClassDoc>("\\\\"|"@@")"f"[$\[\]] { <Doc,JavaDoc,LineDoc,ExampleDoc,ClassDocBrief,PageDoc,ClassDoc>("\\\\"|"@@")"f"[$\[\]] {
current->doc += &yytext[1]; current->doc += &yytext[1];
} }
<Doc,JavaDoc,LineDoc,ExampleDoc,ClassDocBrief,PageDoc,ClassDoc,AfterDoc>{CMD}"f$" { <Doc,JavaDoc,LineDoc,ExampleDoc,ClassDocBrief,PageDoc,ClassDoc,AfterDoc,AfterDocLine,AfterDocBrief>{CMD}"f$" {
lastFormulaContext = YY_START; lastFormulaContext = YY_START;
formulaText="$"; formulaText="$";
BEGIN(ReadFormulaShort); BEGIN(ReadFormulaShort);
} }
<Doc,JavaDoc,LineDoc,ExampleDoc,ClassDocBrief,PageDoc,ClassDoc,AfterDoc>{CMD}"f[" { <Doc,JavaDoc,LineDoc,ExampleDoc,ClassDocBrief,PageDoc,ClassDoc,AfterDoc,AfterDocLine,AfterDocBrief>{CMD}"f[" {
lastFormulaContext = YY_START; lastFormulaContext = YY_START;
formulaText="\\["; formulaText="\\[";
BEGIN(ReadFormulaLong); BEGIN(ReadFormulaLong);
...@@ -4685,7 +4691,9 @@ DOCPARAM ([a-z_A-Z0-9:\<\>\=\.\-]+)|("\"".*"\"") ...@@ -4685,7 +4691,9 @@ DOCPARAM ([a-z_A-Z0-9:\<\>\=\.\-]+)|("\"".*"\"")
formulaText+="$"; formulaText+="$";
if (lastFormulaContext==ClassDocBrief || if (lastFormulaContext==ClassDocBrief ||
lastFormulaContext==LineDoc || lastFormulaContext==LineDoc ||
lastFormulaContext==JavaDoc lastFormulaContext==JavaDoc ||
lastFormulaContext==AfterDocBrief ||
lastFormulaContext==AfterDocLine
) )
current->brief += addFormula(); current->brief += addFormula();
else else
...@@ -4696,7 +4704,9 @@ DOCPARAM ([a-z_A-Z0-9:\<\>\=\.\-]+)|("\"".*"\"") ...@@ -4696,7 +4704,9 @@ DOCPARAM ([a-z_A-Z0-9:\<\>\=\.\-]+)|("\"".*"\"")
formulaText+="\\]"; formulaText+="\\]";
if (lastFormulaContext==ClassDocBrief || if (lastFormulaContext==ClassDocBrief ||
lastFormulaContext==LineDoc || lastFormulaContext==LineDoc ||
lastFormulaContext==JavaDoc lastFormulaContext==JavaDoc ||
lastFormulaContext==AfterDocBrief ||
lastFormulaContext==AfterDocLine
) )
current->brief += addFormula(); current->brief += addFormula();
else else
......
...@@ -38,7 +38,7 @@ bool writeNumber(QFile &f,int num) ...@@ -38,7 +38,7 @@ bool writeNumber(QFile &f,int num)
(f.putch(num&0xff)==-1); (f.putch(num&0xff)==-1);
} }
bool writeEncodedNumber(QFile &f,uint number) static bool writeEncodedNumber(QFile &f,uint number)
{ {
bool error=FALSE; bool error=FALSE;
uint n=number; uint n=number;
...@@ -52,7 +52,7 @@ bool writeEncodedNumber(QFile &f,uint number) ...@@ -52,7 +52,7 @@ bool writeEncodedNumber(QFile &f,uint number)
return error; return error;
} }
int encodedNumberSize(uint number) static int encodedNumberSize(uint number)
{ {
uint n=number; uint n=number;
int size=1; int size=1;
......
...@@ -29,10 +29,6 @@ class IndexTree; ...@@ -29,10 +29,6 @@ class IndexTree;
enum WordRefMasks { WORDINNAME_MASK=4, INNAME_MASK=2, FULLWORD_MASK=1 }; enum WordRefMasks { WORDINNAME_MASK=4, INNAME_MASK=2, FULLWORD_MASK=1 };
enum WordRefBits { WORDINNAME_BIT=2, INNAME_BIT=1, FULLWORD_BIT=0 }; enum WordRefBits { WORDINNAME_BIT=2, INNAME_BIT=1, FULLWORD_BIT=0 };
// bool inName;
// bool fullWord;
// bool wordInName;
struct WordRef struct WordRef
{ {
int id; int id;
...@@ -77,7 +73,6 @@ class SuffixTree ...@@ -77,7 +73,6 @@ class SuffixTree
SuffixTree(); SuffixTree();
~SuffixTree(); ~SuffixTree();
void insertWord(const char *word,int index,bool inName); void insertWord(const char *word,int index,bool inName);
//void buildIndex();
void resolveForwardReferences(); void resolveForwardReferences();
void dump(); void dump();
int size(); // return the size of the (flat) tree in bytes int size(); // return the size of the (flat) tree in bytes
......
...@@ -25,38 +25,33 @@ ...@@ -25,38 +25,33 @@
class Translator class Translator
{ {
public: public:
//--------------------------------------------------------------------
// NOTICE:
// the following functions are now obsolete: these are no longer used and
// will disappear in future versions. You do not have to translate them!
virtual QCString trInherits()
{ return "Inherits"; }
virtual QCString trAnd()
{ return "and"; }
virtual QCString trInheritedBy()
{ return "Inherited By"; }
virtual QCString trReference()
{ return "Reference"; }
virtual QCString trReimplementedFrom()
{ return "Reimplemented from"; }
virtual QCString trReimplementedIn()
{ return "Reimplemented in"; }
virtual QCString trIncludeFile()
{ return "Include File"; }
virtual QCString trGeneratedFrom(const char *s,bool single)
{
QCString result=(QCString)"The documentation for this"+s+
" was generated from the following file";
if (single) result+=":"; else result+="s:";
return result;
}
// end of obsolete functions
//--------------------------------------------------------------------
// --- Language contol methods -------------------
/*! Used for identification of the language. May resemble
* the string returned by latexBabelPackage(), but it is not used
* for the same purpose. The identification should not be translated.
* It should be replaced by the name of the language in English
* (e.g. Czech, Japanese, Russian, etc.). It should be equal to
* the identification in language.h.
*/
virtual QCString idLanguage()
{ return "english"; }
/*! Used to get the command(s) for the language support. This method
* was designed for languages which do not prefer babel package.
* If this methods returns empty string, then the latexBabelPackage()
* method is used to generate the command for using the babel package.
*/
virtual QCString latexLanguageSupportCommand()
{
return "";
}
/*! returns the name of the package that is included by LaTeX */ /*! returns the name of the package that is included by LaTeX */
virtual QCString latexBabelPackage() virtual QCString latexBabelPackage()
{ return ""; } { return ""; }
// --- Language translation methods -------------------
/*! used in the compound documentation before a list of related functions. */ /*! used in the compound documentation before a list of related functions. */
virtual QCString trRelatedFunctions() virtual QCString trRelatedFunctions()
{ return "Related Functions"; } { return "Related Functions"; }
......
...@@ -27,249 +27,478 @@ ...@@ -27,249 +27,478 @@
// //
// havran@fel.cvut.cz, 1999/04/11 // havran@fel.cvut.cz, 1999/04/11
// Notice that the following texts were written in Czech using
// MS-Windows code page 1250. If you want to use it in Unix,
// convert the file to the ISO Latin-2
// This is a prototype created by Petr Prikryl (prikrylp@skil.cz), 2000/06/20.
//
class TranslatorCzech : public Translator class TranslatorCzech : public Translator
{ {
public: public:
QCString latexBabelPackage() virtual QCString idLanguage()
{ return "czech"; } { return "czech"; }
QCString trInherits()
{ return "Dedi"; } virtual QCString latexLanguageSupportCommand()
QCString trAnd() { return "\\usepackage{czech}\n"; }
{ return "a"; }
QCString trInheritedBy() /*! returns the name of the package that is included by LaTeX */
{ return "Je potomkem"; } virtual QCString latexBabelPackage()
QCString trRelatedFunctions() { return ""; }
{ return "Pribuzne metody"; }
QCString trRelatedSubscript() /*! used in the compound documentation before a list of related functions. */
{ return "(Tyto funkce nejsou metody.)"; } virtual QCString trRelatedFunctions()
QCString trDetailedDescription() { return "Související funkce"; }
{ return "Podrobna dokumentace"; }
QCString trMemberTypedefDocumentation() /*! subscript for the related functions. */
{ return "Dokumentace pro deklaraci typu (typedef) ve tride";} virtual QCString trRelatedSubscript()
QCString trMemberEnumerationDocumentation() { return "(Výše uvedené funkce nejsou èlenskými funkcemi.)"; }
{ return "Dokumentace vyctovych typu"; }
QCString trEnumerationValueDocumentation() /*! header that is put before the detailed description of files, classes and namespaces. */
{ return "Dokumentace hodnot vyctovych typu"; } virtual QCString trDetailedDescription()
QCString trMemberFunctionDocumentation() { return "Detailní popis"; }
{ return "Dokumentace metod"; }
QCString trMemberDataDocumentation() /*! header that is put before the list of typedefs. */
{ return "Dokumentace datovych slozek tridy"; } virtual QCString trMemberTypedefDocumentation()
QCString trGeneratedFrom(const char *s,bool single) { return "Dokumentace k èlenských typùm"; }
{
QCString result=(QCString)"Dokumentace pro tento"+s+ /*! header that is put before the list of enumerations. */
" byla generovana z nasledujiciho souboru"; virtual QCString trMemberEnumerationDocumentation()
if (single) result+=":"; else result+="s:"; { return "Dokumentace k èlenským výètùm"; }
return result;
} /*! header that is put before the list of member functions. */
QCString trMore() virtual QCString trMemberFunctionDocumentation()
{ return "Detaily"; } { return "Dokumentace k metodám"; }
QCString trReference()
{ return "Reference"; } /*! header that is put before the list of member attributes. */
QCString trListOfAllMembers() virtual QCString trMemberDataDocumentation()
{ return "Seznam vsech datovych polozek a metod tridy."; } { return "Dokumentace k datovým èlenùm"; }
QCString trMemberList()
{ return "Seznam datovych polozek a metod tridy"; } /*! this is the text of a link put after brief descriptions. */
QCString trThisIsTheListOfAllMembers() virtual QCString trMore()
{ return "Toto je uplny seznam datovych polozek a metod tridy pro"; } { return "Podrobnosti..."; }
QCString trIncludingInheritedMembers()
{ return "zahrnuje vsechny nasledujici zdedene datove polozky a metody."; } /*! put in the class documentation */
QCString trGeneratedAutomatically(const char *s) virtual QCString trListOfAllMembers()
{ QCString result="Automaticky vygenerovany pomoci programu doxygen"; { return "Seznam všech èlenù."; }
if (s) result+=(QCString)" pro "+s;
result+=" ze zdrojoveho souboru."; /*! used as the title of the "list of all members" page of a class */
virtual QCString trMemberList()
{ return "Seznam èlenù tøídy"; }
/*! this is the first part of a sentence that is followed by a class name */
virtual QCString trThisIsTheListOfAllMembers()
{ return "Úplný seznam èlenù tøídy "; }
/*! this is the remainder of the sentence after the class name */
virtual QCString trIncludingInheritedMembers()
{ return ", vèetnì všech zdìdìných èlenù."; }
/*! this is put at the author sections at the bottom of man pages.
* parameter s is name of the project name.
*/
virtual QCString trGeneratedAutomatically(const char *s)
{ QCString result="Generováno automaticky programem Doxygen "
"ze zdrojových textù";
if (s) result+=(QCString)" projektu "+s;
result+=".";
return result; return result;
} }
QCString trEnumName()
{ return "pojmenovani vyctoveho typu"; } /*! put after an enum name in the list of all members */
QCString trEnumValue() virtual QCString trEnumName()
{ return "hodnota vyctoveho typu"; } { return "jméno výètu"; }
QCString trDefinedIn()
{ return "definovany v"; } /*! put after an enum value in the list of all members */
QCString trIncludeFile() virtual QCString trEnumValue()
{ return "Vklada soubor"; } { return "hodnota výètu"; }
QCString trVerbatimText(const char *f)
{ return (QCString)"Toto je presny text z vlozeneho souboru "+f+""; } /*! put after an undocumented member in the list of all members */
QCString trModules() virtual QCString trDefinedIn()
{ return "definován v"; }
/*! put as in introduction in the verbatim header file of a class.
* parameter f is the name of the include file.
*/
virtual QCString trVerbatimText(const char *f)
{ return (QCString)"Úplný text vkládaného souboru "+f+"."; }
// quick reference sections
/*! This is put above each page as a link to the list of all groups of
* compounds or files (see the \group command).
*/
virtual QCString trModules()
{ return "Moduly"; } { return "Moduly"; }
QCString trClassHierarchy()
{ return "Hierarchie trid"; } /*! This is put above each page as a link to the class hierarchy */
QCString trCompoundList() virtual QCString trClassHierarchy()
{ return "Seznam objektovych typu"; } { return "Hierarchie tøíd"; }
QCString trFileList()
{ return "Seznam souboru"; } /*! This is put above each page as a link to the list of annotated classes */
QCString trHeaderFiles() virtual QCString trCompoundList()
{ return "Hlavickove soubory"; } { return "Seznam složenin"; }
QCString trCompoundMembers()
{ return "Datove slozky a metody objektovych typu"; } /*! This is put above each page as a link to the list of documented files */
QCString trFileMembers() virtual QCString trFileList()
{ return "Globalni deklarace"; } { return "Seznam souborù"; }
QCString trRelatedPages()
{ return "Souvisejici stranky"; } /*! This is put above each page as a link to the list of all verbatim headers */
QCString trExamples() virtual QCString trHeaderFiles()
{ return "Priklady:"; } { return "Seznam hlavièkových souborù"; }
QCString trSearch()
{ return "Hledej"; } /*! This is put above each page as a link to all members of compounds. */
QCString trClassHierarchyDescription() virtual QCString trCompoundMembers()
{ return "Tento seznam dedicnych zavislosti je temer setriden" { return "Souèásti složenin"; }
" podle abecedy:";
} /*! This is put above each page as a link to all members of files. */
QCString trFileListDescription(bool extractAll) virtual QCString trFileMembers()
{ { return "Seznam globálních symbolù"; }
QCString result="A toto je seznam vsech ";
if (!extractAll) result+="zdokumentovanych "; /*! This is put above each page as a link to all related pages. */
result+="souboru s kratkymi popisy:"; virtual QCString trRelatedPages()
{ return "Související stránky"; }
/*! This is put above each page as a link to all examples. */
virtual QCString trExamples()
{ return "Pøíklady"; }
/*! This is put above each page as a link to the search engine. */
virtual QCString trSearch()
{ return "Hledat"; }
/*! This is an introduction to the class hierarchy. */
virtual QCString trClassHierarchyDescription()
{ return "Zde naleznete seznam, vyjadøující vztah dìdiènosti tøíd. "
"Je seøazen pøibližnì (ale ne úplnì) podle abecedy:";
}
/*! This is an introduction to the list with all files. */
virtual QCString trFileListDescription(bool extractAll)
{
QCString result="Zde naleznete seznam všech ";
if (!extractAll) result+="dokumentovaných ";
result+="souborù se struènými popisy:";
return result; return result;
} }
QCString trCompoundListDescription()
{ return "Zde jsou tridy, struktury a " /*! This is an introduction to the annotated compound list. */
"unie s kratkymi popisy:"; virtual QCString trCompoundListDescription()
{ return "Složeninami (compound) se rozumí netriviální prvky, které "
"zahrnují tøídy, struktury (struct), unie (union) "
"a rozhraní (interface). V seznamu jsou uvedeny jejich struèné "
"popisy:";
} }
QCString trCompoundMembersDescription(bool extractAll)
/*! This is an introduction to the page with all class members. */
virtual QCString trCompoundMembersDescription(bool extractAll)
{ {
QCString result="Zde je seznam vsech "; QCString result="Zde naleznete seznam všech ";
if (!extractAll) result+="zdokumentovanych "; if (!extractAll) result+="dokumentovaných ";
result+="clenu tridy (metod a datovych slozek) s odkazy na "; result+="èlenù tøíd s odkazy na ";
if (extractAll) result+="dokumentaci tridy pro kazdo polozku:"; if (extractAll)
else result+="tridy, kam patri:"; result+="dokumentaci tøíd, ke kterým pøíslušejí:";
else
result+="tøídy, ke kterým pøíslušejí:";
return result; return result;
} }
QCString trFileMembersDescription(bool extractAll)
/*! This is an introduction to the page with all file members. */
virtual QCString trFileMembersDescription(bool extractAll)
{ {
QCString result="Zde je seznam vsech "; QCString result="Zde naleznete seznam všech ";
if (!extractAll) result+="zdokumentovanych "; if (!extractAll) result+="dokumentovaných ";
result+="globalnich deklaraci s odkazy "; result+="globálních symbolù, které jsou definovány v souborech projektu. "
if (extractAll) result+="na dokumentaci k souboru pro kazdou deklaraci:"; "Pro každý symbol je uveden odkaz na ";
else result+="na soubory, kde jsou umisteny:"; if (extractAll)
result+="dokumentaci pøíslušného souboru";
else
result+="soubor, ve kterém je symbol definován";
result+=". Symbol mùže oznaèovat makro, typ, instanci tøídy, "
"promìnnou, konstantu, funkci, výèet, hodnotu výètu a podobnì:";
return result; return result;
} }
QCString trHeaderFilesDescription()
{return "Zde jsou hlavickove soubory ktere tvori programove"
" rozhrani aplikace(API):";
}
QCString trExamplesDescription()
{ return "Zde je seznam vsech prikladu:"; }
QCString trRelatedPagesDescription()
{ return "Zde je seznam vsech souvisejicich stranek dokumentace:"; }
QCString trModulesDescription()
{ return "Zde je seznam vsech modulu:"; }
QCString trNoDescriptionAvailable()
{ return "Zadny popis neni k dispozici."; }
QCString trDocumentation() /*! This is an introduction to the page with the list of all header files. */
virtual QCString trHeaderFilesDescription()
{ return "Zde naleznete hlavièkové soubory, které tvoøí "
"aplikaèní programátorské rozhraní (API):"; }
/*! This is an introduction to the page with the list of all examples */
virtual QCString trExamplesDescription()
{ return "Zde naleznete seznam všech pøíkladù:"; }
/*! This is an introduction to the page with the list of related pages */
virtual QCString trRelatedPagesDescription()
{ return "Zde naleznete seznam všech souvisejících stránek dokumentace:"; }
/*! This is an introduction to the page with the list of class/file groups */
virtual QCString trModulesDescription()
{ return "Zde naleznete seznam všech modulù:"; }
/*! This sentences is used in the annotated class/file lists if no brief
* description is given.
*/
virtual QCString trNoDescriptionAvailable()
{ return "Popis není k dispozici"; }
// index titles (the project name is prepended for these)
/*! This is used in HTML as the title of index.html. */
virtual QCString trDocumentation()
{ return "Dokumentace"; } { return "Dokumentace"; }
QCString trModuleIndex()
{ return "Index modulu"; } /*! This is used in LaTeX as the title of the chapter with the
QCString trHierarchicalIndex() * index of all groups.
{ return "Index hierarchie"; } */
QCString trCompoundIndex() virtual QCString trModuleIndex()
{ return "Index objektovych typu"; } { return "Rejstøík modulù"; }
QCString trFileIndex()
{ return "Index souboru"; } /*! This is used in LaTeX as the title of the chapter with the
QCString trModuleDocumentation() * class hierarchy.
{ return "Dokumentace modulu"; } */
QCString trClassDocumentation() virtual QCString trHierarchicalIndex()
{ return "Dokumentace tridy"; } { return "Rejstøík hierarchie tøíd"; }
QCString trFileDocumentation()
{ return "Dokumentace souboru"; } /*! This is used in LaTeX as the title of the chapter with the
QCString trExampleDocumentation() * annotated compound index.
{ return "Dokumentace prikladu"; } */
QCString trPageDocumentation() virtual QCString trCompoundIndex()
{ return "Dokumentace stranek"; } { return "Rejstøík složenin"; }
QCString trReferenceManual()
{ return "Referencni manual"; } /*! This is used in LaTeX as the title of the chapter with the
* list of all files.
QCString trDefines() */
{ return "Definice"; } virtual QCString trFileIndex()
QCString trFuncProtos() { return "Rejstøík souborù"; }
{ return "Prototypy funkci"; }
QCString trTypedefs() /*! This is used in LaTeX as the title of the chapter containing
{ return "Deklarace datovych typu(typedefs)"; } * the documentation of all groups.
QCString trEnumerations() */
{ return "Vyctove typy (enumerations)"; } virtual QCString trModuleDocumentation()
QCString trFunctions() { return "Dokumentace modulù"; }
/*! This is used in LaTeX as the title of the chapter containing
* the documentation of all classes, structs and unions.
*/
virtual QCString trClassDocumentation()
{ return "Dokumentace tøíd"; }
/*! This is used in LaTeX as the title of the chapter containing
* the documentation of all files.
*/
virtual QCString trFileDocumentation()
{ return "Dokumentace souborù"; }
/*! This is used in LaTeX as the title of the chapter containing
* the documentation of all examples.
*/
virtual QCString trExampleDocumentation()
{ return "Dokumentace pøíkladù"; }
/*! This is used in LaTeX as the title of the chapter containing
* the documentation of all related pages.
*/
virtual QCString trPageDocumentation()
{ return "Dokumentace souvisejících stránek"; }
/*! This is used in LaTeX as the title of the document */
virtual QCString trReferenceManual()
{ return "Referenèní pøíruèka"; }
/*! This is used in the documentation of a file as a header before the
* list of defines
*/
virtual QCString trDefines()
{ return "Definice maker"; }
/*! This is used in the documentation of a file as a header before the
* list of function prototypes
*/
virtual QCString trFuncProtos()
{ return "Prototypy"; }
/*! This is used in the documentation of a file as a header before the
* list of typedefs
*/
virtual QCString trTypedefs()
{ return "Definice typù"; }
/*! This is used in the documentation of a file as a header before the
* list of enumerations
*/
virtual QCString trEnumerations()
{ return "Výèty"; }
/*! This is used in the documentation of a file as a header before the
* list of (global) functions
*/
virtual QCString trFunctions()
{ return "Funkce"; } { return "Funkce"; }
QCString trVariables()
{ return "Promenne"; } /*! This is used in the documentation of a file as a header before the
QCString trEnumerationValues() * list of (global) variables
{ return "Hodnoty vyctovych typu"; } */
QCString trReimplementedFrom() virtual QCString trVariables()
{ return "Je znovu implementovan podle"; } { return "Promìnné"; }
QCString trReimplementedIn()
{ return "Je znovu implementovan v"; } /*! This is used in the documentation of a file as a header before the
QCString trAuthor() * list of (global) variables
*/
virtual QCString trEnumerationValues()
{ return "Hodnoty výètù"; }
/*! This is used in man pages as the author section. */
virtual QCString trAuthor()
{ return "Autor"; } { return "Autor"; }
QCString trDefineDocumentation()
{ return "Dokumentace definic pomoci maker"; } /*! This is used in the documentation of a file before the list of
QCString trFunctionPrototypeDocumentation() * documentation blocks for defines
{ return "Dokumentace prototypu funkci"; } */
QCString trTypedefDocumentation() virtual QCString trDefineDocumentation()
{ return "Dokumentace deklaraci datovych typu(typedefs)"; } { return "Dokumentace k definicím maker"; }
QCString trEnumerationTypeDocumentation()
{ return "Dokumentace vyctovych typu"; } /*! This is used in the documentation of a file/namespace before the list
QCString trFunctionDocumentation() * of documentation blocks for function prototypes
{ return "Dokumentace funkci"; } */
QCString trVariableDocumentation() virtual QCString trFunctionPrototypeDocumentation()
{ return "Dokumentace promennych"; } { return "Dokumentace prototypù"; }
QCString trCompounds()
{ return "Polozky objektovych typu"; } /*! This is used in the documentation of a file/namespace before the list
QCString trFiles() * of documentation blocks for typedefs
{ return "Soubory:"; } */
QCString trGeneratedAt(const char *date,const char *projName) virtual QCString trTypedefDocumentation()
{ return "Dokumentace definic typù"; }
/*! This is used in the documentation of a file/namespace before the list
* of documentation blocks for enumeration types
*/
virtual QCString trEnumerationTypeDocumentation()
{ return "Dokumentace výètových typù"; }
/*! This is used in the documentation of a file/namespace before the list
* of documentation blocks for enumeration values
*/
virtual QCString trEnumerationValueDocumentation()
{ return "Dokumentace výètových hodnot"; }
/*! This is used in the documentation of a file/namespace before the list
* of documentation blocks for functions
*/
virtual QCString trFunctionDocumentation()
{ return "Dokumentace funkcí"; }
/*! This is used in the documentation of a file/namespace before the list
* of documentation blocks for variables
*/
virtual QCString trVariableDocumentation()
{ return "Dokumentace promìnných"; }
/*! This is used in the documentation of a file/namespace/group before
* the list of links to documented compounds
*/
virtual QCString trCompounds()
{ return "Složeniny"; }
/*! This is used in the documentation of a group before the list of
* links to documented files
*/
virtual QCString trFiles()
{ return "Soubory"; }
/*! This is used in the standard footer of each page and indicates when
* the page was generated
*/
virtual QCString trGeneratedAt(const char *date,const char *projName)
{ {
QCString result=(QCString)"Generovany dne "+date; QCString result=(QCString)"Generováno "+date;
if (projName) result+=(QCString)" pro "+projName; if (projName) result+=(QCString)" pro projekt "+projName;
result+=(QCString)" "; result+=(QCString)" programem";
return result; return result;
} }
QCString trWrittenBy() /*! This is part of the sentence used in the standard footer of each page.
{ */
return "napsany podle"; virtual QCString trWrittenBy()
}
QCString trClassDiagram(const char *clName)
{ {
return (QCString)"Diagram trid pro "+clName; return " -- autor ";
} }
QCString trForInternalUseOnly()
{ return "Jen pro interni pouziti."; } /*! this text is put before a class diagram */
QCString trReimplementedForInternalReasons() virtual QCString trClassDiagram(const char *clName)
{ {
return "Znovu implementovany z internich duvodu; programove rozhrani" return (QCString)"Diagram dìdiènosti pro tøídu "+clName;
" aplikace(API) neni zmeneno.";
} }
QCString trWarning()
{ return "Upozorneni"; } /*! this text is generated when the \internal command is used. */
QCString trBugsAndLimitations() virtual QCString trForInternalUseOnly()
{ return "Chyby a omezeni"; } { return "Pouze pro vnitøní použití."; }
QCString trVersion()
/*! this text is generated when the \reimp command is used. */
virtual QCString trReimplementedForInternalReasons()
{ return "Reimplementováno z interních dùvodù; aplikaèní rozhraní zachováno."; }
/*! this text is generated when the \warning command is used. */
virtual QCString trWarning()
{ return "Pozor"; }
/*! this text is generated when the \bug command is used. */
virtual QCString trBugsAndLimitations()
{ return "Chyby a omezení"; }
/*! this text is generated when the \version command is used. */
virtual QCString trVersion()
{ return "Verze"; } { return "Verze"; }
QCString trDate()
/*! this text is generated when the \date command is used. */
virtual QCString trDate()
{ return "Datum"; } { return "Datum"; }
QCString trAuthors()
{ return "Autor(i)"; } /*! this text is generated when the \author command is used. */
QCString trReturns() virtual QCString trAuthors()
{ return "ma navratovou hodnotu"; } { return "Autor/autoøi"; }
QCString trSeeAlso()
{ return "Podrobnosti take tady"; } /*! this text is generated when the \return command is used. */
QCString trParameters() virtual QCString trReturns()
{ return "Vrací"; }
/*! this text is generated when the \sa command is used. */
virtual QCString trSeeAlso()
{ return "Viz také"; }
/*! this text is generated when the \param command is used. */
virtual QCString trParameters()
{ return "Parametry"; } { return "Parametry"; }
QCString trExceptions()
{ return "Vyjimky"; } /*! this text is generated when the \exception command is used. */
QCString trGeneratedBy() virtual QCString trExceptions()
{ return "Generovan podle"; } { return "Výjimky"; }
// new since 0.49-990307 /*! this text is used in the title page of a LaTeX document. */
virtual QCString trGeneratedBy()
{ return "Generováno programem"; }
// new since 0.49-990307
QCString trNamespaceList() /*! used as the title of page containing all the index of all namespaces. */
{ return "Seznam prostoru jmen"; } virtual QCString trNamespaceList()
QCString trNamespaceListDescription(bool extractAll) { return "Seznam prostorù jmen"; }
/*! used as an introduction to the namespace list */
virtual QCString trNamespaceListDescription(bool extractAll)
{ {
QCString result="Zde je seznam vsech "; QCString result="Zde naleznete seznam všech ";
if (!extractAll) result+="dokumentovanych "; if (!extractAll) result+="dokumentovaných ";
result+="prostoru jmen s kratkymi popisy:"; result+="prostorù jmen se struèným popisem:";
return result; return result;
} }
QCString trFriends()
{ return "Spratelene tridy, funkce a metody"; } /*! used in the class documentation as a header before the list of all
* friends of a class
*/
virtual QCString trFriends()
{ return "Friends"; }
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
// new since 0.49-990405 // new since 0.49-990405
...@@ -278,76 +507,75 @@ class TranslatorCzech : public Translator ...@@ -278,76 +507,75 @@ class TranslatorCzech : public Translator
/*! used in the class documentation as a header before the list of all /*! used in the class documentation as a header before the list of all
* related classes * related classes
*/ */
QCString trRelatedFunctionDocumentation() virtual QCString trRelatedFunctionDocumentation()
{ return "Dokumentace pro spratelene funkce a ostatni"; } { return "Dokumentace k friends"; }
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
// new since 0.49-990425 // new since 0.49-990425
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
/*! used as the title of the HTML page of a class/struct/union */ /*! used as the title of the HTML page of a class/struct/union */
QCString trCompoundReference(const char *clName, virtual QCString trCompoundReference(const char *clName,
ClassDef::CompoundType compType, ClassDef::CompoundType compType)
bool /*isTemplate*/)
{ {
QCString result=(QCString)clName+" "; QCString result=(QCString)clName+" ";
result+=" Reference";
switch(compType) switch(compType)
{ {
case ClassDef::Class: result+=" tridy"; break; case ClassDef::Class: result+=" Tøída"; break;
case ClassDef::Struct: result+=" struktury"; break; case ClassDef::Struct: result+=" Struktura"; break;
case ClassDef::Union: result+=" unie"; break; case ClassDef::Union: result+=" Unie"; break;
case ClassDef::Interface: result+=" rozhrani"; break; case ClassDef::Interface: result+=" Rozhraní"; break;
case ClassDef::Exception: result+=" exception"; break; case ClassDef::Exception: result+=" Výjimka"; break;
} }
result+=" Reference";
return result; return result;
} }
/*! used as the title of the HTML page of a file */ /*! used as the title of the HTML page of a file */
QCString trFileReference(const char *fileName) virtual QCString trFileReference(const char *fileName)
{ {
QCString result=fileName; QCString result="Odkaz na soubor";
result+=" Reference souboru"; result+=fileName;
return result; return result;
} }
/*! used as the title of the HTML page of a namespace */ /*! used as the title of the HTML page of a namespace */
QCString trNamespaceReference(const char *namespaceName) virtual QCString trNamespaceReference(const char *namespaceName)
{ {
QCString result=namespaceName; QCString result=namespaceName;
result+=" Reference prostoru jmen"; result+=" Namespace Reference???";
return result; return result;
} }
/*! \mgroup Class sections /*! \mgroup Class sections
* these are for the member sections of a class, struct or union * these are for the member sections of a class, struct or union
*/ */
QCString trPublicMembers() virtual QCString trPublicMembers()
{ return "Verejne metody a datove polozky"; } { return "Veøejné metody"; }
QCString trPublicSlots() virtual QCString trPublicSlots()
{ return "Verejne sloty"; } { return "Veøejné sloty"; }
QCString trSignals() virtual QCString trSignals()
{ return "Signaly"; } { return "Signály"; }
QCString trStaticPublicMembers() virtual QCString trStaticPublicMembers()
{ return "Staticke verejne metody a datove polozky"; } { return "Statické veøejné metody"; }
QCString trProtectedMembers() virtual QCString trProtectedMembers()
{ return "Chranene metody a datove polozky"; } { return "Chránìné metody"; }
QCString trProtectedSlots() virtual QCString trProtectedSlots()
{ return "Chranene sloty"; } { return "Chránìné sloty"; }
QCString trStaticProtectedMembers() virtual QCString trStaticProtectedMembers()
{ return "Staticke chranene metody a datove polozky"; } { return "Statické chránìné metody"; }
QCString trPrivateMembers() virtual QCString trPrivateMembers()
{ return "Privatni metody a datove polozky"; } { return "Privátní metody"; }
QCString trPrivateSlots() virtual QCString trPrivateSlots()
{ return "Privatni sloty"; } { return "Privátní sloty"; }
QCString trStaticPrivateMembers() virtual QCString trStaticPrivateMembers()
{ return "Staticke privatni metody a datove polozky"; } { return "Statické privátní metody"; }
/*! \endmgroup */ /*! \endmgroup */
/*! this function is used to produce a comma-separated list of items. /*! this function is used to produce a comma-separated list of items.
* use generateMarker(i) to indicate where item i should be put. * use generateMarker(i) to indicate where item i should be put.
*/ */
QCString trWriteList(int numEntries) virtual QCString trWriteList(int numEntries)
{ {
QCString result; QCString result;
int i; int i;
...@@ -372,62 +600,62 @@ class TranslatorCzech : public Translator ...@@ -372,62 +600,62 @@ class TranslatorCzech : public Translator
/*! used in class documentation to produce a list of base classes, /*! used in class documentation to produce a list of base classes,
* if class diagrams are disabled. * if class diagrams are disabled.
*/ */
QCString trInheritsList(int numEntries) virtual QCString trInheritsList(int numEntries)
{ {
return "dedi "+trWriteList(numEntries)+"."; return "dí "+trWriteList(numEntries)+".";
} }
/*! used in class documentation to produce a list of super classes, /*! used in class documentation to produce a list of super classes,
* if class diagrams are disabled. * if class diagrams are disabled.
*/ */
QCString trInheritedByList(int numEntries) virtual QCString trInheritedByList(int numEntries)
{ {
return "je zdeden z "+trWriteList(numEntries)+"."; return "Zdìdìna tøídami "+trWriteList(numEntries)+".";
} }
/*! used in member documentation blocks to produce a list of /*! used in member documentation blocks to produce a list of
* members that are hidden by this one. * members that are hidden by this one.
*/ */
QCString trReimplementedFromList(int numEntries) virtual QCString trReimplementedFromList(int numEntries)
{ {
return "Znovu implementuje "+trWriteList(numEntries)+"."; return "Reimplementace z "+trWriteList(numEntries)+".";
} }
/*! used in member documentation blocks to produce a list of /*! used in member documentation blocks to produce a list of
* all member that overwrite the implementation of this member. * all member that overwrite the implementation of this member.
*/ */
QCString trReimplementedInList(int numEntries) virtual QCString trReimplementedInList(int numEntries)
{ {
return "znovu implementovan v "+trWriteList(numEntries)+"."; return "Reimplementováno v "+trWriteList(numEntries)+".";
} }
/*! This is put above each page as a link to all members of namespaces. */ /*! This is put above each page as a link to all members of namespaces. */
QCString trNamespaceMembers() virtual QCString trNamespaceMembers()
{ return "Polozky prostoru jmen"; } { return "???Namespace Members"; }
/*! This is an introduction to the page with all namespace members */ /*! This is an introduction to the page with all namespace members */
QCString trNamespaceMemberDescription(bool extractAll) virtual QCString trNamespaceMemberDescription(bool extractAll)
{ {
QCString result="Tady je seznam vsech "; QCString result="Zde naleznete seznam všech ";
if (!extractAll) result+="zdokumentovanych "; if (!extractAll) result+="dokumentovaných ";
result+="clenu prostoru jmen s odkazy na "; result+="???namespace members s odkazy na ";
if (extractAll) if (extractAll)
result+="dukumentaci prostoru jmen pro kazdou polozku:"; result+="dokumentaci prostoru jmen pro každý èlen:";
else else
result+="prostor jmen, kteremu patri:"; result+="prostory jmen, ke kterým pøíslušejí:";
return result; return result;
} }
/*! This is used in LaTeX as the title of the chapter with the /*! This is used in LaTeX as the title of the chapter with the
* index of all namespaces. * index of all namespaces.
*/ */
QCString trNamespaceIndex() virtual QCString trNamespaceIndex()
{ return "Index prostoru jmen"; } { return "Rejstøík prostorù jmen"; }
/*! This is used in LaTeX as the title of the chapter containing /*! This is used in LaTeX as the title of the chapter containing
* the documentation of all namespaces. * the documentation of all namespaces.
*/ */
QCString trNamespaceDocumentation() virtual QCString trNamespaceDocumentation()
{ return "Dokumentace prostoru jmen"; } { return "Dokumentace prostorù jmen"; }
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
// new since 0.49-990522 // new since 0.49-990522
...@@ -436,7 +664,7 @@ class TranslatorCzech : public Translator ...@@ -436,7 +664,7 @@ class TranslatorCzech : public Translator
/*! This is used in the documentation before the list of all /*! This is used in the documentation before the list of all
* namespaces in a file. * namespaces in a file.
*/ */
QCString trNamespaces() virtual QCString trNamespaces()
{ return "Prostory jmen"; } { return "Prostory jmen"; }
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
...@@ -446,48 +674,49 @@ class TranslatorCzech : public Translator ...@@ -446,48 +674,49 @@ class TranslatorCzech : public Translator
/*! This is put at the bottom of a class documentation page and is /*! This is put at the bottom of a class documentation page and is
* followed by a list of files that were used to generate the page. * followed by a list of files that were used to generate the page.
*/ */
QCString trGeneratedFromFiles(ClassDef::CompoundType compType, virtual QCString trGeneratedFromFiles(ClassDef::CompoundType compType,
bool single) bool single)
{ // here s is one of " Class", " Struct" or " Union" { // here s is one of " Class", " Struct" or " Union"
// single is true implies a single file // single is true implies a single file
QCString result=(QCString)"Dokumentace pro "; QCString result=(QCString)"Dokumentace pro ";
switch(compType) switch(compType)
{ {
case ClassDef::Class: result+="tuto tridu"; break; case ClassDef::Class: result+="tuto tøídu"; break;
case ClassDef::Struct: result+="tuto strukturu"; break; case ClassDef::Struct: result+="tuto strukturu (struct)"; break;
case ClassDef::Union: result+="tuto unii"; break; case ClassDef::Union: result+="tuto unii (union)"; break;
case ClassDef::Interface: result+="toto rozhrani"; break; case ClassDef::Interface: result+="toto rozhraní"; break;
case ClassDef::Exception: result+="exception"; break; case ClassDef::Exception: result+="tuto výjimku"; break;
} }
result+=" byla vygenerovana z nasledujiciho souboru"; result+=" byla generována z ";
if (single) result+=":"; else result+="s:"; if (single) result+="následujícího souboru:";
else result+="následujících souborù:";
return result; return result;
} }
/*! This is in the (quick) index as a link to the alphabetical compound /*! This is in the (quick) index as a link to the alphabetical compound
* list. * list.
*/ */
QCString trAlphabeticalList() virtual QCString trAlphabeticalList()
{ return "Abecedni seznam"; } { return "Abecední seznam složenin"; }
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
// new since 0.49-990901 // new since 0.49-990901
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
/*! This is used as the heading text for the retval command. */ /*! This is used as the heading text for the retval command. */
QCString trReturnValues() virtual QCString trReturnValues()
{ return "Vraci hodnoty"; } { return "Vracené hodnoty"; }
/*! This is in the (quick) index as a link to the main page (index.html) /*! This is in the (quick) index as a link to the main page (index.html)
*/ */
QCString trMainPage() virtual QCString trMainPage()
{ return "Hlavni stranka"; } { return "Hlavní stránka"; }
/*! This is used in references to page that are put in the LaTeX /*! This is used in references to page that are put in the LaTeX
* documentation. It should be an abbreviation of the word page. * documentation. It should be an abbreviation of the word page.
*/ */
QCString trPageAbbreviation() virtual QCString trPageAbbreviation()
{ return "str."; } { return "s."; }
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
// new since 0.49-991003 // new since 0.49-991003
...@@ -495,16 +724,157 @@ class TranslatorCzech : public Translator ...@@ -495,16 +724,157 @@ class TranslatorCzech : public Translator
virtual QCString trSources() virtual QCString trSources()
{ {
return "Zdrojove soubory"; return "Zdroje";
} }
virtual QCString trDefinedAtLineInSourceFile() virtual QCString trDefinedAtLineInSourceFile()
{ {
return "Definice v souboru @1 na radce @0"; return "Definice je uvedena na øádku @0 v souboru @1.";
} }
virtual QCString trDefinedInSourceFile() virtual QCString trDefinedInSourceFile()
{ {
return "Definice v souboru @0."; return "Definice v souboru @0.";
} }
//////////////////////////////////////////////////////////////////////////
// new since 0.49-991205
//////////////////////////////////////////////////////////////////////////
virtual QCString trDeprecated()
{
return "Zastaralé";
}
//////////////////////////////////////////////////////////////////////////
// new since 1.0.0
//////////////////////////////////////////////////////////////////////////
/*! this text is put before a collaboration diagram */
virtual QCString trCollaborationDiagram(const char *clName)
{
return (QCString)"Diagram tøíd pro "+clName+":";
}
/*! this text is put before an include dependency graph */
virtual QCString trInclDepGraph(const char *fName)
{
return (QCString)"Graf závislostí souborù pro "+fName+":";
}
/*! header that is put before the list of constructor/destructors. */
virtual QCString trConstructorDocumentation()
{
return "Dokumentace konstruktoru a destruktoru";
}
/*! Used in the file documentation to point to the corresponding sources. */
virtual QCString trGotoSourceCode()
{
return "Zobrazit zdrojový text tohoto souboru.";
}
/*! Used in the file sources to point to the corresponding documentation. */
virtual QCString trGotoDocumentation()
{
return "Zobrazit dokumentaci tohoto souboru.";
}
/*! Text for the \pre command */
virtual QCString trPrecondition()
{
return "Precondition";
}
/*! Text for the \post command */
virtual QCString trPostcondition()
{
return "Postcondition";
}
/*! Text for the \invariant command */
virtual QCString trInvariant()
{
return "Invariant";
}
/*! Text shown before a multi-line variable/enum initialization */
virtual QCString trInitialValue()
{
return "Initializer:";
}
/*! Text used the source code in the file index */
virtual QCString trCode()
{
return "zdrojový text";
}
virtual QCString trGraphicalHierarchy()
{
return "Grafické zobrazení hierarchie tøíd";
}
virtual QCString trGotoGraphicalHierarchy()
{
return "Zobrazit grafickou podobu hierarchie tøíd";
}
virtual QCString trGotoTextualHierarchy()
{
return "Zobrazit textovou podobu hierarchie tøíd";
}
virtual QCString trPageIndex()
{
return "Rejstøík stránek";
}
//////////////////////////////////////////////////////////////////////////
// new since 1.1.0
//////////////////////////////////////////////////////////////////////////
virtual QCString trNote()
{
return "Poznámka";
}
virtual QCString trPublicTypes()
{
return "Veøejné typy";
}
virtual QCString trPublicAttribs()
{
return "Veøejné atributy";
}
virtual QCString trStaticPublicAttribs()
{
return "Statické veøejné atributy";
}
virtual QCString trProtectedTypes()
{
return "Chránìné typy";
}
virtual QCString trProtectedAttribs()
{
return "Chránìné atributy";
}
virtual QCString trStaticProtectedAttribs()
{
return "Statické chránìné atributy";
}
virtual QCString trPrivateTypes()
{
return "Privátní typy";
}
virtual QCString trPrivateAttribs()
{
return "Privátní atributy";
}
virtual QCString trStaticPrivateAttribs()
{
return "Statické privátní atributy";
}
//////////////////////////////////////////////////////////////////////////
// new since 1.1.3
//////////////////////////////////////////////////////////////////////////
/*! Used as a marker that is put before a todo item */
virtual QCString trTodo()
{
return "Udìlat";
}
/*! Used as the header of the todo list */
virtual QCString trTodoList()
{
return "Seznam plánovaných úprav";
}
}; };
#endif // TRANSLATOR_CZ_H #endif // TRANSLATOR_CZ_H
......
...@@ -25,26 +25,8 @@ ...@@ -25,26 +25,8 @@
class TranslatorGerman : public Translator class TranslatorGerman : public Translator
{ {
public: public:
//-------------------------------------------------------------------- QCString idLanguage()
// NOTICE: { return "german"; }
// the following functions are now obsolete: these are no longer used and
// will disappear in future versions. You do not have to translate them!
QCString trInherits()
{ return "Abgeleitet von "; }
QCString trAnd()
{ return "und"; }
QCString trInheritedBy()
{ return "Basisklasse f&uuml;r"; }
QCString trReference()
{ return "Verweis"; }
QCString trReimplementedFrom()
{ return "Implementiert von"; }
QCString trReimplementedIn()
{ return "erneute Implementation in"; }
QCString trIncludeFile()
{ return "Include-Datei"; }
// end of obsolete functions
//--------------------------------------------------------------------
QCString latexBabelPackage() QCString latexBabelPackage()
// returns the name of the package that is included by LaTeX // returns the name of the package that is included by LaTeX
......
...@@ -30,34 +30,8 @@ ...@@ -30,34 +30,8 @@
class TranslatorSpanish : public Translator class TranslatorSpanish : public Translator
{ {
public: public:
//-------------------------------------------------------------------- virtual QCString idLanguage()
// NOTICE: { return "spanish"; }
// the following functions are now obsolete: these are no longer used and
// will disappear in future versions. You do not have to translate them!
virtual QCString trInherits()
{ return "Inherits"; }
virtual QCString trAnd()
{ return "y"; }
virtual QCString trInheritedBy()
{ return "Inherited By"; }
virtual QCString trReference()
{ return "Referencia"; }
virtual QCString trReimplementedFrom()
{ return "Reimplementado de"; }
virtual QCString trReimplementedIn()
{ return "Reimplementado en"; }
virtual QCString trIncludeFile()
{ return "Include File"; }
virtual QCString trGeneratedFrom(const char *s,bool single)
{
QCString result=(QCString)"The documentation for this"+s+
" was generated from the following file";
if (single) result+=":"; else result+="s:";
return result;
}
// end of obsolete functions
//--------------------------------------------------------------------
/*! returns the name of the package that is included by LaTeX */ /*! returns the name of the package that is included by LaTeX */
virtual QCString latexBabelPackage() virtual QCString latexBabelPackage()
{ return ""; } { return ""; }
......
...@@ -79,6 +79,8 @@ positiiviset kommentit otetaan ilolla vastaan. ...@@ -79,6 +79,8 @@ positiiviset kommentit otetaan ilolla vastaan.
class TranslatorFinnish : public Translator class TranslatorFinnish : public Translator
{ {
public: public:
QCString idLanguage()
{ return "finnish"; }
QCString latexBabelPackage() QCString latexBabelPackage()
// returns the name of the package that is included by LaTeX // returns the name of the package that is included by LaTeX
{ return "finnish"; } { return "finnish"; }
......
...@@ -25,6 +25,8 @@ ...@@ -25,6 +25,8 @@
class TranslatorFrench : public Translator class TranslatorFrench : public Translator
{ {
public: public:
QCString idLanguage()
{ return "french"; }
/*! returns the name of the package that is included by LaTeX */ /*! returns the name of the package that is included by LaTeX */
QCString latexBabelPackage() QCString latexBabelPackage()
{ return "french"; } { return "french"; }
......
...@@ -23,6 +23,8 @@ ...@@ -23,6 +23,8 @@
class TranslatorCroatian : public Translator class TranslatorCroatian : public Translator
{ {
public: public:
QCString idLanguage()
{ return "croatian"; }
QCString latexBabelPackage() QCString latexBabelPackage()
{ return "croatian"; } { return "croatian"; }
QCString trRelatedFunctions() QCString trRelatedFunctions()
......
...@@ -33,34 +33,8 @@ ...@@ -33,34 +33,8 @@
class TranslatorItalian : public Translator class TranslatorItalian : public Translator
{ {
public: public:
//-------------------------------------------------------------------- QCString idLanguage()
// NOTICE: { return "italian"; }
// the following functions are now obsolete: these are no longer used and
// will disappear in future versions. You do not have to translate them!
QCString trInherits()
{ return "Inherits"; }
QCString trAnd()
{ return "and"; }
QCString trInheritedBy()
{ return "Inherited By"; }
QCString trReference()
{ return "Reference"; }
QCString trReimplementedFrom()
{ return "Reimplemented from"; }
QCString trReimplementedIn()
{ return "Reimplemented in"; }
QCString trIncludeFile()
{ return "Include File"; }
QCString trGeneratedFrom(const char *s,bool single)
{
QCString result=(QCString)"The documentation for this"+s+
" was generated from the following file";
if (single) result+=":"; else result+="s:";
return result;
}
// end of obsolete functions
//--------------------------------------------------------------------
/*! returns the name of the package that is included by LaTeX */ /*! returns the name of the package that is included by LaTeX */
QCString latexBabelPackage() QCString latexBabelPackage()
{ return "italian"; } { return "italian"; }
......
...@@ -23,33 +23,8 @@ ...@@ -23,33 +23,8 @@
class TranslatorJapanese : public Translator class TranslatorJapanese : public Translator
{ {
public: public:
//-------------------------------------------------------------------- QCString idLanguage()
// NOTICE: { return "japanese"; }
// the following functions are now obsolete: these are no longer used and
// will disappear in future versions. You do not have to translate them!
QCString trInherits()
{ return "継承"; }
QCString trAnd()
{ return "と"; }
QCString trInheritedBy()
{ return "次に継承されています。"; }
QCString trReference()
{ return "リファレンス"; }
QCString trReimplementedFrom()
{ return "次を再定義"; }
QCString trReimplementedIn()
{ return "次で再定義"; }
QCString trIncludeFile()
{ return "インクルードファイル"; }
QCString trGeneratedFrom(const char *s,bool)
{
QCString result=(QCString)"この"+s+
"に対するドキュメントは以下のファイルから生成されました。";
return result;
}
// end of obsolete functions
//--------------------------------------------------------------------
/*! returns the name of the package that is included by LaTeX */ /*! returns the name of the package that is included by LaTeX */
QCString latexBabelPackage() QCString latexBabelPackage()
{ return "a4j"; } { return "a4j"; }
......
...@@ -23,6 +23,8 @@ ...@@ -23,6 +23,8 @@
class TranslatorDutch : public Translator class TranslatorDutch : public Translator
{ {
public: public:
QCString idLanguage()
{ return "dutch"; }
QCString latexBabelPackage() QCString latexBabelPackage()
{ return "dutch"; } { return "dutch"; }
QCString trRelatedFunctions() QCString trRelatedFunctions()
......
...@@ -22,6 +22,8 @@ ...@@ -22,6 +22,8 @@
class TranslatorRussian : public Translator class TranslatorRussian : public Translator
{ {
public: public:
QCString idLanguage()
{ return "russian"; }
QCString latexBabelPackage() QCString latexBabelPackage()
{ return "russian"; } { return "russian"; }
QCString trRelatedFunctions() QCString trRelatedFunctions()
......
...@@ -67,6 +67,8 @@ Problem! ...@@ -67,6 +67,8 @@ Problem!
class TranslatorSwedish : public Translator class TranslatorSwedish : public Translator
{ {
public: public:
QCString idLanguage()
{ return "swedish"; }
QCString latexBabelPackage() QCString latexBabelPackage()
{ return "swedish"; } { return "swedish"; }
......
...@@ -212,6 +212,10 @@ ClassDef *getResolvedClass(const char *name) ...@@ -212,6 +212,10 @@ ClassDef *getResolvedClass(const char *name)
QCString *subst = typedefDict[name]; QCString *subst = typedefDict[name];
if (subst) // there is a typedef with this name if (subst) // there is a typedef with this name
{ {
if (*subst==name) // avoid resolving typedef struct foo foo;
{
return classDict[name];
}
int count=0; // recursion detection guard int count=0; // recursion detection guard
QCString *newSubst; QCString *newSubst;
while ((newSubst=typedefDict[*subst]) && count<10) while ((newSubst=typedefDict[*subst]) && count<10)
...@@ -241,11 +245,20 @@ QCString removeRedundantWhiteSpace(const QCString &s) ...@@ -241,11 +245,20 @@ QCString removeRedundantWhiteSpace(const QCString &s)
if (s.isEmpty()) return s; if (s.isEmpty()) return s;
QCString result; QCString result;
uint i; uint i;
for (i=0;i<s.length();i++) uint l=s.length();
for (i=0;i<l;i++)
{ {
char c=s.at(i); char c=s.at(i);
if (c!=' ' || if (i<l-2 && c=='<' && s.at(i+1)!='<')
(i!=0 && i!=s.length()-1 && isId(s.at(i-1)) && isId(s.at(i+1))) {
result+="< ";
}
else if (i>0 && c=='>' && s.at(i-1)!='>')
{
result+=" >";
}
else if (c!=' ' ||
(i!=0 && i!=l-1 && isId(s.at(i-1)) && isId(s.at(i+1)))
) )
{ {
if ((c=='*' || c=='&' || c=='@') && if ((c=='*' || c=='&' || c=='@') &&
...@@ -547,7 +560,7 @@ void writeQuickLinks(OutputList &ol,bool compact,bool ext) ...@@ -547,7 +560,7 @@ void writeQuickLinks(OutputList &ol,bool compact,bool ext)
//bool texEnabled = ol.isEnabled(OutputGenerator::Latex); //bool texEnabled = ol.isEnabled(OutputGenerator::Latex);
ol.disableAllBut(OutputGenerator::Html); ol.disableAllBut(OutputGenerator::Html);
QCString extLink,absPath; QCString extLink,absPath;
if (ext) { extLink="_doc"; absPath="/"; } if (ext) { extLink="_doc"; absPath=Config::docURL+"/"; }
//if (manEnabled) ol.disable(OutputGenerator::Man); //if (manEnabled) ol.disable(OutputGenerator::Man);
//if (texEnabled) ol.disable(OutputGenerator::Latex); //if (texEnabled) ol.disable(OutputGenerator::Latex);
if (compact) ol.startCenter(); else ol.startItemList(); if (compact) ol.startCenter(); else ol.startItemList();
...@@ -651,7 +664,7 @@ void writeQuickLinks(OutputList &ol,bool compact,bool ext) ...@@ -651,7 +664,7 @@ void writeQuickLinks(OutputList &ol,bool compact,bool ext)
if (Config::searchEngineFlag) if (Config::searchEngineFlag)
{ {
if (!compact) ol.writeListItem(); if (!compact) ol.writeListItem();
ol.startQuickIndexItem("_cgi",""); ol.startQuickIndexItem("_cgi",Config::cgiURL+"/"+Config::cgiName);
parseText(ol,theTranslator->trSearch()); parseText(ol,theTranslator->trSearch());
ol.endQuickIndexItem(); ol.endQuickIndexItem();
} }
...@@ -968,6 +981,8 @@ static void trimNamespaceScope(QCString &t1,QCString &t2) ...@@ -968,6 +981,8 @@ static void trimNamespaceScope(QCString &t1,QCString &t2)
void stripIrrelevantConstVolatile(QCString &s) void stripIrrelevantConstVolatile(QCString &s)
{ {
int i,j; int i,j;
if (s=="const") { s.resize(0); return; }
if (s=="volatile") { s.resize(0); return; }
i = s.find("const "); i = s.find("const ");
if (i!=-1) if (i!=-1)
{ {
...@@ -2323,8 +2338,10 @@ QCString insertTemplateSpecifierInScope(const QCString &scope,const QCString &te ...@@ -2323,8 +2338,10 @@ QCString insertTemplateSpecifierInScope(const QCString &scope,const QCString &te
QCString stripScope(const char *name) QCString stripScope(const char *name)
{ {
QCString result = name; QCString result = name;
int i=result.findRev("::"); int ti=result.find('<'); // find start of template
if (i!=-1) if (ti==-1) ti=result.length();
int i = ti>2 ? result.findRev("::",ti-2) : -1; // find scope just before template
if (i!=-1) // found scope
{ {
result=result.right(result.length()-i-2); result=result.right(result.length()-i-2);
} }
......
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