From cff8111ed33af6033bd188868964d92ea3503188 Mon Sep 17 00:00:00 2001 From: Dimitri van Heesch Date: Sat, 25 Feb 2012 15:18:56 +0000 Subject: Release-1.8.0 --- Doxyfile | 15 +++++++++++++- INSTALL | 4 ++-- README | 4 ++-- configure | 6 +++--- doc/commands.doc | 4 ++-- doc/markdown.doc | 24 +++++++++++++++++---- qtools/qdir_unix.cpp | 6 +++--- qtools/qxml.cpp | 2 +- qtools/qxml.h | 4 ++-- src/commentcnv.l | 18 ++++++++++++---- src/config.l | 8 +++---- src/docparser.cpp | 10 +++++++-- src/docparser.h | 2 ++ src/doctokenizer.l | 10 ++++----- src/dot.cpp | 17 ++++++++------- src/doxygen.cpp | 8 +++---- src/entry.h | 2 +- src/fortrancode.l | 4 ++++ src/fortranscanner.l | 16 ++++++++------ src/htmldocvisitor.cpp | 4 +++- src/jquery_fx.js | 3 ++- src/jquery_fx_js.h | 3 ++- src/latexdocvisitor.cpp | 20 ++++++++++++++++-- src/markdown.cpp | 2 +- src/navtree.js | 55 +++++++++++++++++++++++++++---------------------- src/navtree_js.h | 55 +++++++++++++++++++++++++++---------------------- src/pagedef.cpp | 10 ++++----- src/pre.l | 8 +++++-- src/pycode.l | 13 ++++-------- src/rtfdocvisitor.cpp | 20 ++++++++++++++---- src/rtfgen.cpp | 4 ++-- src/store.cpp | 2 +- src/svgpan.js | 4 ++-- src/svgpan_js.h | 4 ++-- src/vhdlcode.l | 4 ++-- src/vhdldocgen.cpp | 16 +++++++------- src/vhdldocgen.h | 2 +- 37 files changed, 245 insertions(+), 148 deletions(-) diff --git a/Doxyfile b/Doxyfile index 3f3e703..335bc00 100644 --- a/Doxyfile +++ b/Doxyfile @@ -121,7 +121,20 @@ EXCLUDE = src/code.cpp \ src/doxygen_php.h \ src/compound_xsd.h \ src/layout_default.h \ - src/bib2xhtml.h + src/bib2xhtml.h \ + src/doxygen_bst.h \ + src/header_html.h \ + src/index_xsd.h \ + src/jquery_js.h \ + src/jquery_fx_js.h \ + src/jquery_ui_js.h \ + src/navtree_css.h \ + src/navtree_hs.h \ + src/search_css.h \ + src/search_functions_php.h \ + src/search_opensearch_php.h \ + src/search_js.h \ + src/sizzle_js.h EXCLUDE_SYMLINKS = NO EXCLUDE_PATTERNS = EXCLUDE_SYMBOLS = diff --git a/INSTALL b/INSTALL index e326ad3..df7dfea 100644 --- a/INSTALL +++ b/INSTALL @@ -1,7 +1,7 @@ -DOXYGEN Version 1.7.6.1-20120220 +DOXYGEN Version 1.8.0 Please read the installation section of the manual (http://www.doxygen.org/install.html) for instructions. -------- -Dimitri van Heesch (20 February 2012) +Dimitri van Heesch (25 February 2012) diff --git a/README b/README index d78156c..b500edd 100644 --- a/README +++ b/README @@ -1,4 +1,4 @@ -DOXYGEN Version 1.7.6.1_20120220 +DOXYGEN Version 1.8.0 Please read INSTALL for compilation instructions. @@ -26,4 +26,4 @@ forum. Enjoy, -Dimitri van Heesch (dimitri@stack.nl) (20 February 2012) +Dimitri van Heesch (dimitri@stack.nl) (25 February 2012) diff --git a/configure b/configure index 279d262..204c7fe 100755 --- a/configure +++ b/configure @@ -16,11 +16,11 @@ # shell script to configure doxygen doxygen_version_major=1 -doxygen_version_minor=7 -doxygen_version_revision=6.1 +doxygen_version_minor=8 +doxygen_version_revision=0 #NOTE: Setting version_mmn to "NO" will omit mmn info from the package. -doxygen_version_mmn=20120220 +doxygen_version_mmn=NO bin_dirs=`echo $PATH | sed -e "s/:/ /g"` diff --git a/doc/commands.doc b/doc/commands.doc index 0b758e2..27b18d6 100644 --- a/doc/commands.doc +++ b/doc/commands.doc @@ -539,8 +539,8 @@ Structural indicators this command in a comment block of a define or variable, the initializer is always hidden. The maximum number of initialization lines can be changed by means of the configuration parameter - \ref cfg_max_initializer_lines "MAX_INITIALIZER_LINES", the default value is - 30. + \ref cfg_max_initializer_lines "MAX_INITIALIZER_LINES", the default + value is 30. \sa section \ref cmdshowinitializer "\\showinitializer". diff --git a/doc/markdown.doc b/doc/markdown.doc index 07378ef..e057b53 100644 --- a/doc/markdown.doc +++ b/doc/markdown.doc @@ -169,10 +169,8 @@ Examples: __double underscores__ -Note that unlike standard Markdown, doxygen will not touch internal underscores or -stars, so the following will appear as-is: - - a_nice_identifier +See section \ref mddox_emph_spans for more info how doxygen handles +emphasis spans slightly different than standard Markdown. \subsection md_codespan code spans @@ -505,6 +503,24 @@ For Item1 the indentation is 4 (when treating the list marker as whitespace), so the next paragraph "More text..." starts at the same indentation level and is therefore not seen as a code block. +\subsection mddox_emph_spans Emphasis limits + +Unlike standard Markdown, doxygen will not touch internal underscores or +stars, so the following will appear as-is: + + a_nice_identifier + +Futhermore, a `*` or `_` only starts an emphasis if +- it is followed by an alphanumberical character, and +- it is preceded by a space, newline, or one the following characters `<{([,:;` + +An emphasis ends if +- it is not following by an alphanumerical character, and +- it is not preceded by a space, newline, or one the following characters `({[<=+-\@` + +Lastly, the span of the emphasis is limited to a single paragraph. + + \subsection mddox_code_spans Code Spans Limits Note that unlike standard Markdown, doxygen leaves the following untouched. diff --git a/qtools/qdir_unix.cpp b/qtools/qdir_unix.cpp index 46a3b69..e845043 100644 --- a/qtools/qdir_unix.cpp +++ b/qtools/qdir_unix.cpp @@ -82,12 +82,12 @@ QString QDir::canonicalPath() const char cur[PATH_MAX]; char tmp[PATH_MAX]; - GETCWD( cur, PATH_MAX ); + (void)GETCWD( cur, PATH_MAX ); if ( CHDIR(QFile::encodeName(dPath)) >= 0 ) { - GETCWD( tmp, PATH_MAX ); + (void)GETCWD( tmp, PATH_MAX ); r = QFile::decodeName(tmp); } - CHDIR( cur ); + (void)CHDIR( cur ); slashify( r ); return r; diff --git a/qtools/qxml.cpp b/qtools/qxml.cpp index 83ab89d..ec21c1f 100644 --- a/qtools/qxml.cpp +++ b/qtools/qxml.cpp @@ -1515,7 +1515,7 @@ bool QXmlDefaultHandler::unparsedEntityDecl( const QString&, const QString&, provided in the XML document. */ bool QXmlDefaultHandler::resolveEntity( const QString&, const QString&, - QXmlInputSource* ret ) + QXmlInputSource* &ret ) { ret = 0; return TRUE; diff --git a/qtools/qxml.h b/qtools/qxml.h index 36164ff..0797b94 100644 --- a/qtools/qxml.h +++ b/qtools/qxml.h @@ -440,7 +440,7 @@ class QM_EXPORT QXmlEntityResolver { public: virtual ~QXmlEntityResolver() {} - virtual bool resolveEntity( const QString& publicId, const QString& systemId, QXmlInputSource* ret ) = 0; + virtual bool resolveEntity( const QString& publicId, const QString& systemId, QXmlInputSource* &ret ) = 0; virtual QString errorString() = 0; }; @@ -494,7 +494,7 @@ public: bool notationDecl( const QString& name, const QString& publicId, const QString& systemId ); bool unparsedEntityDecl( const QString& name, const QString& publicId, const QString& systemId, const QString& notationName ); - bool resolveEntity( const QString& publicId, const QString& systemId, QXmlInputSource* ret ); + bool resolveEntity( const QString& publicId, const QString& systemId, QXmlInputSource* &ret ); bool startDTD( const QString& name, const QString& publicId, const QString& systemId ); bool endDTD(); diff --git a/src/commentcnv.l b/src/commentcnv.l index 1ae07c0..b031265 100644 --- a/src/commentcnv.l +++ b/src/commentcnv.l @@ -82,21 +82,22 @@ static void replaceCommentMarker(const char *s,int len) { const char *p=s; char c; - // copy blanks + // copy leading blanks while ((c=*p) && (c==' ' || c=='\t' || c=='\n')) { ADDCHAR(c); g_lineNr += c=='\n'; p++; } - // replace start of comment marker by spaces + // replace start of comment marker by blanks and the last character by a * + int blanks=0; while ((c=*p) && (c=='/' || c=='!' || c=='#')) { - ADDCHAR(' '); + blanks++; p++; if (*p=='<') // comment-after-item marker { - ADDCHAR(' '); + blanks++; p++; } if (c=='!') // end after first ! @@ -104,6 +105,15 @@ static void replaceCommentMarker(const char *s,int len) break; } } + if (blanks>0) + { + while (blanks>1) + { + ADDCHAR(' '); + blanks--; + } + ADDCHAR('*'); + } // copy comment line to output ADDARRAY(p,len-(p-s)); } diff --git a/src/config.l b/src/config.l index 2e23ea1..2988810 100644 --- a/src/config.l +++ b/src/config.l @@ -454,7 +454,7 @@ static QCString configStringRecode( QCString outputEncoding = toEncoding; if (inputEncoding.isEmpty() || outputEncoding.isEmpty() || inputEncoding==outputEncoding) return str; int inputSize=str.length(); - size_t outputSize=inputSize*4+1; + int outputSize=inputSize*4+1; QCString output(outputSize); void *cd = portable_iconv_open(outputEncoding,inputEncoding); if (cd==(void *)(-1)) @@ -463,13 +463,13 @@ static QCString configStringRecode( inputEncoding.data(),outputEncoding.data()); exit(1); } - size_t iLeft=inputSize; - size_t oLeft=outputSize; + size_t iLeft=(size_t)inputSize; + size_t oLeft=(size_t)outputSize; const char *inputPtr = str.data(); char *outputPtr = output.data(); if (!portable_iconv(cd, &inputPtr, &iLeft, &outputPtr, &oLeft)) { - outputSize-=oLeft; + outputSize-=(int)oLeft; output.resize(outputSize+1); output.at(outputSize)='\0'; //printf("iconv: input size=%d output size=%d\n[%s]\n",size,newSize,srcBuf.data()); diff --git a/src/docparser.cpp b/src/docparser.cpp index 12b6e1c..20f365a 100644 --- a/src/docparser.cpp +++ b/src/docparser.cpp @@ -2275,7 +2275,7 @@ void DocInternalRef::parse() //--------------------------------------------------------------------------- DocRef::DocRef(DocNode *parent,const QCString &target,const QCString &context) : - m_refToSection(FALSE), m_refToAnchor(FALSE) + m_refToSection(FALSE), m_refToAnchor(FALSE), m_isSubPage(FALSE) { m_parent = parent; Definition *compound = 0; @@ -2286,14 +2286,20 @@ DocRef::DocRef(DocNode *parent,const QCString &target,const QCString &context) : SectionInfo *sec = Doxygen::sectionDict[target]; if (sec) // ref to section or anchor { + PageDef *pd = 0; + if (sec->type==SectionInfo::Page) + { + pd = Doxygen::pageSDict->find(target); + } m_text = sec->title; if (m_text.isEmpty()) m_text = sec->label; m_ref = sec->ref; m_file = stripKnownExtensions(sec->fileName); - if (sec->type!=SectionInfo::Page) m_anchor = sec->label; m_refToAnchor = sec->type==SectionInfo::Anchor; m_refToSection = sec->type!=SectionInfo::Anchor; + m_isSubPage = pd && pd->hasParentPage(); + if (sec->type!=SectionInfo::Page || m_isSubPage) m_anchor = sec->label; //printf("m_text=%s,m_ref=%s,m_file=%s,m_refToAnchor=%d type=%d\n", // m_text.data(),m_ref.data(),m_file.data(),m_refToAnchor,sec->type); return; diff --git a/src/docparser.h b/src/docparser.h index bc42389..21a5a25 100644 --- a/src/docparser.h +++ b/src/docparser.h @@ -721,11 +721,13 @@ class DocRef : public CompAccept, public DocNode bool hasLinkText() const { return !m_children.isEmpty(); } bool refToAnchor() const { return m_refToAnchor; } bool refToSection() const { return m_refToSection; } + bool isSubPage() const { return m_isSubPage; } void accept(DocVisitor *v) { CompAccept::accept(this,v); } private: bool m_refToSection; bool m_refToAnchor; + bool m_isSubPage; QCString m_file; QCString m_relPath; QCString m_ref; diff --git a/src/doctokenizer.l b/src/doctokenizer.l index a183377..c1c6e19 100644 --- a/src/doctokenizer.l +++ b/src/doctokenizer.l @@ -525,7 +525,7 @@ REFWORD {LABELID}|{REFWORD2}|{REFWORD3} {SPCMD3} { g_token->name = "form"; bool ok; - g_token->id = QCString(yytext).right(yyleng-6).toInt(&ok); + g_token->id = QCString(yytext).right((int)yyleng-6).toInt(&ok); ASSERT(ok); return TK_COMMAND; } @@ -633,7 +633,7 @@ REFWORD {LABELID}|{REFWORD2}|{REFWORD3} {LNKWORD1}{FUNCARG}{CVSPEC}[^a-z_A-Z0-9] { g_token->name = yytext; g_token->name = g_token->name.left(g_token->name.length()-1); - unput(yytext[yyleng-1]); + unput(yytext[(int)yyleng-1]); return TK_LNKWORD; } /********* patterns for normal words ******************/ @@ -684,7 +684,7 @@ REFWORD {LABELID}|{REFWORD2}|{REFWORD3} } else // found end of a paragraph { - g_token->indent=computeIndent(yytext,yyleng-1); + g_token->indent=computeIndent(yytext,(int)yyleng-1); int i; // put back the indentation (needed for list items) for (i=0;iindent;i++) @@ -946,7 +946,7 @@ REFWORD {LABELID}|{REFWORD2}|{REFWORD3} } [0-9]+"." { QCString numStr=yytext; - numStr=numStr.left(yyleng-1); + numStr=numStr.left((int)yyleng-1); g_token->id=numStr.toInt(); return RetVal_OK; } @@ -956,7 +956,7 @@ REFWORD {LABELID}|{REFWORD2}|{REFWORD3} } "\""[^\n\"]+"\"" { g_token->name = yytext+1; - g_token->name = g_token->name.left(yyleng-2); + g_token->name = g_token->name.left((int)yyleng-2); return TK_WORD; } ({PHPTYPE}{BLANK}*"|"{BLANK}*)*{PHPTYPE}{WS}+("&")?"$"{LABELID} { diff --git a/src/dot.cpp b/src/dot.cpp index 62d1831..b952ce2 100644 --- a/src/dot.cpp +++ b/src/dot.cpp @@ -250,7 +250,7 @@ static QCString replaceRef(const QCString &buf,const QCString relPath, { // search for href="...", store ... part in link QCString href = "href"; - bool isXLink=FALSE; + //bool isXLink=FALSE; int len = 6; int indexS = buf.find("href=\""), indexE; if (indexS>5 && buf.find("xlink:href=\"")!=-1) // XLink href (for SVG) @@ -258,7 +258,7 @@ static QCString replaceRef(const QCString &buf,const QCString relPath, indexS-=6; len+=6; href.prepend("xlink:"); - isXLink=TRUE; + //isXLink=TRUE; } if (indexS>=0 && (indexE=buf.find('"',indexS+len))!=-1) { @@ -1601,13 +1601,16 @@ void DotNode::writeBox(FTextStream &t, // add names shown as relation to a dictionary, so we don't show // them as attributes as well QDict arrowNames(17); - QListIterator li(*m_edgeInfo); - EdgeInfo *ei; - for (li.toFirst();(ei=li.current());++li) + if (m_edgeInfo) { - if (!ei->m_label.isEmpty()) + QListIterator li(*m_edgeInfo); + EdgeInfo *ei; + for (li.toFirst();(ei=li.current());++li) { - arrowNames.insert(ei->m_label,(void*)0x8); + if (!ei->m_label.isEmpty()) + { + arrowNames.insert(ei->m_label,(void*)0x8); + } } } diff --git a/src/doxygen.cpp b/src/doxygen.cpp index 98f076b..5614692 100644 --- a/src/doxygen.cpp +++ b/src/doxygen.cpp @@ -2729,7 +2729,7 @@ static void addVariable(EntryNav *rootNav,int isFuncPtr=-1) //int indentDepth=0; int si=scope.find('@'); //int anonyScopes = 0; - bool added=FALSE; + //bool added=FALSE; static bool inlineSimpleStructs = Config_getBool("INLINE_SIMPLE_STRUCTS"); if (si!=-1 && !inlineSimpleStructs) // anonymous scope or type @@ -2754,7 +2754,7 @@ static void addVariable(EntryNav *rootNav,int isFuncPtr=-1) root->protection, isMemberOf ? Foreign : isRelated ? Related : Member ); - added=TRUE; + //added=TRUE; } else // anonymous scope inside namespace or file => put variable in the global scope { @@ -2762,7 +2762,7 @@ static void addVariable(EntryNav *rootNav,int isFuncPtr=-1) { md=addVariableToFile(rootNav,mtype,pScope,name,TRUE,0); } - added=TRUE; + //added=TRUE; } } } @@ -9319,8 +9319,6 @@ static const char *getArg(int argc,char **argv,int &optind) //---------------------------------------------------------------------------- -extern void commentScanTest(); - void initDoxygen() { const char *lang = portable_getenv("LC_ALL"); diff --git a/src/entry.h b/src/entry.h index 63ddc5a..d312cec 100644 --- a/src/entry.h +++ b/src/entry.h @@ -31,7 +31,7 @@ class FileDef; class FileStorage; class StorageIntf; class ArgumentList; -class ListItemInfo; +struct ListItemInfo; /*! \brief This class stores information about an inheritance relation */ diff --git a/src/fortrancode.l b/src/fortrancode.l index f111e58..d7766f4 100644 --- a/src/fortrancode.l +++ b/src/fortrancode.l @@ -652,6 +652,7 @@ ARGS_L2 "("({ARGS_L0}|[^()]|{ARGS_L1a}|{ARGS_L1})*")" ARGS {BS}({ARGS_L0}|{ARGS_L1}|{ARGS_L2}) NUM_TYPE (complex|integer|logical|real) +LOG_OPER (\.and\.|\.eq\.|\.eqv\.|\.ge\.|\.gt\.|\.le\.|\.lt\.|\.ne\.|\.neqv\.|\.or\.|\.not\.) KIND {ARGS} CHAR (CHARACTER{ARGS}?|CHARACTER{BS}"*"({BS}[0-9]+|{ARGS})) TYPE_SPEC (({NUM_TYPE}({BS}"*"{BS}[0-9]+)?)|({NUM_TYPE}{KIND})|DOUBLE{BS_}COMPLEX|DOUBLE{BS_}PRECISION|{CHAR}|TYPE{ARGS}) @@ -979,6 +980,9 @@ IGNORE (CALL) <*>. { g_code->codify(yytext); } +<*>{LOG_OPER} { // Fortran logical comparison keywords + g_code->codify(yytext); + } %% /*@ ---------------------------------------------------------------------------- diff --git a/src/fortranscanner.l b/src/fortranscanner.l index 036769a..0a11483 100644 --- a/src/fortranscanner.l +++ b/src/fortranscanner.l @@ -249,6 +249,7 @@ ARGS {BS}({ARGS_L0}|{ARGS_L1}|{ARGS_L2}) NOARGS {BS}"\n" NUM_TYPE (complex|integer|logical|real) +LOG_OPER (\.and\.|\.eq\.|\.eqv\.|\.ge\.|\.gt\.|\.le\.|\.lt\.|\.ne\.|\.neqv\.|\.or\.|\.not\.) KIND {ARGS} CHAR (CHARACTER{ARGS}?|CHARACTER{BS}"*"({BS}[0-9]+|{ARGS})) TYPE_SPEC (({NUM_TYPE}({BS}"*"{BS}[0-9]+)?)|({NUM_TYPE}{KIND})|DOUBLE{BS_}COMPLEX|DOUBLE{BS_}PRECISION|{CHAR}|TYPE{ARGS}|CLASS{ARGS}|PROCEDURE{ARGS}?) @@ -1102,7 +1103,9 @@ private { popBuffer(); } } - <*>. { +<*>{LOG_OPER} { // Fortran logical comparison keywords + } +<*>. { //debugStr+=yytext; //printf("I:%c\n", *yytext); } // ignore remaining text @@ -2070,16 +2073,16 @@ static void subrHandleCommentBlock(const QCString &doc,bool brief) current = subrCurrent.first(); // temporarily switch to the entry of the subroutine / function if (docBlock.stripWhiteSpace().find("\\param") == 0) { - handleCommentBlock(doc,brief); + handleCommentBlock("\n\n"+doc,brief); } else if (docBlock.stripWhiteSpace().find("@param") == 0) { - handleCommentBlock(doc,brief); + handleCommentBlock("\n\n"+doc,brief); } else { int dir1 = modifiers[current_root][argName.lower()].direction; - handleCommentBlock(QCString("@param ") + directionParam[dir1] + " " + + handleCommentBlock(QCString("\n\n@param ") + directionParam[dir1] + " " + argName + " " + doc,brief); } current=tmp_entry; @@ -2122,8 +2125,9 @@ static void parseMain(const char *fileName,const char *fileBuf,Entry *rt) { isFixedForm = recognizeFixedForm(fileBuf); - if (isFixedForm) { - printf("Prepassing fixed form of %s\n", fileName); + if (isFixedForm) + { + msg("Prepassing fixed form of %s\n", fileName); //printf("---strlen=%d\n", strlen(fileBuf)); //clock_t start=clock(); diff --git a/src/htmldocvisitor.cpp b/src/htmldocvisitor.cpp index 4c76be3..8e8cdbd 100644 --- a/src/htmldocvisitor.cpp +++ b/src/htmldocvisitor.cpp @@ -1374,7 +1374,9 @@ void HtmlDocVisitor::visitPre(DocRef *ref) if (m_hide) return; if (!ref->file().isEmpty()) { - startLink(ref->ref(),ref->file(),ref->relPath(),ref->anchor()); + // when ref->isSubPage()==TRUE we use ref->file() for HTML and + // ref->anchor() for LaTeX/RTF + startLink(ref->ref(),ref->file(),ref->relPath(),ref->isSubPage() ? 0 : ref->anchor()); } if (!ref->hasLinkText()) filter(ref->targetTitle()); } diff --git a/src/jquery_fx.js b/src/jquery_fx.js index d373e6a..f3e326e 100644 --- a/src/jquery_fx.js +++ b/src/jquery_fx.js @@ -29,7 +29,8 @@ d,e){c=1.70158;var g=0,h=d;if(a==0)return b;if((a/=e)==1)return b+d;g||(g=e*0.3) 0,h=d;if(a==0)return b;if((a/=e/2)==2)return b+d;g||(g=e*0.3*1.5);if(hfile().isEmpty()) startLink(ref->ref(),ref->file(),ref->anchor()); + // when ref->isSubPage()==TRUE we use ref->file() for HTML and + // ref->anchor() for LaTeX/RTF + if (ref->isSubPage()) + { + startLink(ref->ref(),0,ref->anchor()); + } + else + { + if (!ref->file().isEmpty()) startLink(ref->ref(),ref->file(),ref->anchor()); + } if (!ref->hasLinkText()) filter(ref->targetTitle()); } void LatexDocVisitor::visitPost(DocRef *ref) { if (m_hide) return; - if (!ref->file().isEmpty()) endLink(ref->ref(),ref->file(),ref->anchor()); + if (ref->isSubPage()) + { + endLink(ref->ref(),0,ref->anchor()); + } + else + { + if (!ref->file().isEmpty()) endLink(ref->ref(),ref->file(),ref->anchor()); + } } void LatexDocVisitor::visitPre(DocSecRefItem *) diff --git a/src/markdown.cpp b/src/markdown.cpp index 16dbe6d..fb9ff9d 100644 --- a/src/markdown.cpp +++ b/src/markdown.cpp @@ -942,7 +942,7 @@ static int processSpecialCommand(GrowBuf &out, const char *data, int offset, int static void processInline(GrowBuf &out,const char *data,int size) { int i=0, end=0; - action_t action; + action_t action = 0; while (i1){ - highlightAnchor(); var a; if ($(location).attr('hash')){ - var link=stripPath($(location).attr('pathname'))+':'+ - $(location).attr('hash').substring(1); - a=$('.item a[class$=\""'+link+'"\"]'); + var clslink=stripPath($(location).attr('pathname'))+':'+ + $(location).attr('hash').substring(1); + a=$('.item a[class$=\""'+clslink+'"\"]'); } - if (a && a.length){ + if (a==null || !$(a).parent().parent().hasClass('selected')){ $('.item').removeClass('selected'); $('.item').removeAttr('id'); - a.parent().parent().addClass('selected'); - a.parent().parent().attr('id','selected'); - var anchor = $($(location).attr('hash')); - var targetDiv = anchor.next(); - showRoot(); } + var link=stripPath($(location).attr('pathname')); + navTo(o,link,$(location).attr('hash'),relpath); } }) diff --git a/src/navtree_js.h b/src/navtree_js.h index 746b39d..3eccef6 100644 --- a/src/navtree_js.h +++ b/src/navtree_js.h @@ -125,10 +125,13 @@ " var targetPage = stripPath(link.split('#')[0]);\n" " a.href = srcPage!=targetPage ? url : '#';\n" " a.onclick = function(){\n" -" $('.item').removeClass('selected');\n" -" $('.item').removeAttr('id');\n" -" $(a).parent().parent().addClass('selected');\n" -" $(a).parent().parent().attr('id','selected');\n" +" if (!$(a).parent().parent().hasClass('selected'))\n" +" {\n" +" $('.item').removeClass('selected');\n" +" $('.item').removeAttr('id');\n" +" $(a).parent().parent().addClass('selected');\n" +" $(a).parent().parent().attr('id','selected');\n" +" }\n" " var pos, anchor = $(aname), docContent = $('#doc-content');\n" " if (anchor.parent().attr('class')=='memItemLeft') {\n" " pos = anchor.parent().position().top;\n" @@ -229,7 +232,7 @@ "\n" "function showNode(o, node, index)\n" "{\n" -" if (node.childrenData && !node.expanded) {\n" +" if (node.childrenData /*&& !node.expanded*/) {\n" " if (typeof(node.childrenData)==='string') {\n" " var varName = node.childrenData;\n" " getScript(node.relpath+varName,function(){\n" @@ -276,6 +279,7 @@ " $(n.itemDiv).addClass('selected');\n" " $(n.itemDiv).attr('id','selected');\n" " }\n" +" showRoot();\n" " }\n" " }\n" " }\n" @@ -293,6 +297,20 @@ " }\n" "}\n" "\n" +"function navTo(o,root,hash,relpath)\n" +"{\n" +" getScript(relpath+\"navtreeindex\",function(){\n" +" var navTreeIndex = eval('NAVTREEINDEX');\n" +" if (navTreeIndex) {\n" +" var nti = navTreeIndex[root+hash];\n" +" o.breadcrumbs = nti ? nti : navTreeIndex[root];\n" +" if (o.breadcrumbs==null) o.breadcrumbs = navTreeIndex[\"index.html\"];\n" +" o.breadcrumbs.unshift(0);\n" +" showNode(o, o.node, 0);\n" +" }\n" +" },true);\n" +"}\n" +"\n" "function initNavTree(toroot,relpath)\n" "{\n" " var o = new Object();\n" @@ -313,35 +331,22 @@ " o.node.plus_img.width = 16;\n" " o.node.plus_img.height = 22;\n" "\n" -" getScript(relpath+\"navtreeindex\",function(){\n" -" var navTreeIndex = eval('NAVTREEINDEX');\n" -" if (navTreeIndex) {\n" -" var nti = navTreeIndex[toroot+window.location.hash];\n" -" o.breadcrumbs = nti ? nti : navTreeIndex[toroot];\n" -" if (o.breadcrumbs==null) o.breadcrumbs = navTreeIndex[\"index.html\"];\n" -" o.breadcrumbs.unshift(0);\n" -" showNode(o, o.node, 0);\n" -" }\n" -" },true);\n" +" navTo(o,toroot,window.location.hash,relpath);\n" "\n" " $(window).bind('hashchange', function(){\n" " if (window.location.hash && window.location.hash.length>1){\n" -" highlightAnchor();\n" " var a;\n" " if ($(location).attr('hash')){\n" -" var link=stripPath($(location).attr('pathname'))+':'+\n" -" $(location).attr('hash').substring(1);\n" -" a=$('.item a[class$=\\\"\"'+link+'\"\\\"]');\n" +" var clslink=stripPath($(location).attr('pathname'))+':'+\n" +" $(location).attr('hash').substring(1);\n" +" a=$('.item a[class$=\\\"\"'+clslink+'\"\\\"]');\n" " }\n" -" if (a && a.length){\n" +" if (a==null || !$(a).parent().parent().hasClass('selected')){\n" " $('.item').removeClass('selected');\n" " $('.item').removeAttr('id');\n" -" a.parent().parent().addClass('selected');\n" -" a.parent().parent().attr('id','selected');\n" -" var anchor = $($(location).attr('hash'));\n" -" var targetDiv = anchor.next();\n" -" showRoot();\n" " }\n" +" var link=stripPath($(location).attr('pathname'));\n" +" navTo(o,link,$(location).attr('hash'),relpath);\n" " }\n" " })\n" "\n" diff --git a/src/pagedef.cpp b/src/pagedef.cpp index f280c81..7d7ac01 100644 --- a/src/pagedef.cpp +++ b/src/pagedef.cpp @@ -78,8 +78,6 @@ void PageDef::writeDocumentation(OutputList &ol) //printf("PageDef::writeDocumentation: %s\n",getOutputFileBase().data()); - startFile(ol,getOutputFileBase(),pageName,title(),HLI_Pages,!generateTreeView); - ol.pushGeneratorState(); //1.{ @@ -95,6 +93,8 @@ void PageDef::writeDocumentation(OutputList &ol) ol.enable(OutputGenerator::Html); } + startFile(ol,getOutputFileBase(),pageName,title(),HLI_Pages,!generateTreeView); + if (!generateTreeView) { if (getOuterScope()!=Doxygen::globalScope && !Config_getBool("DISABLE_INDEX")) @@ -147,9 +147,6 @@ void PageDef::writeDocumentation(OutputList &ol) writePageDocumentation(ol); - ol.popGeneratorState(); - //1.} - if (generateTreeView && getOuterScope()!=Doxygen::globalScope && !Config_getBool("DISABLE_INDEX")) { ol.endContents(); @@ -160,6 +157,9 @@ void PageDef::writeDocumentation(OutputList &ol) endFile(ol); } + ol.popGeneratorState(); + //1.} + if (!Config_getString("GENERATE_TAGFILE").isEmpty()) { bool found=FALSE; diff --git a/src/pre.l b/src/pre.l index 217ed80..9975934 100644 --- a/src/pre.l +++ b/src/pre.l @@ -2206,11 +2206,15 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'")) BEGIN(SkipString); } . -"//"[^\n]* { +"//"/[^\n]* { + } +"//"[^\n]* { g_lastCPPContext=YY_START; BEGIN(RemoveCPPComment); } -"/*"/[^\n]* { +"/*"/[^\n]* { + } +"/*"/[^\n]* { g_lastCContext=YY_START; BEGIN(RemoveCComment); } diff --git a/src/pycode.l b/src/pycode.l index 6ddf2e0..e24c8f9 100644 --- a/src/pycode.l +++ b/src/pycode.l @@ -576,7 +576,7 @@ static void generateClassOrGlobalLink(CodeOutputInterface &ol,char *clName, ClassDef *cd=0,*lcd=0; /** Class def that we may find */ MemberDef *md=0; /** Member def that we may find */ - bool isLocal=FALSE; + //bool isLocal=FALSE; if ((lcd=g_theVarContext.findVariable(className))==0) // not a local variable { @@ -611,7 +611,7 @@ static void generateClassOrGlobalLink(CodeOutputInterface &ol,char *clName, { g_theCallContext.setClass(lcd); } - isLocal=TRUE; + //isLocal=TRUE; //fprintf(stderr,"is a local variable cd=%p!\n",cd); } @@ -1426,19 +1426,14 @@ static void adjustScopesAndSuites(unsigned indentLength) } } -void parsePythonCode(CodeOutputInterface &od,const char *className, +void parsePythonCode(CodeOutputInterface &od,const char * /*className*/, const QCString &s,bool exBlock, const char *exName, - FileDef *fd,int startLine,int endLine,bool inlineFragment, + FileDef *fd,int startLine,int endLine,bool /*inlineFragment*/, MemberDef *,bool) { //printf("***parseCode()\n"); - //--- some code to eliminate warnings--- - className = ""; - exBlock = FALSE; - exName = ""; - inlineFragment = ""; //-------------------------------------- if (s.isEmpty()) return; g_code = &od; diff --git a/src/rtfdocvisitor.cpp b/src/rtfdocvisitor.cpp index ceedb2d..4cde286 100644 --- a/src/rtfdocvisitor.cpp +++ b/src/rtfdocvisitor.cpp @@ -1185,7 +1185,16 @@ void RTFDocVisitor::visitPre(DocRef *ref) { if (m_hide) return; DBG_RTF("{\\comment RTFDocVisitor::visitPre(DocRef)}\n"); - if (!ref->file().isEmpty()) startLink(ref->ref(),ref->file(),ref->anchor()); + // when ref->isSubPage()==TRUE we use ref->file() for HTML and + // ref->anchor() for LaTeX/RTF + if (ref->isSubPage()) + { + startLink(ref->ref(),0,ref->anchor()); + } + else + { + if (!ref->file().isEmpty()) startLink(ref->ref(),ref->file(),ref->anchor()); + } if (!ref->hasLinkText()) filter(ref->targetTitle()); } @@ -1448,11 +1457,11 @@ void RTFDocVisitor::visitPost(DocParamList *pl) DBG_RTF("{\\comment RTFDocVisitor::visitPost(DocParamList)}\n"); DocParamSect::Type parentType = DocParamSect::Unknown; - DocParamSect *sect = 0; + //DocParamSect *sect = 0; if (pl->parent() && pl->parent()->kind()==DocNode::Kind_ParamSect) { parentType = ((DocParamSect*)pl->parent())->type(); - sect=(DocParamSect*)pl->parent(); + //sect=(DocParamSect*)pl->parent(); } bool useTable = parentType==DocParamSect::Param || parentType==DocParamSect::RetVal || @@ -1652,9 +1661,12 @@ void RTFDocVisitor::startLink(const QCString &ref,const QCString &file,const QCS { refName+=file; } - if (anchor) + if (!file.isEmpty() && anchor) { refName+='_'; + } + if (anchor) + { refName+=anchor; } diff --git a/src/rtfgen.cpp b/src/rtfgen.cpp index b00fb46..90d6e4c 100644 --- a/src/rtfgen.cpp +++ b/src/rtfgen.cpp @@ -1713,7 +1713,7 @@ void RTFGenerator::docify(const char *str) { const unsigned char *p=(const unsigned char *)str; unsigned char c; - unsigned char pc='\0'; + //unsigned char pc='\0'; while (*p) { //static bool MultiByte = FALSE; @@ -1746,7 +1746,7 @@ void RTFGenerator::docify(const char *str) t << (char)c; } } - pc = c; + //pc = c; m_omitParagraph = FALSE; } } diff --git a/src/store.cpp b/src/store.cpp index efa0718..b60520c 100644 --- a/src/store.cpp +++ b/src/store.cpp @@ -402,7 +402,7 @@ void Store::dumpBlock(portable_off_t s,portable_off_t e) portable_fseek(m_file,s,SEEK_SET); int size = (int)(e-s); uchar *buf = new uchar[size]; - fread(buf,size,1,m_file); + (void)fread(buf,size,1,m_file); int i,j; for (i=0;i'); d.write('Print SVG'); - d.write(''); + d.write(''); d.write('
'+xs+'
'); d.write(''); d.write(''); d.close(); } catch(e) { - alert('Print function not supported by this browser!'); + alert('Failed to open popup window needed for printing!\n'+e.message); } } diff --git a/src/svgpan_js.h b/src/svgpan_js.h index 9978f21..ac996da 100644 --- a/src/svgpan_js.h +++ b/src/svgpan_js.h @@ -304,13 +304,13 @@ " 'xmlns:svg=\"http://www.w3.org/2000/svg\" '+\n" " 'xmlns:xlink=\"http://www.w3.org/1999/xlink\">');\n" " d.write('Print SVG');\n" -" d.write('');\n" +" d.write('');\n" " d.write('
'+xs+'
');\n" " d.write('');\n" " d.write('');\n" " d.close();\n" " } catch(e) {\n" -" alert('Print function not supported by this browser!');\n" +" alert('Failed to open popup window needed for printing!\\n'+e.message);\n" " }\n" "}\n" "\n" diff --git a/src/vhdlcode.l b/src/vhdlcode.l index c48078d..10b2018 100644 --- a/src/vhdlcode.l +++ b/src/vhdlcode.l @@ -618,12 +618,12 @@ static void codifyMapLines(char *text) int wordCounter=0; QCString ctemp; //printf("codifyLines(%d,\"%s\")\n",g_yyLineNr,text); - char *p=text,*sp=p; + char *p=text; //,*sp=p; char c; bool done=FALSE; while (!done) { - sp=p; + //sp=p; while ((c=*p++) && c!='\n' && c!=':' && c != ' ' && c != '(' && c!='\0' && c!='\t') { if (c!=0x9) diff --git a/src/vhdldocgen.cpp b/src/vhdldocgen.cpp index 5af938f..f603c30 100644 --- a/src/vhdldocgen.cpp +++ b/src/vhdldocgen.cpp @@ -403,17 +403,17 @@ void VhdlDocGen::findAllPackages(const QCString& className,QDict& qdic MemberDef* VhdlDocGen::findFunction(const QList &ql, const QCString& funcname, - const QCString& package, bool type) + const QCString& package, bool /*type*/) { MemberDef* mdef=0; - int funcType; + //int funcType; ClassDef *cdef=getClass(package.data()); if (cdef==0) return 0; - if (type) - funcType=VhdlDocGen::PROCEDURE; - else - funcType=VhdlDocGen::FUNCTION; + //if (type) + // funcType=VhdlDocGen::PROCEDURE; + //else + // funcType=VhdlDocGen::FUNCTION; MemberList *mem=cdef->getMemberList(MemberList::pubMethods); @@ -1194,7 +1194,7 @@ void VhdlDocGen::writeFuncProcDocu( bool /*type*/) { if (al==0) return; - bool sem=FALSE; + //bool sem=FALSE; ol.enableAll(); ArgumentListIterator ali(*al); @@ -1263,7 +1263,7 @@ void VhdlDocGen::writeFuncProcDocu( } ol.endParameterName(FALSE,FALSE,FALSE); - sem=TRUE; + //sem=TRUE; first=FALSE; } //ol.endParameterList(); diff --git a/src/vhdldocgen.h b/src/vhdldocgen.h index bb9a122..df53088 100644 --- a/src/vhdldocgen.h +++ b/src/vhdldocgen.h @@ -35,7 +35,7 @@ class FileStorage; class EntryNav; class ClassDef; class MemberDef; -class Argument; +struct Argument; // wrapper class for the vhdl parser class MyParserVhdl -- cgit v0.12