From 7d3a2abf0137c5257eeb0a8e0f76381b79f1e7bb Mon Sep 17 00:00:00 2001 From: albert-github Date: Wed, 18 Mar 2015 18:44:53 +0100 Subject: Crash in case of non generic interface in Fortran In case of a non generic interface in Fortran it happened that doxygen crashed due to the fact that the pointer for setting the endBodyLine does not exist. The line number is only defined for GENERIC interfaces and therefore it should not be set anyhow when ending a non generic interface. --- src/fortranscanner.l | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/fortranscanner.l b/src/fortranscanner.l index 1cfa13d..094bfb1 100644 --- a/src/fortranscanner.l +++ b/src/fortranscanner.l @@ -485,7 +485,7 @@ SCOPENAME ({ID}{BS}"::"{BS})* ^{BS}end{BS}interface({BS_}{ID})? { // end scope only if GENERIC interface - last_entry->parent()->endBodyLine = yyLineNr - 1; + if (ifType == IF_GENERIC)last_entry->parent()->endBodyLine = yyLineNr - 1; if (ifType == IF_GENERIC && !endScope(current_root)) yyterminate(); -- cgit v0.12 From 17fdd71a0f7a02e8b72eaf86d67bc142210a7059 Mon Sep 17 00:00:00 2001 From: albert-github Date: Thu, 19 Mar 2015 19:56:14 +0100 Subject: Warning message multiple mainpages Based on the report in the doxygen forum (http://doxygen.10944.n7.nabble.com/WARNING-Found-more-than-one-mainpage-comment-block-td7092.html) about the hard to find multiple occurrences of a mainpage definition. This patch also outputs the name (and approximate line) of the first found mainpage. --- src/doxygen.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/doxygen.cpp b/src/doxygen.cpp index fbad9d1..17ec15d 100644 --- a/src/doxygen.cpp +++ b/src/doxygen.cpp @@ -8726,9 +8726,8 @@ static void findMainPage(EntryNav *rootNav) { Entry *root = rootNav->entry(); warn(root->fileName,root->startLine, - "found more than one \\mainpage comment block! Skipping this " - "block." - ); + "found more than one \\mainpage comment block! (first occurrence: %s, line %d), Skipping current block!", + Doxygen::mainPage->docFile().data(),Doxygen::mainPage->docLine()); } rootNav->releaseEntry(); -- cgit v0.12 From 213e680537303959f29b2424d40d74ecf66cb3f6 Mon Sep 17 00:00:00 2001 From: albert-github Date: Sat, 21 Mar 2015 11:54:21 +0100 Subject: Missing cross reference link Added cross reference link that was missing --- doc/commands.doc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/commands.doc b/doc/commands.doc index c899c1d..c8f77eb 100644 --- a/doc/commands.doc +++ b/doc/commands.doc @@ -3230,7 +3230,7 @@ class Receiver \addindex \\\. This command writes a dot (`.`) to the output. This can be useful to - prevent ending a brief description when JAVADOC_AUTOBRIEF is enabled + prevent ending a brief description when \ref cfg_javadoc_autobrief "JAVADOC_AUTOBRIEF" is enabled or to prevent starting a numbered list when the dot follows a number at the start of a line. -- cgit v0.12 From da3faf6b93fd3eb4e751d2c0cbd4ed9ceae7922b Mon Sep 17 00:00:00 2001 From: albert-github Date: Sat, 21 Mar 2015 17:52:12 +0100 Subject: Warnings without filename In a number of instances we don't get the filename of where the error occurs but a name or even unknown between <> e.g. :1: warning: parameters of member fie_p2 are not (all) documented :1: warning: parameters of member p1.error are not (all) documented :1: warning: Member fie_p3 (function) of class p3::int1_p3 is not documented. This patch tries to overcome this problem by providing the right file: .../p2.h:8: warning: parameters of member fie_p2 are not (all) documented .../p1.py:7: warning: parameters of member p1.error are not (all) documented .../p3.f90:3: warning: Member fie_p3 (function) of class p3::int1_p3 is not documented. --- src/docparser.cpp | 4 ++-- src/memberdef.cpp | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/docparser.cpp b/src/docparser.cpp index fa77784..7944bf7 100644 --- a/src/docparser.cpp +++ b/src/docparser.cpp @@ -519,8 +519,8 @@ static void checkUndocumentedParams() } else { - warn_doc_error(g_memberDef->docFile(), - g_memberDef->docLine(), + warn_doc_error(g_memberDef->getDefFileName(), + g_memberDef->getDefLine(), substitute(errMsg,"%","%%")); } } diff --git a/src/memberdef.cpp b/src/memberdef.cpp index f27a579..4331181 100644 --- a/src/memberdef.cpp +++ b/src/memberdef.cpp @@ -2991,13 +2991,13 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol, { if (!hasDocumentedParams()) { - warn_doc_error(docFile(),docLine(), + warn_doc_error(getDefFileName(),getDefLine(), "parameters of member %s are not (all) documented", qPrint(qualifiedName())); } if (!hasDocumentedReturnType() && isFunction() && hasDocumentation()) { - warn_doc_error(docFile(),docLine(), + warn_doc_error(getDefFileName(),getDefLine(), "return type of member %s is not documented", qPrint(qualifiedName())); } @@ -3230,7 +3230,7 @@ void MemberDef::warnIfUndocumented() !isReference() ) { - warn_undoc(getDefFileName(),getDefLine(),"Member %s%s (%s) of %s %s is not documented.", + warn_undoc(d->getDefFileName(),d->getDefLine(),"Member %s%s (%s) of %s %s is not documented.", qPrint(name()),qPrint(argsString()),qPrint(memberTypeName()),t,qPrint(d->name())); } } -- cgit v0.12 From 32093bcca82c7d3a4df4670f52340033e9f16b62 Mon Sep 17 00:00:00 2001 From: Dimitri van Heesch Date: Sun, 22 Mar 2015 14:09:04 +0100 Subject: Fix for rendering the template parameters of members of variadic template classes. --- src/defargs.l | 12 ++++++------ src/doxygen.cpp | 2 +- src/util.cpp | 6 +++++- 3 files changed, 12 insertions(+), 8 deletions(-) diff --git a/src/defargs.l b/src/defargs.l index 7b8248c..40a77fb 100644 --- a/src/defargs.l +++ b/src/defargs.l @@ -370,18 +370,18 @@ RAWEND ")"[^ \t\(\)\\]{0,16}\" if (a->type.left(6)=="const ") sv=6; else if (a->type.left(9)=="volatile ") sv=9; - if (a->type.mid(sv)=="struct" || - a->type.mid(sv)=="union" || - a->type.mid(sv)=="class" || - a->type.mid(sv)=="typename" || - a->type=="const" || + if (a->type.mid(sv,6)=="struct" || + a->type.mid(sv,5)=="union" || + a->type.mid(sv,5)=="class" || + a->type.mid(sv,8)=="typename" || + a->type=="const" || a->type=="volatile" ) { a->type = a->type + " " + a->name; a->name.resize(0); } - //printf(" --> a->type='%s'\n",a->type.data()); + //printf(" --> a->type='%s' a->name='%s'\n",a->type.data(),a->name.data()); } else // assume only the type was specified, try to determine name later { diff --git a/src/doxygen.cpp b/src/doxygen.cpp index fbad9d1..d966738 100644 --- a/src/doxygen.cpp +++ b/src/doxygen.cpp @@ -1353,7 +1353,7 @@ static void addClassToContext(EntryNav *rootNav) //printf("new ClassDef %s tempArgList=%p specScope=%s\n",fullName.data(),root->tArgList,root->scopeSpec.data()); //printf("class %s template args=%s\n",fullName.data(), - // tArgList ? tempArgListToString(tArgList).data() : ""); + // tArgList ? tempArgListToString(tArgList,root->lang).data() : ""); cd->setTemplateArguments(tArgList); cd->setProtection(root->protection); cd->setIsStatic(root->stat); diff --git a/src/util.cpp b/src/util.cpp index ffa03e1..a550a2f 100644 --- a/src/util.cpp +++ b/src/util.cpp @@ -1724,7 +1724,7 @@ nextChar: growBuf.addChar(' '); } else if (i>0 && c=='>' && // current char is a > - (isId(s.at(i-1)) || isspace((uchar)s.at(i-1)) || s.at(i-1)=='*' || s.at(i-1)=='&') && // prev char is an id char or space + (isId(s.at(i-1)) || isspace((uchar)s.at(i-1)) || s.at(i-1)=='*' || s.at(i-1)=='&' || s.at(i-1)=='.') && // prev char is an id char or space (i<8 || !findOperator(s,i)) // string in front is not "operator" ) { @@ -2225,6 +2225,10 @@ QCString tempArgListToString(ArgumentList *al,SrcLangExt lang) if (i>0) { result+=a->type.right(a->type.length()-i-1); + if (a->type.find("...")!=-1) + { + result+="..."; + } } else // nothing found -> take whole name { -- cgit v0.12 From e4c0036962d8fa0ea9c1e38dbdb5e91168201f22 Mon Sep 17 00:00:00 2001 From: albert-github Date: Sun, 22 Mar 2015 18:53:24 +0100 Subject: Bug 746614 - Bogus warning regarding nested comments In case the previous file gives a warning regarding the wrong used nested comments and the next file does not have any doxygen comment there is still the message that there is a nested comment but even without probable line numbers. The variable counting the nested comment level was not reset, this has been corrected with this patch. --- src/commentcnv.l | 1 + 1 file changed, 1 insertion(+) diff --git a/src/commentcnv.l b/src/commentcnv.l index 8c73ecb..979e6ee 100644 --- a/src/commentcnv.l +++ b/src/commentcnv.l @@ -1028,6 +1028,7 @@ void convertCppComments(BufStr *inBuf,BufStr *outBuf,const char *fileName) "Nesting level %d %s",g_nestingCount+1,tmp.data()); // add one for "normal" expected end of comment } g_commentStack.clear(); + g_nestingCount = 0; if (Debug::isFlagSet(Debug::CommentCnv)) { g_outBuf->at(g_outBuf->curPos())='\0'; -- cgit v0.12 From effbbcc72295f5843377ddce2794bcf6e7000322 Mon Sep 17 00:00:00 2001 From: "Travis A. Everett" Date: Tue, 24 Mar 2015 07:20:21 -0500 Subject: Fix for bug 746673. Resolves a typo (dervied->derived) in sqlite prepared query var, which was preventing the derivedcompounddef table from populating. Fixing this issue also exposed an underlying problem where junk data was showing up in two columns. Porting some if/else logic from the code that inserts to basecompounddef seems to have fixed this, as well. --- src/sqlite3gen.cpp | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/sqlite3gen.cpp b/src/sqlite3gen.cpp index acd3995..40d744a 100644 --- a/src/sqlite3gen.cpp +++ b/src/sqlite3gen.cpp @@ -754,7 +754,7 @@ static void generateSqlite3ForMember(sqlite3*db,MemberDef *md,Definition *def) bindIntParameter(memberdef_insert,":new",md->isNew()); bindIntParameter(memberdef_insert,":optional",md->isOptional()); bindIntParameter(memberdef_insert,":required",md->isRequired()); - + bindIntParameter(memberdef_insert,":virt",md->virtualness()); } // place in the arguments and linkify the arguments @@ -1027,9 +1027,16 @@ static void generateSqlite3ForClass(sqlite3 *db, ClassDef *cd) BaseClassDef *bcd; for (bcli.toFirst();(bcd=bcli.current());++bcli) { - bindTextParameter(derivedcompoundref_insert,":base",cd->displayName()); - bindTextParameter(derivedcompoundref_insert,":dervied",bcd->classDef->displayName()); - bindTextParameter(derivedcompoundref_insert,":refid",bcd->classDef->getOutputFileBase()); + bindTextParameter(derivedcompoundref_insert,":base",cd->displayName(),FALSE); + if (!bcd->templSpecifiers.isEmpty()) + { + bindTextParameter(derivedcompoundref_insert,":derived",insertTemplateSpecifierInScope(bcd->classDef->name(),bcd->templSpecifiers),FALSE); + } + else + { + bindTextParameter(derivedcompoundref_insert,":derived",bcd->classDef->displayName(),FALSE); + } + bindTextParameter(derivedcompoundref_insert,":refid",bcd->classDef->getOutputFileBase(),FALSE); bindIntParameter(derivedcompoundref_insert,":prot",bcd->prot); bindIntParameter(derivedcompoundref_insert,":virt",bcd->virt); step(db,derivedcompoundref_insert); -- cgit v0.12 From b82320a6f57519443c46e5e3044fef97b1f8f618 Mon Sep 17 00:00:00 2001 From: orbitcowboy Date: Wed, 25 Mar 2015 15:14:12 +0100 Subject: Fixed typos in comments. --- jquery/jquery.ui-1.8.18.core.js | 2 +- testing/011/category_integer_07_arithmetic_08.xml | 2 +- testing/011_category.m | 2 +- testing/049/indexpage.xml | 2 +- testing/049_snippet.cpp | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/jquery/jquery.ui-1.8.18.core.js b/jquery/jquery.ui-1.8.18.core.js index 98b4f9b..e6f1212 100644 --- a/jquery/jquery.ui-1.8.18.core.js +++ b/jquery/jquery.ui-1.8.18.core.js @@ -226,7 +226,7 @@ $(function() { div = body.appendChild( div = document.createElement( "div" ) ); // access offsetHeight before setting the style to prevent a layout bug - // in IE 9 which causes the elemnt to continue to take up space even + // in IE 9 which causes the element to continue to take up space even // after it is removed from the DOM (#8026) div.offsetHeight; diff --git a/testing/011/category_integer_07_arithmetic_08.xml b/testing/011/category_integer_07_arithmetic_08.xml index 73308db..12b6b6d 100644 --- a/testing/011/category_integer_07_arithmetic_08.xml +++ b/testing/011/category_integer_07_arithmetic_08.xml @@ -33,7 +33,7 @@ - substract operation + subtract operation diff --git a/testing/011_category.m b/testing/011_category.m index 8cb4d3a..f57c1d1 100644 --- a/testing/011_category.m +++ b/testing/011_category.m @@ -17,7 +17,7 @@ @interface Integer (Arithmetic) /** add operation */ - (id) add: (Integer *) addend; -/** substract operation */ +/** subtract operation */ - (id) sub: (Integer *) subtrahend; @end diff --git a/testing/049/indexpage.xml b/testing/049/indexpage.xml index 0f3a63b..a6c9b97 100644 --- a/testing/049/indexpage.xml +++ b/testing/049/indexpage.xml @@ -4,7 +4,7 @@ index My Project - A bubble sort algoritm First get the inputs for(i=0;i<n;i++){printf("Array[%d]=",i);scanf("%d",&arr[i]);}Then do the bubbling for(i=0;i<n;i++){for(j=0;j<n-i-1;j++){if(arr[j]>arr[j+1])//SwappingConditionisChecked{temp=arr[j];arr[j]=arr[j+1];arr[j+1]=temp;}}}Then write the result for(i=0;i<n;i++){printf("%4d",arr[i]);} + A bubble sort algorithm First get the inputs for(i=0;i<n;i++){printf("Array[%d]=",i);scanf("%d",&arr[i]);}Then do the bubbling for(i=0;i<n;i++){for(j=0;j<n-i-1;j++){if(arr[j]>arr[j+1])//SwappingConditionisChecked{temp=arr[j];arr[j]=arr[j+1];arr[j+1]=temp;}}}Then write the result for(i=0;i<n;i++){printf("%4d",arr[i]);} diff --git a/testing/049_snippet.cpp b/testing/049_snippet.cpp index 2749a62..614a43c 100644 --- a/testing/049_snippet.cpp +++ b/testing/049_snippet.cpp @@ -3,7 +3,7 @@ // config: EXAMPLE_PATH = . /** \mainpage - * A bubble sort algoritm + * A bubble sort algorithm * First get the inputs * \snippet snippet_test.cpp input * Then do the bubbling -- cgit v0.12 From 87429a2609b822d2b08ec17fb2a20464a5043c9e Mon Sep 17 00:00:00 2001 From: ppescher Date: Wed, 25 Mar 2015 18:33:53 +0100 Subject: fix enum brief description in RTF output bug: brief description of enum member is put at the beginning of the next list item, instead of at the end of the current list item --- src/memberlist.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/memberlist.cpp b/src/memberlist.cpp index fae285f..64fe44a 100644 --- a/src/memberlist.cpp +++ b/src/memberlist.cpp @@ -409,7 +409,6 @@ void MemberList::writePlainDeclarations(OutputList &ol, { ol.endDoxyAnchor(md->getOutputFileBase(),md->anchor()); } - ol.endMemberItem(); if (!md->briefDescription().isEmpty() && Config_getBool("BRIEF_MEMBER_DESC")) { DocRoot *rootNode = validatingParseDoc( @@ -437,6 +436,7 @@ void MemberList::writePlainDeclarations(OutputList &ol, delete rootNode; } ol.endMemberDeclaration(md->anchor(),inheritId); + ol.endMemberItem(); } md->warnIfUndocumented(); break; -- cgit v0.12 From 700a9ac3c177fdef25b9b00ed6bb5e0ea963d236 Mon Sep 17 00:00:00 2001 From: ppescher Date: Fri, 27 Mar 2015 12:57:39 +0100 Subject: fix for CHM TOC "Classes" entry to point to annotated file bug: when layout file disables Class List but Classes are still visible the related TOC entry of Compiled HTML Help file does not link to any page, so the annotated.html file is not reachable from the TOC tree even though it still gets generated --- src/index.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/index.cpp b/src/index.cpp index 2cb7de2..e7ba8e7 100644 --- a/src/index.cpp +++ b/src/index.cpp @@ -4140,7 +4140,7 @@ static void writeIndexHierarchyEntries(OutputList &ol,const QList0 && addToIndex) { - Doxygen::indexList->addContentsItem(TRUE,lne->title(),0,0,0); + Doxygen::indexList->addContentsItem(TRUE,lne->title(),0,"annotated",0); Doxygen::indexList->incContentsDepth(); needsClosing=TRUE; } -- cgit v0.12 From 4438e24b478de1fd97ccc81a3a9f7651124e1c63 Mon Sep 17 00:00:00 2001 From: ppescher Date: Fri, 27 Mar 2015 13:00:00 +0100 Subject: added HHC.exe own output to the debug output when extcmd flag enabled this may help debugging the source of the error --- src/doxygen.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/doxygen.cpp b/src/doxygen.cpp index 17ec15d..09e92a4 100644 --- a/src/doxygen.cpp +++ b/src/doxygen.cpp @@ -11672,7 +11672,7 @@ void generateOutput() QString oldDir = QDir::currentDirPath(); QDir::setCurrent(Config_getString("HTML_OUTPUT")); portable_sysTimerStart(); - if (portable_system(Config_getString("HHC_LOCATION"), "index.hhp", FALSE)) + if (portable_system(Config_getString("HHC_LOCATION"), "index.hhp", Debug::isFlagSet(Debug::ExtCmd))) { err("failed to run html help compiler on index.hhp\n"); } -- cgit v0.12 From 0d208bc1c9a32718a93eb9911220ba72ad27fb9a Mon Sep 17 00:00:00 2001 From: hbccdf Date: Sat, 28 Mar 2015 21:24:22 +0800 Subject: Repair Doxygen generate invalid styleSheetFile and extensionsFile of RTF --- src/rtfgen.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/rtfgen.cpp b/src/rtfgen.cpp index 15c421a..7baaa3c 100644 --- a/src/rtfgen.cpp +++ b/src/rtfgen.cpp @@ -95,7 +95,7 @@ RTFGenerator::~RTFGenerator() void RTFGenerator::writeStyleSheetFile(QFile &file) { - QTextStream t(&file); + FTextStream t(&file); t << "# Generated by doxygen " << versionString << "\n\n"; t << "# This file describes styles used for generating RTF output.\n"; t << "# All text after a hash (#) is considered a comment and will be ignored.\n"; @@ -112,7 +112,7 @@ void RTFGenerator::writeStyleSheetFile(QFile &file) void RTFGenerator::writeExtensionsFile(QFile &file) { - QTextStream t(&file); + FTextStream t(&file); t << "# Generated by doxygen " << versionString << "\n\n"; t << "# This file describes extensions used for generating RTF output.\n"; t << "# All text after a hash (#) is considered a comment and will be ignored.\n"; -- cgit v0.12 From c604aef8a6465f38f8f04276194a66a4e044dc84 Mon Sep 17 00:00:00 2001 From: Pauli Nieminen Date: Sun, 29 Mar 2015 10:36:20 +0300 Subject: Fix missing brief documentation for overload and specialization functions Brief documentation entries were not added for template specializations or overload definitions. Adding brief documentation to those function definations fixes a corner case bug #406027 Bug 406027 - Templated class member specialization cannot be documented --- src/doxygen.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/doxygen.cpp b/src/doxygen.cpp index 09e92a4..2507e6e 100644 --- a/src/doxygen.cpp +++ b/src/doxygen.cpp @@ -6427,6 +6427,7 @@ static void findMember(EntryNav *rootNav, md->enableCallGraph(root->callGraph); md->enableCallerGraph(root->callerGraph); md->setDocumentation(root->doc,root->docFile,root->docLine); + md->setBriefDescription(root->brief,root->briefFile,root->briefLine); md->setInbodyDocumentation(root->inbodyDocs,root->inbodyFile,root->inbodyLine); md->setDocsForDefinition(!root->proto); md->setPrototype(root->proto); @@ -6494,6 +6495,7 @@ static void findMember(EntryNav *rootNav, doc+="

"; doc+=root->doc; md->setDocumentation(doc,root->docFile,root->docLine); + md->setBriefDescription(root->brief,root->briefFile,root->briefLine); md->setInbodyDocumentation(root->inbodyDocs,root->inbodyFile,root->inbodyLine); md->setDocsForDefinition(!root->proto); md->setPrototype(root->proto); -- cgit v0.12 From 288ea42fc27389160c20912003a7972e21195265 Mon Sep 17 00:00:00 2001 From: halex2005 Date: Mon, 30 Mar 2015 18:26:58 +0500 Subject: add support for github flavored fenced code blocks --- src/markdown.cpp | 8 +++++--- src/pre.l | 20 ++++++++++++++++++++ src/scanner.l | 14 ++++++++++++++ 3 files changed, 39 insertions(+), 3 deletions(-) diff --git a/src/markdown.cpp b/src/markdown.cpp index 5ecb198..32691d4 100644 --- a/src/markdown.cpp +++ b/src/markdown.cpp @@ -1366,7 +1366,9 @@ static bool isFencedCodeBlock(const char *data,int size,int refIndent, int startTildes=0; while (i=refIndent+4) return FALSE; // part of code block - while (i"```"[~]* { + static bool markdownSupport = Config_getBool("MARKDOWN_SUPPORT"); + if (!markdownSupport) + { + REJECT; + } + else + { + outputArray(yytext,(int)yyleng); + g_fenceSize=yyleng; + BEGIN(SkipVerbatim); + } + } [\\@][\\@]("verbatim"|"latexonly"|"htmlonly"|"xmlonly"|"docbookonly"|"rtfonly"|"manonly"|"dot"|"code"("{"[^}]*"}")?){BN}+ { outputArray(yytext,(int)yyleng); g_yyLineNr+=QCString(yytext).contains('\n'); @@ -2606,6 +2619,13 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'")) BEGIN(SkipCComment); } } +"```"[~]* { + outputArray(yytext,(int)yyleng); + if (g_fenceSize==yyleng) + { + BEGIN(SkipCComment); + } + } "*/"|"/*" { outputArray(yytext,(int)yyleng); } diff --git a/src/scanner.l b/src/scanner.l index 2e111cb..b9243c9 100644 --- a/src/scanner.l +++ b/src/scanner.l @@ -6271,6 +6271,13 @@ OPERATOR "operator"{B}*({ARITHOP}|{ASSIGNOP}|{LOGICOP}|{BITOP}) g_nestedComment=FALSE; BEGIN(DocCopyBlock); } +"```"[~]* { + docBlock+=yytext; + docBlockName="```"; + g_fencedSize=yyleng; + g_nestedComment=FALSE; + BEGIN(DocCopyBlock); + } {B}*"" { if (insideCS) { @@ -6389,6 +6396,13 @@ OPERATOR "operator"{B}*({ARITHOP}|{ASSIGNOP}|{LOGICOP}|{BITOP}) BEGIN(DocBlock); } } +"```"[~]* { + docBlock+=yytext; + if (g_fencedSize==yyleng) + { + BEGIN(DocBlock); + } + } [^\<@/*\]~\$\\\n]+ { // any character that is not special docBlock+=yytext; } -- cgit v0.12 From bb93db0d60fd4cd123dfc886ecd20167068db6ba Mon Sep 17 00:00:00 2001 From: halex2005 Date: Mon, 30 Mar 2015 21:36:40 +0500 Subject: fix *.l for three backticks --- src/pre.l | 4 ++-- src/scanner.l | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/pre.l b/src/pre.l index 7865966..92912e6 100644 --- a/src/pre.l +++ b/src/pre.l @@ -2465,7 +2465,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'")) BEGIN(SkipVerbatim); } } -"```"[~]* { +"```"[`]* { static bool markdownSupport = Config_getBool("MARKDOWN_SUPPORT"); if (!markdownSupport) { @@ -2619,7 +2619,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'")) BEGIN(SkipCComment); } } -"```"[~]* { +"```"[`]* { outputArray(yytext,(int)yyleng); if (g_fenceSize==yyleng) { diff --git a/src/scanner.l b/src/scanner.l index b9243c9..c309289 100644 --- a/src/scanner.l +++ b/src/scanner.l @@ -6271,7 +6271,7 @@ OPERATOR "operator"{B}*({ARITHOP}|{ASSIGNOP}|{LOGICOP}|{BITOP}) g_nestedComment=FALSE; BEGIN(DocCopyBlock); } -"```"[~]* { +"```"[`]* { docBlock+=yytext; docBlockName="```"; g_fencedSize=yyleng; @@ -6396,7 +6396,7 @@ OPERATOR "operator"{B}*({ARITHOP}|{ASSIGNOP}|{LOGICOP}|{BITOP}) BEGIN(DocBlock); } } -"```"[~]* { +"```"[`]* { docBlock+=yytext; if (g_fencedSize==yyleng) { -- cgit v0.12 From f5e70723391bacc2d68c19d367ab414e70f786b4 Mon Sep 17 00:00:00 2001 From: Dimitri van Heesch Date: Thu, 2 Apr 2015 21:17:27 +0200 Subject: Added function arguments to the LaTeX toc --- qtools/Doxyfile | 2 +- src/memberdef.cpp | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/qtools/Doxyfile b/qtools/Doxyfile index 644eee5..41f2ad9 100644 --- a/qtools/Doxyfile +++ b/qtools/Doxyfile @@ -196,7 +196,7 @@ EXTRA_SEARCH_MAPPINGS = #--------------------------------------------------------------------------- # configuration options related to the LaTeX output #--------------------------------------------------------------------------- -GENERATE_LATEX = NO +GENERATE_LATEX = YES LATEX_OUTPUT = LATEX_CMD_NAME = latex MAKEINDEX_CMD_NAME = makeindex diff --git a/src/memberdef.cpp b/src/memberdef.cpp index f27a579..5061ed8 100644 --- a/src/memberdef.cpp +++ b/src/memberdef.cpp @@ -2591,6 +2591,10 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol, ldef=ldef.mid(2); } } + else if (isFunction()) + { + title+=argsString(); + } int i=0,l; static QRegExp r("@[0-9]+"); -- cgit v0.12 From 39ba42c3b21d08ec606eee18ee8b64c67ec6a42a Mon Sep 17 00:00:00 2001 From: Dimitri van Heesch Date: Sun, 5 Apr 2015 20:52:42 +0200 Subject: Added documentation for ``` style fenced code block and more robust parsing --- doc/markdown.doc | 6 ++++++ src/pre.l | 10 +++++----- src/scanner.l | 8 ++++---- 3 files changed, 15 insertions(+), 9 deletions(-) diff --git a/doc/markdown.doc b/doc/markdown.doc index a35b802..87af3d8 100644 --- a/doc/markdown.doc +++ b/doc/markdown.doc @@ -390,6 +390,12 @@ int func(int a,int b) { return a*b; } The curly braces and dot are optional by the way. +Another way to denote fenced code blocks is to use 3 or more backticks (```): + + ``` + also a fenced code block + ``` + \subsection md_header_id Header Id Attributes Standard Markdown has no support for labeling headers, which diff --git a/src/pre.l b/src/pre.l index 92912e6..ab2ad6f 100644 --- a/src/pre.l +++ b/src/pre.l @@ -2452,7 +2452,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'")) [\\@][\\@]("f{"|"f$"|"f[") { outputArray(yytext,(int)yyleng); } -"~~~"[~]* { +^({B}*"*"+)?{B}{0,3}"~~~"[~]* { static bool markdownSupport = Config_getBool("MARKDOWN_SUPPORT"); if (!markdownSupport) { @@ -2465,7 +2465,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'")) BEGIN(SkipVerbatim); } } -"```"[`]* { +^({B}*"*"+)?{B}{0,3}"```"[`]* { static bool markdownSupport = Config_getBool("MARKDOWN_SUPPORT"); if (!markdownSupport) { @@ -2612,14 +2612,14 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'")) BEGIN(SkipCComment); } } -"~~~"[~]* { +^({B}*"*"+)?{B}{0,3}"~~~"[~]* { outputArray(yytext,(int)yyleng); if (g_fenceSize==yyleng) { BEGIN(SkipCComment); } } -"```"[`]* { +^({B}*"*"+)?{B}{0,3}"```"[`]* { outputArray(yytext,(int)yyleng); if (g_fenceSize==yyleng) { @@ -2629,7 +2629,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'")) "*/"|"/*" { outputArray(yytext,(int)yyleng); } -[^*\\@\x06~\n\/]+ { +[^*\\@\x06~`\n\/]+ { outputArray(yytext,(int)yyleng); } \n { diff --git a/src/scanner.l b/src/scanner.l index c309289..b11d777 100644 --- a/src/scanner.l +++ b/src/scanner.l @@ -6264,14 +6264,14 @@ OPERATOR "operator"{B}*({ARITHOP}|{ASSIGNOP}|{LOGICOP}|{BITOP}) g_nestedComment=FALSE; BEGIN(DocCopyBlock); } -"~~~"[~]* { +^({B}*"*"+)?{B}{0,3}"~~~"[~]* { docBlock+=yytext; docBlockName="~~~"; g_fencedSize=yyleng; g_nestedComment=FALSE; BEGIN(DocCopyBlock); } -"```"[`]* { +^({B}*"*"+)?{B}{0,3}"```"[`]* { docBlock+=yytext; docBlockName="```"; g_fencedSize=yyleng; @@ -6389,14 +6389,14 @@ OPERATOR "operator"{B}*({ARITHOP}|{ASSIGNOP}|{LOGICOP}|{BITOP}) REJECT; } } -"~~~"[~]* { +^({B}*"*"+)?{B}{0,3}"~~~"[~]* { docBlock+=yytext; if (g_fencedSize==yyleng) { BEGIN(DocBlock); } } -"```"[`]* { +^({B}*"*"+)?{B}{0,3}"```"[`]* { docBlock+=yytext; if (g_fencedSize==yyleng) { -- cgit v0.12 From 0831c71c05c9204839e187759f13303e64783730 Mon Sep 17 00:00:00 2001 From: Dimitri van Heesch Date: Mon, 6 Apr 2015 11:41:40 +0200 Subject: Guarded debug prints against printing a NULL pointer. --- src/classdef.cpp | 2 +- src/commentscan.l | 8 +-- src/definition.cpp | 4 +- src/doxygen.cpp | 174 ++++++++++++++++++++++++++--------------------------- src/filedef.cpp | 2 +- src/markdown.cpp | 2 +- src/message.cpp | 8 +-- src/portable.cpp | 2 +- src/pre.l | 6 +- src/util.cpp | 4 +- 10 files changed, 106 insertions(+), 106 deletions(-) diff --git a/src/classdef.cpp b/src/classdef.cpp index d48efd0..95428d6 100644 --- a/src/classdef.cpp +++ b/src/classdef.cpp @@ -3714,7 +3714,7 @@ ClassDef *ClassDef::insertTemplateInstance(const QCString &fileName, ClassDef *templateClass=m_impl->templateInstances->find(templSpec); if (templateClass==0) { - Debug::print(Debug::Classes,0," New template instance class `%s'`%s'\n",name().data(),templSpec.data()); + Debug::print(Debug::Classes,0," New template instance class `%s'`%s'\n",qPrint(name()),qPrint(templSpec)); QCString tcname = removeRedundantWhiteSpace(localName()+templSpec); templateClass = new ClassDef( fileName,startLine,startColumn,tcname,ClassDef::Class); diff --git a/src/commentscan.l b/src/commentscan.l index a85358c..23fd34a 100644 --- a/src/commentscan.l +++ b/src/commentscan.l @@ -2915,7 +2915,7 @@ bool parseCommentBlock(/* in */ ParserInterface *parser, } Debug::print(Debug::CommentScan,0,"-----------\nCommentScanner: %s:%d\n" - "input=[\n%s]\n",fileName.data(),lineNr,comment.data() + "input=[\n%s]\n",qPrint(fileName),lineNr,qPrint(comment) ); commentscanYYrestart( commentscanYYin ); @@ -2962,9 +2962,9 @@ bool parseCommentBlock(/* in */ ParserInterface *parser, Debug::print(Debug::CommentScan,0, "brief=[line=%d\n%s]\ndocs=[line=%d\n%s]\ninbody=[line=%d\n%s]\n===========\n", - current->briefLine,current->brief.data(), - current->docLine,current->doc.data(), - current->inbodyLine,current->inbodyDocs.data() + current->briefLine,qPrint(current->brief), + current->docLine,qPrint(current->doc), + current->inbodyLine,qPrint(current->inbodyDocs) ); checkFormula(); diff --git a/src/definition.cpp b/src/definition.cpp index 1381ea5..99a77b5 100644 --- a/src/definition.cpp +++ b/src/definition.cpp @@ -741,7 +741,7 @@ bool readCodeFragment(const char *fileName, else // use filter { QCString cmd=filter+" \""+fileName+"\""; - Debug::print(Debug::ExtCmd,0,"Executing popen(`%s`)\n",cmd.data()); + Debug::print(Debug::ExtCmd,0,"Executing popen(`%s`)\n",qPrint(cmd)); f = portable_popen(cmd,"r"); } bool found = lang==SrcLangExt_VHDL || @@ -868,7 +868,7 @@ bool readCodeFragment(const char *fileName, { portable_pclose(f); Debug::print(Debug::FilterOutput, 0, "Filter output\n"); - Debug::print(Debug::FilterOutput,0,"-------------\n%s\n-------------\n",result.data()); + Debug::print(Debug::FilterOutput,0,"-------------\n%s\n-------------\n",qPrint(result)); } else { diff --git a/src/doxygen.cpp b/src/doxygen.cpp index a3f7507..c3d2063 100644 --- a/src/doxygen.cpp +++ b/src/doxygen.cpp @@ -1265,12 +1265,12 @@ static void addClassToContext(EntryNav *rootNav) ClassDef *cd = getClass(qualifiedName); Debug::print(Debug::Classes,0, " Found class with name %s (qualifiedName=%s -> cd=%p)\n", - cd ? cd->name().data() : root->name.data(), qualifiedName.data(),cd); + cd ? qPrint(cd->name()) : qPrint(root->name), qPrint(qualifiedName),cd); if (cd) { fullName=cd->name(); - Debug::print(Debug::Classes,0," Existing class %s!\n",cd->name().data()); + Debug::print(Debug::Classes,0," Existing class %s!\n",qPrint(cd->name())); //if (cd->templateArguments()==0) //{ // //printf("existing ClassDef tempArgList=%p specScope=%s\n",root->tArgList,root->scopeSpec.data()); @@ -1341,7 +1341,7 @@ static void addClassToContext(EntryNav *rootNav) cd=new ClassDef(tagInfo?tagName:root->fileName,root->startLine,root->startColumn, fullName,sec,tagName,refFileName,TRUE,root->spec&Entry::Enum); Debug::print(Debug::Classes,0," New class `%s' (sec=0x%08x)! #tArgLists=%d tagInfo=%p\n", - fullName.data(),sec,root->tArgLists ? (int)root->tArgLists->count() : -1, tagInfo); + qPrint(fullName),sec,root->tArgLists ? (int)root->tArgLists->count() : -1, tagInfo); cd->setDocumentation(root->doc,root->docFile,root->docLine); // copy docs to definition cd->setBriefDescription(root->brief,root->briefFile,root->briefLine); cd->setLanguage(root->lang); @@ -2056,7 +2056,7 @@ static void findUsingDeclarations(EntryNav *rootNav) if (usingCd==0) // definition not in the input => add an artificial class { Debug::print(Debug::Classes,0," New using class `%s' (sec=0x%08x)! #tArgLists=%d\n", - name.data(),root->section,root->tArgLists ? (int)root->tArgLists->count() : -1); + qPrint(name),root->section,root->tArgLists ? (int)root->tArgLists->count() : -1); usingCd = new ClassDef( "",1,1, name, @@ -2068,7 +2068,7 @@ static void findUsingDeclarations(EntryNav *rootNav) else { Debug::print(Debug::Classes,0," Found used class %s in scope=%s\n", - usingCd->name().data(),nd?nd->name().data():fd->name().data()); + qPrint(usingCd->name()),nd?qPrint(nd->name()):qPrint(fd->name())); } if (nd) @@ -2249,13 +2249,13 @@ static MemberDef *addVariableToClass( Debug::print(Debug::Variables,0, " class variable:\n" " `%s' `%s'::`%s' `%s' prot=`%d ann=%d init=`%s'\n", - root->type.data(), - qualScope.data(), - name.data(), - root->args.data(), + qPrint(root->type), + qPrint(qualScope), + qPrint(name), + qPrint(root->args), root->protection, fromAnnScope, - root->initializer.data() + qPrint(root->initializer) ); QCString def; @@ -2416,10 +2416,10 @@ static MemberDef *addVariableToFile( Debug::print(Debug::Variables,0, " global variable:\n" " type=`%s' scope=`%s' name=`%s' args=`%s' prot=`%d mtype=%d lang=%d\n", - root->type.data(), - scope.data(), - name.data(), - root->args.data(), + qPrint(root->type), + qPrint(scope), + qPrint(name), + qPrint(root->args), root->protection, mtype, root->lang @@ -2561,7 +2561,7 @@ static MemberDef *addVariableToFile( { Debug::print(Debug::Variables,0, - " variable already found: scope=%s\n",md->getOuterScope()->name().data()); + " variable already found: scope=%s\n",qPrint(md->getOuterScope()->name())); addMemberDocs(rootNav,md,def,0,FALSE); md->setRefItems(root->sli); return md; @@ -2577,7 +2577,7 @@ static MemberDef *addVariableToFile( } Debug::print(Debug::Variables,0, - " new variable, nd=%s!\n",nd?nd->name().data():""); + " new variable, nd=%s!\n",nd?qPrint(nd->name()):""); // new global variable, enum value or typedef MemberDef *md=new MemberDef( fileName,root->startLine,root->startColumn, @@ -2804,12 +2804,12 @@ static void addVariable(EntryNav *rootNav,int isFuncPtr=-1) Debug::print(Debug::Variables,0, "VARIABLE_SEC: \n" " type=`%s' name=`%s' args=`%s' bodyLine=`%d' mGrpId=%d relates=%s\n", - root->type.data(), - root->name.data(), - root->args.data(), + qPrint(root->type), + qPrint(root->name), + qPrint(root->args), root->bodyLine, root->mGrpId, - root->relates.data() + qPrint(root->relates) ); //printf("root->parent->name=%s\n",root->parent->name.data()); @@ -3120,10 +3120,10 @@ static void addInterfaceOrServiceToServiceOrSingleton( " Interface Member:\n" " `%s' `%s' proto=%d\n" " def=`%s'\n", - root->type.data(), - rname.data(), + qPrint(root->type), + qPrint(rname), root->proto, - def.data() + qPrint(def) ); // add member to the global list of all members @@ -3166,20 +3166,20 @@ static void buildInterfaceAndServiceList(EntryNav *const rootNav) Debug::print(Debug::Functions,0, "EXPORTED_INTERFACE_SEC:\n" " `%s' `%s'::`%s' `%s' relates=`%s' relatesType=`%d' file=`%s' line=`%d' bodyLine=`%d' #tArgLists=%d mGrpId=%d spec=%lld proto=%d docFile=%s\n", - root->type.data(), - rootNav->parent()->name().data(), - root->name.data(), - root->args.data(), - root->relates.data(), + qPrint(root->type), + qPrint(rootNav->parent()->name()), + qPrint(root->name), + qPrint(root->args), + qPrint(root->relates), root->relatesType, - root->fileName.data(), + qPrint(root->fileName), root->startLine, root->bodyLine, root->tArgLists ? (int)root->tArgLists->count() : -1, root->mGrpId, root->spec, root->proto, - root->docFile.data() + qPrint(root->docFile) ); QCString const rname = removeRedundantWhiteSpace(root->name); @@ -3372,12 +3372,12 @@ static void addMethodToClass(EntryNav *rootNav,ClassDef *cd, " Func Member:\n" " `%s' `%s'::`%s' `%s' proto=%d\n" " def=`%s'\n", - root->type.data(), - qualScope.data(), - rname.data(), - root->args.data(), + qPrint(root->type), + qPrint(qualScope), + qPrint(rname), + qPrint(root->args), root->proto, - def.data() + qPrint(def) ); // add member to the global list of all members @@ -3415,20 +3415,20 @@ static void buildFunctionList(EntryNav *rootNav) Debug::print(Debug::Functions,0, "FUNCTION_SEC:\n" " `%s' `%s'::`%s' `%s' relates=`%s' relatesType=`%d' file=`%s' line=`%d' bodyLine=`%d' #tArgLists=%d mGrpId=%d spec=%lld proto=%d docFile=%s\n", - root->type.data(), - rootNav->parent()->name().data(), - root->name.data(), - root->args.data(), - root->relates.data(), + qPrint(root->type), + qPrint(rootNav->parent()->name()), + qPrint(root->name), + qPrint(root->args), + qPrint(root->relates), root->relatesType, - root->fileName.data(), + qPrint(root->fileName), root->startLine, root->bodyLine, root->tArgLists ? (int)root->tArgLists->count() : -1, root->mGrpId, root->spec, root->proto, - root->docFile.data() + qPrint(root->docFile) ); bool isFriend=root->type.find("friend ")!=-1; @@ -3498,7 +3498,7 @@ static void buildFunctionList(EntryNav *rootNav) ) { Debug::print(Debug::Functions,0," --> member %s of class %s!\n", - rname.data(),cd->name().data()); + qPrint(rname),qPrint(cd->name())); addMethodToClass(rootNav,cd,rname,isFriend); } else if (!((rootNav->parent()->section() & Entry::COMPOUND_MASK) @@ -3519,7 +3519,7 @@ static void buildFunctionList(EntryNav *rootNav) MemberDef *md=0; if ((mn=Doxygen::functionNameSDict->find(rname))) { - Debug::print(Debug::Functions,0," --> function %s already found!\n",rname.data()); + Debug::print(Debug::Functions,0," --> function %s already found!\n",qPrint(rname)); MemberNameIterator mni(*mn); for (mni.toFirst();(!found && (md=mni.current()));++mni) { @@ -3662,7 +3662,7 @@ static void buildFunctionList(EntryNav *rootNav) } if (!found) /* global function is unique with respect to the file */ { - Debug::print(Debug::Functions,0," --> new function %s found!\n",rname.data()); + Debug::print(Debug::Functions,0," --> new function %s found!\n",qPrint(rname)); //printf("New function type=`%s' name=`%s' args=`%s' bodyLine=%d\n", // root->type.data(),rname.data(),root->args.data(),root->bodyLine); @@ -3743,12 +3743,12 @@ static void buildFunctionList(EntryNav *rootNav) " Global Function:\n" " `%s' `%s'::`%s' `%s' proto=%d\n" " def=`%s'\n", - root->type.data(), - rootNav->parent()->name().data(), - rname.data(), - root->args.data(), + qPrint(root->type), + qPrint(rootNav->parent()->name()), + qPrint(rname), + qPrint(root->args), root->proto, - def.data() + qPrint(def) ); md->setDefinition(def); md->enableCallGraph(root->callGraph); @@ -3811,7 +3811,7 @@ static void buildFunctionList(EntryNav *rootNav) } else { - Debug::print(Debug::Functions,0," --> %s not processed!\n",rname.data()); + Debug::print(Debug::Functions,0," --> %s not processed!\n",qPrint(rname)); } } else if (rname.isEmpty()) @@ -4250,7 +4250,7 @@ static void findUsedClassesForClass(EntryNav *rootNav, if (arg->name==usedName) // type is a template argument { found=TRUE; - Debug::print(Debug::Classes,0," New used class `%s'\n", usedName.data()); + Debug::print(Debug::Classes,0," New used class `%s'\n", qPrint(usedName)); ClassDef *usedCd = Doxygen::hiddenClasses->find(usedName); if (usedCd==0) @@ -4267,7 +4267,7 @@ static void findUsedClassesForClass(EntryNav *rootNav, Doxygen::hiddenClasses->append(usedName,usedCd); } if (isArtificial) usedCd->setArtificial(TRUE); - Debug::print(Debug::Classes,0," Adding used class `%s' (1)\n", usedCd->name().data()); + Debug::print(Debug::Classes,0," Adding used class `%s' (1)\n", qPrint(usedCd->name())); instanceCd->addUsedClass(usedCd,md->name(),md->protection()); usedCd->addUsedByClass(instanceCd,md->name(),md->protection()); } @@ -4283,7 +4283,7 @@ static void findUsedClassesForClass(EntryNav *rootNav, if (usedCd) { found=TRUE; - Debug::print(Debug::Classes,0," Adding used class `%s' (2)\n", usedCd->name().data()); + Debug::print(Debug::Classes,0," Adding used class `%s' (2)\n", qPrint(usedCd->name())); instanceCd->addUsedClass(usedCd,md->name(),md->protection()); // class exists usedCd->addUsedByClass(instanceCd,md->name(),md->protection()); } @@ -4303,7 +4303,7 @@ static void findUsedClassesForClass(EntryNav *rootNav, { type+=md->argsString(); } - Debug::print(Debug::Classes,0," New undocumented used class `%s'\n", type.data()); + Debug::print(Debug::Classes,0," New undocumented used class `%s'\n", qPrint(type)); usedCd = new ClassDef( masterCd->getDefFileName(),masterCd->getDefLine(), masterCd->getDefColumn(), @@ -4315,7 +4315,7 @@ static void findUsedClassesForClass(EntryNav *rootNav, if (usedCd) { if (isArtificial) usedCd->setArtificial(TRUE); - Debug::print(Debug::Classes,0," Adding used class `%s' (3)\n", usedCd->name().data()); + Debug::print(Debug::Classes,0," Adding used class `%s' (3)\n", qPrint(usedCd->name())); instanceCd->addUsedClass(usedCd,md->name(),md->protection()); usedCd->addUsedByClass(instanceCd,md->name(),md->protection()); } @@ -4401,7 +4401,7 @@ static bool findTemplateInstanceRelation(Entry *root, bool isArtificial) { Debug::print(Debug::Classes,0," derived from template %s with parameters %s\n", - templateClass->name().data(),templSpec.data()); + qPrint(templateClass->name()),qPrint(templSpec)); //printf("findTemplateInstanceRelation(base=%s templSpec=%s templateNames=", // templateClass->name().data(),templSpec.data()); //if (templateNames) @@ -4428,7 +4428,7 @@ static bool findTemplateInstanceRelation(Entry *root, if (freshInstance) { - Debug::print(Debug::Classes,0," found fresh instance '%s'!\n",instanceClass->name().data()); + Debug::print(Debug::Classes,0," found fresh instance '%s'!\n",qPrint(instanceClass->name())); Doxygen::classSDict->append(instanceClass->name(),instanceClass); instanceClass->setTemplateBaseClassNames(templateNames); @@ -4448,7 +4448,7 @@ static bool findTemplateInstanceRelation(Entry *root, } Debug::print(Debug::Classes,0," template root found %s templSpec=%s!\n", - templateRoot->name.data(),templSpec.data()); + qPrint(templateRoot->name),qPrint(templSpec)); ArgumentList *templArgs = new ArgumentList; stringToArgumentList(templSpec,templArgs); findBaseClassesForClass(templateRootNav,context,templateClass,instanceClass, @@ -4658,11 +4658,11 @@ static bool findClassRelation( { Debug::print( Debug::Classes,0," class relation %s inherited/used by %s found (%s and %s) templSpec='%s'\n", - baseClassName.data(), - rootNav->name().data(), + qPrint(baseClassName), + qPrint(rootNav->name()), (bi->prot==Private)?"private":((bi->prot==Protected)?"protected":"public"), (bi->virt==Normal)?"normal":"virtual", - templSpec.data() + qPrint(templSpec) ); int i=baseClassName.find('<'); @@ -4768,7 +4768,7 @@ static bool findClassRelation( //printf("3. found=%d\n",found); if (found) { - Debug::print(Debug::Classes,0," Documented base class `%s' templSpec=%s\n",biName.data(),templSpec.isEmpty()?"":templSpec.data()); + Debug::print(Debug::Classes,0," Documented base class `%s' templSpec=%s\n",qPrint(biName),qPrint(templSpec)); // add base class to this class // if templSpec is not empty then we should "instantiate" @@ -4824,7 +4824,7 @@ static bool findClassRelation( { Debug::print(Debug::Classes,0, " New undocumented base class `%s' baseClassName=%s templSpec=%s isArtificial=%d\n", - biName.data(),baseClassName.data(),templSpec.data(),isArtificial + qPrint(biName),qPrint(baseClassName),qPrint(templSpec),isArtificial ); baseClass=0; if (isATemplateArgument) @@ -4883,7 +4883,7 @@ static bool findClassRelation( } else { - Debug::print(Debug::Classes,0," Base class `%s' not found\n",biName.data()); + Debug::print(Debug::Classes,0," Base class `%s' not found\n",qPrint(biName)); } } else @@ -4992,7 +4992,7 @@ static void findInheritedTemplateInstances() { ClassDef *cd; QCString bName = extractClassName(rootNav); - Debug::print(Debug::Classes,0," Inheritance: Class %s : \n",bName.data()); + Debug::print(Debug::Classes,0," Inheritance: Class %s : \n",qPrint(bName)); if ((cd=getClass(bName))) { rootNav->loadEntry(g_storage); @@ -5013,7 +5013,7 @@ static void findUsedTemplateInstances() { ClassDef *cd; QCString bName = extractClassName(rootNav); - Debug::print(Debug::Classes,0," Usage: Class %s : \n",bName.data()); + Debug::print(Debug::Classes,0," Usage: Class %s : \n",qPrint(bName)); if ((cd=getClass(bName))) { rootNav->loadEntry(g_storage); @@ -5037,7 +5037,7 @@ static void computeClassRelations() rootNav->loadEntry(g_storage); Entry *root = rootNav->entry(); QCString bName = extractClassName(rootNav); - Debug::print(Debug::Classes,0," Relations: Class %s : \n",bName.data()); + Debug::print(Debug::Classes,0," Relations: Class %s : \n",qPrint(bName)); if ((cd=getClass(bName))) { findBaseClassesForClass(rootNav,cd,cd,cd,DocumentedOnly,FALSE); @@ -5079,12 +5079,12 @@ static void computeTemplateClassRelations() QDict *templInstances = 0; if (cd && (templInstances=cd->getTemplateInstances())) { - Debug::print(Debug::Classes,0," Template class %s : \n",cd->name().data()); + Debug::print(Debug::Classes,0," Template class %s : \n",qPrint(cd->name())); QDictIterator tdi(*templInstances); ClassDef *tcd; for (tdi.toFirst();(tcd=tdi.current());++tdi) // for each template instance { - Debug::print(Debug::Classes,0," Template instance %s : \n",tcd->name().data()); + Debug::print(Debug::Classes,0," Template instance %s : \n",qPrint(tcd->name())); QCString templSpec = tdi.currentKey(); ArgumentList *templArgs = new ArgumentList; stringToArgumentList(templSpec,templArgs); @@ -5453,7 +5453,7 @@ static bool findGlobalMember(EntryNav *rootNav, Entry *root = rootNav->entry(); Debug::print(Debug::FindMembers,0, "2. findGlobalMember(namespace=%s,type=%s,name=%s,tempArg=%s,decl=%s)\n", - namespaceName.data(),type,name,tempArg,decl); + qPrint(namespaceName),qPrint(type),qPrint(name),qPrint(tempArg),qPrint(decl)); QCString n=name; if (n.isEmpty()) return FALSE; if (n.find("::")!=-1) return FALSE; // skip undefined class members @@ -5492,7 +5492,7 @@ static bool findGlobalMember(EntryNav *rootNav, ) { Debug::print(Debug::FindMembers,0,"4. Try to add member `%s' to scope `%s'\n", - md->name().data(),namespaceName.data()); + qPrint(md->name()),qPrint(namespaceName)); NamespaceDef *rnd = 0; if (!namespaceName.isEmpty()) rnd = Doxygen::namespaceSDict->find(namespaceName); @@ -5772,7 +5772,7 @@ static void findMember(EntryNav *rootNav, "findMember(root=%p,funcDecl=`%s',related=`%s',overload=%d," "isFunc=%d mGrpId=%d tArgList=%p (#=%d) " "spec=%lld lang=%x\n", - root,funcDecl.data(),root->relates.data(),overloaded,isFunc,root->mGrpId, + root,qPrint(funcDecl),qPrint(root->relates),overloaded,isFunc,root->mGrpId, root->tArgLists,root->tArgLists ? root->tArgLists->count() : 0, root->spec,root->lang ); @@ -6060,9 +6060,9 @@ static void findMember(EntryNav *rootNav, " isMemberOf=%d\n" " isFriend=%d\n" " isFunc=%d\n\n", - namespaceName.data(),className.data(), - funcType.data(),funcSpec.data(),funcName.data(),funcArgs.data(),funcTempList.data(), - funcDecl.data(),root->relates.data(),exceptions.data(),isRelated,isMemberOf,isFriend, + qPrint(namespaceName),qPrint(className), + qPrint(funcType),qPrint(funcSpec),qPrint(funcName),qPrint(funcArgs),qPrint(funcTempList), + qPrint(funcDecl),qPrint(root->relates),qPrint(exceptions),isRelated,isMemberOf,isFriend, isFunc ); @@ -6102,9 +6102,9 @@ static void findMember(EntryNav *rootNav, Debug::print(Debug::FindMembers,0, "3. member definition found, " "scope needed=`%s' scope=`%s' args=`%s' fileName=%s\n", - scopeName.data(),cd ? cd->name().data() : "", - md->argsString(), - root->fileName.data()); + qPrint(scopeName),cd ? qPrint(cd->name()) : "", + qPrint(md->argsString()), + qPrint(root->fileName)); //printf("Member %s (member scopeName=%s) (this scopeName=%s) classTempList=%s\n",md->name().data(),cd->name().data(),scopeName.data(),classTempList.data()); FileDef *fd=rootNav->fileDef(); NamespaceDef *nd=0; @@ -6171,8 +6171,8 @@ static void findMember(EntryNav *rootNav, Debug::print(Debug::FindMembers,0, "5. matching `%s'<=>`%s' className=%s namespaceName=%s\n", - argListToString(argList,TRUE).data(),argListToString(root->argList,TRUE).data(), - className.data(),namespaceName.data() + qPrint(argListToString(argList,TRUE)),qPrint(argListToString(root->argList,TRUE)), + qPrint(className),qPrint(namespaceName) ); bool matching= @@ -6197,7 +6197,7 @@ static void findMember(EntryNav *rootNav, className+"::",""); // see bug700693 & bug732594 Debug::print(Debug::FindMembers,0, "5b. Comparing return types '%s'<->'%s' #args %d<->%d\n", - md->typeString(),funcType.data(), + qPrint(md->typeString()),qPrint(funcType), md->templateArguments()->count(),root->tArgLists->getLast()->count()); if (md->templateArguments()->count()!=root->tArgLists->getLast()->count() || qstrcmp(memType,funcType)) @@ -6298,7 +6298,7 @@ static void findMember(EntryNav *rootNav, umd = emd = cmd; Debug::print(Debug::FindMembers,0, "7. new candidate className=%s scope=%s args=%s exact match\n", - className.data(),ccd->name().data(),md->argsString()); + qPrint(className),qPrint(ccd->name()),qPrint(md->argsString())); } else // arguments do not match, but member name and scope do -> remember { @@ -6306,7 +6306,7 @@ static void findMember(EntryNav *rootNav, umd = cmd; Debug::print(Debug::FindMembers,0, "7. new candidate className=%s scope=%s args=%s no match\n", - className.data(),ccd->name().data(),md->argsString()); + qPrint(className),qPrint(ccd->name()),qPrint(md->argsString())); } candidates++; } @@ -6527,7 +6527,7 @@ static void findMember(EntryNav *rootNav, else if (isRelated && !root->relates.isEmpty()) { Debug::print(Debug::FindMembers,0,"2. related function\n" - " scopeName=%s className=%s\n",scopeName.data(),className.data()); + " scopeName=%s className=%s\n",qPrint(scopeName),qPrint(className)); if (className.isEmpty()) className=root->relates; ClassDef *cd; //printf("scopeName=`%s' className=`%s'\n",scopeName.data(),className.data()); @@ -6752,7 +6752,7 @@ localObjCMethod: if (Config_getBool("EXTRACT_LOCAL_METHODS") && (cd=getClass(scopeName))) { Debug::print(Debug::FindMembers,0,"4. Local objective C method %s\n" - " scopeName=%s className=%s\n",root->name.data(),scopeName.data(),className.data()); + " scopeName=%s className=%s\n",qPrint(root->name),qPrint(scopeName),qPrint(className)); //printf("Local objective C method `%s' of class `%s' found\n",root->name.data(),cd->name().data()); MemberDef *md=new MemberDef( root->fileName,root->startLine,root->startColumn, @@ -6834,7 +6834,7 @@ static void filterMemberDocumentation(EntryNav *rootNav) int i=-1,l; Debug::print(Debug::FindMembers,0, "findMemberDocumentation(): root->type=`%s' root->inside=`%s' root->name=`%s' root->args=`%s' section=%x root->spec=%lld root->mGrpId=%d\n", - root->type.data(),root->inside.data(),root->name.data(),root->args.data(),root->section,root->spec,root->mGrpId + qPrint(root->type),qPrint(root->inside),qPrint(root->name),qPrint(root->args),root->section,root->spec,root->mGrpId ); //printf("rootNav->parent()->name()=%s\n",rootNav->parent()->name().data()); bool isFunc=TRUE; diff --git a/src/filedef.cpp b/src/filedef.cpp index 1fee7bb..d6e49a2 100644 --- a/src/filedef.cpp +++ b/src/filedef.cpp @@ -1741,7 +1741,7 @@ void FileDef::acquireFileVersion() { msg("Version of %s : ",m_filePath.data()); QCString cmd = vercmd+" \""+m_filePath+"\""; - Debug::print(Debug::ExtCmd,0,"Executing popen(`%s`)\n",cmd.data()); + Debug::print(Debug::ExtCmd,0,"Executing popen(`%s`)\n",qPrint(cmd)); FILE *f=portable_popen(cmd,"r"); if (!f) { diff --git a/src/markdown.cpp b/src/markdown.cpp index 32691d4..02d1416 100644 --- a/src/markdown.cpp +++ b/src/markdown.cpp @@ -2318,7 +2318,7 @@ QCString processMarkdown(const QCString &fileName,const int lineNr,Entry *e,cons // finally process the inline markup (links, emphasis and code spans) processInline(out,s,s.length()); out.addChar(0); - Debug::print(Debug::Markdown,0,"======== Markdown =========\n---- input ------- \n%s\n---- output -----\n%s\n---------\n",input.data(),out.get()); + Debug::print(Debug::Markdown,0,"======== Markdown =========\n---- input ------- \n%s\n---- output -----\n%s\n---------\n",qPrint(input),qPrint(out.get())); return out.get(); } diff --git a/src/message.cpp b/src/message.cpp index df0a2dc..8f89c11 100644 --- a/src/message.cpp +++ b/src/message.cpp @@ -238,15 +238,15 @@ void printlex(int dbg, bool enter, const char *lexName, const char *fileName) if (dbg) { if (fileName) - fprintf(stderr,"--%s lexical analyzer: %s (for: %s)\n",enter_txt, lexName, fileName); + fprintf(stderr,"--%s lexical analyzer: %s (for: %s)\n",enter_txt, qPrint(lexName), qPrint(fileName)); else - fprintf(stderr,"--%s lexical analyzer: %s\n",enter_txt, lexName); + fprintf(stderr,"--%s lexical analyzer: %s\n",enter_txt, qPrint(lexName)); } else { if (fileName) - Debug::print(Debug::Lex,0,"%s lexical analyzer: %s (for: %s)\n",enter_txt_uc, lexName, fileName); + Debug::print(Debug::Lex,0,"%s lexical analyzer: %s (for: %s)\n",enter_txt_uc, qPrint(lexName), qPrint(fileName)); else - Debug::print(Debug::Lex,0,"%s lexical analyzer: %s\n",enter_txt_uc, lexName); + Debug::print(Debug::Lex,0,"%s lexical analyzer: %s\n",enter_txt_uc, qPrint(lexName)); } } diff --git a/src/portable.cpp b/src/portable.cpp index ff29303..5886793 100644 --- a/src/portable.cpp +++ b/src/portable.cpp @@ -45,7 +45,7 @@ int portable_system(const char *command,const char *args,bool commandHasConsole) fullCmd += " "; fullCmd += args; #ifndef NODEBUG - Debug::print(Debug::ExtCmd,0,"Executing external command `%s`\n",fullCmd.data()); + Debug::print(Debug::ExtCmd,0,"Executing external command `%s`\n",qPrint(fullCmd)); #endif #if !defined(_WIN32) || defined(__CYGWIN__) diff --git a/src/pre.l b/src/pre.l index ab2ad6f..e56b8ab 100644 --- a/src/pre.l +++ b/src/pre.l @@ -1618,11 +1618,11 @@ static void readIncludeFile(const QCString &inc) { if (alreadyIncluded) { - Debug::print(Debug::Preprocessor,0,"#include %s: already included! skipping...\n",incFileName.data()); + Debug::print(Debug::Preprocessor,0,"#include %s: already included! skipping...\n",qPrint(incFileName)); } else { - Debug::print(Debug::Preprocessor,0,"#include %s: not found! skipping...\n",incFileName.data()); + Debug::print(Debug::Preprocessor,0,"#include %s: not found! skipping...\n",qPrint(incFileName)); } //printf("error: include file %s not found\n",yytext); } @@ -3199,7 +3199,7 @@ void preprocessFile(const char *fileName,BufStr &input,BufStr &output) Define *def; for (di.toFirst();(def=di.current());++di) { - Debug::print(Debug::Preprocessor,0,"%s ",def->name.data()); + Debug::print(Debug::Preprocessor,0,"%s ",qPrint(def->name)); } Debug::print(Debug::Preprocessor,0,"\n---------\n"); } diff --git a/src/util.cpp b/src/util.cpp index a550a2f..9bb1632 100644 --- a/src/util.cpp +++ b/src/util.cpp @@ -7521,7 +7521,7 @@ bool readInputFile(const char *fileName,BufStr &inBuf,bool filter,bool isSourceC else { QCString cmd=filterName+" \""+fileName+"\""; - Debug::print(Debug::ExtCmd,0,"Executing popen(`%s`)\n",cmd.data()); + Debug::print(Debug::ExtCmd,0,"Executing popen(`%s`)\n",qPrint(cmd)); FILE *f=portable_popen(cmd,"r"); if (!f) { @@ -7539,7 +7539,7 @@ bool readInputFile(const char *fileName,BufStr &inBuf,bool filter,bool isSourceC portable_pclose(f); inBuf.at(inBuf.curPos()) ='\0'; Debug::print(Debug::FilterOutput, 0, "Filter output\n"); - Debug::print(Debug::FilterOutput,0,"-------------\n%s\n-------------\n",inBuf.data()); + Debug::print(Debug::FilterOutput,0,"-------------\n%s\n-------------\n",qPrint(inBuf)); } int start=0; -- cgit v0.12 From 5cdf62661c88b5f0c135337da4d6e58581aad037 Mon Sep 17 00:00:00 2001 From: Dimitri van Heesch Date: Mon, 6 Apr 2015 15:51:37 +0200 Subject: Bug 747111 - Table of content incorrect with escaped symbols --- src/definition.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/definition.cpp b/src/definition.cpp index 99a77b5..457c6ea 100644 --- a/src/definition.cpp +++ b/src/definition.cpp @@ -1667,7 +1667,8 @@ void Definition::writeToc(OutputList &ol) } cs[0]='0'+nextLevel; if (inLi[nextLevel]) ol.writeString("\n"); - ol.writeString("

  • label+"\">"+(si->title.isEmpty()?si->label:si->title)+""); + QCString titleDoc = convertToHtml(si->title); + ol.writeString("
  • label+"\">"+(si->title.isEmpty()?si->label:titleDoc)+""); inLi[nextLevel]=TRUE; level = nextLevel; } -- cgit v0.12 From 298ab30b2a2aa0936f4683c9366afd44c00adc60 Mon Sep 17 00:00:00 2001 From: Dimitri van Heesch Date: Mon, 6 Apr 2015 16:02:42 +0200 Subject: Bug 746619 - Bogus warnings in case of anonymous namespace and @todo --- src/doctokenizer.l | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/doctokenizer.l b/src/doctokenizer.l index 3f2ad94..c642fc1 100644 --- a/src/doctokenizer.l +++ b/src/doctokenizer.l @@ -1035,7 +1035,7 @@ REFWORD {LABELID}|{REFWORD2}|{REFWORD3}|{REFWORD4} {BLANK}+"\"" { BEGIN(St_Ref2); } -{SCOPEMASK}{BLANK} { +({SCOPEMASK}|{ANONNS}){BLANK} { g_token->name = yytext; g_token->name = g_token->name.stripWhiteSpace(); return TK_WORD; -- cgit v0.12 From 3cc116ba2250e6946773ec22c6c7c6557773d28e Mon Sep 17 00:00:00 2001 From: wtschueller Date: Tue, 7 Apr 2015 21:45:31 +0200 Subject: Tcl: fix for extra line breaks in source browser introduced by commit 312bef5 --- src/tclscanner.l | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/tclscanner.l b/src/tclscanner.l index 6ad2e26..7befd40 100644 --- a/src/tclscanner.l +++ b/src/tclscanner.l @@ -666,7 +666,9 @@ static void tcl_codify(const char *s,const char *str) tcl.code->startFontClass(s); tcl.code_font=s; } - const char *p=str,*sp=p; + char *tmp = (char *) malloc(strlen(str)+1); + strcpy(tmp, str); + char *p=tmp,*sp=p; char c; bool done=FALSE; while (!done) @@ -676,7 +678,10 @@ static void tcl_codify(const char *s,const char *str) if (c=='\n') { tcl.code_line++; - // *(p-1)='\0'; // Dimitri: is this really needed? + *(p-1)='\0'; // Dimitri: is this really needed? + // wtschueller: As far as I can see: yes. + // Deletes that \n that would produce ugly source listings otherwise. + // However, there may exist more sophisticated solutions. tcl.code->codify(sp); if (tcl.code_font) { @@ -699,6 +704,7 @@ static void tcl_codify(const char *s,const char *str) done=TRUE; } } + free(tmp); tcl_font_end(); } -- cgit v0.12 From e34913dcbe0bee2c3e21d6e21b2bcc6970003a5c Mon Sep 17 00:00:00 2001 From: albert-github Date: Sat, 11 Apr 2015 18:11:36 +0200 Subject: Doxygen LaTeX / PDF links point to page 1 Based in the message: http://stackoverflow.com/questions/29551138/doxygen-latex-pdf-links-point-to-page-1 In case the CREATE_SUDIRS is set to YES the name of the link was pre=pended with the *sub dir) path, this has been removed. --- src/latexgen.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/latexgen.cpp b/src/latexgen.cpp index 1e2589e..042dd7c 100644 --- a/src/latexgen.cpp +++ b/src/latexgen.cpp @@ -1444,18 +1444,18 @@ void LatexGenerator::endDoxyAnchor(const char *fName,const char *anchor) void LatexGenerator::writeAnchor(const char *fName,const char *name) { //printf("LatexGenerator::writeAnchor(%s,%s)\n",fName,name); - t << "\\label{" << name << "}" << endl; + t << "\\label{" << stripPath(name) << "}" << endl; static bool pdfHyperlinks = Config_getBool("PDF_HYPERLINKS"); static bool usePDFLatex = Config_getBool("USE_PDFLATEX"); if (usePDFLatex && pdfHyperlinks) { if (fName) { - t << "\\hypertarget{" << stripPath(fName) << "_" << name << "}{}" << endl; + t << "\\hypertarget{" << stripPath(fName) << "_" << stripPath(name) << "}{}" << endl; } else { - t << "\\hypertarget{" << name << "}{}" << endl; + t << "\\hypertarget{" << stripPath(name) << "}{}" << endl; } } } -- cgit v0.12 From d3e7b06f3a82780083e27bb83360ed9496df9f8d Mon Sep 17 00:00:00 2001 From: albert-github Date: Sat, 11 Apr 2015 18:35:27 +0200 Subject: Remove unreachable code The else part of the condition of the if statement is not reachable (When entering this part of the code ref.isEmpty() is always True). --- src/latexdocvisitor.cpp | 21 +++++---------------- 1 file changed, 5 insertions(+), 16 deletions(-) diff --git a/src/latexdocvisitor.cpp b/src/latexdocvisitor.cpp index 0699960..37c2130 100644 --- a/src/latexdocvisitor.cpp +++ b/src/latexdocvisitor.cpp @@ -1578,22 +1578,11 @@ void LatexDocVisitor::startLink(const QCString &ref,const QCString &file,const Q { if (ref.isEmpty() && Config_getBool("PDF_HYPERLINKS")) // internal PDF link { - if (ref.isEmpty()) { - m_t << "\\hyperlink{"; - if (!file.isEmpty()) m_t << stripPath(file); - if (!file.isEmpty() && !anchor.isEmpty()) m_t << "_"; - if (!anchor.isEmpty()) m_t << anchor; - m_t << "}{"; - } - else - { - QCString *dest; - m_t << "\\href{"; - if ((dest=Doxygen::tagDestinationDict[ref])) m_t << *dest << "/"; - if (!file.isEmpty()) m_t << file << Doxygen::htmlFileExtension; - if (!anchor.isEmpty()) m_t << "#" << anchor; - m_t << "}{"; - } + m_t << "\\hyperlink{"; + if (!file.isEmpty()) m_t << stripPath(file); + if (!file.isEmpty() && !anchor.isEmpty()) m_t << "_"; + if (!anchor.isEmpty()) m_t << anchor; + m_t << "}{"; } else if (ref.isEmpty()) // internal non-PDF link { -- cgit v0.12 From 1e3e9f03e746d4ac46c9c7b1b80e7e3100ee42f0 Mon Sep 17 00:00:00 2001 From: Dimitri van Heesch Date: Sun, 12 Apr 2015 12:04:23 +0200 Subject: Removed OS version check for MACOSX (was not used anywhere) --- qtools/qglobal.h | 28 ---------------------------- 1 file changed, 28 deletions(-) diff --git a/qtools/qglobal.h b/qtools/qglobal.h index aa11f01..c3f7594 100644 --- a/qtools/qglobal.h +++ b/qtools/qglobal.h @@ -76,34 +76,6 @@ # undef MAC_OS_X_VERSION_MIN_REQUIRED # endif # define MAC_OS_X_VERSION_MIN_REQUIRED MAC_OS_X_VERSION_10_3 -# include -# if !defined(MAC_OS_X_VERSION_10_3) -# define MAC_OS_X_VERSION_10_3 MAC_OS_X_VERSION_10_2 + 10 -# endif -# if !defined(MAC_OS_X_VERSION_10_4) -# define MAC_OS_X_VERSION_10_4 MAC_OS_X_VERSION_10_3 + 10 -# endif -# if !defined(MAC_OS_X_VERSION_10_5) -# define MAC_OS_X_VERSION_10_5 MAC_OS_X_VERSION_10_4 + 10 -# endif -# if !defined(MAC_OS_X_VERSION_10_6) -# define MAC_OS_X_VERSION_10_6 MAC_OS_X_VERSION_10_5 + 10 -# endif -# if !defined(MAC_OS_X_VERSION_10_7) -# define MAC_OS_X_VERSION_10_7 MAC_OS_X_VERSION_10_6 + 10 -# endif -# if !defined(MAC_OS_X_VERSION_10_8) -# define MAC_OS_X_VERSION_10_8 MAC_OS_X_VERSION_10_7 + 10 -# endif -# if !defined(MAC_OS_X_VERSION_10_9) -# define MAC_OS_X_VERSION_10_9 MAC_OS_X_VERSION_10_8 + 10 -# endif -# if !defined(MAC_OS_X_VERSION_10_10) -# define MAC_OS_X_VERSION_10_10 MAC_OS_X_VERSION_10_9 + 10 -# endif -# if (MAC_OS_X_VERSION_MAX_ALLOWED > MAC_OS_X_VERSION_10_10) -# warning "This version of Mac OS X is unsupported" -# endif #elif defined(MSDOS) || defined(_MSDOS) || defined(__MSDOS__) #define _OS_MSDOS_ #elif defined(OS2) || defined(_OS2) || defined(__OS2__) -- cgit v0.12 From 50a329c056a2676608f30321a3207ff17ab20abb Mon Sep 17 00:00:00 2001 From: Dimitri van Heesch Date: Sun, 12 Apr 2015 15:16:01 +0200 Subject: Bug 746226 - last enum member not documented --- src/commentscan.l | 2 +- src/scanner.l | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/commentscan.l b/src/commentscan.l index 23fd34a..54adbd8 100644 --- a/src/commentscan.l +++ b/src/commentscan.l @@ -3114,7 +3114,7 @@ void closeGroup(Entry *e,const char *fileName,int,bool foundInline) g_memberGroupId=DOX_NOGROUP; g_memberGroupRelates.resize(0); g_memberGroupDocs.resize(0); - e->mGrpId=DOX_NOGROUP; + if (!foundInline) e->mGrpId=DOX_NOGROUP; //printf("new group id=%d\n",g_memberGroupId); } else if (!g_autoGroupStack.isEmpty()) // end of auto group diff --git a/src/scanner.l b/src/scanner.l index b11d777..9529c34 100644 --- a/src/scanner.l +++ b/src/scanner.l @@ -2805,7 +2805,8 @@ OPERATOR "operator"{B}*({ARITHOP}|{ASSIGNOP}|{LOGICOP}|{BITOP}) } } "//"([!/]?){B}*{CMD}"}".*|"/*"([!*]?){B}*{CMD}"}"[^*]*"*/" { - closeGroup(current,yyFileName,yyLineNr); + bool insideEnum = YY_START==FindFields || (YY_START==ReadInitializer && lastInitializerContext==FindFields); // see bug746226 + closeGroup(current,yyFileName,yyLineNr,insideEnum); } "=" { // in PHP code this could also be due to "bodyLine = yyLineNr; -- cgit v0.12 From 3608a668b3892eaa4f7b2e4b29b833ede24ceee7 Mon Sep 17 00:00:00 2001 From: albert-github Date: Mon, 13 Apr 2015 18:45:09 +0200 Subject: Bug 747780 - man output should escape minus signs Escaped minus sign --- src/mangen.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/mangen.cpp b/src/mangen.cpp index 77aa07d..a88ac26 100644 --- a/src/mangen.cpp +++ b/src/mangen.cpp @@ -306,6 +306,7 @@ void ManGenerator::docify(const char *str) { switch(c) { + case '-': t << "\\-"; break; // see bug747780 case '.': t << "\\&."; break; // see bug652277 case '\\': t << "\\\\"; col++; break; case '\n': t << "\n"; col=0; break; -- cgit v0.12