diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/classdef.cpp | 4 | ||||
-rw-r--r-- | src/classlist.h | 10 | ||||
-rw-r--r-- | src/config.h | 172 | ||||
-rw-r--r-- | src/config.l | 1463 | ||||
-rw-r--r-- | src/dot.cpp | 43 | ||||
-rw-r--r-- | src/dot.h | 2 | ||||
-rw-r--r-- | src/doxygen.cpp | 23 | ||||
-rw-r--r-- | src/doxygen.h | 1 | ||||
-rw-r--r-- | src/doxygen.t | 2 | ||||
-rw-r--r-- | src/htmlgen.cpp | 4 | ||||
-rw-r--r-- | src/index.cpp | 15 | ||||
-rw-r--r-- | src/memberdef.cpp | 13 | ||||
-rw-r--r-- | src/namespacedef.cpp | 8 | ||||
-rw-r--r-- | src/namespacedef.h | 2 | ||||
-rw-r--r-- | src/scanner.l | 28 | ||||
-rw-r--r-- | src/translator_ru.h | 556 | ||||
-rw-r--r-- | src/util.cpp | 77 | ||||
-rw-r--r-- | src/util.h | 3 |
18 files changed, 1608 insertions, 818 deletions
diff --git a/src/classdef.cpp b/src/classdef.cpp index 8055a76..c7ac3ca 100644 --- a/src/classdef.cpp +++ b/src/classdef.cpp @@ -1623,8 +1623,8 @@ void ClassDef::determineImplUsageRelation() bool found=FALSE; while ((i=re.match(type,p,&l))!=-1 && !found) // for each class name in the type { - ClassDef *cd=getClass(name()+"::"+type.mid(i,l)); - if (cd==0) cd=getClass(type.mid(i,l)); // TODO: also try inbetween scopes! + ClassDef *cd=getResolvedClass(name()+"::"+type.mid(i,l)); + if (cd==0) cd=getResolvedClass(type.mid(i,l)); // TODO: also try inbetween scopes! if (cd /*&& cd->isLinkable()*/) // class exists and is linkable { found=TRUE; diff --git a/src/classlist.h b/src/classlist.h index 332eeec..4692ac0 100644 --- a/src/classlist.h +++ b/src/classlist.h @@ -18,6 +18,9 @@ #ifndef CLASSLIST_H #define CLASSLIST_H +#include <qlist.h> +#include <qdict.h> + #include "classdef.h" class ClassList : public QList<ClassDef> @@ -35,4 +38,11 @@ class ClassListIterator : public QListIterator<ClassDef> ClassListIterator(const ClassList &list); }; +class ClassDict : public QDict<ClassDef> +{ + public: + ClassDict(int size) : QDict<ClassDef>(size) {} + ~ClassDict() {} +}; + #endif diff --git a/src/config.h b/src/config.h index a18fce0..a4ed72d 100644 --- a/src/config.h +++ b/src/config.h @@ -10,9 +10,6 @@ * for any purpose. It is provided "as is" without express or implied warranty. * See the GNU General Public License for more details. * - * Documents produced by Doxygen are derivative works derived from the - * input used in their production; they are not affected by this license. - * */ #ifndef CONFIG_H @@ -34,92 +31,91 @@ struct Config { static void init(); - static QCString projectName; // the name of the project - static QCString projectNumber; // the number of the project - static QCString outputDir; // the global output directory - static QCString htmlOutputDir; // the directory to put the HTML files - static QCString latexOutputDir; // the directory to put the Latex files - static QCString manOutputDir; // the directory to put the man pages - static QCString rtfOutputDir; // the directory to put the RTF files - static QCString outputLanguage; // the output language - static QCString headerFile; // the name of the personal HTML header - static QCString latexHeaderFile; // the name of the personal LaTeX header - static QCString footerFile; // the name of the personal HTML footer - static QCString cgiName; // the name of the CGI binary - static QCString cgiURL; // the absolute URL to the CGI binary - static QCString docURL; // the absolute URL to the documentation - static QCString binAbsPath; // the absolute path to the doxysearch - static QCString docAbsPath; // the absolute path to the documentation - static QCString perlPath; // the absolute path to perl - static QCString genTagFile; // the tag file to generate - static QCString inputFilter; // a filter command that is applied to input files - static QCString paperType; // the page type to generate docs for - static QCString manExtension; // extension the man page files - static QCString htmlStyleSheet; // user defined cascading style sheet - static QStrList ignorePrefixList; // list of prefixes to ignore for the alphabetical index - static QStrList includePath; // list of include paths - static QStrList examplePath; // list of example paths - static QStrList imagePath; // list of image paths - static QStrList inputSources; // list of input files - static QStrList excludeSources; // list of files to exclude from the input - static QStrList filePatternList; // list of file patterns - static QStrList excludePatternList; // list of patterns to exclude from input - static QStrList examplePatternList; // list of example patterns - static QStrList imagePatternList; // list of image paths - static QStrList tagFileList; // list of tag files - static QStrList extDocPathList; // list of external doc. directories. - static QStrList predefined; // list of predefined macro names. - static QStrList extraPackageList; // list of extra LaTeX packages. - static QStrList stripFromPath; // list of candidates to strip from the file path - static QStrList sectionFilterList; // list of section filters to are enabled - static bool quietFlag; // generate progress messages flag - static bool warningFlag; // generate warnings flag - static bool recursiveFlag; // scan directories recursively - static bool allExtFlag; // include all external classes flag - static bool searchEngineFlag; // generate search engine flag - static bool extractAllFlag; // gererate docs for all classes flag - static bool extractPrivateFlag; // generate docs for private members flag - static bool noIndexFlag; // generate condensed index flag - static bool generateHtml; // generate HTML output - static bool generateLatex; // generate Latex output - static bool generateMan; // generate Man pages - static bool preprocessingFlag; // enable preprocessing - static bool briefMemDescFlag; // enable `inline' brief member descr. - static bool hideMemberFlag; // hide undocumented members. - static bool hideClassFlag; // hide undocumented members. - static bool searchIncludeFlag; // search for included files - static bool macroExpansionFlag; // expand macros in the source. - static bool onlyPredefinedFlag; // expand only predefined macros - static bool fullPathNameFlag; // using full path name in output - static bool classDiagramFlag; // enable the generation of class diagrams. - static bool compactLatexFlag; // generate compact LaTeX documentation. - static bool repeatBriefFlag; // repeat brief descriptions. - static bool internalDocsFlag; // determines what happens to internal docs. - static bool caseSensitiveNames; // determines if output can be mixed case. - static bool verbatimHeaderFlag; // enable/disable generation of verb headers. + static QCString projectName; // the name of the project + static QCString projectNumber; // the number of the project + static QCString outputDir; // the global output directory + static QCString outputLanguage; // the output language + static bool quietFlag; // generate progress messages flag + static bool warningFlag; // generate warnings flag + static bool noIndexFlag; // generate condensed index flag + static bool extractAllFlag; // gererate docs for all classes flag + static bool extractPrivateFlag; // generate docs for private members flag + static bool hideMemberFlag; // hide undocumented members. + static bool hideClassFlag; // hide undocumented members. + static bool briefMemDescFlag; // enable `inline' brief member descr. + static bool repeatBriefFlag; // repeat brief descriptions. + static bool alwaysDetailsFlag; // show details description even if there is only a brief description? + static bool fullPathNameFlag; // using full path name in output + static QStrList stripFromPath; // list of candidates to strip from the file path + static bool internalDocsFlag; // determines what happens to internal docs. + static bool classDiagramFlag; // enable the generation of class diagrams. + static bool sourceBrowseFlag; // include source code in documentation. + static bool inlineSourceFlag; // inline the definition bodies in the docs? + static bool stripCommentsFlag; // strip special comments from code fragments? + static bool caseSensitiveNames; // determines if output can be mixed case. + static bool verbatimHeaderFlag; // enable/disable generation of verb headers. + static bool showIncFileFlag; // show include file in file documentation? + static bool autoBriefFlag; // javadoc comments behaves as Qt comments. + static bool inheritDocsFlag; // inheritance of documentation enabled? + static bool inlineInfoFlag; // show info about inline members? + static bool sortMembersFlag; // sort members alphabetically? + static int tabSize; // number of spaces in a tab + static QStrList sectionFilterList; // list of section filters that are enabled + static QStrList inputSources; // list of input files + static QStrList filePatternList; // list of file patterns + static bool recursiveFlag; // scan directories recursively + static QStrList excludeSources; // list of files to exclude from the input + static QStrList excludePatternList; // list of patterns to exclude from input + static QStrList examplePath; // list of example paths + static QStrList examplePatternList; // list of example patterns + static QStrList imagePath; // list of image paths + static QCString inputFilter; // a filter command that is applied to input files + static bool alphaIndexFlag; // should an alphabetical index be generated? + static int colsInAlphaIndex; // number of columns in the alphabetical index + static QStrList ignorePrefixList; // list of prefixes to ignore for the alphabetical index + static bool generateHtml; // generate HTML output + static QCString htmlOutputDir; // the directory to put the HTML files + static QCString headerFile; // the name of the personal HTML header + static QCString footerFile; // the name of the personal HTML footer + static QCString htmlStyleSheet; // user defined cascading style sheet static bool htmlAlignMemberFlag; // align members in HTML using tables. - static bool sourceBrowseFlag; // include source code in documentation. - static bool autoBriefFlag; // javadoc comments behaves as Qt comments. - static bool htmlHelpFlag; // should html help files be generated? - static bool alphaIndexFlag; // should an alphabetical index be generated? - static bool pdfHyperFlag; // generate latex prepared creating hyperlinked pdfs. - static bool inheritDocsFlag; // inheritance of documentation enabled? - static bool inlineInfoFlag; // show info about inline members? - static bool alwaysDetailsFlag; // show details description even if there is only a brief description? - static int tabSize; // number of spaces in a tab - static int colsInAlphaIndex; // number of columns in the alphabetical index - static bool inlineSourceFlag; // inline the definition bodies in the docs? - static bool haveDotFlag; // indicates wether or not dot is present - static bool collGraphFlag; // collaboration graph - static bool includeGraphFlag; // include graph - static bool gfxHierarchyFlag; // flag to enable graphical hierarchy - static bool generateRTF; // generate RTF flag - static bool compactRTFFlag; // generate more compact RTF - static bool rtfHyperFlag; // generate hyper links in RTF - static bool showIncFileFlag; // show include file in file documentation? - static bool stripCommentsFlag; // strip special comments from code fragments? - static bool sortMembersFlag; // sort members alphabetically? - static bool latexBatchModeFlag; // continue after latex errors? + static bool htmlHelpFlag; // should html help files be generated? + static bool generateLatex; // generate Latex output + static QCString latexOutputDir; // the directory to put the Latex files + static bool compactLatexFlag; // generate compact LaTeX documentation. + static QCString paperType; // the page type to generate docs for + static QStrList extraPackageList; // list of extra LaTeX packages. + static QCString latexHeaderFile; // the name of the personal LaTeX header + static bool pdfHyperFlag; // generate latex prepared creating hyperlinked pdfs. + static bool latexBatchModeFlag; // continue after latex errors? + static bool generateRTF; // generate RTF flag + 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 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 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 tagFileList; // list of tag files + static QCString genTagFile; // the tag file to generate + static bool allExtFlag; // include all external classes flag + static QCString perlPath; // the absolute path to perl + static bool haveDotFlag; // indicates wether or not dot is present + static bool collGraphFlag; // collaboration graph + static bool includeGraphFlag; // include graph + static bool gfxHierarchyFlag; // flag to enable graphical hierarchy + static bool searchEngineFlag; // generate search engine flag + static QCString cgiName; // the name of the CGI binary + static QCString cgiURL; // the absolute URL to the CGI binary + static QCString docURL; // the absolute URL to the documentation + static QCString docAbsPath; // the absolute path to the documentation + static QCString binAbsPath; // the absolute path to the doxysearch + static QStrList extDocPathList; // list of external doc. directories. }; #endif diff --git a/src/config.l b/src/config.l index faaebda..2600a26 100644 --- a/src/config.l +++ b/src/config.l @@ -10,9 +10,6 @@ * for any purpose. It is provided "as is" without express or implied warranty. * See the GNU General Public License for more details. * - * Documents produced by Doxygen are derivative works derived from the - * input used in their production; they are not affected by this license. - * */ %{ @@ -66,92 +63,91 @@ void warn(const char *fmt, ...) * exported variables */ -QCString Config::projectName; -QCString Config::projectNumber; -QCString Config::outputDir; -QCString Config::htmlOutputDir = "html"; -QCString Config::latexOutputDir = "latex"; -QCString Config::manOutputDir = "man"; -QCString Config::rtfOutputDir = "rtf"; +QCString Config::projectName; +QCString Config::projectNumber; +QCString Config::outputDir; QCString Config::outputLanguage = "English"; -QCString Config::headerFile; -QCString Config::latexHeaderFile; -QCString Config::footerFile; -QCString Config::cgiName = "search.cgi"; -QCString Config::cgiURL; -QCString Config::docURL; -QCString Config::binAbsPath = "/usr/local/bin/"; -QCString Config::docAbsPath; -QCString Config::perlPath = "/usr/bin/perl"; -QCString Config::genTagFile; -QCString Config::inputFilter; -QCString Config::paperType = "a4wide"; -QCString Config::manExtension = ".3"; -QCString Config::htmlStyleSheet; -QStrList Config::ignorePrefixList; -QStrList Config::includePath; -QStrList Config::examplePath; -QStrList Config::imagePath; -QStrList Config::inputSources; +bool Config::quietFlag = FALSE; +bool Config::warningFlag = TRUE; +bool Config::noIndexFlag = FALSE; +bool Config::extractAllFlag = FALSE; +bool Config::extractPrivateFlag = FALSE; +bool Config::hideMemberFlag = FALSE; +bool Config::hideClassFlag = FALSE; +bool Config::briefMemDescFlag = TRUE; +bool Config::repeatBriefFlag = TRUE; +bool Config::alwaysDetailsFlag = FALSE; +bool Config::fullPathNameFlag = FALSE; +QStrList Config::stripFromPath; +bool Config::internalDocsFlag = FALSE; +bool Config::classDiagramFlag = TRUE; +bool Config::sourceBrowseFlag = FALSE; +bool Config::inlineSourceFlag = FALSE; +bool Config::stripCommentsFlag = TRUE; +bool Config::caseSensitiveNames = FALSE; +bool Config::verbatimHeaderFlag = TRUE; +bool Config::showIncFileFlag = TRUE; +bool Config::autoBriefFlag = TRUE; +bool Config::inheritDocsFlag = TRUE; +bool Config::inlineInfoFlag = TRUE; +bool Config::sortMembersFlag = TRUE; +int Config::tabSize = 8; +QStrList Config::sectionFilterList; +QStrList Config::inputSources; +QStrList Config::filePatternList; +bool Config::recursiveFlag = FALSE; QStrList Config::excludeSources; -QStrList Config::filePatternList; QStrList Config::excludePatternList; +QStrList Config::examplePath; QStrList Config::examplePatternList; -QStrList Config::imagePatternList; -QStrList Config::tagFileList; -QStrList Config::extDocPathList; -QStrList Config::predefined; -QStrList Config::extraPackageList; -QStrList Config::stripFromPath; -QStrList Config::sectionFilterList; -bool Config::quietFlag = FALSE; -bool Config::recursiveFlag = FALSE; -bool Config::allExtFlag = FALSE; -bool Config::searchEngineFlag = FALSE; -bool Config::extractAllFlag = FALSE; -bool Config::extractPrivateFlag = FALSE; -bool Config::noIndexFlag = FALSE; -bool Config::hideMemberFlag = FALSE; -bool Config::hideClassFlag = FALSE; -bool Config::macroExpansionFlag = FALSE; -bool Config::onlyPredefinedFlag = FALSE; -bool Config::fullPathNameFlag = FALSE; -bool Config::compactLatexFlag = FALSE; -bool Config::internalDocsFlag = FALSE; -bool Config::caseSensitiveNames = FALSE; -bool Config::sourceBrowseFlag = FALSE; -bool Config::htmlHelpFlag = FALSE; -bool Config::alphaIndexFlag = FALSE; -bool Config::pdfHyperFlag = FALSE; -bool Config::alwaysDetailsFlag = FALSE; -bool Config::inlineSourceFlag = FALSE; -bool Config::rtfHyperFlag = FALSE; -bool Config::compactRTFFlag = FALSE; -bool Config::haveDotFlag = FALSE; -bool Config::latexBatchModeFlag = FALSE; -bool Config::autoBriefFlag = TRUE; -bool Config::warningFlag = TRUE; -bool Config::generateHtml = TRUE; -bool Config::generateLatex = TRUE; -bool Config::generateMan = TRUE; -bool Config::generateRTF = FALSE; -bool Config::preprocessingFlag = TRUE; -bool Config::briefMemDescFlag = TRUE; -bool Config::searchIncludeFlag = TRUE; -bool Config::classDiagramFlag = TRUE; -bool Config::repeatBriefFlag = TRUE; -bool Config::verbatimHeaderFlag = TRUE; +QStrList Config::imagePath; +QCString Config::inputFilter; +bool Config::alphaIndexFlag = FALSE; +int Config::colsInAlphaIndex = 5; +QStrList Config::ignorePrefixList; +bool Config::generateHtml = TRUE; +QCString Config::htmlOutputDir = "html"; +QCString Config::headerFile; +QCString Config::footerFile; +QCString Config::htmlStyleSheet; bool Config::htmlAlignMemberFlag = TRUE; -bool Config::inheritDocsFlag = TRUE; -bool Config::inlineInfoFlag = TRUE; -bool Config::collGraphFlag = TRUE; -bool Config::includeGraphFlag = TRUE; -bool Config::gfxHierarchyFlag = TRUE; -bool Config::showIncFileFlag = TRUE; -bool Config::stripCommentsFlag = TRUE; -bool Config::sortMembersFlag = TRUE; -int Config::tabSize = 8; -int Config::colsInAlphaIndex = 5; +bool Config::htmlHelpFlag = FALSE; +bool Config::generateLatex = TRUE; +QCString Config::latexOutputDir = "latex"; +bool Config::compactLatexFlag = FALSE; +QCString Config::paperType = "a4wide"; +QStrList Config::extraPackageList; +QCString Config::latexHeaderFile; +bool Config::pdfHyperFlag = FALSE; +bool Config::latexBatchModeFlag = FALSE; +bool Config::generateRTF = FALSE; +QCString Config::rtfOutputDir = "rtf"; +bool Config::compactRTFFlag = FALSE; +bool Config::rtfHyperFlag = FALSE; +bool Config::generateMan = TRUE; +QCString Config::manOutputDir = "man"; +QCString Config::manExtension = ".3"; +bool Config::preprocessingFlag = TRUE; +bool Config::macroExpansionFlag = FALSE; +bool Config::searchIncludeFlag = TRUE; +QStrList Config::includePath; +QStrList Config::predefined; +bool Config::onlyPredefinedFlag = FALSE; +QStrList Config::tagFileList; +QCString Config::genTagFile; +bool Config::allExtFlag = FALSE; +QCString Config::perlPath = "/usr/bin/perl"; +bool Config::haveDotFlag = FALSE; +bool Config::collGraphFlag = TRUE; +bool Config::includeGraphFlag = TRUE; +bool Config::gfxHierarchyFlag = TRUE; +bool Config::searchEngineFlag = FALSE; +QCString Config::cgiName = "search.cgi"; +QCString Config::cgiURL; +QCString Config::docURL; +QCString Config::docAbsPath; +QCString Config::binAbsPath = "/usr/local/bin/"; +QStrList Config::extDocPathList; /* ----------------------------------------------------------------- * @@ -166,8 +162,9 @@ static QCString * s=0; static bool * b=0; static QStrList * l=0; static int lastState; -//static int lastEnvState; static QCString elemStr; +//static QCString tabSizeString; +//static QCString colsInAlphaIndexString; static QCString tabSizeString; static QCString colsInAlphaIndexString; @@ -203,92 +200,91 @@ static int yyread(char *buf,int max_size) <*>\0x0d <Start,GetString,GetStrList,GetBool>"#" { BEGIN(SkipComment); } -<Start>"PROJECT_NAME"[ \t]*"=" { BEGIN(GetString); s=&Config::projectName; s->resize(0); } -<Start>"PROJECT_NUMBER"[ \t]*"=" { BEGIN(GetString); s=&Config::projectNumber; s->resize(0); } -<Start>"OUTPUT_DIRECTORY"[ \t]*"=" { BEGIN(GetString); s=&Config::outputDir; s->resize(0); } -<Start>"HTML_OUTPUT"[ \t]*"=" { BEGIN(GetString); s=&Config::htmlOutputDir; s->resize(0); } -<Start>"MAN_OUTPUT"[ \t]*"=" { BEGIN(GetString); s=&Config::manOutputDir; s->resize(0); } -<Start>"LATEX_OUTPUT"[ \t]*"=" { BEGIN(GetString); s=&Config::latexOutputDir; s->resize(0); } -<Start>"RTF_OUTPUT"[ \t]*"=" { BEGIN(GetString); s=&Config::rtfOutputDir; s->resize(0); } -<Start>"HTML_HEADER"[ \t]*"=" { BEGIN(GetString); s=&Config::headerFile; s->resize(0); } -<Start>"HTML_FOOTER"[ \t]*"=" { BEGIN(GetString); s=&Config::footerFile; s->resize(0); } -<Start>"LATEX_HEADER"[ \t]*"=" { BEGIN(GetString); s=&Config::latexHeaderFile; s->resize(0); } -<Start>"CGI_NAME"[ \t]*"=" { BEGIN(GetString); s=&Config::cgiName; s->resize(0); } -<Start>"CGI_URL"[ \t]*"=" { BEGIN(GetString); s=&Config::cgiURL; s->resize(0); } -<Start>"DOC_URL"[ \t]*"=" { BEGIN(GetString); s=&Config::docURL; s->resize(0); } -<Start>"BIN_ABSPATH"[ \t]*"=" { BEGIN(GetString); s=&Config::binAbsPath; s->resize(0); } -<Start>"DOC_ABSPATH"[ \t]*"=" { BEGIN(GetString); s=&Config::docAbsPath; s->resize(0); } -<Start>"PERL_PATH"[ \t]*"=" { BEGIN(GetString); s=&Config::perlPath; s->resize(0); } -<Start>"GENERATE_TAGFILE"[ \t]*"=" { BEGIN(GetString); s=&Config::genTagFile; s->resize(0); } -<Start>"INPUT_FILTER"[ \t]*"=" { BEGIN(GetString); s=&Config::inputFilter; s->resize(0); } -<Start>"PAPER_TYPE"[ \t]*"=" { BEGIN(GetString); s=&Config::paperType; s->resize(0); } -<Start>"OUTPUT_LANGUAGE"[ \t]*"=" { BEGIN(GetString); s=&Config::outputLanguage; s->resize(0); } -<Start>"MAN_EXTENSION"[ \t]*"=" { BEGIN(GetString); s=&Config::manExtension; s->resize(0); } -<Start>"TAB_SIZE"[ \t]*"=" { BEGIN(GetString); s=&tabSizeString; s->resize(0); } -<Start>"HTML_STYLESHEET"[ \t]*"=" { BEGIN(GetString); s=&Config::htmlStyleSheet; s->resize(0); } -<Start>"COLS_IN_ALPHA_INDEX"[ \t]*"=" { BEGIN(GetString); s=&colsInAlphaIndexString; s->resize(0); } -<Start>"IGNORE_PREFIX"[ \t]*"=" { BEGIN(GetStrList); l=&Config::ignorePrefixList; l->clear(); elemStr=""; } -<Start>"INCLUDE_PATH"[ \t]*"=" { BEGIN(GetStrList); l=&Config::includePath; l->clear(); elemStr=""; } -<Start>"EXAMPLE_PATH"[ \t]*"=" { BEGIN(GetStrList); l=&Config::examplePath; l->clear(); elemStr=""; } -<Start>"IMAGE_PATH"[ \t]*"=" { BEGIN(GetStrList); l=&Config::imagePath; l->clear(); elemStr=""; } -<Start>"INPUT"[ \t]*"=" { BEGIN(GetStrList); l=&Config::inputSources; l->clear(); elemStr=""; } -<Start>"EXCLUDE"[ \t]*"=" { BEGIN(GetStrList); l=&Config::excludeSources; l->clear(); elemStr=""; } -<Start>"FILE_PATTERNS"[ \t]*"=" { BEGIN(GetStrList); l=&Config::filePatternList; l->clear(); elemStr=""; } -<Start>"EXCLUDE_PATTERNS"[ \t]*"=" { BEGIN(GetStrList); l=&Config::excludePatternList; l->clear(); elemStr=""; } -<Start>"EXAMPLE_PATTERNS"[ \t]*"=" { BEGIN(GetStrList); l=&Config::examplePatternList; l->clear(); elemStr=""; } -<Start>"IMAGE_PATTERNS"[ \t]*"=" { BEGIN(GetStrList); l=&Config::imagePatternList; l->clear(); elemStr=""; } -<Start>"TAGFILES"[ \t]*"=" { BEGIN(GetStrList); l=&Config::tagFileList; l->clear(); elemStr=""; } -<Start>"EXT_DOC_PATHS"[ \t]*"=" { BEGIN(GetStrList); l=&Config::extDocPathList; l->clear(); elemStr=""; } -<Start>"PREDEFINED"[ \t]*"=" { BEGIN(GetStrList); l=&Config::predefined; l->clear(); elemStr=""; } -<Start>"EXTRA_PACKAGES"[ \t]*"=" { BEGIN(GetStrList); l=&Config::extraPackageList; l->clear(); elemStr=""; } -<Start>"STRIP_FROM_PATH"[ \t]*"=" { BEGIN(GetStrList); l=&Config::stripFromPath; l->clear(); elemStr=""; } -<Start>"ENABLED_SECTIONS"[ \t]*"=" { BEGIN(GetStrList); l=&Config::sectionFilterList; l->clear(); elemStr=""; } -<Start>"QUIET"[ \t]*"=" { BEGIN(GetBool); b=&Config::quietFlag; } -<Start>"WARNINGS"[ \t]*"=" { BEGIN(GetBool); b=&Config::warningFlag; } -<Start>"RECURSIVE"[ \t]*"=" { BEGIN(GetBool); b=&Config::recursiveFlag; } -<Start>"ALLEXTERNALS"[ \t]*"=" { BEGIN(GetBool); b=&Config::allExtFlag; } -<Start>"SEARCHENGINE"[ \t]*"=" { BEGIN(GetBool); b=&Config::searchEngineFlag; } -<Start>"EXTRACT_ALL"[ \t]*"=" { BEGIN(GetBool); b=&Config::extractAllFlag; } -<Start>"EXTRACT_PRIVATE"[ \t]*"=" { BEGIN(GetBool); b=&Config::extractPrivateFlag; } -<Start>"DISABLE_INDEX"[ \t]*"=" { BEGIN(GetBool); b=&Config::noIndexFlag; } -<Start>"GENERATE_LATEX"[ \t]*"=" { BEGIN(GetBool); b=&Config::generateLatex; } -<Start>"GENERATE_HTML"[ \t]*"=" { BEGIN(GetBool); b=&Config::generateHtml; } -<Start>"GENERATE_MAN"[ \t]*"=" { BEGIN(GetBool); b=&Config::generateMan; } -<Start>"ENABLE_PREPROCESSING"[ \t]*"=" { BEGIN(GetBool); b=&Config::preprocessingFlag; } -<Start>"MACRO_EXPANSION"[ \t]*"=" { BEGIN(GetBool); b=&Config::macroExpansionFlag; } -<Start>"SEARCH_INCLUDES"[ \t]*"=" { BEGIN(GetBool); b=&Config::searchIncludeFlag; } -<Start>"BRIEF_MEMBER_DESC"[ \t]*"=" { BEGIN(GetBool); b=&Config::briefMemDescFlag; } -<Start>"ALWAYS_DETAILED_SEC"[ \t]*"=" { BEGIN(GetBool); b=&Config::alwaysDetailsFlag; } -<Start>"HIDE_UNDOC_MEMBERS"[ \t]*"=" { BEGIN(GetBool); b=&Config::hideMemberFlag; } -<Start>"HIDE_UNDOC_CLASSES"[ \t]*"=" { BEGIN(GetBool); b=&Config::hideClassFlag; } -<Start>"EXPAND_ONLY_PREDEF"[ \t]*"=" { BEGIN(GetBool); b=&Config::onlyPredefinedFlag; } -<Start>"FULL_PATH_NAMES"[ \t]*"=" { BEGIN(GetBool); b=&Config::fullPathNameFlag; } -<Start>"CLASS_DIAGRAMS"[ \t]*"=" { BEGIN(GetBool); b=&Config::classDiagramFlag; } -<Start>"COMPACT_LATEX"[ \t]*"=" { BEGIN(GetBool); b=&Config::compactLatexFlag; } -<Start>"REPEAT_BRIEF"[ \t]*"=" { BEGIN(GetBool); b=&Config::repeatBriefFlag; } -<Start>"INTERNAL_DOCS"[ \t]*"=" { BEGIN(GetBool); b=&Config::internalDocsFlag; } -<Start>"CASE_SENSE_NAMES"[ \t]*"=" { BEGIN(GetBool); b=&Config::caseSensitiveNames; } -<Start>"VERBATIM_HEADERS"[ \t]*"=" { BEGIN(GetBool); b=&Config::verbatimHeaderFlag; } -<Start>"HTML_ALIGN_MEMBERS"[ \t]*"=" { BEGIN(GetBool); b=&Config::htmlAlignMemberFlag; } -<Start>"SOURCE_BROWSER"[ \t]*"=" { BEGIN(GetBool); b=&Config::sourceBrowseFlag; } -<Start>"JAVADOC_AUTOBRIEF"[ \t]*"=" { BEGIN(GetBool); b=&Config::autoBriefFlag; } -<Start>"GENERATE_HTMLHELP"[ \t]*"=" { BEGIN(GetBool); b=&Config::htmlHelpFlag; } -<Start>"ALPHABETICAL_INDEX"[ \t]*"=" { BEGIN(GetBool); b=&Config::alphaIndexFlag; } -<Start>"PDF_HYPERLINKS"[ \t]*"=" { BEGIN(GetBool); b=&Config::pdfHyperFlag; } -<Start>"INHERIT_DOCS"[ \t]*"=" { BEGIN(GetBool); b=&Config::inheritDocsFlag; } -<Start>"INLINE_INFO"[ \t]*"=" { BEGIN(GetBool); b=&Config::inlineInfoFlag; } -<Start>"INLINE_SOURCES"[ \t]*"=" { BEGIN(GetBool); b=&Config::inlineSourceFlag; } -<Start>"HAVE_DOT"[ \t]*"=" { BEGIN(GetBool); b=&Config::haveDotFlag; } -<Start>"COLLABORATION_GRAPH"[ \t]*"=" { BEGIN(GetBool); b=&Config::collGraphFlag; } -<Start>"INCLUDE_GRAPH"[ \t]*"=" { BEGIN(GetBool); b=&Config::includeGraphFlag; } -<Start>"GRAPHICAL_HIERARCHY"[ \t]*"=" { BEGIN(GetBool); b=&Config::gfxHierarchyFlag; } -<Start>"GENERATE_RTF"[ \t]*"=" { BEGIN(GetBool); b=&Config::generateRTF; } -<Start>"COMPACT_RTF"[ \t]*"=" { BEGIN(GetBool); b=&Config::compactRTFFlag; } -<Start>"RTF_HYPERLINKS"[ \t]*"=" { BEGIN(GetBool); b=&Config::rtfHyperFlag; } -<Start>"SHOW_INCLUDE_FILES"[ \t]*"=" { BEGIN(GetBool); b=&Config::showIncFileFlag; } -<Start>"STRIP_CODE_COMMENTS"[ \t]*"=" { BEGIN(GetBool); b=&Config::stripCommentsFlag; } -<Start>"SORT_MEMBER_DOCS"[ \t]*"=" { BEGIN(GetBool); b=&Config::sortMembersFlag; } -<Start>"LATEX_BATCHMODE"[ \t]*"=" { BEGIN(GetBool); b=&Config::latexBatchModeFlag; } +<Start>"PROJECT_NAME"[ \t]*"=" { BEGIN(GetString); s=&Config::projectName; s->resize(0); } +<Start>"PROJECT_NUMBER"[ \t]*"=" { BEGIN(GetString); s=&Config::projectNumber; s->resize(0); } +<Start>"OUTPUT_DIRECTORY"[ \t]*"=" { BEGIN(GetString); s=&Config::outputDir; s->resize(0); } +<Start>"OUTPUT_LANGUAGE"[ \t]*"=" { BEGIN(GetString); s=&Config::outputLanguage; s->resize(0); } +<Start>"QUIET"[ \t]*"=" { BEGIN(GetBool); b=&Config::quietFlag; } +<Start>"WARNINGS"[ \t]*"=" { BEGIN(GetBool); b=&Config::warningFlag; } +<Start>"DISABLE_INDEX"[ \t]*"=" { BEGIN(GetBool); b=&Config::noIndexFlag; } +<Start>"EXTRACT_ALL"[ \t]*"=" { BEGIN(GetBool); b=&Config::extractAllFlag; } +<Start>"EXTRACT_PRIVATE"[ \t]*"=" { BEGIN(GetBool); b=&Config::extractPrivateFlag; } +<Start>"HIDE_UNDOC_MEMBERS"[ \t]*"=" { BEGIN(GetBool); b=&Config::hideMemberFlag; } +<Start>"HIDE_UNDOC_CLASSES"[ \t]*"=" { BEGIN(GetBool); b=&Config::hideClassFlag; } +<Start>"BRIEF_MEMBER_DESC"[ \t]*"=" { BEGIN(GetBool); b=&Config::briefMemDescFlag; } +<Start>"REPEAT_BRIEF"[ \t]*"=" { BEGIN(GetBool); b=&Config::repeatBriefFlag; } +<Start>"ALWAYS_DETAILED_SEC"[ \t]*"=" { BEGIN(GetBool); b=&Config::alwaysDetailsFlag; } +<Start>"FULL_PATH_NAMES"[ \t]*"=" { BEGIN(GetBool); b=&Config::fullPathNameFlag; } +<Start>"STRIP_FROM_PATH"[ \t]*"=" { BEGIN(GetStrList); l=&Config::stripFromPath; l->clear(); elemStr=""; } +<Start>"INTERNAL_DOCS"[ \t]*"=" { BEGIN(GetBool); b=&Config::internalDocsFlag; } +<Start>"CLASS_DIAGRAMS"[ \t]*"=" { BEGIN(GetBool); b=&Config::classDiagramFlag; } +<Start>"SOURCE_BROWSER"[ \t]*"=" { BEGIN(GetBool); b=&Config::sourceBrowseFlag; } +<Start>"INLINE_SOURCES"[ \t]*"=" { BEGIN(GetBool); b=&Config::inlineSourceFlag; } +<Start>"STRIP_CODE_COMMENTS"[ \t]*"=" { BEGIN(GetBool); b=&Config::stripCommentsFlag; } +<Start>"CASE_SENSE_NAMES"[ \t]*"=" { BEGIN(GetBool); b=&Config::caseSensitiveNames; } +<Start>"VERBATIM_HEADERS"[ \t]*"=" { BEGIN(GetBool); b=&Config::verbatimHeaderFlag; } +<Start>"SHOW_INCLUDE_FILES"[ \t]*"=" { BEGIN(GetBool); b=&Config::showIncFileFlag; } +<Start>"JAVADOC_AUTOBRIEF"[ \t]*"=" { BEGIN(GetBool); b=&Config::autoBriefFlag; } +<Start>"INHERIT_DOCS"[ \t]*"=" { BEGIN(GetBool); b=&Config::inheritDocsFlag; } +<Start>"INLINE_INFO"[ \t]*"=" { BEGIN(GetBool); b=&Config::inlineInfoFlag; } +<Start>"SORT_MEMBER_DOCS"[ \t]*"=" { BEGIN(GetBool); b=&Config::sortMembersFlag; } +<Start>"TAB_SIZE"[ \t]*"=" { BEGIN(GetString); s=&tabSizeString; s->resize(0); } +<Start>"ENABLED_SECTIONS"[ \t]*"=" { BEGIN(GetStrList); l=&Config::sectionFilterList; l->clear(); elemStr=""; } +<Start>"INPUT"[ \t]*"=" { BEGIN(GetStrList); l=&Config::inputSources; l->clear(); elemStr=""; } +<Start>"FILE_PATTERNS"[ \t]*"=" { BEGIN(GetStrList); l=&Config::filePatternList; l->clear(); elemStr=""; } +<Start>"RECURSIVE"[ \t]*"=" { BEGIN(GetBool); b=&Config::recursiveFlag; } +<Start>"EXCLUDE"[ \t]*"=" { BEGIN(GetStrList); l=&Config::excludeSources; l->clear(); elemStr=""; } +<Start>"EXCLUDE_PATTERNS"[ \t]*"=" { BEGIN(GetStrList); l=&Config::excludePatternList; l->clear(); elemStr=""; } +<Start>"EXAMPLE_PATH"[ \t]*"=" { BEGIN(GetStrList); l=&Config::examplePath; l->clear(); elemStr=""; } +<Start>"EXAMPLE_PATTERNS"[ \t]*"=" { BEGIN(GetStrList); l=&Config::examplePatternList; l->clear(); elemStr=""; } +<Start>"IMAGE_PATH"[ \t]*"=" { BEGIN(GetStrList); l=&Config::imagePath; l->clear(); elemStr=""; } +<Start>"INPUT_FILTER"[ \t]*"=" { BEGIN(GetString); s=&Config::inputFilter; s->resize(0); } +<Start>"ALPHABETICAL_INDEX"[ \t]*"=" { BEGIN(GetBool); b=&Config::alphaIndexFlag; } +<Start>"COLS_IN_ALPHA_INDEX"[ \t]*"=" { BEGIN(GetString); s=&colsInAlphaIndexString; s->resize(0); } +<Start>"IGNORE_PREFIX"[ \t]*"=" { BEGIN(GetStrList); l=&Config::ignorePrefixList; l->clear(); elemStr=""; } +<Start>"GENERATE_HTML"[ \t]*"=" { BEGIN(GetBool); b=&Config::generateHtml; } +<Start>"HTML_OUTPUT"[ \t]*"=" { BEGIN(GetString); s=&Config::htmlOutputDir; s->resize(0); } +<Start>"HTML_HEADER"[ \t]*"=" { BEGIN(GetString); s=&Config::headerFile; s->resize(0); } +<Start>"HTML_FOOTER"[ \t]*"=" { BEGIN(GetString); s=&Config::footerFile; s->resize(0); } +<Start>"HTML_STYLESHEET"[ \t]*"=" { BEGIN(GetString); s=&Config::htmlStyleSheet; s->resize(0); } +<Start>"HTML_ALIGN_MEMBERS"[ \t]*"=" { BEGIN(GetBool); b=&Config::htmlAlignMemberFlag; } +<Start>"GENERATE_HTMLHELP"[ \t]*"=" { BEGIN(GetBool); b=&Config::htmlHelpFlag; } +<Start>"GENERATE_LATEX"[ \t]*"=" { BEGIN(GetBool); b=&Config::generateLatex; } +<Start>"LATEX_OUTPUT"[ \t]*"=" { BEGIN(GetString); s=&Config::latexOutputDir; s->resize(0); } +<Start>"COMPACT_LATEX"[ \t]*"=" { BEGIN(GetBool); b=&Config::compactLatexFlag; } +<Start>"PAPER_TYPE"[ \t]*"=" { BEGIN(GetString); s=&Config::paperType; s->resize(0); } +<Start>"EXTRA_PACKAGES"[ \t]*"=" { BEGIN(GetStrList); l=&Config::extraPackageList; l->clear(); elemStr=""; } +<Start>"LATEX_HEADER"[ \t]*"=" { BEGIN(GetString); s=&Config::latexHeaderFile; s->resize(0); } +<Start>"PDF_HYPERLINKS"[ \t]*"=" { BEGIN(GetBool); b=&Config::pdfHyperFlag; } +<Start>"LATEX_BATCHMODE"[ \t]*"=" { BEGIN(GetBool); b=&Config::latexBatchModeFlag; } +<Start>"GENERATE_RTF"[ \t]*"=" { BEGIN(GetBool); b=&Config::generateRTF; } +<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>"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>"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>"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; } +<Start>"PERL_PATH"[ \t]*"=" { BEGIN(GetString); s=&Config::perlPath; s->resize(0); } +<Start>"HAVE_DOT"[ \t]*"=" { BEGIN(GetBool); b=&Config::haveDotFlag; } +<Start>"COLLABORATION_GRAPH"[ \t]*"=" { BEGIN(GetBool); b=&Config::collGraphFlag; } +<Start>"INCLUDE_GRAPH"[ \t]*"=" { BEGIN(GetBool); b=&Config::includeGraphFlag; } +<Start>"GRAPHICAL_HIERARCHY"[ \t]*"=" { BEGIN(GetBool); b=&Config::gfxHierarchyFlag; } +<Start>"SEARCHENGINE"[ \t]*"=" { BEGIN(GetBool); b=&Config::searchEngineFlag; } +<Start>"CGI_NAME"[ \t]*"=" { BEGIN(GetString); s=&Config::cgiName; s->resize(0); } +<Start>"CGI_URL"[ \t]*"=" { BEGIN(GetString); s=&Config::cgiURL; s->resize(0); } +<Start>"DOC_URL"[ \t]*"=" { BEGIN(GetString); s=&Config::docURL; s->resize(0); } +<Start>"DOC_ABSPATH"[ \t]*"=" { BEGIN(GetString); s=&Config::docAbsPath; s->resize(0); } +<Start>"BIN_ABSPATH"[ \t]*"=" { BEGIN(GetString); s=&Config::binAbsPath; s->resize(0); } +<Start>"EXT_DOC_PATHS"[ \t]*"=" { BEGIN(GetStrList); l=&Config::extDocPathList; l->clear(); elemStr=""; } <Start>[a-z_A-Z0-9]+ { err("Warning: ignoring unknown tag `%s' at line %d\n",yytext,yyLineNr); } <GetString,GetBool>\n { yyLineNr++; BEGIN(Start); } <GetStrList>\n { @@ -378,140 +374,296 @@ static int yyread(char *buf,int max_size) void dumpConfig() { + printf("# General configuration options\n"); printf("projectName=`%s'\n",Config::projectName.data()); - printf("outputDir=`%s'\n", Config::outputDir.data()); - printf("headerFile=`%s'\n", Config::headerFile.data()); - printf("footerFile=`%s'\n", Config::footerFile.data()); - char *ip=Config::includePath.first(); - while (ip) + printf("projectNumber=`%s'\n",Config::projectNumber.data()); + printf("outputDir=`%s'\n",Config::outputDir.data()); + printf("outputLanguage=`%s'\n",Config::outputLanguage.data()); + printf("quietFlag=`%d'\n",Config::quietFlag); + printf("warningFlag=`%d'\n",Config::warningFlag); + printf("noIndexFlag=`%d'\n",Config::noIndexFlag); + printf("extractAllFlag=`%d'\n",Config::extractAllFlag); + printf("extractPrivateFlag=`%d'\n",Config::extractPrivateFlag); + printf("hideMemberFlag=`%d'\n",Config::hideMemberFlag); + printf("hideClassFlag=`%d'\n",Config::hideClassFlag); + printf("briefMemDescFlag=`%d'\n",Config::briefMemDescFlag); + printf("repeatBriefFlag=`%d'\n",Config::repeatBriefFlag); + printf("alwaysDetailsFlag=`%d'\n",Config::alwaysDetailsFlag); + printf("fullPathNameFlag=`%d'\n",Config::fullPathNameFlag); + { + char *is=Config::stripFromPath.first(); + while (is) + { + printf("stripFromPath=`%s'\n",is); + is=Config::stripFromPath.next(); + } + } + printf("internalDocsFlag=`%d'\n",Config::internalDocsFlag); + printf("classDiagramFlag=`%d'\n",Config::classDiagramFlag); + printf("sourceBrowseFlag=`%d'\n",Config::sourceBrowseFlag); + printf("inlineSourceFlag=`%d'\n",Config::inlineSourceFlag); + printf("stripCommentsFlag=`%d'\n",Config::stripCommentsFlag); + printf("caseSensitiveNames=`%d'\n",Config::caseSensitiveNames); + printf("verbatimHeaderFlag=`%d'\n",Config::verbatimHeaderFlag); + printf("showIncFileFlag=`%d'\n",Config::showIncFileFlag); + printf("autoBriefFlag=`%d'\n",Config::autoBriefFlag); + printf("inheritDocsFlag=`%d'\n",Config::inheritDocsFlag); + printf("inlineInfoFlag=`%d'\n",Config::inlineInfoFlag); + printf("sortMembersFlag=`%d'\n",Config::sortMembersFlag); + printf("tabSize=`%d'\n",Config::tabSize); + { + char *is=Config::sectionFilterList.first(); + while (is) + { + printf("sectionFilterList=`%s'\n",is); + is=Config::sectionFilterList.next(); + } + } + printf("# configuration options related to the input files\n"); + { + char *is=Config::inputSources.first(); + while (is) + { + printf("inputSources=`%s'\n",is); + is=Config::inputSources.next(); + } + } + { + char *is=Config::filePatternList.first(); + while (is) + { + printf("filePatternList=`%s'\n",is); + is=Config::filePatternList.next(); + } + } + printf("recursiveFlag=`%d'\n",Config::recursiveFlag); { - printf("includePath=`%s'\n",ip); - ip=Config::includePath.next(); + char *is=Config::excludeSources.first(); + while (is) + { + printf("excludeSources=`%s'\n",is); + is=Config::excludeSources.next(); + } } - printf("quiet=`%d'\n", Config::quietFlag); - printf("warnings=`%d'\n", Config::warningFlag); - char *is=Config::inputSources.first(); - while (is) { - printf("inputSources=`%s'\n",is); - is=Config::inputSources.next(); + char *is=Config::excludePatternList.first(); + while (is) + { + printf("excludePatternList=`%s'\n",is); + is=Config::excludePatternList.next(); + } } - char *fp=Config::filePatternList.first(); - while (fp) { - printf("filePattern=`%s'\n",fp); - fp=Config::filePatternList.next(); + char *is=Config::examplePath.first(); + while (is) + { + printf("examplePath=`%s'\n",is); + is=Config::examplePath.next(); + } + } + { + char *is=Config::examplePatternList.first(); + while (is) + { + printf("examplePatternList=`%s'\n",is); + is=Config::examplePatternList.next(); + } + } + { + char *is=Config::imagePath.first(); + while (is) + { + printf("imagePath=`%s'\n",is); + is=Config::imagePath.next(); + } } - printf("recusive=`%d'\n",Config::recursiveFlag); printf("inputFilter=`%s'\n",Config::inputFilter.data()); - char *tf=Config::tagFileList.first(); - while (tf) + printf("# configuration options related to the alphabetical class index\n"); + printf("alphaIndexFlag=`%d'\n",Config::alphaIndexFlag); + printf("colsInAlphaIndex=`%d'\n",Config::colsInAlphaIndex); + { + char *is=Config::ignorePrefixList.first(); + while (is) + { + printf("ignorePrefixList=`%s'\n",is); + is=Config::ignorePrefixList.next(); + } + } + printf("# configuration options related to the HTML output\n"); + printf("generateHtml=`%d'\n",Config::generateHtml); + printf("htmlOutputDir=`%s'\n",Config::htmlOutputDir.data()); + printf("headerFile=`%s'\n",Config::headerFile.data()); + printf("footerFile=`%s'\n",Config::footerFile.data()); + printf("htmlStyleSheet=`%s'\n",Config::htmlStyleSheet.data()); + printf("htmlAlignMemberFlag=`%d'\n",Config::htmlAlignMemberFlag); + printf("htmlHelpFlag=`%d'\n",Config::htmlHelpFlag); + printf("# configuration options related to the LaTeX output\n"); + printf("generateLatex=`%d'\n",Config::generateLatex); + printf("latexOutputDir=`%s'\n",Config::latexOutputDir.data()); + printf("compactLatexFlag=`%d'\n",Config::compactLatexFlag); + printf("paperType=`%s'\n",Config::paperType.data()); + { + char *is=Config::extraPackageList.first(); + while (is) + { + printf("extraPackageList=`%s'\n",is); + is=Config::extraPackageList.next(); + } + } + printf("latexHeaderFile=`%s'\n",Config::latexHeaderFile.data()); + printf("pdfHyperFlag=`%d'\n",Config::pdfHyperFlag); + printf("latexBatchModeFlag=`%d'\n",Config::latexBatchModeFlag); + printf("# configuration options related to the RTF output\n"); + printf("generateRTF=`%d'\n",Config::generateRTF); + printf("rtfOutputDir=`%s'\n",Config::rtfOutputDir.data()); + printf("compactRTFFlag=`%d'\n",Config::compactRTFFlag); + printf("rtfHyperFlag=`%d'\n",Config::rtfHyperFlag); + printf("# configuration options related to the man page output\n"); + printf("generateMan=`%d'\n",Config::generateMan); + printf("manOutputDir=`%s'\n",Config::manOutputDir.data()); + printf("manExtension=`%s'\n",Config::manExtension.data()); + printf("# Configuration options related to the preprocessor \n"); + printf("preprocessingFlag=`%d'\n",Config::preprocessingFlag); + printf("macroExpansionFlag=`%d'\n",Config::macroExpansionFlag); + printf("searchIncludeFlag=`%d'\n",Config::searchIncludeFlag); + { + char *is=Config::includePath.first(); + while (is) + { + printf("includePath=`%s'\n",is); + is=Config::includePath.next(); + } + } + { + char *is=Config::predefined.first(); + while (is) + { + printf("predefined=`%s'\n",is); + is=Config::predefined.next(); + } + } + printf("onlyPredefinedFlag=`%d'\n",Config::onlyPredefinedFlag); + printf("# Configuration::addtions related to external references \n"); { - printf("tagFile=`%s'\n",tf); - tf=Config::tagFileList.next(); + char *is=Config::tagFileList.first(); + while (is) + { + printf("tagFileList=`%s'\n",is); + is=Config::tagFileList.next(); + } } - printf("allExternals=`%d'\n",Config::allExtFlag); - printf("searchEngine=`%d'\n",Config::searchEngineFlag); + printf("genTagFile=`%s'\n",Config::genTagFile.data()); + printf("allExtFlag=`%d'\n",Config::allExtFlag); + printf("perlPath=`%s'\n",Config::perlPath.data()); + printf("# Configuration options related to the dot tool \n"); + printf("haveDotFlag=`%d'\n",Config::haveDotFlag); + printf("collGraphFlag=`%d'\n",Config::collGraphFlag); + printf("includeGraphFlag=`%d'\n",Config::includeGraphFlag); + printf("gfxHierarchyFlag=`%d'\n",Config::gfxHierarchyFlag); + printf("# Configuration::addtions related to the search engine \n"); + printf("searchEngineFlag=`%d'\n",Config::searchEngineFlag); printf("cgiName=`%s'\n",Config::cgiName.data()); printf("cgiURL=`%s'\n",Config::cgiURL.data()); printf("docURL=`%s'\n",Config::docURL.data()); + printf("docAbsPath=`%s'\n",Config::docAbsPath.data()); printf("binAbsPath=`%s'\n",Config::binAbsPath.data()); - char *ed=Config::extDocPathList.first(); - while (ed) { - printf("binAbsPathFile=`%s'\n",ed); - ed=Config::extDocPathList.next(); + char *is=Config::extDocPathList.first(); + while (is) + { + printf("extDocPathList=`%s'\n",is); + is=Config::extDocPathList.next(); + } } } void Config::init() { - Config::projectName.resize(0); - Config::projectNumber.resize(0); + Config::projectName.resize(0); + Config::projectNumber.resize(0); Config::outputDir.resize(0); - Config::htmlOutputDir = "html"; - Config::latexOutputDir ="latex"; - Config::manOutputDir ="man"; - Config::rtfOutputDir = "rtf"; Config::outputLanguage = "English"; - Config::headerFile.resize(0); - Config::latexHeaderFile.resize(0); - Config::footerFile.resize(0); - Config::cgiName = "search.cgi"; - Config::cgiURL.resize(0); - Config::docURL.resize(0); - Config::binAbsPath = "/usr/local/bin/"; - Config::docAbsPath.resize(0); - Config::perlPath = "/usr/bin/perl"; - Config::genTagFile.resize(0); + Config::quietFlag = FALSE; + Config::warningFlag = TRUE; + Config::noIndexFlag = FALSE; + Config::extractAllFlag = FALSE; + Config::extractPrivateFlag = FALSE; + Config::hideMemberFlag = FALSE; + Config::hideClassFlag = FALSE; + Config::briefMemDescFlag = TRUE; + Config::repeatBriefFlag = TRUE; + Config::alwaysDetailsFlag = FALSE; + Config::fullPathNameFlag = FALSE; + Config::stripFromPath.clear(); + Config::internalDocsFlag = FALSE; + Config::classDiagramFlag = TRUE; + Config::sourceBrowseFlag = FALSE; + Config::inlineSourceFlag = FALSE; + Config::stripCommentsFlag = TRUE; + Config::caseSensitiveNames = FALSE; + Config::verbatimHeaderFlag = TRUE; + Config::showIncFileFlag = TRUE; + Config::autoBriefFlag = TRUE; + Config::inheritDocsFlag = TRUE; + Config::inlineInfoFlag = TRUE; + Config::sortMembersFlag = TRUE; + Config::tabSize = 8; + Config::sectionFilterList.clear(); + Config::inputSources.clear(); + Config::filePatternList.clear(); + Config::recursiveFlag = FALSE; + Config::excludeSources.clear(); + Config::excludePatternList.clear(); + Config::examplePath.clear(); + Config::examplePatternList.clear(); + Config::imagePath.clear(); Config::inputFilter.resize(0); + Config::alphaIndexFlag = FALSE; + Config::colsInAlphaIndex = 5; + Config::ignorePrefixList.clear(); + Config::generateHtml = TRUE; + Config::htmlOutputDir = "html"; + Config::headerFile.resize(0); + Config::footerFile.resize(0); + Config::htmlStyleSheet.resize(0); + Config::htmlAlignMemberFlag = TRUE; + Config::htmlHelpFlag = FALSE; + Config::generateLatex = TRUE; + Config::latexOutputDir = "latex"; + Config::compactLatexFlag = FALSE; Config::paperType = "a4wide"; + Config::extraPackageList.clear(); + Config::latexHeaderFile.resize(0); + Config::pdfHyperFlag = FALSE; + Config::latexBatchModeFlag = FALSE; + Config::generateRTF = FALSE; + Config::rtfOutputDir = "rtf"; + Config::compactRTFFlag = FALSE; + Config::rtfHyperFlag = FALSE; + Config::generateMan = TRUE; + Config::manOutputDir = "man"; Config::manExtension = ".3"; - Config::htmlStyleSheet.resize(0); - Config::ignorePrefixList.clear(); - Config::includePath.clear(); - Config::examplePath.clear(); - Config::imagePath.clear(); - Config::inputSources.clear(); - Config::excludeSources.clear(); - Config::filePatternList.clear(); - Config::examplePatternList.clear(); - Config::imagePatternList.clear(); - Config::excludePatternList.clear(); - Config::tagFileList.clear(); - Config::extDocPathList.clear(); + Config::preprocessingFlag = TRUE; + Config::macroExpansionFlag = FALSE; + Config::searchIncludeFlag = TRUE; + Config::includePath.clear(); Config::predefined.clear(); - Config::extraPackageList.clear(); - Config::stripFromPath.clear(); - Config::sectionFilterList.clear(); - Config::tabSize=8; - Config::colsInAlphaIndex=5; - Config::quietFlag = FALSE; - Config::recursiveFlag = FALSE; - Config::allExtFlag = FALSE; - Config::searchEngineFlag = FALSE; - Config::extractAllFlag = FALSE; - Config::extractPrivateFlag = FALSE; - Config::noIndexFlag = FALSE; - Config::hideMemberFlag = FALSE; - Config::hideClassFlag = FALSE; - Config::macroExpansionFlag = FALSE; - Config::onlyPredefinedFlag = FALSE; - Config::fullPathNameFlag = FALSE; - Config::compactLatexFlag = FALSE; - Config::internalDocsFlag = FALSE; - Config::caseSensitiveNames = FALSE; - Config::sourceBrowseFlag = FALSE; - Config::htmlHelpFlag = FALSE; - Config::alphaIndexFlag = FALSE; - Config::pdfHyperFlag = FALSE; - Config::alwaysDetailsFlag = FALSE; - Config::inlineSourceFlag = FALSE; - Config::haveDotFlag = FALSE; - Config::compactRTFFlag = FALSE; - Config::rtfHyperFlag = FALSE; - Config::latexBatchModeFlag = FALSE; - Config::warningFlag = TRUE; - Config::generateHtml = TRUE; - Config::generateLatex = TRUE; - Config::generateMan = TRUE; - Config::generateRTF = FALSE; - Config::preprocessingFlag = TRUE; - Config::briefMemDescFlag = TRUE; - Config::searchIncludeFlag = TRUE; - Config::classDiagramFlag = TRUE; - Config::repeatBriefFlag = TRUE; - Config::verbatimHeaderFlag = TRUE; - Config::htmlAlignMemberFlag = TRUE; - Config::autoBriefFlag = TRUE; - Config::inheritDocsFlag = TRUE; - Config::inlineInfoFlag = TRUE; - Config::collGraphFlag = TRUE; - Config::includeGraphFlag = TRUE; - Config::gfxHierarchyFlag = TRUE; - Config::showIncFileFlag = TRUE; - Config::stripCommentsFlag = TRUE; - Config::sortMembersFlag = TRUE; + Config::onlyPredefinedFlag = FALSE; + Config::tagFileList.clear(); + Config::genTagFile.resize(0); + Config::allExtFlag = FALSE; + Config::perlPath = "/usr/bin/perl"; + Config::haveDotFlag = FALSE; + Config::collGraphFlag = TRUE; + Config::includeGraphFlag = TRUE; + Config::gfxHierarchyFlag = TRUE; + Config::searchEngineFlag = FALSE; + Config::cgiName = "search.cgi"; + Config::cgiURL.resize(0); + Config::docURL.resize(0); + Config::docAbsPath.resize(0); + Config::binAbsPath = "/usr/local/bin/"; + Config::extDocPathList.clear(); } static void writeBoolValue(QTextStream &t,bool v) @@ -573,6 +725,9 @@ void writeTemplateConfig(QFile *f,bool sl) t << "# The format is:\n"; t << "# TAG = value [value, ...]\n"; t << "# Values that contain spaces should be placed between quotes (\" \")\n"; + } + if (!sl) + { t << "\n"; } t << "#---------------------------------------------------------------------------\n"; @@ -581,22 +736,22 @@ void writeTemplateConfig(QFile *f,bool sl) if (!sl) { t << "\n"; - t << "# The PROJECT_NAME tag is a single word (or a sequence of word surrounded\n"; + t << "# The PROJECT_NAME tag is a single word (or a sequence of words surrounded \n"; t << "# by quotes) that should identify the project. \n"; t << "\n"; } - t << "PROJECT_NAME = "; + t << "PROJECT_NAME = "; writeStringValue(t,Config::projectName); t << "\n"; if (!sl) { t << "\n"; - t << "# The PROJECT_NUMBER tag can be used to enter a project or revision number.\n" ; + t << "# The PROJECT_NUMBER tag can be used to enter a project or revision number. \n"; t << "# This could be handy for archiving the generated documentation or \n"; t << "# if some version control system is used.\n"; t << "\n"; } - t << "PROJECT_NUMBER = "; + t << "PROJECT_NUMBER = "; writeStringValue(t,Config::projectNumber); t << "\n"; if (!sl) @@ -608,304 +763,305 @@ void writeTemplateConfig(QFile *f,bool sl) t << "# where doxygen was started. If left blank the current directory will be used.\n"; t << "\n"; } - t << "OUTPUT_DIRECTORY = "; + t << "OUTPUT_DIRECTORY = "; writeStringValue(t,Config::outputDir); t << "\n"; if (!sl) { t << "\n"; - t << "# The OUTPUT_LANGUAGE tag is used to specify the language in which all\n"; - t << "# documentation generated by doxygen is written. Doxygen will use this\n"; - t << "# information to generate all constant output in the proper language.\n"; + t << "# The OUTPUT_LANGUAGE tag is used to specify the language in which all \n"; + t << "# documentation generated by doxygen is written. Doxygen will use this \n"; + t << "# information to generate all constant output in the proper language. \n"; t << "# The default language is English, other supported languages are: \n"; - t << "# Dutch, French, Italian, Czech, Swedish, German and Japanese\n"; + t << "# Dutch, French, Italian, Czech, Swedish, German, Finnish, Japanese, \n"; + t << "# Spanish and Russian\n"; t << "\n"; } - t << "OUTPUT_LANGUAGE = "; + t << "OUTPUT_LANGUAGE = "; writeStringValue(t,Config::outputLanguage); t << "\n"; if (!sl) { t << "\n"; - t << "# The QUIET tag can be used to turn on/off the messages that are generated\n"; - t << "# by doxygen. Possible values are YES and NO. If left blank NO is used.\n"; + t << "# The QUIET tag can be used to turn on/off the messages that are generated \n"; + t << "# by doxygen. Possible values are YES and NO. If left blank NO is used. \n"; t << "\n"; } - t << "QUIET = "; + t << "QUIET = "; writeBoolValue(t,Config::quietFlag); t << "\n"; if (!sl) { t << "\n"; - t << "# The WARNINGS tag can be used to turn on/off the warning messages that are\n"; - t << "# generated by doxygen. Possible values are YES and NO. If left blank\n"; - t << "# NO is used.\n"; + t << "# The WARNINGS tag can be used to turn on/off the warning messages that are \n"; + t << "# generated by doxygen. Possible values are YES and NO. If left blank \n"; + t << "# NO is used. \n"; t << "\n"; } - t << "WARNINGS = "; + t << "WARNINGS = "; writeBoolValue(t,Config::warningFlag); t << "\n"; if (!sl) { t << "\n"; - t << "# The DISABLE_INDEX tag can be used to turn on/off the condensed index at\n"; - t << "# top of each HTML page. The value NO (the default) enables the index and\n"; - t << "# the value YES disables it.\n"; + t << "# The DISABLE_INDEX tag can be used to turn on/off the condensed index at \n"; + t << "# top of each HTML page. The value NO (the default) enables the index and \n"; + t << "# the value YES disables it. \n"; t << "\n"; } - t << "DISABLE_INDEX = "; + t << "DISABLE_INDEX = "; writeBoolValue(t,Config::noIndexFlag); t << "\n"; if (!sl) { t << "\n"; - t << "# If the EXTRACT_ALL tag is set to YES all classes and functions will be\n"; - t << "# included in the documentation, even if no documentation was available.\n"; + t << "# If the EXTRACT_ALL tag is set to YES all classes and functions will be \n"; + t << "# included in the documentation, even if no documentation was available. \n"; t << "\n"; } - t << "EXTRACT_ALL = "; + t << "EXTRACT_ALL = "; writeBoolValue(t,Config::extractAllFlag); t << "\n"; if (!sl) { t << "\n"; - t << "# If the EXTRACT_PRIVATE tag is set to YES all private members of a class\n"; - t << "# will be included in the documentation.\n"; + t << "# If the EXTRACT_PRIVATE tag is set to YES all private members of a class \n"; + t << "# will be included in the documentation. \n"; t << "\n"; } - t << "EXTRACT_PRIVATE = "; - writeBoolValue(t,Config::extractPrivateFlag); + t << "EXTRACT_PRIVATE = "; + writeBoolValue(t,Config::extractPrivateFlag); t << "\n"; if (!sl) { t << "\n"; - t << "# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all\n"; - t << "# undocumented members inside documented classes or files.\n"; + t << "# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all \n"; + t << "# undocumented members inside documented classes or files. \n"; t << "\n"; } - t << "HIDE_UNDOC_MEMBERS = "; + t << "HIDE_UNDOC_MEMBERS = "; writeBoolValue(t,Config::hideMemberFlag); t << "\n"; if (!sl) { t << "\n"; - t << "# If the HIDE_UNDOC_CLASSESS tag is set to YES, Doxygen will hide all\n"; - t << "# undocumented classes.\n"; + t << "# If the HIDE_UNDOC_CLASSESS tag is set to YES, Doxygen will hide all \n"; + t << "# undocumented classes. \n"; t << "\n"; } - t << "HIDE_UNDOC_CLASSES = "; + t << "HIDE_UNDOC_CLASSES = "; writeBoolValue(t,Config::hideClassFlag); t << "\n"; if (!sl) { t << "\n"; - t << "# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will\n"; + t << "# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will \n"; t << "# include brief member descriptions after the members that are listed in \n"; - t << "# the file and class documentation (similar to JavaDoc).\n"; - t << "# Set to NO to disable this.\n"; + t << "# the file and class documentation (similar to JavaDoc). \n"; + t << "# Set to NO to disable this. \n"; t << "\n"; } - t << "BRIEF_MEMBER_DESC = "; + t << "BRIEF_MEMBER_DESC = "; writeBoolValue(t,Config::briefMemDescFlag); t << "\n"; if (!sl) { t << "\n"; - t << "# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend\n"; - t << "# the brief description of a member or function before the detailed description.\n"; + t << "# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend \n"; + t << "# the brief description of a member or function before the detailed description. \n"; t << "# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the \n"; - t << "# brief descriptions will be completely suppressed.\n"; + t << "# brief descriptions will be completely suppressed. \n"; t << "\n"; } - t << "REPEAT_BRIEF = "; + t << "REPEAT_BRIEF = "; writeBoolValue(t,Config::repeatBriefFlag); t << "\n"; if (!sl) { - t <<"\n"; - t << "# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then\n"; - t << "# Doxygen will generate a detailed section even if there is only a brief\n"; - t << "# description.\n"; - t <<"\n"; + t << "\n"; + t << "# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then \n"; + t << "# Doxygen will generate a detailed section even if there is only a brief \n"; + t << "# description. \n"; + t << "\n"; } - t << "ALWAYS_DETAILED_SEC = "; + t << "ALWAYS_DETAILED_SEC = "; writeBoolValue(t,Config::alwaysDetailsFlag); t << "\n"; if (!sl) { t << "\n"; - t << "# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full\n"; - t << "# path before files name in the file list and in the header files. If set\n" ; - t << "# to NO the shortest path that makes the file name unique will be used.\n"; + t << "# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full \n"; + t << "# path before files name in the file list and in the header files. If set \n"; + t << "# to NO the shortest path that makes the file name unique will be used. \n"; t << "\n"; } - t << "FULL_PATH_NAMES = "; + t << "FULL_PATH_NAMES = "; writeBoolValue(t,Config::fullPathNameFlag); t << "\n"; if (!sl) { t << "\n"; - t << "# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag\n"; - t << "# can be used to strip a user defined part of the path. Stripping is\n" ; - t << "# only done if one of the specified strings matches the left-hand part of\n"; - t << "# the path.\n"; + t << "# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag \n"; + t << "# can be used to strip a user defined part of the path. Stripping is \n"; + t << "# only done if one of the specified strings matches the left-hand part of \n"; + t << "# the path. \n"; t << "\n"; } - t << "STRIP_FROM_PATH = "; + t << "STRIP_FROM_PATH = "; writeStringList(t,Config::stripFromPath); t << "\n"; if (!sl) { t << "\n"; - t << "# The INTERNAL_DOCS tag determines if documentation\n"; + t << "# The INTERNAL_DOCS tag determines if documentation \n"; t << "# that is typed after a \\internal command is included. If the tag is set \n"; - t << "# to NO (the default) then the documentation will be excluded.\n"; - t << "# Set it to YES to include the internal documentation.\n"; + t << "# to NO (the default) then the documentation will be excluded. \n"; + t << "# Set it to YES to include the internal documentation. \n"; t << "\n"; } - t << "INTERNAL_DOCS = "; + t << "INTERNAL_DOCS = "; writeBoolValue(t,Config::internalDocsFlag); t << "\n"; if (!sl) { t << "\n"; - t << "# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will\n"; - t << "# generate a class diagram (in Html and LaTeX) for classes with base or\n"; - t << "# super classes. Setting the tag to NO turns the diagrams off.\n"; + t << "# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will \n"; + t << "# generate a class diagram (in Html and LaTeX) for classes with base or \n"; + t << "# super classes. Setting the tag to NO turns the diagrams off. \n"; t << "\n"; } - t << "CLASS_DIAGRAMS = "; + t << "CLASS_DIAGRAMS = "; writeBoolValue(t,Config::classDiagramFlag); t << "\n"; if (!sl) { t << "\n"; - t << "# If the SOURCE_BROWSER tag is set to YES then a list of source files will\n"; - t << "# be generated. Documented entities will be cross-referenced with these sources.\n"; + t << "# If the SOURCE_BROWSER tag is set to YES then a list of source files will \n"; + t << "# be generated. Documented entities will be cross-referenced with these sources. \n"; t << "\n"; } - t << "SOURCE_BROWSER = "; + t << "SOURCE_BROWSER = "; writeBoolValue(t,Config::sourceBrowseFlag); t << "\n"; if (!sl) { t << "\n"; - t << "# Setting the INLINE_SOURCES tag to YES will include the body\n"; - t << "# of functions and classes directly in the documentation.\n"; + t << "# Setting the INLINE_SOURCES tag to YES will include the body \n"; + t << "# of functions and classes directly in the documentation. \n"; t << "\n"; } - t << "INLINE_SOURCES = "; + t << "INLINE_SOURCES = "; writeBoolValue(t,Config::inlineSourceFlag); t << "\n"; if (!sl) { t << "\n"; - t << "# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct\n"; - t << "# doxygen to hide any special comment blocks from generated source code\n"; - t << "# fragments. Normal C and C++ comments will always remain visible.\n"; + t << "# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct \n"; + t << "# doxygen to hide any special comment blocks from generated source code \n"; + t << "# fragments. Normal C and C++ comments will always remain visible. \n"; t << "\n"; } - t << "STRIP_CODE_COMMENTS = "; + t << "STRIP_CODE_COMMENTS = "; writeBoolValue(t,Config::stripCommentsFlag); t << "\n"; if (!sl) { t << "\n"; - t << "# If the CASE_SENSE_NAMES tag is set to NO (the default) then Doxygen\n"; - t << "# will only generate file names in lower case letters. If set to\n"; - t << "# YES upper case letters are also allowed. This is useful if you have\n"; - t << "# classes or files whose names only differ in case and if your file system\n"; - t << "# supports case sensitive file names.\n"; + t << "# If the CASE_SENSE_NAMES tag is set to NO (the default) then Doxygen \n"; + t << "# will only generate file names in lower case letters. If set to \n"; + t << "# YES upper case letters are also allowed. This is useful if you have \n"; + t << "# classes or files whose names only differ in case and if your file system \n"; + t << "# supports case sensitive file names. \n"; t << "\n"; } - t << "CASE_SENSE_NAMES = "; + t << "CASE_SENSE_NAMES = "; writeBoolValue(t,Config::caseSensitiveNames); t << "\n"; if (!sl) { t << "\n"; - t << "# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen\n"; - t << "# will generate a verbatim copy of the header file for each class for\n"; - t << "# which an include is specified. Set to NO to disable this.\n"; + t << "# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen \n"; + t << "# will generate a verbatim copy of the header file for each class for \n"; + t << "# which an include is specified. Set to NO to disable this. \n"; t << "\n"; } - t << "VERBATIM_HEADERS = "; + t << "VERBATIM_HEADERS = "; writeBoolValue(t,Config::verbatimHeaderFlag); t << "\n"; if (!sl) { t << "\n"; - t << "# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen\n"; - t << "# will put list of the files that are included by a file in the documentation\n"; - t << "# of that file.\n"; + t << "# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen \n"; + t << "# will put list of the files that are included by a file in the documentation \n"; + t << "# of that file. \n"; t << "\n"; } - t << "SHOW_INCLUDE_FILES = "; + t << "SHOW_INCLUDE_FILES = "; writeBoolValue(t,Config::showIncFileFlag); t << "\n"; if (!sl) { t << "\n"; - t << "# If the JAVADOC_AUTOBRIEF tag is set to YES (the default) then Doxygen\n"; - t << "# will interpret the first line (until the first dot) of a JavaDoc-style\n"; - t << "# comment as the brief description. If set to NO, the Javadoc-style will\n"; - t << "# behave just like the Qt-style comments.\n"; + t << "# If the JAVADOC_AUTOBRIEF tag is set to YES (the default) then Doxygen \n"; + t << "# will interpret the first line (until the first dot) of a JavaDoc-style \n"; + t << "# comment as the brief description. If set to NO, the Javadoc-style will \n"; + t << "# behave just like the Qt-style comments. \n"; t << "\n"; } - t << "JAVADOC_AUTOBRIEF = "; + t << "JAVADOC_AUTOBRIEF = "; writeBoolValue(t,Config::autoBriefFlag); t << "\n"; if (!sl) { t << "\n"; - t << "# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented\n"; - t << "# member inherits the documentation from any documented member that it\n"; - t << "# reimplements.\n"; + t << "# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented \n"; + t << "# member inherits the documentation from any documented member that it \n"; + t << "# reimplements. \n"; t << "\n"; } - t << "INHERIT_DOCS = "; + t << "INHERIT_DOCS = "; writeBoolValue(t,Config::inheritDocsFlag); t << "\n"; if (!sl) { t << "\n"; - t << "# If the INLINE_INFO tag is set to YES (the default) then a tag [inline]\n"; - t << "# is inserted in the documentation for inline members.\n"; + t << "# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] \n"; + t << "# is inserted in the documentation for inline members. \n"; t << "\n"; } - t << "INLINE_INFO = "; + t << "INLINE_INFO = "; writeBoolValue(t,Config::inlineInfoFlag); t << "\n"; if (!sl) { t << "\n"; - t << "# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen\n"; + t << "# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen \n"; t << "# will sort the (detailed) documentation of file and class members \n"; - t << "# alphabetically by member name. If set to NO the members will appear in\n"; - t << "# declaration order.\n"; + t << "# alphabetically by member name. If set to NO the members will appear in \n"; + t << "# declaration order. \n"; t << "\n"; } - t << "SORT_MEMBER_DOCS = "; + t << "SORT_MEMBER_DOCS = "; writeBoolValue(t,Config::sortMembersFlag); t << "\n"; if (!sl) { t << "\n"; - t << "# The TAB_SIZE tag can be used to set the number of spaces in a tab.\n"; - t << "# Doxygen uses this value to replace tabs by spaces in code fragments.\n"; + t << "# The TAB_SIZE tag can be used to set the number of spaces in a tab. \n"; + t << "# Doxygen uses this value to replace tabs by spaces in code fragments. \n"; t << "\n"; } - t << "TAB_SIZE = "; + t << "TAB_SIZE = "; writeIntValue(t,Config::tabSize); t << "\n"; if (!sl) { t << "\n"; - t << "# The ENABLE_SECTIONS tag can be used to enable conditional\n"; - t << "# documentation sections, marked by \\if sectionname ... \\endif.\n"; + t << "# The ENABLE_SECTIONS tag can be used to enable conditional \n"; + t << "# documentation sections, marked by \\if sectionname ... \\endif. \n"; t << "\n"; } - t << "ENABLED_SECTIONS = "; + t << "ENABLED_SECTIONS = "; writeStringList(t,Config::sectionFilterList); t << "\n"; if (!sl) @@ -921,10 +1077,10 @@ void writeTemplateConfig(QFile *f,bool sl) t << "# The INPUT tag can be used to specify the files and/or directories that contain \n"; t << "# documented source files. You may enter file names like \"myfile.cpp\" or \n"; t << "# directories like \"/usr/src/myproject\". Separate the files or directories \n"; - t << "# with spaces.\n"; + t << "# with spaces. \n"; t << "\n"; } - t << "INPUT = "; + t << "INPUT = "; writeStringList(t,Config::inputSources); t << "\n"; if (!sl) @@ -933,43 +1089,43 @@ void writeTemplateConfig(QFile *f,bool sl) t << "# If the value of the INPUT tag contains directories, you can use the \n"; t << "# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp \n"; t << "# and *.h) to filter out the source-files in the directories. If left \n"; - t << "# blank all files are included.\n"; + t << "# blank all files are included. \n"; t << "\n"; } - t << "FILE_PATTERNS = "; + t << "FILE_PATTERNS = "; writeStringList(t,Config::filePatternList); t << "\n"; if (!sl) { t << "\n"; - t << "# The RECURSIVE tag can be used to turn specify whether or not subdirectories\n"; - t << "# should be searched for input files as well. Possible values are YES and NO.\n"; - t << "# If left blank NO is used.\n"; + t << "# The RECURSIVE tag can be used to turn specify whether or not subdirectories \n"; + t << "# should be searched for input files as well. Possible values are YES and NO. \n"; + t << "# If left blank NO is used. \n"; t << "\n"; } - t << "RECURSIVE = "; + t << "RECURSIVE = "; writeBoolValue(t,Config::recursiveFlag); t << "\n"; if (!sl) { t << "\n"; - t << "# The EXCLUDE tag can be used to specify files and/or directories that should\n"; + t << "# The EXCLUDE tag can be used to specify files and/or directories that should \n"; t << "# excluded from the INPUT source files. This way you can easily exclude a \n"; - t << "# subdirectory from a directory tree whose root is specified with the INPUT tag.\n"; + t << "# subdirectory from a directory tree whose root is specified with the INPUT tag. \n"; t << "\n"; } - t << "EXCLUDE = "; + t << "EXCLUDE = "; writeStringList(t,Config::excludeSources); t << "\n"; if (!sl) { t << "\n"; - t << "# If the value of the INPUT tag contains directories, you can use the\n"; - t << "# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude\n"; - t << "# certain files from those directories.\n"; + t << "# If the value of the INPUT tag contains directories, you can use the \n"; + t << "# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude \n"; + t << "# certain files from those directories. \n"; t << "\n"; } - t << "EXCLUDE_PATTERNS = "; + t << "EXCLUDE_PATTERNS = "; writeStringList(t,Config::excludePatternList); t << "\n"; if (!sl) @@ -977,48 +1133,47 @@ void writeTemplateConfig(QFile *f,bool sl) t << "\n"; t << "# The EXAMPLE_PATH tag can be used to specify one or more files or \n"; t << "# directories that contain example code fragments that are included (see \n"; - t << "# the \\include command).\n"; + t << "# the \\include command). \n"; t << "\n"; } - t << "EXAMPLE_PATH = "; + t << "EXAMPLE_PATH = "; writeStringList(t,Config::examplePath); t << "\n"; if (!sl) { t << "\n"; - t << "# If the value of the EXAMPLE_PATH tag contains directories, you can use the\n"; + t << "# If the value of the EXAMPLE_PATH tag contains directories, you can use the \n"; t << "# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp \n"; t << "# and *.h) to filter out the source-files in the directories. If left \n"; - t << "# blank all files are included.\n"; + t << "# blank all files are included. \n"; t << "\n"; } - t << "EXAMPLE_PATTERNS = "; + t << "EXAMPLE_PATTERNS = "; writeStringList(t,Config::examplePatternList); t << "\n"; - if (!sl) { t << "\n"; t << "# The IMAGE_PATH tag can be used to specify one or more files or \n"; t << "# directories that contain image that are included in the documentation (see \n"; - t << "# the \\image command).\n"; + t << "# the \\image command). \n"; t << "\n"; } - t << "IMAGE_PATH = "; + t << "IMAGE_PATH = "; writeStringList(t,Config::imagePath); t << "\n"; if (!sl) { t << "\n"; - t << "# The INPUT_FILTER tag can be used to specify a program that doxygen should\n"; + t << "# The INPUT_FILTER tag can be used to specify a program that doxygen should \n"; t << "# invoke to filter for each input file. Doxygen will invoke the filter program \n"; - t << "# by executing (via popen()) the command <filter> <input-file>, where <filter>\n"; - t << "# is the value of the INPUT_FILTER tag, and <input-file> is the name of an\n"; - t << "# input file. Doxygen will then use the output that the filter program writes\n"; - t << "# to standard output.\n"; + t << "# by executing (via popen()) the command <filter> <input-file>, where <filter> \n"; + t << "# is the value of the INPUT_FILTER tag, and <input-file> is the name of an \n"; + t << "# input file. Doxygen will then use the output that the filter program writes \n"; + t << "# to standard output. \n"; t << "\n"; } - t << "INPUT_FILTER = "; + t << "INPUT_FILTER = "; writeStringValue(t,Config::inputFilter); t << "\n"; if (!sl) @@ -1026,126 +1181,126 @@ void writeTemplateConfig(QFile *f,bool sl) t << "\n"; } t << "#---------------------------------------------------------------------------\n"; - t << "# configuration options related to the HTML output\n"; + t << "# configuration options related to the alphabetical class index\n"; t << "#---------------------------------------------------------------------------\n"; if (!sl) { t << "\n"; - t << "# If the GENERATE_HTML tag is set to YES (the default) Doxygen will\n"; - t << "# generate HTML output\n"; + t << "# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index \n"; + t << "# of all compounds will be generated. Enable this if the project \n"; + t << "# contains a lot of classes, structs, unions or interfaces. \n"; t << "\n"; } - t << "GENERATE_HTML = "; - writeBoolValue(t,Config::generateHtml); + t << "ALPHABETICAL_INDEX = "; + writeBoolValue(t,Config::alphaIndexFlag); t << "\n"; if (!sl) { t << "\n"; - t << "# The HTML_OUTPUT tag is used to specify where the HTML docs will be put.\n"; - t << "# If a relative path is entered the value of OUTPUT_DIRECTORY will be\n"; - t << "# put in front of it. If left blank `html' will be used as the default path.\n"; + t << "# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then \n"; + t << "# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns \n"; + t << "# in which this list will be split (can be a number in the range [1..20]) \n"; t << "\n"; } - t << "HTML_OUTPUT = "; - writeStringValue(t,Config::htmlOutputDir); + t << "COLS_IN_ALPHA_INDEX = "; + writeIntValue(t,Config::colsInAlphaIndex); t << "\n"; if (!sl) { t << "\n"; - t << "# The HTML_HEADER tag can be used to specify a personal HTML header for \n"; - t << "# each generated HTML page. If it is left blank doxygen will generate a \n"; - t << "# standard header.\n"; + t << "# In case all classes in a project start with a common prefix, all \n"; + t << "# classes will be put under the same header in the alphabetical index. \n"; + t << "# The IGNORE_PREFIX tag can be used to specify one or more prefixes that \n"; + t << "# should be ignored while generating the index headers. \n"; t << "\n"; } - t << "HTML_HEADER = "; - writeStringValue(t,Config::headerFile); + t << "IGNORE_PREFIX = "; + writeStringList(t,Config::ignorePrefixList); t << "\n"; if (!sl) { t << "\n"; - t << "# The HTML_FOOTER tag can be used to specify a personal HTML footer for \n"; - t << "# each generated HTML page. If it is left blank doxygen will generate a \n"; - t << "# standard footer.\n"; - t << "\n"; } - t << "HTML_FOOTER = "; - writeStringValue(t,Config::footerFile); - t << "\n"; + t << "#---------------------------------------------------------------------------\n"; + t << "# configuration options related to the HTML output\n"; + t << "#---------------------------------------------------------------------------\n"; if (!sl) { t << "\n"; - t << "# The HTML_STYLESHEET tag can be used to specify a user defined cascading\n"; - t << "# style sheet that is used by each HTML page. It can be used to \n"; - t << "# fine-tune the look of the HTML output. If the tag is left blank doxygen\n"; - t << "# will generate a default style sheet\n"; + t << "# If the GENERATE_HTML tag is set to YES (the default) Doxygen will \n"; + t << "# generate HTML output. \n"; t << "\n"; } - t << "HTML_STYLESHEET = "; - writeStringValue(t,Config::htmlStyleSheet); + t << "GENERATE_HTML = "; + writeBoolValue(t,Config::generateHtml); t << "\n"; if (!sl) { t << "\n"; - t << "# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes,\n"; - t << "# files or namespaces will be aligned in HTML using tables. If set to\n"; - t << "# NO a bullet list will be used.\n"; + t << "# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. \n"; + t << "# If a relative path is entered the value of OUTPUT_DIRECTORY will be \n"; + t << "# put in front of it. If left blank `html' will be used as the default path. \n"; t << "\n"; } - t << "HTML_ALIGN_MEMBERS = "; - writeBoolValue(t,Config::htmlAlignMemberFlag); + t << "HTML_OUTPUT = "; + writeStringValue(t,Config::htmlOutputDir); t << "\n"; if (!sl) { t << "\n"; - t << "# If the GENERATE_HTMLHELP tag is set to YES, additional index files\n"; - t << "# will be generated that can be used as input for tools like the\n"; - t << "# Microsoft HTML help workshop to generate a compressed HTML help file (.chm)\n"; - t << "# of the generated HTML documentation.\n"; + t << "# The HTML_HEADER tag can be used to specify a personal HTML header for \n"; + t << "# each generated HTML page. If it is left blank doxygen will generate a \n"; + t << "# standard header.\n"; t << "\n"; } - t << "GENERATE_HTMLHELP = "; - writeBoolValue(t,Config::htmlHelpFlag); + t << "HTML_HEADER = "; + writeStringValue(t,Config::headerFile); t << "\n"; if (!sl) { t << "\n"; + t << "# The HTML_FOOTER tag can be used to specify a personal HTML footer for \n"; + t << "# each generated HTML page. If it is left blank doxygen will generate a \n"; + t << "# standard footer.\n"; + t << "\n"; } - t << "#---------------------------------------------------------------------------\n"; - t << "# configuration options related to the alphabetical class index\n"; - t << "#---------------------------------------------------------------------------\n"; + t << "HTML_FOOTER = "; + writeStringValue(t,Config::footerFile); + t << "\n"; if (!sl) { t << "\n"; - t << "# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index\n"; - t << "# of all compounds will be generated. Enable this if the project\n"; - t << "# contains a lot of classes, structs, unions or interfaces.\n"; + t << "# The HTML_STYLESHEET tag can be used to specify a user defined cascading \n"; + t << "# style sheet that is used by each HTML page. It can be used to \n"; + t << "# fine-tune the look of the HTML output. If the tag is left blank doxygen \n"; + t << "# will generate a default style sheet \n"; t << "\n"; } - t << "ALPHABETICAL_INDEX = "; - writeBoolValue(t,Config::alphaIndexFlag); + t << "HTML_STYLESHEET = "; + writeStringValue(t,Config::htmlStyleSheet); t << "\n"; if (!sl) { t << "\n"; - t << "# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then\n"; - t << "# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns\n"; - t << "# in which this list will be split (can be a number in the range [1..20])\n"; + t << "# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, \n"; + t << "# files or namespaces will be aligned in HTML using tables. If set to \n"; + t << "# NO a bullet list will be used. \n"; t << "\n"; } - t << "COLS_IN_ALPHA_INDEX = "; - writeIntValue(t,Config::colsInAlphaIndex); + t << "HTML_ALIGN_MEMBERS = "; + writeBoolValue(t,Config::htmlAlignMemberFlag); t << "\n"; if (!sl) { t << "\n"; - t << "# In case all classes in a project start with a common prefix, all\n"; - t << "# classes will be put under the same header in the alphabetical index.\n"; - t << "# The IGNORE_PREFIX tag can be used to specify one or more prefixes that\n"; - t << "# should be ignored while generating the index headers.\n"; + t << "# If the GENERATE_HTMLHELP tag is set to YES, additional index files \n"; + t << "# will be generated that can be used as input for tools like the \n"; + t << "# Microsoft HTML help workshop to generate a compressed HTML help file (.chm) \n"; + t << "# of the generated HTML documentation. \n"; t << "\n"; } - t << "IGNORE_PREFIX = "; - writeStringList(t,Config::ignorePrefixList); + t << "GENERATE_HTMLHELP = "; + writeBoolValue(t,Config::htmlHelpFlag); t << "\n"; if (!sl) { @@ -1157,179 +1312,183 @@ void writeTemplateConfig(QFile *f,bool sl) if (!sl) { t << "\n"; - t << "# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will\n"; - t << "# generate Latex output.\n"; + t << "# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will \n"; + t << "# generate Latex output. \n"; t << "\n"; } - t << "GENERATE_LATEX = "; + t << "GENERATE_LATEX = "; writeBoolValue(t,Config::generateLatex); t << "\n"; if (!sl) { t << "\n"; - t << "# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put.\n"; - t << "# If a relative path is entered the value of OUTPUT_DIRECTORY will be\n"; - t << "# put in front of it. If left blank `latex' will be used as the default path.\n"; + t << "# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. \n"; + t << "# If a relative path is entered the value of OUTPUT_DIRECTORY will be \n"; + t << "# put in front of it. If left blank `latex' will be used as the default path. \n"; t << "\n"; } - t << "LATEX_OUTPUT = "; + t << "LATEX_OUTPUT = "; writeStringValue(t,Config::latexOutputDir); t << "\n"; if (!sl) { t << "\n"; - t << "# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact\n"; - t << "# LaTeX documents. This may be useful for small projects and may help to\n"; - t << "# save some trees in general.\n"; + t << "# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact \n"; + t << "# LaTeX documents. This may be useful for small projects and may help to \n"; + t << "# save some trees in general. \n"; t << "\n"; } - t << "COMPACT_LATEX = "; + t << "COMPACT_LATEX = "; writeBoolValue(t,Config::compactLatexFlag); t << "\n"; if (!sl) { t << "\n"; - t << "# The PAPER_TYPE tag can be used to set the paper type that is used\n"; + t << "# The PAPER_TYPE tag can be used to set the paper type that is used \n"; t << "# by the printer. Possible values are: a4, a4wide, letter, legal and \n"; - t << "# executive. If left blank a4wide will be used.\n"; + t << "# executive. If left blank a4wide will be used. \n"; t << "\n"; } - t << "PAPER_TYPE = "; + t << "PAPER_TYPE = "; writeStringValue(t,Config::paperType); t << "\n"; if (!sl) { t << "\n"; - t << "# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX\n"; - t << "# packages that should be included in the LaTeX output.\n"; + t << "# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX \n"; + t << "# packages that should be included in the LaTeX output. \n"; t << "\n"; } - t << "EXTRA_PACKAGES = "; + t << "EXTRA_PACKAGES = "; writeStringList(t,Config::extraPackageList); t << "\n"; if (!sl) { t << "\n"; t << "# The LATEX_HEADER tag can be used to specify a personal LaTeX header for \n"; - t << "# the generated latex document. The header should contain everything until\n"; + t << "# the generated latex document. The header should contain everything until \n"; t << "# the first chapter. If it is left blank doxygen will generate a \n"; - t << "# standard header. Notice: only use this tag if you know what you are doing!\n"; + t << "# standard header. Notice: only use this tag if you know what you are doing! \n"; t << "\n"; } - t << "LATEX_HEADER = "; + t << "LATEX_HEADER = "; writeStringValue(t,Config::latexHeaderFile); t << "\n"; if (!sl) { t << "\n"; - t << "# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated\n"; - t << "# is prepared for conversion to pdf (using ps2pdf). The pdf file will\n"; - t << "# contain links (just like the HTML output) instead of page references\n"; - t << "# This makes the output suitable for online browsing using a pdf viewer.\n"; + t << "# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated \n"; + t << "# is prepared for conversion to pdf (using ps2pdf). The pdf file will \n"; + t << "# contain links (just like the HTML output) instead of page references \n"; + t << "# This makes the output suitable for online browsing using a pdf viewer. \n"; t << "\n"; } - t << "PDF_HYPERLINKS = "; + t << "PDF_HYPERLINKS = "; writeBoolValue(t,Config::pdfHyperFlag); t << "\n"; if (!sl) { t << "\n"; + t << "# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\\\batchmode. \n"; + t << "# command to the generated LaTeX files. This will instruct LaTeX to keep \n"; + t << "# running if errors occur, instead of asking the user for help. \n"; + t << "# This option is also used when generating formulas in HTML. \n"; + t << "\n"; } + t << "LATEX_BATCHMODE = "; + writeBoolValue(t,Config::latexBatchModeFlag); + t << "\n"; if (!sl) { t << "\n"; - t << "# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode.\n"; - t << "# command to the generated LaTeX files. This will instruct LaTeX to keep\n"; - t << "# running if errors occur, instead of asking the user for help.\n"; - t << "# This option is also used when generating formulas in HTML.\n"; } - t << "LATEX_BATCHMODE = "; - writeBoolValue(t,Config::latexBatchModeFlag); - t << "\n"; t << "#---------------------------------------------------------------------------\n"; t << "# configuration options related to the RTF output\n"; t << "#---------------------------------------------------------------------------\n"; if (!sl) { t << "\n"; - t << "# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output\n"; - t << "# For now this is experimental and is disabled by default. The RTF output\n"; - t << "# is optimised for Word 97 and may not look too pretty with other readers\n"; + t << "# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output \n"; + t << "# For now this is experimental and is disabled by default. The RTF output \n"; + t << "# is optimised for Word 97 and may not look too pretty with other readers \n"; t << "# or editors.\n"; t << "\n"; } - t << "GENERATE_RTF = "; + t << "GENERATE_RTF = "; writeBoolValue(t,Config::generateRTF); t << "\n"; if (!sl) { t << "\n"; - t << "# The RTF_OUTPUT tag is used to specify where the RTF docs will be put.\n"; - t << "# If a relative path is entered the value of OUTPUT_DIRECTORY will be\n"; - t << "# put in front of it. If left blank `rtf' will be used as the default path.\n"; + t << "# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. \n"; + t << "# If a relative path is entered the value of OUTPUT_DIRECTORY will be \n"; + t << "# put in front of it. If left blank `rtf' will be used as the default path. \n"; t << "\n"; } - t << "RTF_OUTPUT = "; + t << "RTF_OUTPUT = "; writeStringValue(t,Config::rtfOutputDir); t << "\n"; if (!sl) { t << "\n"; - t << "# If the COMPACT_RTF tag is set to YES Doxygen generates more compact\n"; - t << "# RTF documents. This may be useful for small projects and may help to\n"; - t << "# save some trees in general.\n"; + t << "# If the COMPACT_RTF tag is set to YES Doxygen generates more compact \n"; + t << "# RTF documents. This may be useful for small projects and may help to \n"; + t << "# save some trees in general. \n"; t << "\n"; } - t << "COMPACT_RTF = "; + t << "COMPACT_RTF = "; writeBoolValue(t,Config::compactRTFFlag); t << "\n"; if (!sl) { t << "\n"; - t << "# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated\n"; - t << "# will contain hyperlink fields. The RTF file will\n"; - t << "# contain links (just like the HTML output) instead of page references.\n"; - t << "# This makes the output suitable for online browsing using a WORD or other.\n"; - t << "# programs which support those fields.\n"; - t << "# Note: wordpad (write) and others do not support links.\n"; + t << "# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated \n"; + t << "# will contain hyperlink fields. The RTF file will \n"; + t << "# contain links (just like the HTML output) instead of page references. \n"; + t << "# This makes the output suitable for online browsing using a WORD or other. \n"; + t << "# programs which support those fields. \n"; + t << "# Note: wordpad (write) and others do not support links. \n"; t << "\n"; } - t << "RTF_HYPERLINKS = "; + t << "RTF_HYPERLINKS = "; writeBoolValue(t,Config::rtfHyperFlag); t << "\n"; - + if (!sl) + { + t << "\n"; + } t << "#---------------------------------------------------------------------------\n"; t << "# configuration options related to the man page output\n"; t << "#---------------------------------------------------------------------------\n"; if (!sl) { t << "\n"; - t << "# If the GENERATE_MAN tag is set to YES (the default) Doxygen will\n"; - t << "# generate man pages\n"; + t << "# If the GENERATE_MAN tag is set to YES (the default) Doxygen will \n"; + t << "# generate man pages \n"; t << "\n"; } - t << "GENERATE_MAN = "; + t << "GENERATE_MAN = "; writeBoolValue(t,Config::generateMan); t << "\n"; if (!sl) { t << "\n"; - t << "# The MAN_OUTPUT tag is used to specify where the man pages will be put.\n"; - t << "# If a relative path is entered the value of OUTPUT_DIRECTORY will be\n"; - t << "# put in front of it. If left blank `man' will be used as the default path.\n"; + t << "# The MAN_OUTPUT tag is used to specify where the man pages will be put. \n"; + t << "# If a relative path is entered the value of OUTPUT_DIRECTORY will be \n"; + t << "# put in front of it. If left blank `man' will be used as the default path. \n"; t << "\n"; } - t << "MAN_OUTPUT = "; + t << "MAN_OUTPUT = "; writeStringValue(t,Config::manOutputDir); t << "\n"; if (!sl) { t << "\n"; - t << "# The MAN_EXTENSION tag determines the extension that is added to\n"; - t << "# the generated man pages (default is the subroutine's section .3)\n"; + t << "# The MAN_EXTENSION tag determines the extension that is added to \n"; + t << "# the generated man pages (default is the subroutine's section .3) \n"; t << "\n"; } - t << "MAN_EXTENSION = "; + t << "MAN_EXTENSION = "; writeStringValue(t,Config::manExtension); t << "\n"; if (!sl) @@ -1337,14 +1496,14 @@ void writeTemplateConfig(QFile *f,bool sl) t << "\n"; } t << "#---------------------------------------------------------------------------\n"; - t << "# Configuration options related to the preprocessor \n"; + t << "# Configuration options related to the preprocessor \n"; t << "#---------------------------------------------------------------------------\n"; if (!sl) { t << "\n"; - t << "# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will\n"; - t << "# evaluate all C-preprocessor directives found in the sources and include\n"; - t << "# files.\n"; + t << "# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will \n"; + t << "# evaluate all C-preprocessor directives found in the sources and include \n"; + t << "# files. \n"; t << "\n"; } t << "ENABLE_PREPROCESSING = "; @@ -1353,57 +1512,57 @@ void writeTemplateConfig(QFile *f,bool sl) if (!sl) { 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 << "# compilation will be performed.\n"; + t << "# compilation will be performed. \n"; t << "\n"; } - t << "MACRO_EXPANSION = "; + t << "MACRO_EXPANSION = "; writeBoolValue(t,Config::macroExpansionFlag); 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 << "# 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"; } - t << "SEARCH_INCLUDES = "; + t << "SEARCH_INCLUDES = "; writeBoolValue(t,Config::searchIncludeFlag); t << "\n"; if (!sl) { t << "\n"; - t << "# The INCLUDE_PATH tag can be used to specify one or more directories that\n"; - t << "# contain include files that are not input files but should be processed by\n"; - t << "# the preprocessor.\n" ; + t << "# The INCLUDE_PATH tag can be used to specify one or more directories that \n"; + t << "# contain include files that are not input files but should be processed by \n"; + t << "# the preprocessor. \n"; t << "\n"; } - t << "INCLUDE_PATH = "; + t << "INCLUDE_PATH = "; writeStringList(t,Config::includePath); t << "\n"; if (!sl) { t << "\n"; - t << "# The PREDEFINED tag can be used to specify one or more macro names that\n"; - t << "# are defined before the preprocessor is started (similar to the -D option of\n"; - t << "# gcc). The argument of the tag is a list of macros of the form: name\n"; + t << "# The PREDEFINED tag can be used to specify one or more macro names that \n"; + t << "# are defined before the preprocessor is started (similar to the -D option of \n"; + t << "# gcc). The argument of the tag is a list of macros of the form: name \n"; t << "# or name=definition (no spaces). If the definition and the = are \n"; - t << "# omitted =1 is assumed.\n"; + t << "# omitted =1 is assumed. \n"; t << "\n"; } - t << "PREDEFINED = "; + t << "PREDEFINED = "; writeStringList(t,Config::predefined); t << "\n"; 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 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 << "\n"; } - t << "EXPAND_ONLY_PREDEF = "; + t << "EXPAND_ONLY_PREDEF = "; writeBoolValue(t,Config::onlyPredefinedFlag); t << "\n"; if (!sl) @@ -1411,7 +1570,7 @@ void writeTemplateConfig(QFile *f,bool sl) t << "\n"; } t << "#---------------------------------------------------------------------------\n"; - t << "# Configuration options related to external references \n"; + t << "# Configuration::addtions related to external references \n"; t << "#---------------------------------------------------------------------------\n"; if (!sl) { @@ -1419,38 +1578,38 @@ void writeTemplateConfig(QFile *f,bool sl) t << "# The TAGFILES tag can be used to specify one or more tagfiles. \n"; t << "\n"; } - t << "TAGFILES = "; + t << "TAGFILES = "; writeStringList(t,Config::tagFileList); t << "\n"; if (!sl) { t << "\n"; - t << "# When a file name is specified after GENERATE_TAGFILE, doxygen will create\n"; - t << "# a tag file that is based on the input files it reads.\n"; + t << "# When a file name is specified after GENERATE_TAGFILE, doxygen will create \n"; + t << "# a tag file that is based on the input files it reads. \n"; t << "\n"; } - t << "GENERATE_TAGFILE = "; + t << "GENERATE_TAGFILE = "; writeStringValue(t,Config::genTagFile); t << "\n"; if (!sl) { t << "\n"; - t << "# If the ALLEXTERNALS tag is set to YES all external classes will be listed\n"; - t << "# in the class index. If set to NO only the inherited external classes\n"; - t << "# will be listed.\n"; + t << "# If the ALLEXTERNALS tag is set to YES all external classes will be listed \n"; + t << "# in the class index. If set to NO only the inherited external classes \n"; + t << "# will be listed. \n"; t << "\n"; } - t << "ALLEXTERNALS = "; + t << "ALLEXTERNALS = "; writeBoolValue(t,Config::allExtFlag); t << "\n"; if (!sl) { t << "\n"; - t << "# The PERL_PATH should be the absolute path and name of the perl script\n"; - t << "# interpreter (i.e. the result of `which perl').\n"; + t << "# The PERL_PATH should be the absolute path and name of the perl script \n"; + t << "# interpreter (i.e. the result of `which perl'). \n"; t << "\n"; } - t << "PERL_PATH = "; + t << "PERL_PATH = "; writeStringValue(t,Config::perlPath); t << "\n"; if (!sl) @@ -1458,52 +1617,52 @@ void writeTemplateConfig(QFile *f,bool sl) t << "\n"; } t << "#---------------------------------------------------------------------------\n"; - t << "# Configuration options related to the dot tool \n"; + t << "# Configuration options related to the dot tool \n"; t << "#---------------------------------------------------------------------------\n"; if (!sl) { t << "\n"; - t << "# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is\n"; - t << "# available from the path. This tool is part of Graphviz, a graph visualization\n"; - t << "# toolkit from AT&T and Lucent Bell Labs. The other options in this section\n"; - t << "# have no effect if this option is set to NO (the default)\n"; + t << "# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is \n"; + t << "# available from the path. This tool is part of Graphviz, a graph visualization \n"; + t << "# toolkit from AT&T and Lucent Bell Labs. The other options in this section \n"; + t << "# have no effect if this option is set to NO (the default) \n"; t << "\n"; } - t << "HAVE_DOT = "; + t << "HAVE_DOT = "; writeBoolValue(t,Config::haveDotFlag); t << "\n"; if (!sl) { t << "\n"; - t << "# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen\n"; - t << "# will generate a graph for each documented class showing the direct and\n"; - t << "# indirect implementation dependencies (inheritance, containment, and\n"; - t << "# class references variables) of the class with other documented classes.\n"; + t << "# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen \n"; + t << "# will generate a graph for each documented class showing the direct and \n"; + t << "# indirect implementation dependencies (inheritance, containment, and \n"; + t << "# class references variables) of the class with other documented classes. \n"; t << "\n"; } - t << "COLLABORATION_GRAPH = "; + t << "COLLABORATION_GRAPH = "; writeBoolValue(t,Config::collGraphFlag); t << "\n"; if (!sl) { t << "\n"; - t << "# If the ENABLE_PREPROCESSING, INCLUDE_GRAPH, and HAVE_DOT tags are set to\n"; - t << "# YES then doxygen will generate a graph for each documented file showing\n"; + t << "# If the ENABLE_PREPROCESSING, INCLUDE_GRAPH, and HAVE_DOT tags are set to \n"; + t << "# YES then doxygen will generate a graph for each documented file showing \n"; t << "# the direct and indirect include dependencies of the file with other \n"; - t << "# documented files.\n"; + t << "# documented files. \n"; t << "\n"; } - t << "INCLUDE_GRAPH = "; + t << "INCLUDE_GRAPH = "; writeBoolValue(t,Config::includeGraphFlag); t << "\n"; if (!sl) { t << "\n"; - t << "# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen\n"; - t << "# will graphical hierarchy of all classes instead of a textual one.\n"; + t << "# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen \n"; + t << "# will graphical hierarchy of all classes instead of a textual one. \n"; t << "\n"; } - t << "GRAPHICAL_HIERARCHY = "; + t << "GRAPHICAL_HIERARCHY = "; writeBoolValue(t,Config::gfxHierarchyFlag); t << "\n"; if (!sl) @@ -1511,81 +1670,81 @@ void writeTemplateConfig(QFile *f,bool sl) t << "\n"; } t << "#---------------------------------------------------------------------------\n"; - t << "# Configuration options related to the search engine \n"; + t << "# Configuration::addtions related to the search engine \n"; t << "#---------------------------------------------------------------------------\n"; if (!sl) { t << "\n"; t << "# The SEARCHENGINE tag specifies whether or not a search engine should be \n"; - t << "# used. If set to NO the values of all tags below this one will be ignored.\n"; + t << "# used. If set to NO the values of all tags below this one will be ignored. \n"; t << "\n"; } - t << "SEARCHENGINE = "; + t << "SEARCHENGINE = "; writeBoolValue(t,Config::searchEngineFlag); t << "\n"; if (!sl) { t << "\n"; - t << "# The CGI_NAME tag should be the name of the CGI script that\n"; - t << "# starts the search engine (doxysearch) with the correct parameters.\n"; - t << "# A script with this name will be generated by doxygen.\n"; + t << "# The CGI_NAME tag should be the name of the CGI script that \n"; + t << "# starts the search engine (doxysearch) with the correct parameters. \n"; + t << "# A script with this name will be generated by doxygen. \n"; t << "\n"; } - t << "CGI_NAME = "; + t << "CGI_NAME = "; writeStringValue(t,Config::cgiName); t << "\n"; if (!sl) { t << "\n"; - t << "# The CGI_URL tag should be the absolute URL to the directory where the\n"; + t << "# The CGI_URL tag should be the absolute URL to the directory where the \n"; t << "# cgi binaries are located. See the documentation of your http daemon for \n"; - t << "# details.\n"; + t << "# details. \n"; t << "\n"; } - t << "CGI_URL = "; + t << "CGI_URL = "; writeStringValue(t,Config::cgiURL); t << "\n"; if (!sl) { t << "\n"; - t << "# The DOC_URL tag should be the absolute URL to the directory where the\n"; + t << "# The DOC_URL tag should be the absolute URL to the directory where the \n"; t << "# documentation is located. If left blank the absolute path to the \n"; - t << "# documentation, with file:// prepended to it, will be used.\n"; + t << "# documentation, with file:// prepended to it, will be used. \n"; t << "\n"; } - t << "DOC_URL = "; + t << "DOC_URL = "; writeStringValue(t,Config::docURL); t << "\n"; if (!sl) { t << "\n"; - t << "# The DOC_ABSPATH tag should be the absolute path to the directory where the\n"; - t << "# documentation is located. If left blank the directory on the local machine\n"; - t << "# will be used.\n"; + t << "# The DOC_ABSPATH tag should be the absolute path to the directory where the \n"; + t << "# documentation is located. If left blank the directory on the local machine \n"; + t << "# will be used. \n"; t << "\n"; } - t << "DOC_ABSPATH = "; + t << "DOC_ABSPATH = "; writeStringValue(t,Config::docAbsPath); t << "\n"; if (!sl) { t << "\n"; - t << "# The BIN_ABSPATH tag must point to the directory where the doxysearch binary\n"; - t << "# is installed.\n"; + t << "# The BIN_ABSPATH tag must point to the directory where the doxysearch binary \n"; + t << "# is installed. \n"; t << "\n"; } - t << "BIN_ABSPATH = "; + t << "BIN_ABSPATH = "; writeStringValue(t,Config::binAbsPath); t << "\n"; if (!sl) { t << "\n"; t << "# The EXT_DOC_PATHS tag can be used to specify one or more paths to \n"; - t << "# documentation generated for other projects. This allows doxysearch to search\n"; - t << "# the documentation for these projects as well.\n"; + t << "# documentation generated for other projects. This allows doxysearch to search \n"; + t << "# the documentation for these projects as well. \n"; t << "\n"; } - t << "EXT_DOC_PATHS = "; + t << "EXT_DOC_PATHS = "; writeStringList(t,Config::extDocPathList); t << "\n"; } @@ -1714,44 +1873,43 @@ static void substEnvVarsInStrList(QStrList &sl) void substituteEnvironmentVars() { - substEnvVarsInString( Config::projectName ); - substEnvVarsInString( Config::projectNumber ); - substEnvVarsInString( Config::outputDir ); - substEnvVarsInString( Config::htmlOutputDir ); - substEnvVarsInString( Config::latexOutputDir ); - substEnvVarsInString( Config::manOutputDir ); - substEnvVarsInString( Config::rtfOutputDir ); + substEnvVarsInString( Config::projectName ); + substEnvVarsInString( Config::projectNumber ); + substEnvVarsInString( Config::outputDir ); substEnvVarsInString( Config::outputLanguage ); - substEnvVarsInString( Config::headerFile ); - substEnvVarsInString( Config::latexHeaderFile ); - substEnvVarsInString( Config::footerFile ); - substEnvVarsInString( Config::cgiName ); - substEnvVarsInString( Config::cgiURL ); - substEnvVarsInString( Config::docURL ); - substEnvVarsInString( Config::binAbsPath ); - substEnvVarsInString( Config::docAbsPath ); - substEnvVarsInString( Config::perlPath ); - substEnvVarsInString( Config::genTagFile ); - substEnvVarsInString( Config::inputFilter ); - substEnvVarsInString( Config::paperType ); - substEnvVarsInString( Config::manExtension ); - substEnvVarsInString( Config::htmlStyleSheet ); - substEnvVarsInStrList( Config::ignorePrefixList ); - substEnvVarsInStrList( Config::includePath ); - substEnvVarsInStrList( Config::examplePath ); - substEnvVarsInStrList( Config::imagePath ); - substEnvVarsInStrList( Config::inputSources ); + substEnvVarsInStrList( Config::stripFromPath ); + substEnvVarsInStrList( Config::sectionFilterList ); + substEnvVarsInStrList( Config::inputSources ); + substEnvVarsInStrList( Config::filePatternList ); substEnvVarsInStrList( Config::excludeSources ); - substEnvVarsInStrList( Config::filePatternList ); substEnvVarsInStrList( Config::excludePatternList ); + substEnvVarsInStrList( Config::examplePath ); substEnvVarsInStrList( Config::examplePatternList ); - substEnvVarsInStrList( Config::imagePatternList ); - substEnvVarsInStrList( Config::tagFileList ); - substEnvVarsInStrList( Config::extDocPathList ); - substEnvVarsInStrList( Config::predefined ); + substEnvVarsInStrList( Config::imagePath ); + substEnvVarsInString( Config::inputFilter ); + substEnvVarsInStrList( Config::ignorePrefixList ); + substEnvVarsInString( Config::htmlOutputDir ); + substEnvVarsInString( Config::headerFile ); + substEnvVarsInString( Config::footerFile ); + substEnvVarsInString( Config::htmlStyleSheet ); + substEnvVarsInString( Config::latexOutputDir ); + substEnvVarsInString( Config::paperType ); substEnvVarsInStrList( Config::extraPackageList ); - substEnvVarsInStrList( Config::stripFromPath ); - substEnvVarsInStrList( Config::sectionFilterList ); + substEnvVarsInString( Config::latexHeaderFile ); + substEnvVarsInString( Config::rtfOutputDir ); + substEnvVarsInString( Config::manOutputDir ); + substEnvVarsInString( Config::manExtension ); + substEnvVarsInStrList( Config::includePath ); + substEnvVarsInStrList( Config::predefined ); + substEnvVarsInStrList( Config::tagFileList ); + substEnvVarsInString( Config::genTagFile ); + substEnvVarsInString( Config::perlPath ); + substEnvVarsInString( Config::cgiName ); + substEnvVarsInString( Config::cgiURL ); + substEnvVarsInString( Config::docURL ); + substEnvVarsInString( Config::docAbsPath ); + substEnvVarsInString( Config::binAbsPath ); + substEnvVarsInStrList( Config::extDocPathList ); } void checkConfig() @@ -1761,6 +1919,7 @@ void checkConfig() // projectName[0]=toupper(projectName[0]); //} + // set default man page extension if non is given by the user if (Config::manExtension.isEmpty()) { @@ -1965,10 +2124,10 @@ void checkConfig() } // add default pattern if needed - if (Config::imagePatternList.count()==0) - { - Config::imagePatternList.append("*"); - } + //if (Config::imagePatternList.count()==0) + //{ + // Config::imagePatternList.append("*"); + //} // more checks needed if and only if the search engine is enabled. if (Config::searchEngineFlag) diff --git a/src/dot.cpp b/src/dot.cpp index 3c59fd6..f4f5fbc 100644 --- a/src/dot.cpp +++ b/src/dot.cpp @@ -166,6 +166,18 @@ class DotNodeList : public QList<DotNode> //-------------------------------------------------------------------- + +/*! helper function that deletes all nodes in a connected graph, given + * one of the graph's nodes + */ +static void deleteNodes(DotNode *node) +{ + static DotNodeList deletedNodes; + deletedNodes.setAutoDelete(TRUE); + node->deleteNode(deletedNodes); // collect nodes to be deleted. + deletedNodes.clear(); // actually remove the nodes. +} + DotNode::DotNode(int n,const char *lab,const char *url,int distance,bool isRoot) : m_number(n), m_label(lab), m_url(url), m_isRoot(isRoot) { @@ -237,39 +249,32 @@ void DotNode::removeParent(DotNode *n) if (m_parents) m_parents->remove(n); } -void DotNode::deleteNode() +void DotNode::deleteNode(DotNodeList &deletedList) { if (m_deleted) return; // avoid recursive loops in case the graph has cycles m_deleted=TRUE; - if (m_parents!=0) + if (m_parents!=0) // delete all parent nodes of this node { QListIterator<DotNode> dnlip(*m_parents); DotNode *pn; for (dnlip.toFirst();(pn=dnlip.current());++dnlip) { - pn->removeChild(this); - if (!pn->m_deleted) - { - pn->deleteNode(); - } - // do not access pn after this! + //pn->removeChild(this); + pn->deleteNode(deletedList); } } - if (m_children!=0) + if (m_children!=0) // delete all child nodes of this node { QListIterator<DotNode> dnlic(*m_children); DotNode *cn; for (dnlic.toFirst();(cn=dnlic.current());++dnlic) { - cn->removeParent(this); - if (!cn->m_deleted) - { - cn->deleteNode(); - } - // do not access cn after this! + //cn->removeParent(this); + cn->deleteNode(deletedList); } } - delete this; + // add this node to the list of deleted nodes. + deletedList.append(this); } void DotNode::writeBox(QTextStream &t,bool hasNonReachableChildren) @@ -684,7 +689,7 @@ DotGfxHierarchyTable::~DotGfxHierarchyTable() { DotNode *oldNode=n; n=m_rootNodes->next(); - oldNode->deleteNode(); + deleteNodes(oldNode); } delete m_rootNodes; delete m_usedNodes; @@ -792,7 +797,7 @@ bool DotGfxUsageGraph::isTrivial() const DotGfxUsageGraph::~DotGfxUsageGraph() { - m_startNode->deleteNode(); + deleteNodes(m_startNode); delete m_usedNodes; } @@ -1011,7 +1016,7 @@ DotInclDepGraph::DotInclDepGraph(FileDef *fd) DotInclDepGraph::~DotInclDepGraph() { - m_startNode->deleteNode(); + deleteNodes(m_startNode); delete m_usedNodes; } @@ -56,7 +56,7 @@ class DotNode ); void setDistance(int distance); void addParent(DotNode *n); - void deleteNode(); + void deleteNode(DotNodeList &deletedList); void removeChild(DotNode *n); void removeParent(DotNode *n); int number() const { return m_number; } diff --git a/src/doxygen.cpp b/src/doxygen.cpp index 9c51f74..3028d67 100644 --- a/src/doxygen.cpp +++ b/src/doxygen.cpp @@ -1265,12 +1265,7 @@ void buildMemberList(Entry *root) md->setDefLine(root->startLine); md->setDocumentation(root->doc); md->setBriefDescription(root->brief); - //md->setBody(root->body); md->setBodySegment(root->bodyLine,root->endBodyLine); - //if (root->mGrpId!=-1) - //{ - // md->setMemberGroup(memberGroupDict[root->mGrpId]); - //} md->setInline(root->inLine); bool ambig; md->setBodyDef(findFileDef(&inputNameDict,root->fileName,ambig)); @@ -1597,9 +1592,15 @@ void findFriends() else if (!mmd->briefDescription().isEmpty() && !fmd->briefDescription().isEmpty()) fmd->setBriefDescription(mmd->briefDescription()); if (mmd->getStartBodyLine()==-1 && fmd->getStartBodyLine()!=-1) + { mmd->setBodySegment(fmd->getStartBodyLine(),fmd->getEndBodyLine()); + mmd->setBodyDef(fmd->getBodyDef()); + } else if (mmd->getStartBodyLine()!=-1 && fmd->getStartBodyLine()==-1) + { fmd->setBodySegment(mmd->getStartBodyLine(),mmd->getEndBodyLine()); + fmd->setBodyDef(mmd->getBodyDef()); + } } } } @@ -1724,7 +1725,7 @@ static bool findBaseClassRelation(Entry *root,ClassDef *cd, { baseClassName.prepend(scopeName.left(scopeOffset)+"::"); } - ClassDef *baseClass=getClass(baseClassName); + ClassDef *baseClass=getResolvedClass(baseClassName); if (baseClassName!=root->name) // check for base class with the same name, // look in the outer scope for a match { @@ -1744,7 +1745,7 @@ static bool findBaseClassRelation(Entry *root,ClassDef *cd, // but for now, we only look for the unspecializated base class. templSpec=baseClassName.right(baseClassName.length()-i); baseClassName=baseClassName.left(i); - baseClass=getClass(baseClassName); + baseClass=getResolvedClass(baseClassName); //printf("baseClass=%p baseClass=%s templSpec=%s\n", // baseClass,baseClassName.data(),templSpec.data()); } @@ -1766,7 +1767,7 @@ static bool findBaseClassRelation(Entry *root,ClassDef *cd, for (nli.toFirst() ; (nd=nli.current()) && !found ; ++nli) { QCString fName = nd->name()+"::"+baseClassName; - found = (baseClass=getClass(fName))!=0 && baseClass!=cd && + found = (baseClass=getResolvedClass(fName))!=0 && baseClass!=cd && root->name!=fName; } } @@ -1775,7 +1776,7 @@ static bool findBaseClassRelation(Entry *root,ClassDef *cd, { NamespaceList *nl = nd->getUsedNamespaces(); QCString fName = nd->name()+"::"+baseClassName; - found = (baseClass=getClass(fName))!=0 && root->name!=fName; + found = (baseClass=getResolvedClass(fName))!=0 && root->name!=fName; if (nl) // try to prepend any of the using namespace scopes. { NamespaceListIterator nli(*nl); @@ -1783,7 +1784,7 @@ static bool findBaseClassRelation(Entry *root,ClassDef *cd, for (nli.toFirst() ; (nd=nli.current()) && !found ; ++nli) { fName = nd->name()+"::"+baseClassName; - found = (baseClass=getClass(fName))!=0 && baseClass!=cd && + found = (baseClass=getResolvedClass(fName))!=0 && baseClass!=cd && root->name!=fName; } } @@ -4935,7 +4936,7 @@ int main(int argc,char **argv) s=Config::imagePath.first(); while (s) { - readFileOrDirectory(s,0,&imageNameDict,0,&Config::imagePatternList, + readFileOrDirectory(s,0,&imageNameDict,0,0, 0,0,0); s=Config::imagePath.next(); } diff --git a/src/doxygen.h b/src/doxygen.h index aa8f4b4..93a2a27 100644 --- a/src/doxygen.h +++ b/src/doxygen.h @@ -79,7 +79,6 @@ class BufStr : public QCString typedef QList<QCString> StringList; typedef QDict<MemberDef> MemberDict; -typedef QDict<ClassDef> ClassDict; typedef QDict<FileDef> FileDict; typedef QDict<QCString> StringDict; typedef QDict<PageInfo> PageDict; diff --git a/src/doxygen.t b/src/doxygen.t index 3cff9b1..f887a68 100644 --- a/src/doxygen.t +++ b/src/doxygen.t @@ -1,7 +1,7 @@ # # # -# Copyright (C) 1997-1999 by Dimitri van Heesch. +# Copyright (C) 1997-2000 by Dimitri van Heesch. # # Permission to use, copy, modify, and distribute this software and its # documentation under the terms of the GNU General Public License is hereby diff --git a/src/htmlgen.cpp b/src/htmlgen.cpp index 17a9763..1ecf21a 100644 --- a/src/htmlgen.cpp +++ b/src/htmlgen.cpp @@ -624,7 +624,7 @@ void HtmlGenerator::insertMemberAlign() DBG_HTML(t << "<!-- insertMemberAlign -->" << endl) if (Config::htmlAlignMemberFlag) { - t << " </td><td valign=top>"; + t << " </td><td valign=bottom>"; } } @@ -652,7 +652,7 @@ void HtmlGenerator::endMemberDescription() } else { - t << "</em></font></dl>"; + t << "<br><br></em></font></dl>"; } } diff --git a/src/index.cpp b/src/index.cpp index 62cf84d..bad6e18 100644 --- a/src/index.cpp +++ b/src/index.cpp @@ -167,6 +167,11 @@ void writeClassHierarchy(OutputList &ol) for (;cli.current(); ++cli) { ClassDef *cd=cli.current(); + //printf("class %s hasVisibleRoot=%d isVisibleInHierarchy=%d\n", + // cd->name().data(), + // hasVisibleRoot(cd->baseClasses()), + // cd->isVisibleInHierarchy() + // ); if (!hasVisibleRoot(cd->baseClasses())) { if (cd->isVisibleInHierarchy()) @@ -197,11 +202,11 @@ void writeClassHierarchy(OutputList &ol) ol.writeIndexItem(0,0,cd->name()); //if (hasHtmlHelp) htmlHelp->addContentsItem(cd->name(),"nodoc"); } - } - if (!cd->visited && cd->superClasses()->count()>0) - { - writeClassTree(ol,cd->superClasses(),cd->visited); - cd->visited=TRUE; + if (!cd->visited && cd->superClasses()->count()>0) + { + writeClassTree(ol,cd->superClasses(),cd->visited); + cd->visited=TRUE; + } } } } diff --git a/src/memberdef.cpp b/src/memberdef.cpp index 36d4945..2f6aae7 100644 --- a/src/memberdef.cpp +++ b/src/memberdef.cpp @@ -634,12 +634,12 @@ void MemberDef::writeDeclaration(OutputList &ol, else { type = type.left(i) + " { ... } " + type.right(type.length()-i-l); - linkifyText(ol,cname,name(),type); + linkifyText(ol,cname,name(),type,TRUE); } } else { - linkifyText(ol,cname,name(),type); + linkifyText(ol,cname,name(),type,TRUE); } bool htmlOn = ol.isEnabled(OutputGenerator::Html); if (htmlOn && Config::htmlAlignMemberFlag && !type.isEmpty()) @@ -995,14 +995,7 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol, parseText(ol,theTranslator->trInitialValue()); ol.endBold(); ol.startCodeFragment(); - if (isDefine()) - { - parseCode(ol,scopeName,init,FALSE,0); - } - else - { - parseCode(ol,scopeName,init.simplifyWhiteSpace(),FALSE,0); - } + parseCode(ol,scopeName,init,FALSE,0); ol.endCodeFragment(); } diff --git a/src/namespacedef.cpp b/src/namespacedef.cpp index b1fb93a..b74f933 100644 --- a/src/namespacedef.cpp +++ b/src/namespacedef.cpp @@ -31,6 +31,7 @@ NamespaceDef::NamespaceDef(const char *name,const char *ref) : Definition(name) { fileName="namespace_"+nameToFile(name); classList = new ClassList; + classDict = new ClassDict(1009); //memList = new MemberList; usingList = 0; setReference(ref); @@ -42,6 +43,7 @@ NamespaceDef::NamespaceDef(const char *name,const char *ref) : Definition(name) NamespaceDef::~NamespaceDef() { delete classList; + delete classDict; delete usingList; delete memberGroupList; delete memberGroupDict; @@ -54,7 +56,11 @@ void NamespaceDef::insertUsedFile(const char *f) void NamespaceDef::insertClass(ClassDef *cd) { - classList->append(cd); + if (classDict->find(cd->name())==0) + { + classList->append(cd); + classDict->insert(cd->name(),cd); + } } void NamespaceDef::addMemberToGroup(MemberDef *md,int groupId) diff --git a/src/namespacedef.h b/src/namespacedef.h index 797bf6b..13458c8 100644 --- a/src/namespacedef.h +++ b/src/namespacedef.h @@ -27,6 +27,7 @@ class ClassDef; class OutputList; class ClassList; +class ClassDict; class MemberDef; class NamespaceList; class MemberGroupDict; @@ -77,6 +78,7 @@ class NamespaceDef : public Definition QCString fileName; QStrList files; ClassList *classList; + ClassDict *classDict; NamespaceList *usingList; MemberList allMemberList; diff --git a/src/scanner.l b/src/scanner.l index ae2cc8f..171ca71 100644 --- a/src/scanner.l +++ b/src/scanner.l @@ -836,6 +836,13 @@ static QCString findAndCopyImage(const char *fileName,ImageTypes type) return result; } +QCString extractName(const QCString &s) +{ + uint i=0; + while (i<s.length() && isId(s.at(i))) i++; + return s.left(i); +} + /* ----------------------------------------------------------------- */ //static void addToBody(const char *text); @@ -2823,6 +2830,16 @@ DOCPARAM ([a-z_A-Z0-9:\.\-]+)|("\"".*"\"") current->type=current->type.simplifyWhiteSpace(); current->args=current->args.simplifyWhiteSpace(); current->name=current->name.stripWhiteSpace(); + if (!current->name.isEmpty() && current->type.left(8)=="typedef ") + { + // add typedef to dictionary + QCString dest = extractName(current->type.right(current->type.length()-8)); + if (!dest.isEmpty()) + { + //printf(">>>>>>>>>> adding %s->%s\n",current->name.data(),dest.data()); + typedefDict.insert(current->name, new QCString(dest)); + } + } current->section = Entry::VARIABLE_SEC ; current->fileName = yyFileName; current->startLine = yyLineNr; @@ -3707,12 +3724,11 @@ DOCPARAM ([a-z_A-Z0-9:\.\-]+)|("\"".*"\"") { if (isTypedef) { - // typedefDict.insert(yytext,new QCString(current->name)); - // current->type.prepend("typedef "); - // current->extends - current->extends->append( - new BaseInfo(yytext,Public,Normal) - ); + QCString dest = extractName(current->name); + typedefDict.insert(yytext,new QCString(current->name)); + //current->extends->append( + // new BaseInfo(yytext,Public,Normal) + // ); } current->type += ' ' ; current->type += current->name ; diff --git a/src/translator_ru.h b/src/translator_ru.h index e6b33e8..1e58553 100644 --- a/src/translator_ru.h +++ b/src/translator_ru.h @@ -10,8 +10,7 @@ * for any purpose. It is provided "as is" without express or implied warranty. * See the GNU General Public License for more details. * - * Documents produced by Doxygen are derivative works derived from the - * input used in their production; they are not affected by this license. + * All output generated with Doxygen is not covered by this license. * */ @@ -39,6 +38,7 @@ class TranslatorRussian : public Translator } QCString trMemberTypedefDocumentation() { + // Need additional translation return "Описание Членов typedef"; } QCString trMemberEnumerationDocumentation() @@ -71,7 +71,7 @@ class TranslatorRussian : public Translator } QCString trIncludeIncludingInheritedMembers() { - return ", включая все унаследованные методы."; + return ", включая все унаследованные члены."; } QCString trGeneratedAutomatically(const char *s) { QCString result="Автоматически создано системой Doxygen"; @@ -105,6 +105,7 @@ class TranslatorRussian : public Translator } QCString trCompoundList() { + // Need additional translation return "Составной список (compound list)"; } QCString trFileList() @@ -117,6 +118,7 @@ class TranslatorRussian : public Translator } QCString trCompoundMembers() { + // Need additional translation return "Составные члены (compound members)"; } QCString trFileMembers() @@ -137,9 +139,555 @@ class TranslatorRussian : public Translator } QCString trClassHierarchyDescription() { + // Need additional translation return "Этот список (inheritance) тупо отсортирован, почти по алфафиту"; } - + QCString trFileListDescription(bool extractAll) + { + QCString result="Список всех "; + if(!extractAll) result+="документированных "; + result+="файлов с кратким описанием:"; + return result; + } + QCString trCompoundListDescription() + { + return "Краткое описание классов, структур, объединений и " + "интерфейсов:"; + } + QCString trCompoundMembersDescription(bool extractAll) + { + // Need additional translation + QCString result="Список всех "; + if(!extractAll) result+="документированных "; + result+="членов класса которые связаны с "; + if(extractAll) + result+="the class documentation for each member:"; + else + result+="the classes the belong to:"; + return result; + } + QCString trFileMembersDescription(bool extractAll) + { + // Need additional translation + QCString result="Список всех "; + if(!extractAll) result+="документированных "; + result+="членов файла, которые (links) указывают на"; + if(extractAll) + result+="the class documentation for each member:"; + else + result+="the classes the belong to:"; + return result; + } + QCString trHeaderFilesDescription() + { + return "Список заголовочных файлов, которые представляют API:"; + } + QCString trExamplesDescription() + { + return "Список всех примеров:"; + } + QCString trRelatedPagesDescription() + { + // Need additional translation + return "Список всех страниц документации связанных с этой темой:"; + } + QCString trModulesDescription() + { + return "Список всех модулей:"; + } + QCString trNoDescriptionAvailable() + { + return "Нет описания"; + } + QCString trDocumentation() + { + return "Документация"; + } + QCString trModuleIndex() + { + return "Индекс модулей"; + } + QCString trHierarchicalIndex() + { + return "Иерархический список"; + } + QCString trCompoundIndex() + { + // Need additional translation + return "Составной список"; + } + QCString trFileIndex() + { + return "Индекс Файлов"; + } + QCString trModuleDocumentation() + { + return "Документация по Модулям"; + } + QCString trClassDocumentation() + { + return "Документация по Классам"; + } + QCString trFileDocumentation() + { + return "Документация по Файлам"; + } + QCString trExampleDocumentation() + { + return "Примеры к Документации"; + } + QCString trPageDocumentation() + { + return "Документация по Страницам"; + } + QCString trReferenceManual() + { + return "Справочное Описание"; + } + QCString trDefines() + { + // Need Translation + return "Определения (Defines)"; + } + QCString trFunctionPrototypes() + { + return "Прототипы функций"; + } + QCString trTypedefs() + { + return "Определения типов"; + } + QCString trEnumerations() + { + // Need Translation + return "Перечисления (Enumerations)"; + } + QCString trFunctions() + { + return "Функции:"; + } + QCString trVariables() + { + return "Переменные:"; + } + QCString trEnumerationValues() + { + return "Значение перечислимого типа"; + } + QCString trAuthor() + { + return "Автор"; + } + QCString trDefineDocumentation() + { + return "Документация по определениям (defines)"; + } + QCString trFunctionPrototypeDocumentation() + { + return "Документация по прототипам функций"; + } + QCString trTypedefDocumentation() + { + return "Документация по определениям типов"; + } + QCString trEnumerationTypeDocumentation() + { + return "Документация по перечислимым типам"; + } + QCString trEnumerationValueDocumentation() + { + return "Документация по значениям перечислимых типов"; + } + QCString trFunctionDocumentation() + { + return "Документация по функциям"; + } + QCString trVariableDocumentation() + { + return "Документация по переменным"; + } + QCString trCompounds() + { + // need translation + return "Compounds"; + } + QCString trFiles() + { + return "Файлы"; + } + QCString trGeneratedAt(const char* date,const char* projName) + { + QCString result=(QCString)"Создано "+date; + if(projName) result+=(QCString)" для "+projName; + result+=(QCString)" с использованием"; + return result; + } + QCString trWrittenBy() + { + return "Создано с использованием"; + } + QCString trClassDiagram(const char* clName) + { + return (QCString)"Диаграмма наследования для "+clName; + } + QCString trForInternalUseOnly() + { + return "Только для внутреннего использования."; + } + QCString trReimplementedForInternalREasons() + { + // need translation + return "Переписано по необходимости о которой вам знать не нужно;" + " програмный интерфейс не изменен."; + } + QCString trWarning() + { + return "Предупреждение"; + } + QCString trBugsAndLimitations() + { + return "Ошибки и ограничения"; + } + QCString trVersion() + { + return "Версия"; + } + QCString trDate() + { + return "Дата"; + } + QCString trAuthors() + { + return "Автор(ы)"; + } + QCString trReturns() + { + return "Возвращает"; + } + QCString trSeeAlso() + { + return "Смотри"; + } + QCString trParameters() + { + return "Параметры"; + } + QCString trExceptions() + { + return "Исключения"; + } + QCString trGeneratedBy() + { + return "Создано с использованием"; + } + QCString trNamespaceList() + { + // Need translation + return "Список Пространств Имен"; + } + QCString trNamespaceListDescription(bool extractAll) + { + // Need translation + QCString result="Список всех "; + if(!extractAll) result+="документированных "; + result+="пространств имен с кратким описанием:"; + return result; + } + QCString trFriends() + { + return "Друзья"; + } + QCString trRelatedFunctionDocumentation() + { + // need translation + return "Документация по друзьям класса и связанным с ними функциям"; + } + QCString trCompoundReference(const char* clName,ClassDef::CompoundType compType) + { + QCString result=(QCString)clName+" "; + switch(compType) + { + case ClassDef::Class: result+=" Класс"; break; + case ClassDef::Struct: result+=" Структура"; break; + case ClassDef::Union: result+=" Объединение"; break; + case ClassDef::Interface: result+=" Интерфейс"; break; + case ClassDef::Exception: result+=" Исключение"; break; + } + result+=" Описание"; + return result; + } + QCString trFileReference(const char* fileName) + { + QCString result; + result+=(QCString)"Описание Файла "+fileName; + return result; + } + QCString trNamespaceReference(const char* namespaceName) + { + // need translation + QCString result=(QCString)"Описание пространства имен "+namespaceName; + return result; + } + QCString trPublicMembers() + { + return "Открытые Методы"; + } + QCString trPublicSlots() + { + // need translation + return "Открытые Слоты (Slots)"; + } + QCString trSignals() + { + return "Сигналы"; + } + QCString trStaticPublicMembers() + { + return "Статические Открытые Методы"; + } + QCString trProtectedMembers() + { + return "Защищенные Методы"; + } + QCString trProtectedSlots() + { + // need translation + return "Защищенные Слоты (Slots)"; + } + QCString trStaticProtectedSlots() + { + // need translation + return "Статические Защищенные Слоты (Slots)"; + } + QCString trPrivateMembers() + { + return "Закрытые Методы"; + } + QCString trPrivateSlots() + { + // need translation + return "Закрытые Слоты (Slots)"; + } + QCString trStaticPrivateMembers() + { + return "Статические Закрытые Методы"; + } + QCString trWriteList(int numEntries) + { + QCString result; + int i; + for(i=0;i<numEntries;i++) + { + result+=generateMarker(i); + if(i!=numEntries-1) + { + if(i<numEntries-2) + result+=", "; + else + result+=", и "; + } + } + return result; + } + QCString trInheritsList(int numEntries) + { + // need translation + return "Дети (Inherits) "+trWriteList(numEntries)+"."; + } + QCString trInheritedByList(int numEntries) + { + // need translation + return "Предки (Inherited By) "+trWriteList(numEntries)+"."; + } + QCString trReimplementedInList(int numEntries) + { + return "Переопределяется в "+trWriteList(numEntries)+"."; + } + QCString trNamespaceMembers() + { + // Need translation + return "Члены Пространства Имен"; + } + QCString trNamespaceMemberDescription(bool extractAll) + { + QCString result="Список всех "; + if(!extractAll) result+="документированных "; + result+="членов пространства имен со ссылками на "; + if(extractAll) + result+="документацию по каждому члену"; + else + result+="документацию по пространству имен к которому они принадлежат"; + return result; + } + QCString trNamespaceIndex() + { + return "Индекс Пространства Имен"; + } + QCString trNamespaceDocumentation() + { + return "Документация Пространства Имен"; + } + QCString trNamespaces() + { + return "Пространства Имен"; + } + QCString trGeneratedFromFiles(ClassDef::CompoundType compType, bool single) + { + QCString result=(QCString)"Документация для это"; + switch(compType) + { + case ClassDef::Class: result+="го класса"; break; + case ClassDef::Struct: result+="й структуры"; break; + case ClassDef::Union: result+="го объединения"; break; + case ClassDef::Interface: result+="го интерфейса"; break; + case ClassDef::Exception: result+="го исключения"; break; + } + result+=" была создана из файл"; + if(single) + result+="а:"; + else + result+="ов:"; + return result; + } + QCString trAlphabeticalList() + { + return "Алфавитный Список"; + } + QCString trReturnValues() + { + return "Возвращаемые значения"; + } + QCString trMainPage() + { + // need translation + return "Начальная Страница (Main Page)"; + } + QCString trPageAbbreviation() + { + return "стр."; + } + QCString trSources() + { + return "Исходные тексты"; + } + QCString trDefinedAtLineInSourceFile() + { + return "Определено в строке @0 файла @1."; + } + QCString trDefinedInSourceFile() + { + return "Определено в файле @0."; + } + QCString trDeprecated() + { + return "Устарело"; + } + QCString trCollaborationDiagram(const char* clName) + { + // need translation + return (QCString)"Диаграмма связей для "+clName+":"; + } + QCString trInclDepGraph(const char* fName) + { + // need translation + return (QCString)"Граф зависимостей для "+fName+":"; + } + QCString trConstructorDocumentation() + { + return "Документация по Конструктору и Деструктору"; + } + QCString trGotoSourceCode() + { + // need translation + return "Смотри исходные тексты этого файла."; + } + QCString trGotoDocumentation() + { + return "Смотри документацию по этому файлу."; + } + QCString trPrecondition() + { + // need translation + return "Начальное условие (Precondition)"; + } + QCString trPostcondition() + { + // need translation + return "Конечное условие (Postcondition)"; + } + QCString trInvariant() + { + // need translation + return "Инвариант"; + } + QCString trInitialValue() + { + return "Начальное значение:"; + } + QCString trCode() + { + return "исходные тексты"; + } + QCString trGraphicalHierarchy() + { + // need translation + return "Графическая Иерархия Класса (ов?)"; + } + QCString trGotoGraphicalHierarchy() + { + // need translation + return "Смотри графическую иерархию класса"; + } + QCString trGotoTextualHierarchy() + { + // need translation + return "Смотри текстовую иерархию класса"; + } + QCString trPageIndex() + { + return "Индекс Страниц"; + } + QCString trNote() + { + return "Примечание"; + } + QCString trPublicTypes() + { + return "Открытые Типы"; + } + QCString trPublicAttribs() + { + return "Открытые Аттрибуты"; + } + QCString trStaticPublicAttribs() + { + return "Статические Открытые Аттрибуты"; + } + QCString trProtectedTypes() + { + return "Защищенные Типы"; + } + QCString trProtectedAttribs() + { + return "Защищенные Аттрибуты"; + } + QCString trStaticProtectedAttribs() + { + return "Статические Защищенные Аттрибуты"; + } + QCString trPrivateTypes() + { + return "Закрытые Типы"; + } + QCString trPrivateAttribs() + { + return "Закрытые Аттрибуты"; + } + QCString trStaticPrivateAttribs() + { + return "Статические Закрытые Аттрибуты"; + } + }; #endif diff --git a/src/util.cpp b/src/util.cpp index ccffae9..7227e40 100644 --- a/src/util.cpp +++ b/src/util.cpp @@ -203,13 +203,39 @@ int guessSection(const char *name) ClassDef *getClass(const char *name) { if (name==0 || name[0]=='\0') return 0; -// QCString *subst = typedefDict[name]; -// if (subst) -// return classDict[subst->data()]; -// else return classDict[name]; } +ClassDef *getResolvedClass(const char *name) +{ + if (name==0 || name[0]=='\0') return 0; + QCString *subst = typedefDict[name]; + if (subst) // there is a typedef with this name + { + int count=0; // recursion detection guard + QCString *newSubst; + while ((newSubst=typedefDict[*subst]) && count<10) + { + subst=newSubst; + count++; + } + if (count==10) + { + warn("Warning: possible recursive typedef dependency detected for %s!\n",name); + return classDict[name]; + } + else + { + //printf("getClass: subst %s->%s\n",name,subst->data()); + return classDict[subst->data()]; + } + } + else + { + return classDict[name]; + } +} + QCString removeRedundantWhiteSpace(const QCString &s) { if (s.isEmpty()) return s; @@ -249,21 +275,45 @@ bool leftScopeMatch(const QCString &scope, const QCString &name) ); } -void linkifyText(OutputList &ol,const char *scName,const char *name,const char *text) +void linkifyText(OutputList &ol,const char *scName,const char *name,const char *text,bool autoBreak) { //printf("scope=`%s' name=`%s' Text: `%s'\n",scName,name,text); static QRegExp regExp("[a-z_A-Z][a-z_A-Z0-9:]*"); QCString txtStr=text; - OutputList result(&ol); + int strLen = txtStr.length(); + //printf("linkifyText strtxt=%s strlen=%d\n",txtStr.data(),strLen); int matchLen; int index=0; int newIndex; int skipIndex=0; + int floatingIndex=0; // read a word from the text string while ((newIndex=regExp.match(txtStr,index,&matchLen))!=-1) { // add non-word part to the result - result.docify(txtStr.mid(skipIndex,newIndex-skipIndex)); + floatingIndex+=newIndex-skipIndex; + if (strLen>30 && floatingIndex>25 && autoBreak) // try to insert a split point + { + QCString splitText = txtStr.mid(skipIndex,newIndex-skipIndex); + int splitLength = splitText.length(); + int i=splitText.find('<'); + if (i==-1) i=splitText.find(','); + if (i==-1) i=splitText.find(' '); + if (i!=-1) // add a link-break at i in case of Html output + { + ol.docify(splitText.left(i+1)); + ol.pushGeneratorState(); + ol.disableAllBut(OutputGenerator::Html); + ol.lineBreak(); + ol.popGeneratorState(); + ol.docify(splitText.right(splitLength-i-1)); + } + floatingIndex=splitLength-i-1; + } + else + { + ol.docify(txtStr.mid(skipIndex,newIndex-skipIndex)); + } // get word from string QCString word=txtStr.mid(newIndex,matchLen); ClassDef *cd=0; @@ -300,7 +350,7 @@ void linkifyText(OutputList &ol,const char *scName,const char *name,const char * // add link to the result if (cd->isLinkable()) { - result.writeObjectLink(cd->getReference(),cd->getOutputFileBase(),0,word); + ol.writeObjectLink(cd->getReference(),cd->getOutputFileBase(),0,word); found=TRUE; } } @@ -328,7 +378,7 @@ void linkifyText(OutputList &ol,const char *scName,const char *name,const char * if (cd) d=cd; else if (nd) d=nd; else if (fd) d=fd; else d=gd; if (d && d->isLinkable()) { - result.writeObjectLink(d->getReference(),d->getOutputFileBase(), + ol.writeObjectLink(d->getReference(),d->getOutputFileBase(), md->anchor(),word); found=TRUE; } @@ -336,20 +386,19 @@ void linkifyText(OutputList &ol,const char *scName,const char *name,const char * if (!found) // add word to the result { - result.docify(word); + ol.docify(word); } } else { - result.docify(word); + ol.docify(word); } // set next start point in the string skipIndex=index=newIndex+matchLen; + floatingIndex+=matchLen; } // add last part of the string to the result. - result.docify(txtStr.right(txtStr.length()-skipIndex)); - //printf("linkify: %s\n",result.data()); - ol+=result; + ol.docify(txtStr.right(txtStr.length()-skipIndex)); } @@ -40,7 +40,7 @@ extern void setAnchors(char id,MemberList *ml,int groupId=-1); extern QCString fileToString(const char *name); extern QCString dateToString(bool); extern void linkifyText(OutputList &ol,const char *clName,const char *name, - const char *text); + const char *text,bool autoBreak=FALSE); extern bool getDefs(const QCString &scopeName,const QCString &memberName, const char *, MemberDef *&md, ClassDef *&cd,FileDef *&fd, @@ -60,6 +60,7 @@ extern QCString convertSlashes(const QCString &s,bool dots=FALSE); extern QCString substitute(const char *s,const char *src,const char *dst); extern QCString resolveDefines(const char *n); extern ClassDef *getClass(const char *key); +extern ClassDef *getResolvedClass(const char *key); extern FileDef *findFileDef(const FileNameDict *fnDict,const char *n, bool &ambig); extern void showFileDefMatches(const FileNameDict *fnDict,const char *n); |