From 7e0aeda8a19448b44750f2530864432c964b0374 Mon Sep 17 00:00:00 2001 From: Dimitri van Heesch Date: Sat, 12 Apr 2003 09:32:03 +0000 Subject: Release-1.3 --- INSTALL | 4 +- README | 4 +- VERSION | 2 +- doc/index.doc | 2 +- doc/language.doc | 2 +- doc/starting.doc | 1 + packages/rpm/doxygen.spec | 2 +- src/code.l | 13 +- src/config.l | 17 ++- src/docparser.cpp | 9 +- src/docparser.h | 350 +++++++++++++++++++++++----------------------- src/dot.cpp | 19 --- src/dot.h | 2 +- src/doxygen.cpp | 75 +++++++--- src/filedef.cpp | 4 +- src/htmldocvisitor.cpp | 3 + src/memberdef.cpp | 1 + src/translator_pl.h | 30 ++-- src/util.cpp | 9 +- src/util.h | 60 ++++---- src/xmlgen.cpp | 8 +- 21 files changed, 340 insertions(+), 277 deletions(-) diff --git a/INSTALL b/INSTALL index 7da3486..a44100f 100644 --- a/INSTALL +++ b/INSTALL @@ -1,7 +1,7 @@ -DOXYGEN Version 1.3-rc3-20030330 +DOXYGEN Version 1.3 Please read the installation section of the manual (http://www.doxygen.org/install.html) for instructions. -------- -Dimitri van Heesch (30 March 2003) +Dimitri van Heesch (10 April 2003) diff --git a/README b/README index 6439109..b22f0d9 100644 --- a/README +++ b/README @@ -1,4 +1,4 @@ -DOXYGEN Version 1.3_rc3_20030330 +DOXYGEN Version 1.3 Please read INSTALL for compilation instructions. @@ -17,4 +17,4 @@ to subscribe to the lists or to visit the archives. Enjoy, -Dimitri van Heesch (dimitri@stack.nl) (30 March 2003) +Dimitri van Heesch (dimitri@stack.nl) (10 April 2003) diff --git a/VERSION b/VERSION index addf17b..7e32cd5 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.3-rc3-20030330 +1.3 diff --git a/doc/index.doc b/doc/index.doc index 97d5d5f..4c104de 100644 --- a/doc/index.doc +++ b/doc/index.doc @@ -39,7 +39,7 @@ It can help you in three ways: The documentation is extracted directly from the sources, which makes it much easier to keep the documentation consistent with the source code. -
  • You can configure doxygen to extract the code structure +
  • You can \ref extract_all "configure" doxygen to extract the code structure from undocumented source files. This is very useful to quickly find your way in large source distributions. You can also visualize the relations between the various elements diff --git a/doc/language.doc b/doc/language.doc index 52a3396..149686f 100644 --- a/doc/language.doc +++ b/doc/language.doc @@ -25,7 +25,7 @@ Doxygen has built-in support for multiple languages. This means that the text fragments that doxygen generates can be produced in languages other than English (the default) at configuration time. -Currently (version 1.3-rc3-20030327), 28 languages +Currently (version 1.2.14-20020317), 28 languages are supported (sorted alphabetically): Brazilian Portuguese, Catalan, Chinese, Chinese Traditional, Croatian, Czech, Danish, Dutch, English, Finnish, diff --git a/doc/starting.doc b/doc/starting.doc index efce614..0d05378 100644 --- a/doc/starting.doc +++ b/doc/starting.doc @@ -102,6 +102,7 @@ written in Java. Files ending with .cs are treated as C# files. Finally, files with the extensions .php, .php4, .inc or .phtml are treated as PHP sources. +\anchor extract_all If you start using doxygen for an existing project (thus without any documentation that doxygen is aware of), you can still get an idea of what the documented result would be. To do so, you must set diff --git a/packages/rpm/doxygen.spec b/packages/rpm/doxygen.spec index 4da0f17..a26ef1b 100644 --- a/packages/rpm/doxygen.spec +++ b/packages/rpm/doxygen.spec @@ -1,6 +1,6 @@ Summary: A documentation system for C/C++. Name: doxygen -Version: 1.3_rc3_20030330 +Version: 1.3 Release: 1 Epoch: 1 Source0: ftp://ftp.stack.nl/pub/users/dimitri/%{name}-%{version}.src.tar.gz diff --git a/src/code.l b/src/code.l index 4a2b80a..5335daa 100644 --- a/src/code.l +++ b/src/code.l @@ -672,6 +672,7 @@ static void generateClassOrGlobalLink(BaseCodeDocInterface &ol,char *clName, } else { + //printf("typeOnly=%d\n",typeOnly); if (cd==0 && !typeOnly) // not a class, see if it is a global enum/variable/typedef. { MemberDef *md = setCallContextForVar(clName); @@ -1556,7 +1557,7 @@ TYPEKW ("bool"|"char"|"double"|"float"|"int"|"long"|"short"|"signed"|"unsigned" [a-z_A-Z][:a-z_A-Z0-9]*({B}*"<"[^\n\<\>]*">")? { addParmType(); g_parmName=yytext; - generateClassOrGlobalLink(*g_code,yytext,TRUE); + generateClassOrGlobalLink(*g_code,yytext,!g_insideBody); } , { g_code->codify(yytext); @@ -1798,6 +1799,11 @@ TYPEKW ("bool"|"char"|"double"|"float"|"int"|"long"|"short"|"signed"|"unsigned" codifyLines(yytext); endFontClass(); } + if (YY_START==SkipCxxComment) + { + endFontClass(); + BEGIN( g_lastCContext ) ; + } } <*>\n{B}*"//@"[{}].*\n { // remove one-line group marker if (Config_getBool("STRIP_CODE_COMMENTS")) @@ -1815,6 +1821,11 @@ TYPEKW ("bool"|"char"|"double"|"float"|"int"|"long"|"short"|"signed"|"unsigned" codifyLines(yytext); endFontClass(); } + if (YY_START==SkipCxxComment) + { + endFontClass(); + BEGIN( g_lastCContext ) ; + } } <*>\n{B}*"/*@"[{}] { // remove one-line group marker if (Config_getBool("STRIP_CODE_COMMENTS")) diff --git a/src/config.l b/src/config.l index b569d5d..184763d 100644 --- a/src/config.l +++ b/src/config.l @@ -2371,8 +2371,21 @@ void Config::create() //----------------------------------------------------------------------------------------------- cl = addList( "TAGFILES", - "The TAGFILES tag can be used to specify one or more tagfiles. \n" - ); + "The TAGFILES option can be used to specify one or more tagfiles. \n" + "Optionally an initial location of the external documentation \n" + "can be added for each tagfile. The format of a tag file without \n" + "this location is as follows: \n" + " TAGFILES = file1 file2 ... \n" + "Adding location for the tag files is done as follows: \n" + " TAGFILES = file1=loc1 \"file2 = loc2\" ... \n" + "where \"loc1\" and \"loc2\" can be relative or absolute paths or \n" + "URLs. If a location is present for each tag, the installdox tool \n" + "does not have to be run to correct the links.\n" + "Note that each tag file must have a unique name\n" + "(where the name does NOT include the path)\n" + "If a tag file is not located in the directory in which doxygen \n" + "is run, you must also specify the path to the tagfile here. \n" + ); cl->setWidgetType(ConfigList::File); cs = addString( "GENERATE_TAGFILE", diff --git a/src/docparser.cpp b/src/docparser.cpp index 08e21cf..bd50337 100644 --- a/src/docparser.cpp +++ b/src/docparser.cpp @@ -1175,6 +1175,7 @@ DocAnchor::DocAnchor(DocNode *parent,const QString &id,bool newAnchor) void DocInclude::parse() { + DBG(("DocInclude::parse(file=%s,text=%s)\n",m_file.data(),m_text.data())); switch(m_type) { case Include: @@ -1184,6 +1185,7 @@ void DocInclude::parse() g_includeFileText = m_text; g_includeFileOffset = 0; g_includeFileLength = m_text.length(); + //printf("g_includeFile=<<%s>>\n",g_includeFileText.data()); break; case VerbInclude: // fall through @@ -1200,7 +1202,7 @@ void DocIncOperator::parse() const char *p = g_includeFileText; uint l = g_includeFileLength; uint o = g_includeFileOffset; - //printf("DocIncOperator::parse() text=%s off=%d len=%d\n",p,o,l); + DBG(("DocIncOperator::parse() text=%s off=%d len=%d\n",p,o,l)); uint so = o,bo; bool nonEmpty = FALSE; switch(type()) @@ -1223,6 +1225,7 @@ void DocIncOperator::parse() if (g_includeFileText.mid(so,o-so).find(m_pattern)!=-1) { m_text = g_includeFileText.mid(so,o-so); + DBG(("DocIncOperator::parse() Line: %s\n",m_text.data())); } g_includeFileOffset = QMIN(l,o+1); // set pointer to start of new line break; @@ -1247,6 +1250,7 @@ void DocIncOperator::parse() if (g_includeFileText.mid(so,o-so).find(m_pattern)!=-1) { m_text = g_includeFileText.mid(so,o-so); + DBG(("DocIncOperator::parse() SkipLine: %s\n",m_text.data())); break; } o++; // skip new line @@ -1301,6 +1305,7 @@ void DocIncOperator::parse() if (g_includeFileText.mid(so,o-so).find(m_pattern)!=-1) { m_text = g_includeFileText.mid(bo,o-bo); + DBG(("DocIncOperator::parse() Until: %s\n",m_text.data())); break; } o++; // skip new line @@ -3129,6 +3134,7 @@ int DocPara::handleXRefItem(DocXRefItem::Type t) void DocPara::handleIncludeOperator(const QString &cmdName,DocIncOperator::Type t) { + DBG(("handleIncludeOperator(%s)\n",cmdName.data())); int tok=doctokenizerYYlex(); if (tok!=TK_WHITESPACE) { @@ -3349,6 +3355,7 @@ endlang: void DocPara::handleInclude(const QString &cmdName,DocInclude::Type t) { + DBG(("handleInclude(%s)\n",cmdName.data())); int tok=doctokenizerYYlex(); if (tok!=TK_WHITESPACE) { diff --git a/src/docparser.h b/src/docparser.h index 15d931c..72c7d9b 100644 --- a/src/docparser.h +++ b/src/docparser.h @@ -47,6 +47,8 @@ class SectionDict; * Can be 0. * @param input String representation of the documentation block. * @param isExample TRUE if the documentation belongs to an example. + * @param sections Sections (and anchors) found in the documentation are + * collected here (if not 0). * @returns Root node of the abstract syntax tree. Ownership of the * pointer is handed over to the caller. */ @@ -139,9 +141,11 @@ class DocNode /*! Returns TRUE iff this node is inside a preformatted section */ bool isPreformatted() const { return m_insidePre; } + protected: /*! Sets whether or not this item is inside a preformatted section */ void setInsidePreformatted(bool p) { m_insidePre = p; } private: + bool m_insidePre; }; @@ -193,12 +197,12 @@ class DocLinkedWord : public DocNode const QString &anchor) : m_parent(parent), m_word(word), m_ref(ref), m_file(file), m_anchor(anchor) {} - QString word() const { return m_word; } + QString word() const { return m_word; } Kind kind() const { return Kind_Word; } DocNode *parent() const { return m_parent; } - QString file() const { return m_file; } - QString ref() const { return m_ref; } - QString anchor() const { return m_anchor; } + QString file() const { return m_file; } + QString ref() const { return m_ref; } + QString anchor() const { return m_anchor; } void accept(DocVisitor *v) { v->visit(this); } private: @@ -215,11 +219,11 @@ class DocURL : public DocNode public: DocURL(DocNode *parent,const QString &url,bool isEmail) : m_parent(parent), m_url(url), m_isEmail(isEmail) {} - QString url() const { return m_url; } - Kind kind() const { return Kind_URL; } - DocNode *parent() const { return m_parent; } + QString url() const { return m_url; } + Kind kind() const { return Kind_URL; } + DocNode *parent() const { return m_parent; } void accept(DocVisitor *v) { v->visit(this); } - bool isEmail() const { return m_isEmail; } + bool isEmail() const { return m_isEmail; } private: DocNode *m_parent; @@ -233,8 +237,8 @@ class DocLineBreak : public DocNode public: DocLineBreak(DocNode *parent) : m_parent(parent) {} - Kind kind() const { return Kind_LineBreak; } - DocNode *parent() const { return m_parent; } + Kind kind() const { return Kind_LineBreak; } + DocNode *parent() const { return m_parent; } void accept(DocVisitor *v) { v->visit(this); } private: @@ -247,8 +251,8 @@ class DocHorRuler : public DocNode public: DocHorRuler(DocNode *parent) : m_parent(parent) {} - Kind kind() const { return Kind_HorRuler; } - DocNode *parent() const { return m_parent; } + Kind kind() const { return Kind_HorRuler; } + DocNode *parent() const { return m_parent; } void accept(DocVisitor *v) { v->visit(this); } private: @@ -260,10 +264,10 @@ class DocAnchor : public DocNode { public: DocAnchor(DocNode *parent,const QString &id,bool newAnchor); - Kind kind() const { return Kind_Anchor; } - DocNode *parent() const { return m_parent; } - QString anchor() const { return m_anchor; } - QString file() const { return m_file; } + Kind kind() const { return Kind_Anchor; } + DocNode *parent() const { return m_parent; } + QString anchor() const { return m_anchor; } + QString file() const { return m_file; } void accept(DocVisitor *v) { v->visit(this); } private: @@ -284,13 +288,13 @@ class DocStyleChange : public DocNode const HtmlAttribList *attribs=0) : m_parent(parent), m_position(position), m_style(s), m_enable(enable) { if (attribs) m_attribs=*attribs; } - Kind kind() const { return Kind_StyleChange; } - Style style() const { return m_style; } + Kind kind() const { return Kind_StyleChange; } + Style style() const { return m_style; } const char *styleString() const; - bool enable() const { return m_enable; } - uint position() const { return m_position; } - DocNode *parent() const { return m_parent; } - void accept(DocVisitor *v) { v->visit(this); } + bool enable() const { return m_enable; } + uint position() const { return m_position; } + DocNode *parent() const { return m_parent; } + void accept(DocVisitor *v) { v->visit(this); } const HtmlAttribList &attribs() const { return m_attribs; } private: @@ -311,10 +315,10 @@ class DocSymbol : public DocNode }; DocSymbol(DocNode *parent,SymType s,char letter='\0') : m_parent(parent), m_symbol(s), m_letter(letter) {} - SymType symbol() const { return m_symbol; } - char letter() const { return m_letter; } - Kind kind() const { return Kind_Symbol; } - DocNode *parent() const { return m_parent; } + SymType symbol() const { return m_symbol; } + char letter() const { return m_letter; } + Kind kind() const { return Kind_Symbol; } + DocNode *parent() const { return m_parent; } void accept(DocVisitor *v) { v->visit(this); } static SymType decodeSymbol(const QString &symName,char *letter); @@ -330,9 +334,9 @@ class DocWhiteSpace : public DocNode public: DocWhiteSpace(DocNode *parent,const QString &chars) : m_parent(parent), m_chars(chars) {} - Kind kind() const { return Kind_WhiteSpace; } - QString chars() const { return m_chars; } - DocNode *parent() const { return m_parent; } + Kind kind() const { return Kind_WhiteSpace; } + QString chars() const { return m_chars; } + DocNode *parent() const { return m_parent; } void accept(DocVisitor *v) { v->visit(this); } private: DocNode *m_parent; @@ -349,13 +353,13 @@ class DocVerbatim : public DocNode const QString &exampleFile) : m_parent(parent), m_context(context), m_text(text), m_type(t), m_isExample(isExample), m_exampleFile(exampleFile) {} - Kind kind() const { return Kind_Verbatim; } - Type type() const { return m_type; } - QString text() const { return m_text; } - QString context() const { return m_context; } - DocNode *parent() const { return m_parent; } - void accept(DocVisitor *v) { v->visit(this); } - bool isExample() const { return m_isExample; } + Kind kind() const { return Kind_Verbatim; } + Type type() const { return m_type; } + QString text() const { return m_text; } + QString context() const { return m_context; } + DocNode *parent() const { return m_parent; } + void accept(DocVisitor *v) { v->visit(this); } + bool isExample() const { return m_isExample; } QString exampleFile() const { return m_exampleFile; } private: @@ -440,11 +444,11 @@ class DocFormula : public DocNode { public: DocFormula(DocNode *parent,int id); - Kind kind() const { return Kind_Formula; } - QString name() const { return m_name; } - QString text() const { return m_text; } - int id() const { return m_id; } - DocNode *parent() const { return m_parent; } + Kind kind() const { return Kind_Formula; } + QString name() const { return m_name; } + QString text() const { return m_text; } + int id() const { return m_id; } + DocNode *parent() const { return m_parent; } void accept(DocVisitor *v) { v->visit(this); } private: @@ -461,9 +465,9 @@ class DocIndexEntry : public DocNode DocIndexEntry(DocNode *parent) : m_parent(parent) { } Kind kind() const { return Kind_IndexEntry; } int parse(); - DocNode *parent() const { return m_parent; } - void accept(DocVisitor *v) { v->visit(this); } - QString entry() { return m_entry; } + DocNode *parent() const { return m_parent; } + void accept(DocVisitor *v) { v->visit(this); } + QString entry() { return m_entry; } private: DocNode *m_parent; @@ -478,11 +482,11 @@ class DocCopy : public CompAccept, public DocNode public: DocCopy(DocNode *parent,const QString &link) : m_parent(parent), m_link(link) { } - Kind kind() const { return Kind_IndexEntry; } - QString link() const { return m_link; } - void parse(); - DocNode *parent() const { return m_parent; } + Kind kind() const { return Kind_IndexEntry; } + QString link() const { return m_link; } + DocNode *parent() const { return m_parent; } void accept(DocVisitor *v) { CompAccept::accept(this,v); } + void parse(); private: DocNode *m_parent; @@ -495,12 +499,12 @@ class DocAutoList : public CompAccept, public DocNode public: DocAutoList(DocNode *parent,int indent,bool isEnumList) : m_parent(parent), m_indent(indent), m_isEnumList(isEnumList) {} - Kind kind() const { return Kind_AutoList; } - int parse(); - bool isEnumList() const { return m_isEnumList; } - int indent() const { return m_indent; } - DocNode *parent() const { return m_parent; } + Kind kind() const { return Kind_AutoList; } + bool isEnumList() const { return m_isEnumList; } + int indent() const { return m_indent; } + DocNode *parent() const { return m_parent; } void accept(DocVisitor *v) { CompAccept::accept(this,v); } + int parse(); private: DocNode *m_parent; @@ -516,8 +520,8 @@ class DocTitle : public CompAccept, public DocNode DocTitle(DocNode *parent) : m_parent(parent) {} void parse(); void parseFromString(const QString &title); - Kind kind() const { return Kind_Title; } - DocNode *parent() const { return m_parent; } + Kind kind() const { return Kind_Title; } + DocNode *parent() const { return m_parent; } void accept(DocVisitor *v) { CompAccept::accept(this,v); } private: @@ -531,14 +535,14 @@ class DocXRefItem : public CompAccept, public DocNode enum Type { Bug, Test, Todo, Deprecated }; DocXRefItem(DocNode *parent,int id,Type t) : m_parent(parent), m_id(id), m_type(t) {} - Kind kind() const { return Kind_XRefItem; } - Type type() const { return m_type; } - QString file() const { return m_file; } - QString anchor() const { return m_anchor; } - QString title() const { return m_title; } - void parse(); - DocNode *parent() const { return m_parent; } + Kind kind() const { return Kind_XRefItem; } + Type type() const { return m_type; } + QString file() const { return m_file; } + QString anchor() const { return m_anchor; } + QString title() const { return m_title; } + DocNode *parent() const { return m_parent; } void accept(DocVisitor *v) { CompAccept::accept(this,v); } + void parse(); private: DocNode *m_parent; @@ -558,11 +562,11 @@ class DocImage : public CompAccept, public DocNode m_parent(parent), m_name(name), m_type(t) {} Kind kind() const { return Kind_Image; } Type type() const { return m_type; } - QString name() const { return m_name; } + QString name() const { return m_name; } DocNode *parent() const { return m_parent; } bool hasCaption() const { return !m_children.isEmpty(); } - QString width() const { return m_width; } - QString height() const { return m_height; } + QString width() const { return m_width; } + QString height() const { return m_height; } void accept(DocVisitor *v) { CompAccept::accept(this,v); } void parse(); @@ -582,11 +586,11 @@ class DocDotFile : public CompAccept, public DocNode m_parent(parent), m_name(name) { } void parse(); Kind kind() const { return Kind_DotFile; } - QString name() const { return m_name; } - QString file() const { return m_file; } + QString name() const { return m_name; } + QString file() const { return m_file; } bool hasCaption() const { return !m_children.isEmpty(); } - QString width() const { return m_width; } - QString height() const { return m_height; } + QString width() const { return m_width; } + QString height() const { return m_height; } DocNode *parent() const { return m_parent; } void accept(DocVisitor *v) { CompAccept::accept(this,v); } @@ -604,11 +608,11 @@ class DocLink : public CompAccept, public DocNode public: DocLink(DocNode *parent,const QString &target); QString parse(bool); - Kind kind() const { return Kind_Link; } - QString file() const { return m_file; } - QString ref() const { return m_ref; } - QString anchor() const { return m_anchor; } - DocNode *parent() const { return m_parent; } + Kind kind() const { return Kind_Link; } + QString file() const { return m_file; } + QString ref() const { return m_ref; } + QString anchor() const { return m_anchor; } + DocNode *parent() const { return m_parent; } void accept(DocVisitor *v) { CompAccept::accept(this,v); } private: @@ -626,10 +630,10 @@ class DocRef : public CompAccept, public DocNode DocRef(DocNode *parent,const QString &target); void parse(); Kind kind() const { return Kind_Ref; } - QString file() const { return m_file; } - QString ref() const { return m_ref; } - QString anchor() const { return m_anchor; } - QString targetTitle() const { return m_text; } + QString file() const { return m_file; } + QString ref() const { return m_ref; } + QString anchor() const { return m_anchor; } + QString targetTitle() const { return m_text; } DocNode *parent() const { return m_parent; } bool hasLinkText() const { return !m_children.isEmpty(); } bool refToAnchor() const { return m_refToAnchor; } @@ -653,8 +657,8 @@ class DocInternalRef : public CompAccept, public DocNode DocInternalRef(DocNode *parent,const QString &target); void parse(); Kind kind() const { return Kind_Ref; } - QString file() const { return m_file; } - QString anchor() const { return m_anchor; } + QString file() const { return m_file; } + QString anchor() const { return m_anchor; } DocNode *parent() const { return m_parent; } void accept(DocVisitor *v) { CompAccept::accept(this,v); } @@ -670,11 +674,11 @@ class DocLanguage : public CompAccept, public DocNode public: DocLanguage(DocNode *parent,const QString &id) : m_parent(parent), m_id(id) {} - QString id() const { return m_id; } - int parse(); - Kind kind() const { return Kind_Language; } - DocNode *parent() const { return m_parent; } + QString id() const { return m_id; } + Kind kind() const { return Kind_Language; } + DocNode *parent() const { return m_parent; } void accept(DocVisitor *v) { CompAccept::accept(this,v); } + int parse(); private: DocNode * m_parent; @@ -688,9 +692,9 @@ class DocHRef : public CompAccept, public DocNode DocHRef(DocNode *parent,const QString &url) : m_parent(parent), m_url(url) {} int parse(); - QString url() const { return m_url; } - Kind kind() const { return Kind_HRef; } - DocNode *parent() const { return m_parent; } + QString url() const { return m_url; } + Kind kind() const { return Kind_HRef; } + DocNode *parent() const { return m_parent; } void accept(DocVisitor *v) { CompAccept::accept(this,v); } private: @@ -704,12 +708,12 @@ class DocHtmlHeader : public CompAccept, public DocNode public: DocHtmlHeader(DocNode *parent,const HtmlAttribList &attribs,int level) : m_parent(parent), m_level(level), m_attribs(attribs) {} - int parse(); - int level() const { return m_level; } - Kind kind() const { return Kind_HtmlHeader; } + int level() const { return m_level; } + Kind kind() const { return Kind_HtmlHeader; } const HtmlAttribList &attribs() const { return m_attribs; } - DocNode *parent() const { return m_parent; } + DocNode *parent() const { return m_parent; } void accept(DocVisitor *v) { CompAccept::accept(this,v); } + int parse(); private: DocNode * m_parent; @@ -723,11 +727,11 @@ class DocHtmlDescTitle : public CompAccept, public DocNode public: DocHtmlDescTitle(DocNode *parent,const HtmlAttribList &attribs) : m_parent(parent), m_attribs(attribs) {} - int parse(); - Kind kind() const { return Kind_HtmlDescTitle; } - DocNode *parent() const { return m_parent; } + Kind kind() const { return Kind_HtmlDescTitle; } + DocNode *parent() const { return m_parent; } const HtmlAttribList &attribs() const { return m_attribs; } void accept(DocVisitor *v) { CompAccept::accept(this,v); } + int parse(); private: DocNode * m_parent; @@ -740,11 +744,11 @@ class DocHtmlDescList : public CompAccept, public DocNode public: DocHtmlDescList(DocNode *parent,const HtmlAttribList &attribs) : m_parent(parent), m_attribs(attribs) {} - int parse(); - Kind kind() const { return Kind_HtmlDescList; } - DocNode *parent() const { return m_parent; } + Kind kind() const { return Kind_HtmlDescList; } + DocNode *parent() const { return m_parent; } const HtmlAttribList &attribs() const { return m_attribs; } void accept(DocVisitor *v) { CompAccept::accept(this,v); } + int parse(); private: DocNode * m_parent; @@ -759,10 +763,10 @@ class DocSection : public CompAccept, public DocNode m_parent(parent), m_level(level), m_id(id) {} Kind kind() const { return Kind_Section; } int level() const { return m_level; } - QString title() const { return m_title; } - QString anchor() const { return m_anchor; } - QString id() const { return m_id; } - QString file() const { return m_file; } + QString title() const { return m_title; } + QString anchor() const { return m_anchor; } + QString id() const { return m_id; } + QString file() const { return m_file; } DocNode *parent() const { return m_parent; } void accept(DocVisitor *v) { CompAccept::accept(this,v); } int parse(); @@ -783,9 +787,9 @@ class DocSecRefItem : public CompAccept, public DocNode DocSecRefItem(DocNode *parent,const QString &target) : m_parent(parent), m_target(target) {} Kind kind() const { return Kind_SecRefItem; } - QString target() const { return m_target; } - QString file() const { return m_file; } - QString anchor() const { return m_anchor; } + QString target() const { return m_target; } + QString file() const { return m_file; } + QString anchor() const { return m_anchor; } DocNode *parent() const { return m_parent; } void accept(DocVisitor *v) { CompAccept::accept(this,v); } void parse(); @@ -803,8 +807,8 @@ class DocSecRefList : public CompAccept, public DocNode public: DocSecRefList(DocNode *parent) : m_parent(parent) {} void parse(); - Kind kind() const { return Kind_SecRefList; } - DocNode *parent() const { return m_parent; } + Kind kind() const { return Kind_SecRefList; } + DocNode *parent() const { return m_parent; } void accept(DocVisitor *v) { CompAccept::accept(this,v); } private: @@ -817,8 +821,8 @@ class DocInternal : public CompAccept, public DocNode public: DocInternal(DocNode *parent) : m_parent(parent) {} int parse(); - Kind kind() const { return Kind_Internal; } - DocNode *parent() const { return m_parent; } + Kind kind() const { return Kind_Internal; } + DocNode *parent() const { return m_parent; } void accept(DocVisitor *v) { CompAccept::accept(this,v); } private: @@ -830,10 +834,10 @@ class DocSimpleList : public CompAccept, public DocNode { public: DocSimpleList(DocNode *parent) : m_parent(parent) {} - Kind kind() const { return Kind_SimpleList; } - int parse(); - DocNode *parent() const { return m_parent; } + Kind kind() const { return Kind_SimpleList; } + DocNode *parent() const { return m_parent; } void accept(DocVisitor *v) { CompAccept::accept(this,v); } + int parse(); private: DocNode *m_parent; @@ -846,12 +850,12 @@ class DocHtmlList : public CompAccept, public DocNode enum Type { Unordered, Ordered }; DocHtmlList(DocNode *parent,const HtmlAttribList &attribs,Type t) : m_parent(parent), m_type(t), m_attribs(attribs) {} - Kind kind() const { return Kind_HtmlList; } - Type type() const { return m_type; } + Kind kind() const { return Kind_HtmlList; } + Type type() const { return m_type; } + DocNode *parent() const { return m_parent; } + void accept(DocVisitor *v) { CompAccept::accept(this,v); } const HtmlAttribList &attribs() const { return m_attribs; } int parse(); - DocNode *parent() const { return m_parent; } - void accept(DocVisitor *v) { CompAccept::accept(this,v); } private: DocNode * m_parent; @@ -870,12 +874,12 @@ class DocSimpleSect : public CompAccept, public DocNode }; DocSimpleSect(DocNode *parent,Type t); virtual ~DocSimpleSect(); - int parse(bool userTitle); - int parseRcs(); - Kind kind() const { return Kind_SimpleSect; } - Type type() const { return m_type; } + Kind kind() const { return Kind_SimpleSect; } + Type type() const { return m_type; } DocNode *parent() const { return m_parent; } void accept(DocVisitor *v); + int parse(bool userTitle); + int parseRcs(); private: DocNode * m_parent; @@ -893,9 +897,9 @@ class DocParamSect : public CompAccept, public DocNode }; DocParamSect(DocNode *parent,Type t) : m_parent(parent), m_type(t) {} int parse(const QString &cmdName); - Kind kind() const { return Kind_ParamSect; } - Type type() const { return m_type; } - DocNode *parent() const { return m_parent; } + Kind kind() const { return Kind_ParamSect; } + Type type() const { return m_type; } + DocNode *parent() const { return m_parent; } void accept(DocVisitor *v) { CompAccept::accept(this,v); } private: @@ -910,14 +914,14 @@ class DocPara : public CompAccept, public DocNode DocPara(DocNode *parent) : m_parent(parent), m_isFirst(FALSE), m_isLast(FALSE) {} int parse(); - Kind kind() const { return Kind_Para; } - DocNode *parent() const { return m_parent; } - bool isEmpty() const { return m_children.isEmpty(); } - void accept(DocVisitor *v) { CompAccept::accept(this,v); } + Kind kind() const { return Kind_Para; } + DocNode *parent() const { return m_parent; } + bool isEmpty() const { return m_children.isEmpty(); } + void accept(DocVisitor *v) { CompAccept::accept(this,v); } void markFirst(bool v=TRUE) { m_isFirst=v; } void markLast(bool v=TRUE) { m_isLast=v; } - bool isFirst() const { return m_isFirst; } - bool isLast() const { return m_isLast; } + bool isFirst() const { return m_isFirst; } + bool isLast() const { return m_isLast; } int handleCommand(const QString &cmdName); int handleHtmlStartTag(const QString &tagName,const HtmlAttribList &tagHtmlAttribs); @@ -948,23 +952,22 @@ class DocParamList : public DocNode DocParamList(DocNode *parent,DocParamSect::Type t) : m_parent(parent) , m_type(t), m_isFirst(TRUE), m_isLast(TRUE) { m_paragraph=new DocPara(this); } - virtual ~DocParamList() - { delete m_paragraph; } - int parse(const QString &cmdName); - Kind kind() const { return Kind_ParamList; } - DocNode *parent() const { return m_parent; } - const QStrList ¶meters() { return m_params; } + virtual ~DocParamList() { delete m_paragraph; } + Kind kind() const { return Kind_ParamList; } + DocNode *parent() const { return m_parent; } + const QStrList ¶meters() { return m_params; } DocParamSect::Type type() const { return m_type; } - void markFirst(bool b=TRUE) { m_isFirst=b; } - void markLast(bool b=TRUE) { m_isLast=b; } - bool isFirst() const { return m_isFirst; } - bool isLast() const { return m_isLast; } + void markFirst(bool b=TRUE) { m_isFirst=b; } + void markLast(bool b=TRUE) { m_isLast=b; } + bool isFirst() const { return m_isFirst; } + bool isLast() const { return m_isLast; } void accept(DocVisitor *v) { v->visitPre(this); m_paragraph->accept(v); v->visitPost(this); } + int parse(const QString &cmdName); private: DocNode * m_parent; @@ -982,16 +985,17 @@ class DocAutoListItem : public DocNode DocAutoListItem(DocNode *parent,int num) : m_parent(parent), m_itemNum(num) { m_paragraph=new DocPara(this); } virtual ~DocAutoListItem() { delete m_paragraph; } - int parse(); - Kind kind() const { return Kind_AutoListItem; } - DocNode *parent() const { return m_parent; } - int itemNumber() const { return m_itemNum; } + Kind kind() const { return Kind_AutoListItem; } + DocNode *parent() const { return m_parent; } + int itemNumber() const { return m_itemNum; } void accept(DocVisitor *v) { v->visitPre(this); m_paragraph->accept(v); v->visitPost(this); } + int parse(); + private: DocNode *m_parent; DocPara *m_paragraph; @@ -1006,8 +1010,8 @@ class DocSimpleListItem : public DocNode { m_paragraph=new DocPara(this); } int parse(); virtual ~DocSimpleListItem() { delete m_paragraph; } - Kind kind() const { return Kind_SimpleListItem; } - DocNode *parent() const { return m_parent; } + Kind kind() const { return Kind_SimpleListItem; } + DocNode *parent() const { return m_parent; } void accept(DocVisitor *v) { v->visitPre(this); @@ -1026,12 +1030,12 @@ class DocHtmlListItem : public CompAccept, public DocNode public: DocHtmlListItem(DocNode *parent,const HtmlAttribList &attribs,int num) : m_parent(parent), m_attribs(attribs), m_itemNum(num) {} - int parse(); - Kind kind() const { return Kind_HtmlListItem; } - int itemNumber() const { return m_itemNum; } + Kind kind() const { return Kind_HtmlListItem; } + int itemNumber() const { return m_itemNum; } const HtmlAttribList &attribs() const { return m_attribs; } - DocNode *parent() const { return m_parent; } + DocNode *parent() const { return m_parent; } void accept(DocVisitor *v) { CompAccept::accept(this,v); } + int parse(); private: DocNode * m_parent; @@ -1045,11 +1049,11 @@ class DocHtmlDescData : public CompAccept, public DocNode public: DocHtmlDescData(DocNode *parent) : m_parent(parent) {} - int parse(); - Kind kind() const { return Kind_HtmlDescData; } + Kind kind() const { return Kind_HtmlDescData; } const HtmlAttribList &attribs() const { return m_attribs; } - DocNode *parent() const { return m_parent; } + DocNode *parent() const { return m_parent; } void accept(DocVisitor *v) { CompAccept::accept(this,v); } + int parse(); private: DocNode * m_parent; @@ -1063,16 +1067,16 @@ class DocHtmlCell : public CompAccept, public DocNode DocHtmlCell(DocNode *parent,const HtmlAttribList &attribs,bool isHeading) : m_parent(parent), m_isHeading(isHeading), m_isFirst(FALSE), m_isLast(FALSE), m_attribs(attribs) {} - int parse(); - bool isHeading() const { return m_isHeading; } - bool isFirst() const { return m_isFirst; } - bool isLast() const { return m_isLast; } - Kind kind() const { return Kind_HtmlCell; } - const HtmlAttribList &attribs() const { return m_attribs; } - DocNode *parent() const { return m_parent; } - void accept(DocVisitor *v) { CompAccept::accept(this,v); } + bool isHeading() const { return m_isHeading; } + bool isFirst() const { return m_isFirst; } + bool isLast() const { return m_isLast; } + Kind kind() const { return Kind_HtmlCell; } + DocNode *parent() const { return m_parent; } + void accept(DocVisitor *v) { CompAccept::accept(this,v); } void markFirst(bool v=TRUE) { m_isFirst=v; } - void markLast(bool v=TRUE) { m_isLast=v; } + void markLast(bool v=TRUE) { m_isLast=v; } + const HtmlAttribList &attribs() const { return m_attribs; } + int parse(); private: DocNode * m_parent; @@ -1088,11 +1092,11 @@ class DocHtmlCaption : public CompAccept, public DocNode public: DocHtmlCaption(DocNode *parent,const HtmlAttribList &attribs) : m_parent(parent), m_attribs(attribs) {} - int parse(); - Kind kind() const { return Kind_HtmlCaption; } - const HtmlAttribList &attribs() const { return m_attribs; } - DocNode *parent() const { return m_parent; } + Kind kind() const { return Kind_HtmlCaption; } + DocNode *parent() const { return m_parent; } void accept(DocVisitor *v) { CompAccept::accept(this,v); } + const HtmlAttribList &attribs() const { return m_attribs; } + int parse(); private: DocNode * m_parent; @@ -1105,12 +1109,12 @@ class DocHtmlRow : public CompAccept, public DocNode public: DocHtmlRow(DocNode *parent,const HtmlAttribList &attribs) : m_parent(parent), m_attribs(attribs) {} - int parse(); - Kind kind() const { return Kind_HtmlRow; } - const HtmlAttribList &attribs() const { return m_attribs; } - DocNode *parent() const { return m_parent; } - uint numCells() const { return m_children.count(); } + Kind kind() const { return Kind_HtmlRow; } + DocNode *parent() const { return m_parent; } + uint numCells() const { return m_children.count(); } void accept(DocVisitor *v) { CompAccept::accept(this,v); } + const HtmlAttribList &attribs() const { return m_attribs; } + int parse(); private: DocNode * m_parent; @@ -1164,10 +1168,10 @@ class DocText : public CompAccept, public DocNode { public: DocText() {} - void parse(); - Kind kind() const { return Kind_Text; } + Kind kind() const { return Kind_Text; } DocNode *parent() const { return 0; } void accept(DocVisitor *v) { CompAccept::accept(this,v); } + void parse(); }; /*! @brief Root node of documentation tree */ @@ -1175,10 +1179,10 @@ class DocRoot : public CompAccept, public DocNode { public: DocRoot() {} - void parse(); - Kind kind() const { return Kind_Root; } + Kind kind() const { return Kind_Root; } DocNode *parent() const { return 0; } void accept(DocVisitor *v) { CompAccept::accept(this,v); } + void parse(); }; diff --git a/src/dot.cpp b/src/dot.cpp index ac0f645..0a10ab9 100644 --- a/src/dot.cpp +++ b/src/dot.cpp @@ -964,25 +964,6 @@ DotGfxHierarchyTable::~DotGfxHierarchyTable() { //printf("DotGfxHierarchyTable::~DotGfxHierarchyTable\n"); -#if 0 // TODO: delete this - SDict skipNodes(1009); - skipNodes.setAutoDelete(TRUE); - DotNode *n = m_rootNodes->first(); - while (n) - { - //printf("adding %s %p\n",n->label().data(),n); - skipNodes.append((char*)n,n); - n=m_rootNodes->next(); - } - n = m_rootNodes->first(); - while (n) - { - //printf("Deleting root node %s\n",n->label().data()); - deleteNodes(n,&skipNodes); - n=m_rootNodes->next(); - } -#endif - //QDictIterator di(*m_usedNodes); //DotNode *n; //for (;(n=di.current());++di) diff --git a/src/dot.h b/src/dot.h index ae3ce60..6ad521a 100644 --- a/src/dot.h +++ b/src/dot.h @@ -152,7 +152,7 @@ class DotClassGraph class DotInclDepGraph { public: - DotInclDepGraph(FileDef *fd,int maxRecusionDepth,bool inverse=FALSE); + DotInclDepGraph(FileDef *fd,int maxRecusionDepth,bool inverse); ~DotInclDepGraph(); QCString writeGraph(QTextStream &t, GraphOutputFormat f,const char *path, bool writeImageMap=TRUE); diff --git a/src/doxygen.cpp b/src/doxygen.cpp index 15dc65e..f51be68 100644 --- a/src/doxygen.cpp +++ b/src/doxygen.cpp @@ -799,20 +799,20 @@ static void addClassToContext(Entry *root) Doxygen::classSDict.append(fullName,cd); // also add class to the correct structural context - Definition *d = findScopeFromQualifiedName(Doxygen::globalScope,fullName); - if (d==0) - { - //warn(root->fileName,root->startLine, - // "Warning: Internal inconsistency: scope for class %s not " - // "found!\n",fullName.data() - // ); - } - else - { - //printf("****** adding %s to scope %s\n",cd->name().data(),d->name().data()); - d->addInnerCompound(cd); - cd->setOuterScope(d); - } + //Definition *d = findScopeFromQualifiedName(Doxygen::globalScope,fullName); + //if (d==0) + //{ + // warn(root->fileName,root->startLine, + // "Warning: Internal inconsistency: scope for class %s not " + // "found!\n",fullName.data() + // ); + //} + //else + //{ + // //printf("****** adding %s to scope %s\n",cd->name().data(),d->name().data()); + // d->addInnerCompound(cd); + // cd->setOuterScope(d); + //} } } @@ -850,6 +850,46 @@ static void buildClassDocList(Entry *root) buildClassDocList(e); } } + +static void resolveClassNestingRelations() +{ + int nestingLevel=0; + bool done=FALSE; + while (!done) + { + // iterate over all classes searching for a class with right nesting + // level (starting with 0 and going up until no more classes are found) + done=TRUE; + ClassSDict::Iterator cli(Doxygen::classSDict); + ClassDef *cd=0; + for (cli.toFirst();(cd=cli.current());++cli) + { + if (cd->name().contains("::")==nestingLevel) + { + //printf("Level=%d processing=%s\n",nestingLevel,cd->name().data()); + done=FALSE; + // also add class to the correct structural context + Definition *d = findScopeFromQualifiedName(Doxygen::globalScope,cd->name()); + if (d==0) + { + warn(cd->getDefFileName(),cd->getDefLine(), + "Warning: Internal inconsistency: scope for class %s not " + "found!\n",cd->name().data() + ); + } + else + { + //printf("****** adding %s to scope %s\n",cd->name().data(),d->name().data()); + d->addInnerCompound(cd); + cd->setOuterScope(d); + } + } + } + nestingLevel++; + } +} + + //---------------------------------------------------------------------- // build a list of all namespaces mentioned in the documentation // and all namespaces that have a documentation block before their definition. @@ -1710,7 +1750,7 @@ done: // Searches the Entry tree for Variable documentation sections. // If found they are stored in their class or in the global list. -void buildVarList(Entry *root) +static void buildVarList(Entry *root) { if (!root->name.isEmpty() && (root->type.isEmpty() || compoundKeywordDict.find(root->type)==0) && @@ -1914,7 +1954,7 @@ nextMember: // Searches the Entry tree for Function sections. // If found they are stored in their class or in the global list. -void addMethodToClass(Entry *root,ClassDef *cd, +static void addMethodToClass(Entry *root,ClassDef *cd, const QCString &rname,/*const QCString &scope,*/bool isFriend) { int l,i; @@ -2790,7 +2830,7 @@ static QDict *getTemplateArgumentsInName(ArgumentList *templateArguments,co * This function differs from getResolvedClass in that it also takes * using declarations and definition into account. */ -ClassDef *findClassWithinClassContext(ClassDef *cd,const QCString &name) +static ClassDef *findClassWithinClassContext(ClassDef *cd,const QCString &name) { ClassDef *result=0; @@ -7861,6 +7901,7 @@ void parseInput() msg("Building class list...\n"); buildClassList(root); buildClassDocList(root); + resolveClassNestingRelations(); findUsingDeclarations(root); msg("Building example list...\n"); diff --git a/src/filedef.cpp b/src/filedef.cpp index d3b606b..b0b2081 100644 --- a/src/filedef.cpp +++ b/src/filedef.cpp @@ -310,7 +310,7 @@ void FileDef::writeDocumentation(OutputList &ol) if (Config_getBool("HAVE_DOT") && Config_getBool("INCLUDE_GRAPH")) { //printf("Graph for file %s\n",name().data()); - DotInclDepGraph incDepGraph(this,FALSE); + DotInclDepGraph incDepGraph(this,Config_getInt("MAX_DOT_GRAPH_DEPTH"),FALSE); if (!incDepGraph.isTrivial()) { ol.disable(OutputGenerator::Man); @@ -326,7 +326,7 @@ void FileDef::writeDocumentation(OutputList &ol) if (Config_getBool("HAVE_DOT") && Config_getBool("INCLUDED_BY_GRAPH")) { //printf("Graph for file %s\n",name().data()); - DotInclDepGraph incDepGraph(this,TRUE); + DotInclDepGraph incDepGraph(this,Config_getInt("MAX_DOT_GRAPH_DEPTH"),TRUE); if (!incDepGraph.isTrivial()) { ol.disable(OutputGenerator::Man); diff --git a/src/htmldocvisitor.cpp b/src/htmldocvisitor.cpp index 5193586..752ea43 100644 --- a/src/htmldocvisitor.cpp +++ b/src/htmldocvisitor.cpp @@ -244,7 +244,10 @@ void HtmlDocVisitor::visit(DocIncOperator *op) } if (op->type()!=DocIncOperator::Skip) { + popEnabled(); if (!m_hide) parseCode(m_ci,op->context(),op->text().latin1(),op->isExample(),op->exampleFile()); + pushEnabled(); + m_hide=TRUE; } if (op->isLast()) { diff --git a/src/memberdef.cpp b/src/memberdef.cpp index 93262c1..9e0b2ff 100644 --- a/src/memberdef.cpp +++ b/src/memberdef.cpp @@ -737,6 +737,7 @@ void MemberDef::writeDeclaration(OutputList &ol, ol.pushGeneratorState(); ol.disable(OutputGenerator::Man); + ol.disable(OutputGenerator::Latex); ol.docify("\n"); ol.popGeneratorState(); } diff --git a/src/translator_pl.h b/src/translator_pl.h index 501b16b..de612cd 100644 --- a/src/translator_pl.h +++ b/src/translator_pl.h @@ -1176,27 +1176,27 @@ class TranslatorPolish : public Translator /*! Title of the package index page */ virtual QCString trPackageList() { - return "Lista Pakietów"; + return decode("Lista Pakietów"); } /*! The description of the package index page */ virtual QCString trPackageListDescription() { - return "Oto lista pakietów wraz z krótkim opisem (o ile jest dostępny):"; + return decode("Oto lista pakietów wraz z krótkim opisem (o ile jest dostępny):"); } /*! The link name in the Quick links header for each page */ virtual QCString trPackages() { - return "Pakiety"; + return decode("Pakiety"); } /*! Used as a chapter title for Latex & RTF output */ virtual QCString trPackageDocumentation() { - return "Dokumentacja Pakietu"; + return decode("Dokumentacja Pakietu"); } /*! Text shown before a multi-line define */ virtual QCString trDefineValue() { - return "Wartość:"; + return decode("Wartość:"); } ////////////////////////////////////////////////////////////////////////// @@ -1206,12 +1206,12 @@ class TranslatorPolish : public Translator /*! Used as a marker that is put before a \\bug item */ virtual QCString trBug() { - return "Błąd"; + return decode("Błąd"); } /*! Used as the header of the bug list */ virtual QCString trBugList() { - return "Lista błędów"; + return decode("Lista błędów"); } ////////////////////////////////////////////////////////////////////////// @@ -1233,7 +1233,7 @@ class TranslatorPolish : public Translator /*! Used as header RTF general index */ virtual QCString trRTFGeneralIndex() { - return "Indeks"; + return decode("Indeks"); } /*! This is used for translation of the word that will possibly @@ -1267,7 +1267,7 @@ class TranslatorPolish : public Translator QCString result((first_capital ? "Przestrze" : "przestrze")); result+=(singular ? "ń" : "nie"); result+=" nazw"; - return result; + return decode(result); } /*! This is used for translation of the word that will possibly @@ -1287,7 +1287,7 @@ class TranslatorPolish : public Translator */ virtual QCString trPage(bool first_capital, bool singular) { - QCString result((first_capital ? "Ston" : "stron")); + QCString result((first_capital ? "Stron" : "stron")); result+=(singular ? "a" : "y"); return result; } @@ -1300,7 +1300,7 @@ class TranslatorPolish : public Translator { QCString result((first_capital ? "Składow" : "składow")); result+=(singular ? "a" : "e"); - return result; + return decode(result); } /*! This is used for translation of the word that will possibly @@ -1346,7 +1346,7 @@ class TranslatorPolish : public Translator */ virtual QCString trReferences() { - return "Odwołuje się do"; + return decode("Odwołuje się do"); } @@ -1374,7 +1374,7 @@ class TranslatorPolish : public Translator */ virtual QCString trRTFTableOfContents() { - return "Spis treści"; + return decode("Spis treści"); } ////////////////////////////////////////////////////////////////////////// @@ -1386,7 +1386,7 @@ class TranslatorPolish : public Translator */ virtual QCString trDeprecatedList() { - return "Lista elementów do wycofania"; + return decode("Lista elementów do wycofania"); } ////////////////////////////////////////////////////////////////////////// @@ -1403,7 +1403,7 @@ class TranslatorPolish : public Translator /*! Header used for the documentation section of a class' events. */ virtual QCString trEventDocumentation() { - return "Dokumentacja zdarzeń"; + return decode("Dokumentacja zdarzeń"); } diff --git a/src/util.cpp b/src/util.cpp index 494a333..6a5517e 100644 --- a/src/util.cpp +++ b/src/util.cpp @@ -1932,7 +1932,14 @@ void mergeArguments(ArgumentList *srcAl,ArgumentList *dstAl) } else if (!srcA->name.isEmpty() && !dstA->name.isEmpty()) { - srcA->name = dstA->name.copy(); + if (srcA->docs.isEmpty() && !dstA->docs.isEmpty()) + { + srcA->name = dstA->name.copy(); + } + else if (!srcA->docs.isEmpty() && dstA->docs.isEmpty()) + { + dstA->name = srcA->name.copy(); + } } } else diff --git a/src/util.h b/src/util.h index 81b512a..f4b9118 100644 --- a/src/util.h +++ b/src/util.h @@ -18,12 +18,15 @@ #ifndef UTIL_H #define UTIL_H +/*! \file util.h + * \brief A bunch of utility functions. + */ + #include "qtbc.h" #include #include #include - class ClassDef; class FileDef; class MemberList; @@ -73,13 +76,12 @@ class TextGeneratorOLImpl : public TextGeneratorIntf //-------------------------------------------------------------------- -extern void linkifyText(const TextGeneratorIntf &ol,const char *clName,const char *name, +void linkifyText(const TextGeneratorIntf &ol,const char *clName,const char *name, const char *text,bool autoBreak=FALSE,bool external=TRUE); - -extern void setAnchors(ClassDef *cd,char id,MemberList *ml,int groupId=-1); -extern QCString fileToString(const char *name,bool filter=FALSE); -extern QCString dateToString(bool); -extern bool getDefs(const QCString &scopeName, +void setAnchors(ClassDef *cd,char id,MemberList *ml,int groupId=-1); +QCString fileToString(const char *name,bool filter=FALSE); +QCString dateToString(bool); +bool getDefs(const QCString &scopeName, const QCString &memberName, const char *, MemberDef *&md, @@ -93,14 +95,14 @@ extern bool getDefs(const QCString &scopeName, ); -extern bool resolveRef(/* in */ const char *scName, +bool resolveRef(/* in */ const char *scName, /* in */ const char *name, /* in */ bool inSeeBlock, /* out */ Definition **resContext, /* out */ MemberDef **resMember ); -extern bool resolveLink(/* in */ const char *scName, +bool resolveLink(/* in */ const char *scName, /* in */ const char *lr, /* in */ bool inSeeBlock, /* out */ Definition **resContext, @@ -108,47 +110,39 @@ extern bool resolveLink(/* in */ const char *scName, /* out */ QCString &resAnchor ); -extern bool generateRef(OutputDocInterface &od,const char *, +bool generateRef(OutputDocInterface &od,const char *, const char *,bool inSeeBlock,const char * =0); -extern bool generateLink(OutputDocInterface &od,const char *, +bool generateLink(OutputDocInterface &od,const char *, const char *,bool inSeeBlock,const char *); -extern void generateFileRef(OutputDocInterface &od,const char *, +void generateFileRef(OutputDocInterface &od,const char *, const char *linkTxt=0); void writePageRef(OutputDocInterface &od,const char *cn,const char *mn); -extern bool matchArguments(ArgumentList *,ArgumentList *, +bool matchArguments(ArgumentList *,ArgumentList *, const char *cl=0,const char *ns=0,bool checkCV=TRUE, NamespaceList *usingNamespaces=0, ClassList *usingClasses=0); -extern void mergeArguments(ArgumentList *,ArgumentList *); -extern QCString substituteClassNames(const QCString &s); -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(Definition *scope, +void mergeArguments(ArgumentList *,ArgumentList *); +QCString substituteClassNames(const QCString &s); +QCString substitute(const char *s,const char *src,const char *dst); +QCString resolveDefines(const char *n); +ClassDef *getClass(const char *key); +ClassDef *getResolvedClass(Definition *scope, const char *key, bool *pIsTypeDef=0, QCString *pTemplSpec=0); -extern NamespaceDef *getResolvedNamespace(const char *key); -extern FileDef *findFileDef(const FileNameDict *fnDict,const char *n, +NamespaceDef *getResolvedNamespace(const char *key); +FileDef *findFileDef(const FileNameDict *fnDict,const char *n, bool &ambig); -extern QCString showFileDefMatches(const FileNameDict *fnDict,const char *n); -extern int guessSection(const char *name); -extern bool isId(char c); -extern QCString removeRedundantWhiteSpace(const QCString &s); -//extern void startTitle(OutputList &ol,const char *fileName); -//extern void endTitle(OutputList &ol,const char *fileName,const char *name); -//void startFile(OutputList &ol,const char *name, -// const char *title,bool external=FALSE); -//void endFile(OutputList &ol,bool external=FALSE); -//void writeQuickLinks(OutputList &ol,bool compact,bool external=FALSE); +QCString showFileDefMatches(const FileNameDict *fnDict,const char *n); +int guessSection(const char *name); +bool isId(char c); +QCString removeRedundantWhiteSpace(const QCString &s); QCString argListToString(ArgumentList *al); QCString tempArgListToString(ArgumentList *al); QCString generateMarker(int id); void writeExample(OutputList &ol,ExampleSDict *el); -//void setFileNameForSections(QList *anchorList,const char *fileName, -// PageInfo *pi=0); QCString stripAnonymousNamespaceScope(const QCString &s); QCString stripFromPath(const QCString &path); bool rightScopeMatch(const QCString &scope, const QCString &name); diff --git a/src/xmlgen.cpp b/src/xmlgen.cpp index 86cd12f..1062bd2 100644 --- a/src/xmlgen.cpp +++ b/src/xmlgen.cpp @@ -979,7 +979,7 @@ static void generateXMLForClass(ClassDef *cd,QTextStream &ti) writeXMLDocBlock(t,cd->docFile(),cd->docLine(),cd->name(),0,cd->documentation()); t << " " << endl; DotClassGraph inheritanceGraph(cd,DotClassGraph::Inheritance, - Config_getBool("MAX_DOT_GRAPH_DEPTH")); + Config_getInt("MAX_DOT_GRAPH_DEPTH")); if (!inheritanceGraph.isTrivial()) { t << " " << endl; @@ -987,7 +987,7 @@ static void generateXMLForClass(ClassDef *cd,QTextStream &ti) t << " " << endl; } DotClassGraph collaborationGraph(cd,DotClassGraph::Implementation, - Config_getBool("MAX_DOT_GRAPH_DEPTH")); + Config_getInt("MAX_DOT_GRAPH_DEPTH")); if (!collaborationGraph.isTrivial()) { t << " " << endl; @@ -1162,7 +1162,7 @@ static void generateXMLForFile(FileDef *fd,QTextStream &ti) t << "" << endl; } - DotInclDepGraph incDepGraph(fd,FALSE); + DotInclDepGraph incDepGraph(fd,Config_getInt("MAX_DOT_GRAPH_DEPTH"),FALSE); if (!incDepGraph.isTrivial()) { t << " " << endl; @@ -1170,7 +1170,7 @@ static void generateXMLForFile(FileDef *fd,QTextStream &ti) t << " " << endl; } - DotInclDepGraph invIncDepGraph(fd,TRUE); + DotInclDepGraph invIncDepGraph(fd,Config_getInt("MAX_DOT_GRAPH_DEPTH"),TRUE); if (!invIncDepGraph.isTrivial()) { t << " " << endl; -- cgit v0.12