summaryrefslogtreecommitdiffstats
path: root/src/perlmodgen.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/perlmodgen.cpp')
-rw-r--r--src/perlmodgen.cpp1
1 files changed, 1 insertions, 0 deletions
diff --git a/src/perlmodgen.cpp b/src/perlmodgen.cpp
index b11d85c..d889938 100644
--- a/src/perlmodgen.cpp
+++ b/src/perlmodgen.cpp
@@ -1290,6 +1290,7 @@ static const char *getProtectionName(Protection prot)
case Public: return "public";
case Protected: return "protected";
case Private: return "private";
+ case Package: return "package";
}
return 0;
}
ss-git/Doxygen.git/diff/configure?h=Release_1_4_6_20060227&id=e3baf8c5ec430e5f09f00384ebdfa35242fd3316'>configure2
-rw-r--r--doc/config.doc146
-rw-r--r--doc/language.doc12
-rw-r--r--packages/rpm/doxygen.spec2
-rw-r--r--src/classdef.cpp11
-rw-r--r--src/code.l101
-rw-r--r--src/config.h4
-rw-r--r--src/config.l113
-rw-r--r--src/definition.cpp2
-rw-r--r--src/dot.cpp3
-rw-r--r--src/doxygen.cpp82
-rw-r--r--src/doxygen.h1
-rw-r--r--src/doxytag.l6
-rw-r--r--src/htmlgen.cpp6
-rw-r--r--src/index.cpp7
-rw-r--r--src/language.cpp5
-rw-r--r--src/latexgen.cpp52
-rw-r--r--src/memberdef.cpp3
-rw-r--r--src/pre.l7
-rw-r--r--src/rtfgen.cpp601
-rw-r--r--src/scanner.l24
-rw-r--r--src/suffixtree.cpp4
-rw-r--r--src/suffixtree.h5
-rw-r--r--src/translator.h49
-rw-r--r--src/translator_cz.h940
-rw-r--r--src/translator_de.h22
-rw-r--r--src/translator_es.h30
-rw-r--r--src/translator_fi.h2
-rw-r--r--src/translator_fr.h2
-rw-r--r--src/translator_hr.h2
-rw-r--r--src/translator_it.h30
-rw-r--r--src/translator_jp.h29
-rw-r--r--src/translator_nl.h2
-rw-r--r--src/translator_ru.h2
-rw-r--r--src/translator_se.h2
-rw-r--r--src/util.cpp31
41 files changed, 1689 insertions, 757 deletions
diff --git a/INSTALL b/INSTALL
index 7b57165..6e6d7dd 100644
--- a/INSTALL
+++ b/INSTALL
@@ -1,4 +1,4 @@
-DOXYGEN Version 1.1.4-20000625
+DOXYGEN Version 1.1.5
CONTENTS
--------
@@ -15,8 +15,8 @@ INSTALLATION INSTRUCTIONS FOR UNIX:
1. Unpack the archive, unless you already have:
- gunzip doxygen-1.1.4-20000625.src.tar.gz # uncompress the archive
- tar xf doxygen-1.1.4-20000625.src.tar # unpack it
+ gunzip doxygen-1.1.5.src.tar.gz # uncompress the archive
+ tar xf doxygen-1.1.5.src.tar # unpack it
2. Run the configure script:
@@ -255,4 +255,4 @@ The latest version of doxygen can be obtained at
Enjoy,
-Dimitri van Heesch (25 June 2000)
+Dimitri van Heesch (02 July 2000)
diff --git a/README b/README
index 7d7c361..f008894 100644
--- a/README
+++ b/README
@@ -1,4 +1,4 @@
-DOXYGEN Version 1.1.4-20000625
+DOXYGEN Version 1.1.5
Please read INSTALL for compilation instructions.
@@ -7,4 +7,4 @@ The latest version of doxygen can be obtained at
Enjoy,
-Dimitri van Heesch (25 June 2000)
+Dimitri van Heesch (02 July 2000)
diff --git a/VERSION b/VERSION
index 34515fa..e25d8d9 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-1.1.4-20000625
+1.1.5
diff --git a/addon/configgen/config_templ.l b/addon/configgen/config_templ.l
index 6e84ea4..e3c6b03 100644
--- a/addon/configgen/config_templ.l
+++ b/addon/configgen/config_templ.l
@@ -82,8 +82,6 @@ static bool * b=0;
static QStrList * l=0;
static int lastState;
static QCString elemStr;
-//static QCString tabSizeString;
-//static QCString colsInAlphaIndexString;
#CONFIG Static
/* -----------------------------------------------------------------
@@ -313,6 +311,56 @@ void configStrToVal()
}
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)
diff --git a/addon/configgen/configgen.cpp b/addon/configgen/configgen.cpp
index c1f139a..003ee1b 100644
--- a/addon/configgen/configgen.cpp
+++ b/addon/configgen/configgen.cpp
@@ -1338,6 +1338,16 @@ void init()
"Note: wordpad (write) and others do not support links. \n"
);
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");
//-----------------------------------------------------------------------------------------------
@@ -1383,9 +1393,19 @@ void init()
"expand macros in the source.",
"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"
- "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");
+ 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",
"SEARCH_INCLUDES",
"TRUE",
@@ -1415,15 +1435,15 @@ void init()
"omitted =1 is assumed. \n"
);
addDependency("predefined","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 tag. \n"
+ ConfigList::add( "expandAsDefinedList",
+ "EXPAND_AS_DEFINED",
+ "",
+ "list of defines to expand",
+ "If the MACRO_EXPANSION and EXPAND_PREDEF_ONLY tags are set to YES then \n"
+ "this tag can be used to specify a list of macro names that should be expanded. \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 ");
//-----------------------------------------------------------------------------------------------
diff --git a/configure b/configure
index 5309027..ecb6398 100755
--- a/configure
+++ b/configure
@@ -353,6 +353,8 @@ if test "$f_shared" = NO; then
cat >> .tmakeconfig <<EOF
TMAKE_LFLAGS = -non_shared
EOF
+ elif test "$f_platform" = "solaris-cc"; then
+ TMAKE_LFLAGS = -Bstatic
else
cat >> .tmakeconfig <<EOF
TMAKE_LFLAGS = -static
diff --git a/doc/config.doc b/doc/config.doc
index 55774fb..99cf664 100644
--- a/doc/config.doc
+++ b/doc/config.doc
@@ -131,6 +131,7 @@ followed by the descriptions of the tags grouped by category.
<li> \refitem cfg_repeat_brief REPEAT_BRIEF
<li> \refitem cfg_rtf_hyperlinks RTF_HYPERLINKS
<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_searchengine SEARCHENGINE
<li> \refitem cfg_show_include_files SHOW_INCLUDE_FILES
@@ -194,7 +195,7 @@ followed by the descriptions of the tags grouped by category.
\addindex DISABLE_INDEX
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.
- 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
value YES disables it.
@@ -311,7 +312,7 @@ followed by the descriptions of the tags grouped by category.
\anchor cfg_strip_code_comments
<dt>\c STRIP_CODE_COMMENTS <dd>
\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
fragments. Normal C and C++ comments will always remain visible.
@@ -327,9 +328,9 @@ followed by the descriptions of the tags grouped by category.
\anchor cfg_hide_scope_names
<dt>\c HIDE_SCOPE_NAMES <dd>
\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
- 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
<dt>\c VERBATIM_HEADERS <dd>
@@ -370,9 +371,9 @@ followed by the descriptions of the tags grouped by category.
\anchor cfg_sort_member_docs
<dt>\c SORT_MEMBER_DOCS <dd>
\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
- 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.
\anchor cfg_tab_size
@@ -413,8 +414,8 @@ followed by the descriptions of the tags grouped by category.
\anchor cfg_warn_if_undocumented
<dt>\c WARN_IF_UNDOCUMENTED <dd>
\addindex WARN_IF_UNDOCUMENTED
- If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings
- for undocumented members. If EXTRACT_ALL is set to YES then this flag will
+ If \c WARN_IF_UNDOCUMENTED is set to \c YES, then doxygen will generate warnings
+ for undocumented members. If \c EXTRACT_ALL is set to \c YES then this flag will
automatically be disabled.
\anchor cfg_warn_format
@@ -467,7 +468,7 @@ followed by the descriptions of the tags grouped by category.
\anchor cfg_exclude_patterns
<dt>\c EXCLUDE_PATTERNS <dd>
\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
certain files from those directories.
@@ -575,8 +576,8 @@ followed by the descriptions of the tags grouped by category.
<code>\$projectnumber</code>.
Doxygen will replace them by respectively
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
- project number (see PROJECT_NUMBER).
+ the version number of doxygen, the project name (see \c PROJECT_NAME), or the
+ project number (see \c PROJECT_NUMBER).
\anchor cfg_html_footer
<dt>\c HTML_FOOTER <dd>
@@ -596,8 +597,8 @@ followed by the descriptions of the tags grouped by category.
<code>\$projectnumber</code>.
Doxygen will replace them by respectively
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
- project number (see PROJECT_NUMBER).
+ the version number of doxygen, the project name (see \c PROJECT_NAME), or the
+ project number (see \c PROJECT_NUMBER).
\anchor cfg_html_stylesheet
@@ -638,10 +639,10 @@ FONT.charliteral { color: #008080 }
\addindex HTML_ALIGN_MEMBERS
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
- NO a bullet list will be used.
+ \c NO a bullet list will be used.
<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.
\anchor cfg_generate_htmlhelp
@@ -695,7 +696,7 @@ FONT.charliteral { color: #008080 }
\anchor cfg_paper_type
<dt>\c PAPER_TYPE <dd>
\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:
<ul>
<li><code>a4</code> (210 x 297 mm).
@@ -758,8 +759,8 @@ EXTRA_PACKAGES = times
<code>\$projectnumber</code>.
Doxygen will replace them by respectively
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
- project number (see PROJECT_NUMBER).
+ the version number of doxygen, the project name (see \c PROJECT_NAME), or the
+ project number (see \c PROJECT_NUMBER).
\anchor cfg_pdf_hyperlinks
<dt>\c PDF_HYPERLINKS <dd>
@@ -796,7 +797,7 @@ EXTRA_PACKAGES = times
<dt>\c RTF_OUTPUT <dd>
\addindex RTF_OUTPUT
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.
\anchor cfg_compact_rtf
@@ -818,6 +819,90 @@ EXTRA_PACKAGES = times
\par note:
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>
\subsection man_output Man page related options
@@ -860,7 +945,15 @@ EXTRA_PACKAGES = times
\addindex MACRO_EXPANSION
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
- 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
<dt>\c SEARCH_INCLUDES <dd>
@@ -884,12 +977,13 @@ EXTRA_PACKAGES = times
<code>name</code> or <code>name=definition</code> (no spaces).
If the definition and the = are omitted =1 is assumed.
-\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 tag.
+\anchor cfg_expand_as_defined
+<dt>\c EXPAND_AS_DEFINED <dd>
+ \addindex EXPAND_AS_DEFINED
+ If the \c MACRO_EXPANSION and \c EXPAND_PREDEF_ONLY tags are set to \c YES then
+ this tag can be used to specify a list of macro names that should be expanded.
+ 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>
\subsection config_extref External reference options
diff --git a/doc/language.doc b/doc/language.doc
index cdb3d1f..c3e04ca 100644
--- a/doc/language.doc
+++ b/doc/language.doc
@@ -59,7 +59,7 @@ Here is a list of the languages and their current maintainers:
</TD>
<TD>
<a href="mailto:bordeux@NOSPAM.lig.di.epfl.ch">
- bordeux@NOSPAM.lig.di.epfl.ch</a>
+ bordeux@NOSPAM.lig.di.epfl.ch</a>
</TD>
</TR>
<TR BGCOLOR="#ffffff">
@@ -72,9 +72,9 @@ Here is a list of the languages and their current maintainers:
</TD>
<TD>
<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">
- xet@NOSPAM.hem.passagen.se</a>
+ xet@NOSPAM.hem.passagen.se</a>
</TD>
</TR>
<TR BGCOLOR="#ffffff">
@@ -82,9 +82,12 @@ Here is a list of the languages and their current maintainers:
Czech
</TD>
<TD>
+ Petr Prikryl<BR>
Vlastimil Havran
</TD>
<TD>
+ <a href="mailto:prikrylp@NOSPAM.skil.cz">
+ prikrylp@NOSPAM.skil.cz</a>
<a href="mailto:havran@NOSPAM.fel.cvut.cz">
havran@NOSPAM.fel.cvut.cz</a>
</TD>
@@ -206,7 +209,8 @@ Here is a list of the languages and their current maintainers:
Swedish & Samuel H\"agglund & {\tt sahag96@nts.mh.se} \\
& XeT Erixon & {\tt xet@hem.passagen.se} \\
\hline
- Czech & Vlastimil Havran & {\tt havran@fel.cvut.cz} \\
+ Czech & Petr Prikryl & {\tt prikrylp@skil.cz} \\
+ & Vlastimil Havran & {\tt havran@fel.cvut.cz} \\
\hline
Romanian & Ionutz Borcoman & {\tt borco@borco-ei.eng.hokudai.ac.jp} \\
\hline
diff --git a/packages/rpm/doxygen.spec b/packages/rpm/doxygen.spec
index 4909686..eeb5dfc 100644
--- a/packages/rpm/doxygen.spec
+++ b/packages/rpm/doxygen.spec
@@ -1,5 +1,5 @@
Name: doxygen
-Version: 1.1.4-20000625
+Version: 1.1.5
Summary: documentation system for C, C++ and IDL
Release: 1
Source0: doxygen-%{version}.src.tar.gz
diff --git a/src/classdef.cpp b/src/classdef.cpp
index daacfba..558d33b 100644
--- a/src/classdef.cpp
+++ b/src/classdef.cpp
@@ -1605,8 +1605,14 @@ void ClassDef::determineImplUsageRelation()
int brCount=1;
while (te<typeLen && brCount!=0)
{
- if (type.at(te)=='<') brCount++;
- if (type.at(te)=='>') brCount--;
+ if (type.at(te)=='<')
+ {
+ 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++;
}
}
@@ -1614,6 +1620,7 @@ void ClassDef::determineImplUsageRelation()
if (te>ts) templSpec = type.mid(ts,te-ts);
ClassDef *cd=getResolvedClass(name()+"::"+type.mid(i,l));
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
{
found=TRUE;
diff --git a/src/code.l b/src/code.l
index a057a23..79ddac7 100644
--- a/src/code.l
+++ b/src/code.l
@@ -118,6 +118,7 @@ static const char * g_currentFontClass;
static bool g_searchingForBody;
static bool g_insideBody;
static int g_bodyCurlyCount;
+static ClassDef * g_classVar;
/*! 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
@@ -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,
const char *memberName,OutputList &result,
const char *text=0)
@@ -375,10 +404,11 @@ static bool getLink(const char *className,
}
}
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())
{
+ g_classVar = stripClassName(md->typeString());
if (g_currentDefinition && g_currentMemberDef &&
md!=g_currentMemberDef && g_insideBody)
{
@@ -393,32 +423,47 @@ static bool getLink(const char *className,
return FALSE;
}
-static ClassDef *stripClassName(const char *s)
+static bool generateClassMemberLink(OutputList &ol,ClassDef *mcd,const char *memName)
{
- 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)
+ //printf("generateClassMemberLink(%s,%s)\n",mcd->name().data(),memName);
+ MemberName *mmn=memberNameDict[memName];
+ if (mmn)
{
- 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)
+ MemberNameIterator mmni(*mmn);
+ MemberDef *mmd,*xmd=0;
+ ClassDef *xcd=0;
+ const int maxInheritanceDepth = 100000;
+ int mdist=maxInheritanceDepth;
+ for (;(mmd=mmni.current());++mmni)
{
- 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,
@@ -493,6 +538,8 @@ static void generateMemberLink(OutputList &ol,const char *varName,
ClassDef *mcd=stripClassName(vmd->typeString());
if (mcd && mcd->isLinkable())
{
+ if (generateClassMemberLink(ol,mcd,memName)) return;
+#if 0
//printf("Found class `%s'\n",mcd->name().data());
MemberName *mmn=memberNameDict[memName];
if (mmn)
@@ -524,6 +571,7 @@ static void generateMemberLink(OutputList &ol,const char *varName,
return;
}
}
+#endif
}
}
}
@@ -925,9 +973,21 @@ TYPEKW ("bool"|"char"|"double"|"float"|"int"|"long"|"short"|"signed"|"unsigned"
}
<MemberCall>{SCOPENAME}/{B}*"(" {
if (!g_name.isEmpty())
+ {
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
+ {
g_code->codify(yytext);
+ }
g_name.resize(0);g_type.resize(0);
g_bracketCount=0;
BEGIN(FuncCall);
@@ -1350,6 +1410,7 @@ void parseCode(OutputList &ol,const char *className,const QCString &s,
g_bodyCurlyCount = 0;
g_bracketCount = 0;
g_sharpCount = 0;
+ g_classVar = 0;
g_classScope = className;
g_exampleBlock = exBlock;
g_exampleName = exName;
diff --git a/src/config.h b/src/config.h
index 9330012..9665dbb 100644
--- a/src/config.h
+++ b/src/config.h
@@ -96,15 +96,17 @@ struct Config
static QCString rtfOutputDir; // the directory to put the RTF files
static bool compactRTFFlag; // generate more compact 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 QCString manOutputDir; // the directory to put the man pages
static QCString manExtension; // extension the man page files
static bool preprocessingFlag; // enable preprocessing
static bool macroExpansionFlag; // expand macros in the source.
+ static bool onlyPredefinedFlag; // expand only predefined macros
static bool searchIncludeFlag; // search for included files
static QStrList includePath; // list of include paths
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 QCString genTagFile; // the tag file to generate
static bool allExtFlag; // include all external classes flag
diff --git a/src/config.l b/src/config.l
index 780e9ce..57064e7 100644
--- a/src/config.l
+++ b/src/config.l
@@ -131,15 +131,17 @@ bool Config::generateRTF = TRUE;
QCString Config::rtfOutputDir = "rtf";
bool Config::compactRTFFlag = FALSE;
bool Config::rtfHyperFlag = FALSE;
+QCString Config::rtfStylesheetFile;
bool Config::generateMan = TRUE;
QCString Config::manOutputDir = "man";
QCString Config::manExtension = ".3";
bool Config::preprocessingFlag = TRUE;
bool Config::macroExpansionFlag = FALSE;
+bool Config::onlyPredefinedFlag = FALSE;
bool Config::searchIncludeFlag = TRUE;
QStrList Config::includePath;
QStrList Config::predefined;
-bool Config::onlyPredefinedFlag = FALSE;
+QStrList Config::expandAsDefinedList;
QStrList Config::tagFileList;
QCString Config::genTagFile;
bool Config::allExtFlag = FALSE;
@@ -175,8 +177,6 @@ static bool * b=0;
static QStrList * l=0;
static int lastState;
static QCString elemStr;
-//static QCString tabSizeString;
-//static QCString colsInAlphaIndexString;
static QCString tabSizeString;
static QCString colsInAlphaIndexString;
static QCString maxDotGraphWidthString;
@@ -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>"COMPACT_RTF"[ \t]*"=" { BEGIN(GetBool); b=&Config::compactRTFFlag; }
<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>"MAN_OUTPUT"[ \t]*"=" { BEGIN(GetString); s=&Config::manOutputDir; 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>"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>"INCLUDE_PATH"[ \t]*"=" { BEGIN(GetStrList); l=&Config::includePath; 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>"GENERATE_TAGFILE"[ \t]*"=" { BEGIN(GetString); s=&Config::genTagFile; s->resize(0); }
<Start>"ALLEXTERNALS"[ \t]*"=" { BEGIN(GetBool); b=&Config::allExtFlag; }
@@ -546,6 +548,7 @@ void dumpConfig()
printf("rtfOutputDir=`%s'\n",Config::rtfOutputDir.data());
printf("compactRTFFlag=`%d'\n",Config::compactRTFFlag);
printf("rtfHyperFlag=`%d'\n",Config::rtfHyperFlag);
+ printf("rtfStylesheetFile=`%s'\n",Config::rtfStylesheetFile.data());
printf("# configuration options related to the man page output\n");
printf("generateMan=`%d'\n",Config::generateMan);
printf("manOutputDir=`%s'\n",Config::manOutputDir.data());
@@ -553,6 +556,7 @@ void dumpConfig()
printf("# Configuration options related to the preprocessor \n");
printf("preprocessingFlag=`%d'\n",Config::preprocessingFlag);
printf("macroExpansionFlag=`%d'\n",Config::macroExpansionFlag);
+ printf("onlyPredefinedFlag=`%d'\n",Config::onlyPredefinedFlag);
printf("searchIncludeFlag=`%d'\n",Config::searchIncludeFlag);
{
char *is=Config::includePath.first();
@@ -570,7 +574,14 @@ void dumpConfig()
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");
{
char *is=Config::tagFileList.first();
@@ -677,15 +688,17 @@ void Config::init()
Config::rtfOutputDir = "rtf";
Config::compactRTFFlag = FALSE;
Config::rtfHyperFlag = FALSE;
+ Config::rtfStylesheetFile.resize(0);
Config::generateMan = TRUE;
Config::manOutputDir = "man";
Config::manExtension = ".3";
Config::preprocessingFlag = TRUE;
Config::macroExpansionFlag = FALSE;
+ Config::onlyPredefinedFlag = FALSE;
Config::searchIncludeFlag = TRUE;
Config::includePath.clear();
Config::predefined.clear();
- Config::onlyPredefinedFlag = FALSE;
+ Config::expandAsDefinedList.clear();
Config::tagFileList.clear();
Config::genTagFile.resize(0);
Config::allExtFlag = FALSE;
@@ -1556,6 +1569,17 @@ void writeTemplateConfig(QFile *f,bool 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";
t << "# configuration options related to the man page output\n";
@@ -1614,7 +1638,8 @@ void writeTemplateConfig(QFile *f,bool sl)
t << "\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 << "# 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 << "MACRO_EXPANSION = ";
@@ -1623,6 +1648,17 @@ void writeTemplateConfig(QFile *f,bool 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 << "# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files \n";
t << "# in the INCLUDE_PATH (see below) will be search if a #include is found. \n";
t << "\n";
@@ -1657,13 +1693,14 @@ void writeTemplateConfig(QFile *f,bool 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 tag. \n";
+ t << "# If the MACRO_EXPANSION and EXPAND_PREDEF_ONLY tags are set to YES then \n";
+ t << "# this tag can be used to specify a list of macro names that should be expanded. \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 << "EXPAND_ONLY_PREDEF = ";
- writeBoolValue(t,Config::onlyPredefinedFlag);
+ t << "EXPAND_AS_DEFINED = ";
+ writeStringList(t,Config::expandAsDefinedList);
t << "\n";
if (!sl)
{
@@ -1942,6 +1979,56 @@ void configStrToVal()
}
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)
@@ -2073,10 +2160,12 @@ void substituteEnvironmentVars()
substEnvVarsInStrList( Config::extraPackageList );
substEnvVarsInString( Config::latexHeaderFile );
substEnvVarsInString( Config::rtfOutputDir );
+ substEnvVarsInString( Config::rtfStylesheetFile );
substEnvVarsInString( Config::manOutputDir );
substEnvVarsInString( Config::manExtension );
substEnvVarsInStrList( Config::includePath );
substEnvVarsInStrList( Config::predefined );
+ substEnvVarsInStrList( Config::expandAsDefinedList );
substEnvVarsInStrList( Config::tagFileList );
substEnvVarsInString( Config::genTagFile );
substEnvVarsInString( Config::perlPath );
diff --git a/src/definition.cpp b/src/definition.cpp
index 629a45a..1d663ab 100644
--- a/src/definition.cpp
+++ b/src/definition.cpp
@@ -143,7 +143,7 @@ static bool readCodeFragment(const char *fileName,
{
// skip until the opening bracket or lonely : is found
bool found=FALSE;
- char cn;
+ char cn=0;
while (lineNr<=endLine && !f.atEnd() && !found)
{
while ((c=f.getch())!='{' && c!=':' && c!=-1) if (c=='\n') lineNr++;
diff --git a/src/dot.cpp b/src/dot.cpp
index a85e9bd..207aa38 100644
--- a/src/dot.cpp
+++ b/src/dot.cpp
@@ -996,7 +996,8 @@ static void findMaximalDotGraph(DotNode *root,
readBoundingBoxDot(baseName+"_tmp.dot",&width,&height);
width = width *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);
if (lastFit) // image is small enough
diff --git a/src/doxygen.cpp b/src/doxygen.cpp
index 39e5f8a..31e012b 100644
--- a/src/doxygen.cpp
+++ b/src/doxygen.cpp
@@ -81,10 +81,6 @@ MemberNameDict functionNameDict(10007); // all functions
StringDict substituteDict(1009); // class name substitutes
SectionDict sectionDict(257); // all page 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 *includeNameDict; // include names
FileNameDict *exampleNameDict; // examples
@@ -96,6 +92,7 @@ FormulaDict formulaNameDict(1009); // the label name of all formulas
StringDict tagDestinationDict(257); // all tag locations
// a member group
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
PageInfo *mainPage = 0;
@@ -906,6 +903,15 @@ static MemberDef *addVariableToClass(
root->protection,
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
//if (scope.find('<')==-1 && cd->templateArguments())
//{
@@ -1332,7 +1338,7 @@ static void buildMemberList(Entry *root)
ClassDef *cd=0;
// 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",
// root->parent->name.data(),getClass(root->parent->name),
// root->type.find(re,0));
@@ -1896,7 +1902,7 @@ static bool findBaseClassRelation(Entry *root,ClassDef *cd,
templSpec=baseClassName.mid(i,e-i);
baseClassName=baseClassName.left(i)+baseClassName.right(baseClassName.length()-e);
baseClass=getResolvedClass(baseClassName);
- //printf("baseClass=%p baseClass=%s templSpec=%s\n",
+ //printf("baseClass=%p -> baseClass=%s templSpec=%s\n",
// baseClass,baseClassName.data(),templSpec.data());
}
}
@@ -2823,10 +2829,10 @@ static void findMember(Entry *root,QCString funcDecl,QCString related,bool overl
{
Debug::print(Debug::FindMembers,0,
"1. funcName=`%s'\n",funcName.data());
- //if (!funcTempList.isEmpty()) // try with member specialization
- //{
- // mn=memberNameDict[funcName+funcTempList];
- //}
+ if (!funcTempList.isEmpty()) // try with member specialization
+ {
+ mn=memberNameDict[funcName+funcTempList];
+ }
if (mn==0) // try without specialization
{
mn=memberNameDict[funcName];
@@ -2978,15 +2984,39 @@ static void findMember(Entry *root,QCString funcDecl,QCString related,bool overl
"Warning: no matching class member found for \n %s",
fullFuncDecl.data()
);
+ int candidates=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");
md=mn->first();
while (md)
{
ClassDef *cd=md->memberClass();
- if (!cd || cd->name()==className)
- warn_cont(" %s\n",md->declaration());
+ if (cd!=0 && cd->name()==className)
+ {
+ 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();
}
}
@@ -3207,7 +3237,7 @@ static void findMember(Entry *root,QCString funcDecl,QCString related,bool overl
static void findMemberDocumentation(Entry *root)
{
int i=-1,l;
- QRegExp re("([a-zA-Z0-9: ]*\\*+[ \\*]*");
+ QRegExp re("([a-z_A-Z0-9: ]*\\*+[ \\*]*");
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.data(),root->inside.data(),root->name.data(),root->args.data(),root->section,root->memSpec,root->mGrpId
@@ -4374,6 +4404,12 @@ static void generateGroupDocs()
{
//printf("group %s #members=%d\n",gd->name().data(),gd->countMembers());
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()
if (f.open(IO_WriteOnly))
{
QTextStream t(&f);
- t << Config::docURL << endl << Config::cgiURL << "/" << Config::cgiName << endl;
+ t << Config::docURL << endl << Config::cgiURL
+ << "/" << Config::cgiName << endl;
f.close();
}
else
@@ -5276,9 +5313,21 @@ int main(int argc,char **argv)
&inputFiles,0);
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
+
+ // read and preprocess all input files
readFiles(input);
if (input.isEmpty())
@@ -5288,9 +5337,10 @@ int main(int argc,char **argv)
}
else
{
- msg("Read %d bytes\n",input.length());
+ msg("Read %d bytes\n",input.curPos());
}
+
/**************************************************************************
* Handle Tag Files *
**************************************************************************/
diff --git a/src/doxygen.h b/src/doxygen.h