diff options
Diffstat (limited to 'src')
45 files changed, 682 insertions, 497 deletions
diff --git a/src/classdef.cpp b/src/classdef.cpp index 657968e..52aa96b 100644 --- a/src/classdef.cpp +++ b/src/classdef.cpp @@ -1013,13 +1013,13 @@ void ClassDef::writeDetailedDocumentationBody(OutputList &ol) // write examples if (hasExamples() && m_impl->exampleSDict) { - ol.startSimpleSect(BaseOutputDocInterface::Examples,0,0,theTranslator->trExamples()+": "); + ol.startExamples(); ol.startDescForItem(); //ol.startParagraph(); writeExample(ol,m_impl->exampleSDict); //ol.endParagraph(); ol.endDescForItem(); - ol.endSimpleSect(); + ol.endExamples(); } //ol.newParagraph(); writeSourceDef(ol,name()); @@ -1223,7 +1223,7 @@ void ClassDef::writeInheritanceGraph(OutputList &ol) } } else if (Config_getBool(CLASS_DIAGRAMS) && count>0) - // write class diagram using build-in generator + // write class diagram using built-in generator { ClassDiagram diagram(this); // create a diagram of this class. ol.startClassDiagram(); diff --git a/src/cmdmapper.cpp b/src/cmdmapper.cpp index 2c8effc..71da3f3 100644 --- a/src/cmdmapper.cpp +++ b/src/cmdmapper.cpp @@ -193,6 +193,8 @@ CommandMap htmlTagMap[] = { "span", HTML_SPAN }, { "div", HTML_DIV }, { "blockquote", HTML_BLOCKQUOTE }, + { "strike", HTML_STRIKE }, + { "u", HTML_UNDERLINE }, { "c", XML_C }, // { "code", XML_CODE }, <= ambiguous <code> is also a HTML tag diff --git a/src/cmdmapper.h b/src/cmdmapper.h index 8cb529d..d06de63 100644 --- a/src/cmdmapper.h +++ b/src/cmdmapper.h @@ -175,6 +175,8 @@ enum HtmlTagType HTML_SPAN = 31, HTML_DIV = 32, HTML_BLOCKQUOTE= 33, + HTML_STRIKE = 34, + HTML_UNDERLINE = 35, XML_CmdMask = 0x100, diff --git a/src/commentscan.l b/src/commentscan.l index e40d80f..159f256 100644 --- a/src/commentscan.l +++ b/src/commentscan.l @@ -30,8 +30,7 @@ #include <qstack.h> #include <qregexp.h> #include <qfile.h> -#include <qstringlist.h> - +#include <qcstringlist.h> #include "scanner.h" #include "entry.h" #include "doxygen.h" @@ -55,81 +54,81 @@ #define YY_NO_UNISTD_H 1 // forward declarations -static bool handleBrief(const QCString &, const QCString &); -static bool handleFn(const QCString &, const QCString &); -static bool handleDef(const QCString &, const QCString &); -static bool handleOverload(const QCString &, const QCString &); -static bool handleEnum(const QCString &, const QCString &); -static bool handleDefGroup(const QCString &, const QCString &); -static bool handleAddToGroup(const QCString &, const QCString &); -static bool handleWeakGroup(const QCString &, const QCString &); -static bool handleNamespace(const QCString &, const QCString &); -static bool handlePackage(const QCString &, const QCString &); -static bool handleClass(const QCString &, const QCString &); -static bool handleHeaderFile(const QCString &, const QCString &); -static bool handleProtocol(const QCString &, const QCString &); -static bool handleCategory(const QCString &, const QCString &); -static bool handleUnion(const QCString &, const QCString &); -static bool handleStruct(const QCString &, const QCString &); -static bool handleInterface(const QCString &, const QCString &); -static bool handleIdlException(const QCString &, const QCString &); -static bool handlePage(const QCString &, const QCString &); -static bool handleMainpage(const QCString &, const QCString &); -static bool handleFile(const QCString &, const QCString &); -static bool handleDir(const QCString &, const QCString &); -static bool handleExample(const QCString &, const QCString &); -static bool handleDetails(const QCString &, const QCString &); -static bool handleName(const QCString &, const QCString &); -static bool handleTodo(const QCString &, const QCString &); -static bool handleTest(const QCString &, const QCString &); -static bool handleBug(const QCString &, const QCString &); -static bool handleSubpage(const QCString &s, const QCString &); -static bool handleDeprecated(const QCString &, const QCString &); -static bool handleXRefItem(const QCString &, const QCString &); -static bool handleRelated(const QCString &, const QCString &); -static bool handleRelatedAlso(const QCString &, const QCString &); -static bool handleMemberOf(const QCString &, const QCString &); -static bool handleRefItem(const QCString &, const QCString &); -static bool handleSection(const QCString &, const QCString &); -static bool handleAnchor(const QCString &, const QCString &); -static bool handleCite(const QCString &, const QCString &); -static bool handleFormatBlock(const QCString &, const QCString &); -static bool handleAddIndex(const QCString &, const QCString &); -static bool handleIf(const QCString &, const QCString &); -static bool handleIfNot(const QCString &, const QCString &); -static bool handleElseIf(const QCString &, const QCString &); -static bool handleElse(const QCString &, const QCString &); -static bool handleEndIf(const QCString &, const QCString &); -static bool handleIngroup(const QCString &, const QCString &); -static bool handleNoSubGrouping(const QCString &, const QCString &); -static bool handleShowInitializer(const QCString &, const QCString &); -static bool handleHideInitializer(const QCString &, const QCString &); -static bool handleCallgraph(const QCString &, const QCString &); -static bool handleHideCallgraph(const QCString &, const QCString &); -static bool handleCallergraph(const QCString &, const QCString &); -static bool handleHideCallergraph(const QCString &, const QCString &); -static bool handleInternal(const QCString &, const QCString &); -static bool handleLineBr(const QCString &, const QCString &); -static bool handleStatic(const QCString &, const QCString &); -static bool handlePure(const QCString &, const QCString &); -static bool handlePrivate(const QCString &, const QCString &); -static bool handlePrivateSection(const QCString &, const QCString &); -static bool handleProtected(const QCString &, const QCString &); -static bool handleProtectedSection(const QCString &, const QCString &); -static bool handlePublic(const QCString &s, const QCString &); -static bool handlePublicSection(const QCString &s, const QCString &); -static bool handleToc(const QCString &s, const QCString &); -static bool handleInherit(const QCString &, const QCString &); -static bool handleExtends(const QCString &, const QCString &); -static bool handleCopyDoc(const QCString &, const QCString &); -static bool handleCopyBrief(const QCString &, const QCString &); -static bool handleCopyDetails(const QCString &, const QCString &); -static bool handleParBlock(const QCString &, const QCString &); -static bool handleEndParBlock(const QCString &, const QCString &); -static bool handleParam(const QCString &, const QCString &); -static bool handleRetval(const QCString &, const QCString &); - -typedef bool (*DocCmdFunc)(const QCString &name, const QCString &opt); +static bool handleBrief(const QCString &, const QCStringList &); +static bool handleFn(const QCString &, const QCStringList &); +static bool handleDef(const QCString &, const QCStringList &); +static bool handleOverload(const QCString &, const QCStringList &); +static bool handleEnum(const QCString &, const QCStringList &); +static bool handleDefGroup(const QCString &, const QCStringList &); +static bool handleAddToGroup(const QCString &, const QCStringList &); +static bool handleWeakGroup(const QCString &, const QCStringList &); +static bool handleNamespace(const QCString &, const QCStringList &); +static bool handlePackage(const QCString &, const QCStringList &); +static bool handleClass(const QCString &, const QCStringList &); +static bool handleHeaderFile(const QCString &, const QCStringList &); +static bool handleProtocol(const QCString &, const QCStringList &); +static bool handleCategory(const QCString &, const QCStringList &); +static bool handleUnion(const QCString &, const QCStringList &); +static bool handleStruct(const QCString &, const QCStringList &); +static bool handleInterface(const QCString &, const QCStringList &); +static bool handleIdlException(const QCString &, const QCStringList &); +static bool handlePage(const QCString &, const QCStringList &); +static bool handleMainpage(const QCString &, const QCStringList &); +static bool handleFile(const QCString &, const QCStringList &); +static bool handleDir(const QCString &, const QCStringList &); +static bool handleExample(const QCString &, const QCStringList &); +static bool handleDetails(const QCString &, const QCStringList &); +static bool handleName(const QCString &, const QCStringList &); +static bool handleTodo(const QCString &, const QCStringList &); +static bool handleTest(const QCString &, const QCStringList &); +static bool handleBug(const QCString &, const QCStringList &); +static bool handleSubpage(const QCString &s, const QCStringList &); +static bool handleDeprecated(const QCString &, const QCStringList &); +static bool handleXRefItem(const QCString &, const QCStringList &); +static bool handleRelated(const QCString &, const QCStringList &); +static bool handleRelatedAlso(const QCString &, const QCStringList &); +static bool handleMemberOf(const QCString &, const QCStringList &); +static bool handleRefItem(const QCString &, const QCStringList &); +static bool handleSection(const QCString &, const QCStringList &); +static bool handleAnchor(const QCString &, const QCStringList &); +static bool handleCite(const QCString &, const QCStringList &); +static bool handleFormatBlock(const QCString &, const QCStringList &); +static bool handleAddIndex(const QCString &, const QCStringList &); +static bool handleIf(const QCString &, const QCStringList &); +static bool handleIfNot(const QCString &, const QCStringList &); +static bool handleElseIf(const QCString &, const QCStringList &); +static bool handleElse(const QCString &, const QCStringList &); +static bool handleEndIf(const QCString &, const QCStringList &); +static bool handleIngroup(const QCString &, const QCStringList &); +static bool handleNoSubGrouping(const QCString &, const QCStringList &); +static bool handleShowInitializer(const QCString &, const QCStringList &); +static bool handleHideInitializer(const QCString &, const QCStringList &); +static bool handleCallgraph(const QCString &, const QCStringList &); +static bool handleHideCallgraph(const QCString &, const QCStringList &); +static bool handleCallergraph(const QCString &, const QCStringList &); +static bool handleHideCallergraph(const QCString &, const QCStringList &); +static bool handleInternal(const QCString &, const QCStringList &); +static bool handleLineBr(const QCString &, const QCStringList &); +static bool handleStatic(const QCString &, const QCStringList &); +static bool handlePure(const QCString &, const QCStringList &); +static bool handlePrivate(const QCString &, const QCStringList &); +static bool handlePrivateSection(const QCString &, const QCStringList &); +static bool handleProtected(const QCString &, const QCStringList &); +static bool handleProtectedSection(const QCString &, const QCStringList &); +static bool handlePublic(const QCString &s, const QCStringList &); +static bool handlePublicSection(const QCString &s, const QCStringList &); +static bool handleToc(const QCString &s, const QCStringList &); +static bool handleInherit(const QCString &, const QCStringList &); +static bool handleExtends(const QCString &, const QCStringList &); +static bool handleCopyDoc(const QCString &, const QCStringList &); +static bool handleCopyBrief(const QCString &, const QCStringList &); +static bool handleCopyDetails(const QCString &, const QCStringList &); +static bool handleParBlock(const QCString &, const QCStringList &); +static bool handleEndParBlock(const QCString &, const QCStringList &); +static bool handleParam(const QCString &, const QCStringList &); +static bool handleRetval(const QCString &, const QCStringList &); + +typedef bool (*DocCmdFunc)(const QCString &name, const QCStringList &optList); struct DocCmdMap { @@ -1006,7 +1005,7 @@ RCSTAG "$"{ID}":"[^\n$]+"$" * words and whitespace and other characters (#,?!, etc). * grouping commands (e.g. @{ and @}) * language switch (e.g. \~english or \~). - * mail address (e.g. dimitri@stack.nl). + * mail address (e.g. doxygen@gmail.com). * quoted text, such as "foo@bar" * XML commands, <summary></summary><remarks></remarks> */ @@ -1106,16 +1105,18 @@ RCSTAG "$"{ID}":"[^\n$]+"$" // the {B}* in the front was added for bug620924 QCString fullMatch = QCString(yytext); int idx = fullMatch.find('{'); + int idxEnd = fullMatch.find("}",idx+1); QCString cmdName; - QCString optName; - if (idx == -1) + QCStringList optList; + if (idx == -1) // no options { cmdName = QCString(yytext).stripWhiteSpace().data()+1; // to remove {CMD} } - else + else // options present { cmdName = fullMatch.left(idx).stripWhiteSpace().data()+1; // to remove {CMD} - optName = fullMatch.right(fullMatch.length() - idx).stripWhiteSpace().data(); + QCString optStr = fullMatch.mid(idx+1,idxEnd-idx-1).stripWhiteSpace(); + optList = QCStringList::split(',',optStr); } DocCmdMapper::Cmd *cmdPtr = DocCmdMapper::map(cmdName); if (cmdPtr) // special action is required @@ -1130,7 +1131,7 @@ RCSTAG "$"{ID}":"[^\n$]+"$" setOutput(OutputDoc); } //if (i>0) addOutput(QCString(yytext).left(i)); // removed for bug 689341 - if (cmdPtr->func && cmdPtr->func(cmdName, optName)) + if (cmdPtr->func && cmdPtr->func(cmdName, optList)) { // implicit split of the comment block into two // entries. Restart the next block at the start @@ -2293,14 +2294,14 @@ RCSTAG "$"{ID}":"[^\n$]+"$" //---------------------------------------------------------------------------- -static bool handleBrief(const QCString &, const QCString &) +static bool handleBrief(const QCString &, const QCStringList &) { //printf("handleBrief\n"); setOutput(OutputBrief); return FALSE; } -static bool handleFn(const QCString &, const QCString &) +static bool handleFn(const QCString &, const QCStringList &) { bool stop=makeStructuralIndicator(Entry::MEMBERDOC_SEC); functionProto.resize(0); @@ -2309,7 +2310,7 @@ static bool handleFn(const QCString &, const QCString &) return stop; } -static bool handleDef(const QCString &, const QCString &) +static bool handleDef(const QCString &, const QCStringList &) { bool stop=makeStructuralIndicator(Entry::DEFINEDOC_SEC); functionProto.resize(0); @@ -2317,21 +2318,21 @@ static bool handleDef(const QCString &, const QCString &) return stop; } -static bool handleOverload(const QCString &, const QCString &) +static bool handleOverload(const QCString &, const QCStringList &) { functionProto.resize(0); BEGIN(OverloadParam); return FALSE; } -static bool handleEnum(const QCString &, const QCString &) +static bool handleEnum(const QCString &, const QCStringList &) { bool stop=makeStructuralIndicator(Entry::ENUMDOC_SEC); BEGIN(EnumDocArg1); return stop; } -static bool handleDefGroup(const QCString &, const QCString &) +static bool handleDefGroup(const QCString &, const QCStringList &) { bool stop=makeStructuralIndicator(Entry::GROUPDOC_SEC); current->groupDocType = Entry::GROUPDOC_NORMAL; @@ -2339,7 +2340,7 @@ static bool handleDefGroup(const QCString &, const QCString &) return stop; } -static bool handleAddToGroup(const QCString &, const QCString &) +static bool handleAddToGroup(const QCString &, const QCStringList &) { bool stop=makeStructuralIndicator(Entry::GROUPDOC_SEC); current->groupDocType = Entry::GROUPDOC_ADD; @@ -2347,7 +2348,7 @@ static bool handleAddToGroup(const QCString &, const QCString &) return stop; } -static bool handleWeakGroup(const QCString &, const QCString &) +static bool handleWeakGroup(const QCString &, const QCStringList &) { bool stop=makeStructuralIndicator(Entry::GROUPDOC_SEC); current->groupDocType = Entry::GROUPDOC_WEAK; @@ -2355,83 +2356,83 @@ static bool handleWeakGroup(const QCString &, const QCString &) return stop; } -static bool handleNamespace(const QCString &, const QCString &) +static bool handleNamespace(const QCString &, const QCStringList &) { bool stop=makeStructuralIndicator(Entry::NAMESPACEDOC_SEC); BEGIN( NameSpaceDocArg1 ); return stop; } -static bool handlePackage(const QCString &, const QCString &) +static bool handlePackage(const QCString &, const QCStringList &) { bool stop=makeStructuralIndicator(Entry::PACKAGEDOC_SEC); BEGIN( PackageDocArg1 ); return stop; } -static bool handleClass(const QCString &, const QCString &) +static bool handleClass(const QCString &, const QCStringList &) { bool stop=makeStructuralIndicator(Entry::CLASSDOC_SEC); BEGIN( ClassDocArg1 ); return stop; } -static bool handleHeaderFile(const QCString &, const QCString &) +static bool handleHeaderFile(const QCString &, const QCStringList &) { BEGIN( ClassDocArg2 ); return FALSE; } -static bool handleProtocol(const QCString &, const QCString &) +static bool handleProtocol(const QCString &, const QCStringList &) { // Obj-C protocol bool stop=makeStructuralIndicator(Entry::PROTOCOLDOC_SEC); BEGIN( ClassDocArg1 ); return stop; } -static bool handleCategory(const QCString &, const QCString &) +static bool handleCategory(const QCString &, const QCStringList &) { // Obj-C category bool stop=makeStructuralIndicator(Entry::CATEGORYDOC_SEC); BEGIN( CategoryDocArg1 ); return stop; } -static bool handleUnion(const QCString &, const QCString &) +static bool handleUnion(const QCString &, const QCStringList &) { bool stop=makeStructuralIndicator(Entry::UNIONDOC_SEC); BEGIN( ClassDocArg1 ); return stop; } -static bool handleStruct(const QCString &, const QCString &) +static bool handleStruct(const QCString &, const QCStringList &) { bool stop=makeStructuralIndicator(Entry::STRUCTDOC_SEC); BEGIN( ClassDocArg1 ); return stop; } -static bool handleInterface(const QCString &, const QCString &) +static bool handleInterface(const QCString &, const QCStringList &) { bool stop=makeStructuralIndicator(Entry::INTERFACEDOC_SEC); BEGIN( ClassDocArg1 ); return stop; } -static bool handleIdlException(const QCString &, const QCString &) +static bool handleIdlException(const QCString &, const QCStringList &) { bool stop=makeStructuralIndicator(Entry::EXCEPTIONDOC_SEC); BEGIN( ClassDocArg1 ); return stop; } -static bool handlePage(const QCString &, const QCString &) +static bool handlePage(const QCString &, const QCStringList &) { bool stop=makeStructuralIndicator(Entry::PAGEDOC_SEC); BEGIN( PageDocArg1 ); return stop; } -static bool handleMainpage(const QCString &, const QCString &) +static bool handleMainpage(const QCString &, const QCStringList &) { bool stop=makeStructuralIndicator(Entry::MAINPAGEDOC_SEC); if (!stop) @@ -2442,7 +2443,7 @@ static bool handleMainpage(const QCString &, const QCString &) return stop; } -static bool handleFile(const QCString &, const QCString &) +static bool handleFile(const QCString &, const QCStringList &) { bool stop=makeStructuralIndicator(Entry::FILEDOC_SEC); if (!stop) @@ -2453,7 +2454,7 @@ static bool handleFile(const QCString &, const QCString &) return stop; } -static bool handleParam(const QCString &, const QCString &) +static bool handleParam(const QCString &, const QCStringList &) { // we need process param and retval arguments to escape leading underscores in case of // markdown processing, see bug775493 @@ -2462,14 +2463,14 @@ static bool handleParam(const QCString &, const QCString &) return FALSE; } -static bool handleRetval(const QCString &, const QCString &) +static bool handleRetval(const QCString &, const QCStringList &) { addOutput("@retval "); BEGIN( ParamArg1 ); return FALSE; } -static bool handleDir(const QCString &, const QCString &) +static bool handleDir(const QCString &, const QCStringList &) { bool stop=makeStructuralIndicator(Entry::DIRDOC_SEC); if (!stop) current->name = yyFileName; @@ -2477,15 +2478,30 @@ static bool handleDir(const QCString &, const QCString &) return stop; } -static bool handleExample(const QCString &, const QCString &) +static bool handleExample(const QCString &cmd, const QCStringList &optList) { - bool stop=makeStructuralIndicator(Entry::EXAMPLE_SEC); + Entry::Sections section=Entry::EXAMPLE_SEC; + QCStringList::ConstIterator it; + for ( it = optList.begin(); it != optList.end(); ++it ) + { + QCString opt = (*it).stripWhiteSpace().lower(); + if (opt=="lineno") + { + section=Entry::EXAMPLE_LINENO_SEC; + } + else + { + warn(yyFileName,yyLineNr, + "unsupported option '%s' for command '\\%s'",qPrint(opt),qPrint(cmd)); + } + } + bool stop=makeStructuralIndicator(section); if (!stop) current->name = yyFileName; BEGIN( FileDocArg1 ); return stop; } -static bool handleDetails(const QCString &, const QCString &) +static bool handleDetails(const QCString &, const QCStringList &) { if (inContext!=OutputBrief) { @@ -2496,7 +2512,7 @@ static bool handleDetails(const QCString &, const QCString &) return FALSE; } -static bool handleName(const QCString &, const QCString &) +static bool handleName(const QCString &, const QCStringList &) { bool stop=makeStructuralIndicator(Entry::MEMBERGRP_SEC); if (!stop) @@ -2511,7 +2527,7 @@ static bool handleName(const QCString &, const QCString &) return stop; } -static bool handleTodo(const QCString &, const QCString &) +static bool handleTodo(const QCString &, const QCStringList &) { newXRefKind = XRef_Todo; setOutput(OutputXRef); @@ -2519,7 +2535,7 @@ static bool handleTodo(const QCString &, const QCString &) return FALSE; } -static bool handleTest(const QCString &, const QCString &) +static bool handleTest(const QCString &, const QCStringList &) { newXRefKind = XRef_Test; setOutput(OutputXRef); @@ -2527,7 +2543,7 @@ static bool handleTest(const QCString &, const QCString &) return FALSE; } -static bool handleBug(const QCString &, const QCString &) +static bool handleBug(const QCString &, const QCStringList &) { newXRefKind = XRef_Bug; setOutput(OutputXRef); @@ -2535,7 +2551,7 @@ static bool handleBug(const QCString &, const QCString &) return FALSE; } -static bool handleDeprecated(const QCString &, const QCString &) +static bool handleDeprecated(const QCString &, const QCStringList &) { newXRefKind = XRef_Deprecated; setOutput(OutputXRef); @@ -2543,14 +2559,14 @@ static bool handleDeprecated(const QCString &, const QCString &) return FALSE; } -static bool handleXRefItem(const QCString &, const QCString &) +static bool handleXRefItem(const QCString &, const QCStringList &) { newXRefKind = XRef_Item; BEGIN(XRefItemParam1); return FALSE; } -static bool handleParBlock(const QCString &, const QCString &) +static bool handleParBlock(const QCString &, const QCStringList &) { if (g_insideParBlock) { @@ -2567,7 +2583,7 @@ static bool handleParBlock(const QCString &, const QCString &) return FALSE; } -static bool handleEndParBlock(const QCString &, const QCString &) +static bool handleEndParBlock(const QCString &, const QCStringList &) { if (!g_insideParBlock) { @@ -2580,7 +2596,7 @@ static bool handleEndParBlock(const QCString &, const QCString &) return FALSE; } -static bool handleRelated(const QCString &, const QCString &) +static bool handleRelated(const QCString &, const QCStringList &) { if (!current->relates.isEmpty()) { @@ -2592,7 +2608,7 @@ static bool handleRelated(const QCString &, const QCString &) return FALSE; } -static bool handleRelatedAlso(const QCString &, const QCString &) +static bool handleRelatedAlso(const QCString &, const QCStringList &) { if (!current->relates.isEmpty()) { @@ -2604,7 +2620,7 @@ static bool handleRelatedAlso(const QCString &, const QCString &) return FALSE; } -static bool handleMemberOf(const QCString &, const QCString &) +static bool handleMemberOf(const QCString &, const QCStringList &) { if (!current->relates.isEmpty()) { @@ -2616,14 +2632,14 @@ static bool handleMemberOf(const QCString &, const QCString &) return FALSE; } -static bool handleRefItem(const QCString &, const QCString &) +static bool handleRefItem(const QCString &, const QCStringList &) { addOutput("@refitem "); BEGIN(LineParam); return FALSE; } -static bool handleSection(const QCString &s, const QCString &) +static bool handleSection(const QCString &s, const QCStringList &) { setOutput(OutputDoc); addOutput("@"+s+" "); @@ -2635,7 +2651,7 @@ static bool handleSection(const QCString &s, const QCString &) return FALSE; } -static bool handleSubpage(const QCString &s, const QCString &) +static bool handleSubpage(const QCString &s, const QCStringList &) { if (current->section!=Entry::EMPTY_SEC && current->section!=Entry::PAGEDOC_SEC && @@ -2655,14 +2671,14 @@ static bool handleSubpage(const QCString &s, const QCString &) return FALSE; } -static bool handleAnchor(const QCString &s, const QCString &) +static bool handleAnchor(const QCString &s, const QCStringList &) { addOutput("@"+s+" "); BEGIN(AnchorLabel); return FALSE; } -static bool handleCite(const QCString &s, const QCString &) +static bool handleCite(const QCString &s, const QCStringList &) { if (!g_spaceBeforeCmd.isEmpty()) { @@ -2674,9 +2690,16 @@ static bool handleCite(const QCString &s, const QCString &) return FALSE; } -static bool handleFormatBlock(const QCString &s, const QCString &opt) +static bool handleFormatBlock(const QCString &s, const QCStringList &optList) { - addOutput("@"+s+" "+opt); + if (optList.isEmpty()) + { + addOutput("@"+s+" "); + } + else + { + addOutput("@"+s+"{"+optList.join(",")+"} "); + } //printf("handleFormatBlock(%s) with option(%s)\n",s.data(),opt.data()); blockName=s; g_commentCount=0; @@ -2684,14 +2707,14 @@ static bool handleFormatBlock(const QCString &s, const QCString &opt) return FALSE; } -static bool handleAddIndex(const QCString &, const QCString &) +static bool handleAddIndex(const QCString &, const QCStringList &) { addOutput("@addindex "); BEGIN(LineParam); return FALSE; } -static bool handleIf(const QCString &, const QCString &) +static bool handleIf(const QCString &, const QCStringList &) { enabledSectionFound=FALSE; guardType = Guard_If; @@ -2700,7 +2723,7 @@ static bool handleIf(const QCString &, const QCString &) return FALSE; } -static bool handleIfNot(const QCString &, const QCString &) +static bool handleIfNot(const QCString &, const QCStringList &) { enabledSectionFound=FALSE; guardType = Guard_IfNot; @@ -2709,7 +2732,7 @@ static bool handleIfNot(const QCString &, const QCString &) return FALSE; } -static bool handleElseIf(const QCString &, const QCString &) +static bool handleElseIf(const QCString &, const QCStringList &) { if (guards.isEmpty()) { @@ -2724,7 +2747,7 @@ static bool handleElseIf(const QCString &, const QCString &) return FALSE; } -static bool handleElse(const QCString &, const QCString &) +static bool handleElse(const QCString &, const QCStringList &) { if (guards.isEmpty()) { @@ -2738,7 +2761,7 @@ static bool handleElse(const QCString &, const QCString &) return FALSE; } -static bool handleEndIf(const QCString &, const QCString &) +static bool handleEndIf(const QCString &, const QCStringList &) { if (guards.isEmpty()) { @@ -2759,56 +2782,56 @@ static bool handleEndIf(const QCString &, const QCString &) return FALSE; } -static bool handleIngroup(const QCString &, const QCString &) +static bool handleIngroup(const QCString &, const QCStringList &) { inGroupParamFound=FALSE; BEGIN( InGroupParam ); return FALSE; } -static bool handleNoSubGrouping(const QCString &, const QCString &) +static bool handleNoSubGrouping(const QCString &, const QCStringList &) { current->subGrouping = FALSE; return FALSE; } -static bool handleShowInitializer(const QCString &, const QCString &) +static bool handleShowInitializer(const QCString &, const QCStringList &) { current->initLines = 100000; // ON return FALSE; } -static bool handleHideInitializer(const QCString &, const QCString &) +static bool handleHideInitializer(const QCString &, const QCStringList &) { current->initLines = 0; // OFF return FALSE; } -static bool handleCallgraph(const QCString &, const QCString &) +static bool handleCallgraph(const QCString &, const QCStringList &) { current->callGraph = TRUE; // ON return FALSE; } -static bool handleHideCallgraph(const QCString &, const QCString &) +static bool handleHideCallgraph(const QCString &, const QCStringList &) { current->callGraph = FALSE; // OFF return FALSE; } -static bool handleCallergraph(const QCString &, const QCString &) +static bool handleCallergraph(const QCString &, const QCStringList &) { current->callerGraph = TRUE; // ON return FALSE; } -static bool handleHideCallergraph(const QCString &, const QCString &) +static bool handleHideCallergraph(const QCString &, const QCStringList &) { current->callerGraph = FALSE; // OFF return FALSE; } -static bool handleInternal(const QCString &, const QCString &) +static bool handleInternal(const QCString &, const QCStringList &) { if (!Config_getBool(INTERNAL_DOCS)) { @@ -2830,74 +2853,71 @@ static bool handleInternal(const QCString &, const QCString &) return FALSE; } -static bool handleLineBr(const QCString &, const QCString &) +static bool handleLineBr(const QCString &, const QCStringList &) { addOutput('\n'); return FALSE; } -static bool handleStatic(const QCString &, const QCString &) +static bool handleStatic(const QCString &, const QCStringList &) { endBrief(); current->stat = TRUE; return FALSE; } -static bool handlePure(const QCString &, const QCString &) +static bool handlePure(const QCString &, const QCStringList &) { endBrief(); current->virt = Pure; return FALSE; } -static bool handlePrivate(const QCString &, const QCString &) +static bool handlePrivate(const QCString &, const QCStringList &) { current->protection = Private; return FALSE; } -static bool handlePrivateSection(const QCString &, const QCString &) +static bool handlePrivateSection(const QCString &, const QCStringList &) { current->protection = protection = Private; return FALSE; } -static bool handleProtected(const QCString &, const QCString &) +static bool handleProtected(const QCString &, const QCStringList &) { current->protection = Protected; return FALSE; } -static bool handleProtectedSection(const QCString &, const QCString &) +static bool handleProtectedSection(const QCString &, const QCStringList &) { current->protection = protection = Protected ; return FALSE; } -static bool handlePublic(const QCString &, const QCString &) +static bool handlePublic(const QCString &, const QCStringList &) { current->protection = Public; return FALSE; } -static bool handlePublicSection(const QCString &, const QCString &) +static bool handlePublicSection(const QCString &, const QCStringList &) { current->protection = protection = Public; return FALSE; } -static bool handleToc(const QCString &, const QCString &opt) +static bool handleToc(const QCString &, const QCStringList &optList) { if (current->section==Entry::PAGEDOC_SEC || current->section==Entry::MAINPAGEDOC_SEC) { - QString optName = opt.stripWhiteSpace(); // to be sure - optName = optName.left(optName.length() - 1).right(optName.length() - 2); - QStringList optList=QStringList::split(",",optName,FALSE); - QStringList::Iterator it; + QCStringList::ConstIterator it; for ( it = optList.begin(); it != optList.end(); ++it ) { - QString opt = (*it).stripWhiteSpace().lower(); + QCString opt = (*it).stripWhiteSpace().lower(); char dum; int level = 5; int i = opt.find(':'); @@ -2929,7 +2949,10 @@ static bool handleToc(const QCString &, const QCString &opt) { current->localToc.enableXml(level); } - else warn(yyFileName,yyLineNr,"Unknown option specified with \\tableofcontents: `%s'", (*it).stripWhiteSpace().data()); + else + { + warn(yyFileName,yyLineNr,"Unknown option specified with \\tableofcontents: `%s'", (*it).stripWhiteSpace().data()); + } } } if (current->localToc.nothingEnabled()) @@ -2940,19 +2963,19 @@ static bool handleToc(const QCString &, const QCString &opt) return FALSE; } -static bool handleInherit(const QCString &, const QCString &) +static bool handleInherit(const QCString &, const QCStringList &) { BEGIN(InheritParam); return FALSE; } -static bool handleExtends(const QCString &, const QCString &) +static bool handleExtends(const QCString &, const QCStringList &) { BEGIN(ExtendsParam); return FALSE; } -static bool handleCopyBrief(const QCString &, const QCString &) +static bool handleCopyBrief(const QCString &, const QCStringList &) { if (current->brief.isEmpty() && current->doc.isEmpty()) { // if we don't have a brief or detailed description yet, @@ -2969,7 +2992,7 @@ static bool handleCopyBrief(const QCString &, const QCString &) return FALSE; } -static bool handleCopyDetails(const QCString &, const QCString &) +static bool handleCopyDetails(const QCString &, const QCStringList &) { setOutput(OutputDoc); if (!g_spaceBeforeCmd.isEmpty()) @@ -2981,7 +3004,7 @@ static bool handleCopyDetails(const QCString &, const QCString &) return FALSE; } -static bool handleCopyDoc(const QCString &, const QCString &) +static bool handleCopyDoc(const QCString &, const QCStringList &) { setOutput(OutputBrief); if (!g_spaceBeforeCmd.isEmpty()) diff --git a/src/config.xml b/src/config.xml index 2e0f430..e12141c 100644 --- a/src/config.xml +++ b/src/config.xml @@ -110,7 +110,7 @@ SEARCHENGINE = NO \endverbatim To generate the documentation for the -<a href="http://www.stack.nl/~dimitri/qdbttabular/index.html">QdbtTabular</a> package +<a href="https://sourceforge.net/projects/qdbttabular/">QdbtTabular</a> package I have used the following configuration file: \verbatim PROJECT_NAME = QdbtTabular diff --git a/src/docbookvisitor.cpp b/src/docbookvisitor.cpp index ab10da0..b83317c 100644 --- a/src/docbookvisitor.cpp +++ b/src/docbookvisitor.cpp @@ -196,6 +196,8 @@ void DocbookDocVisitor::visit(DocStyleChange *s) /* There is no equivalent Docbook tag for rendering Small text */ case DocStyleChange::Small: /* XSLT Stylesheets can be used */ break; /* HTML only */ + case DocStyleChange::Strike: break; + case DocStyleChange::Underline: break; case DocStyleChange::Div: /* HTML only */ break; case DocStyleChange::Span: /* HTML only */ break; } diff --git a/src/docparser.cpp b/src/docparser.cpp index 0cb4ea3..b39b80e 100644 --- a/src/docparser.cpp +++ b/src/docparser.cpp @@ -26,6 +26,7 @@ #include <qdict.h> #include <qregexp.h> #include <ctype.h> +#include <qcstringlist.h> #include "doxygen.h" #include "debug.h" @@ -146,6 +147,9 @@ struct DocParserContext static QStack<DocParserContext> g_parserStack; //--------------------------------------------------------------------------- +static void handleImg(DocNode *parent,QList<DocNode> &children,const HtmlAttribList &tagHtmlAttribs); + +//--------------------------------------------------------------------------- static void docParserPushContext(bool saveParamInfo=TRUE) { //QCString indent; @@ -1047,16 +1051,18 @@ const char *DocStyleChange::styleString() const { switch (m_style) { - case DocStyleChange::Bold: return "b"; - case DocStyleChange::Italic: return "em"; - case DocStyleChange::Code: return "code"; - case DocStyleChange::Center: return "center"; - case DocStyleChange::Small: return "small"; - case DocStyleChange::Subscript: return "subscript"; - case DocStyleChange::Superscript: return "superscript"; - case DocStyleChange::Preformatted: return "pre"; + case DocStyleChange::Bold: return "b"; + case DocStyleChange::Italic: return "em"; + case DocStyleChange::Code: return "code"; + case DocStyleChange::Center: return "center"; + case DocStyleChange::Small: return "small"; + case DocStyleChange::Subscript: return "subscript"; + case DocStyleChange::Superscript: return "superscript"; + case DocStyleChange::Preformatted: return "pre"; case DocStyleChange::Div: return "div"; case DocStyleChange::Span: return "span"; + case DocStyleChange::Strike: return "strike"; + case DocStyleChange::Underline: return "u"; } return "<invalid>"; } @@ -1582,6 +1588,26 @@ reparsetoken: handleStyleLeave(parent,children,DocStyleChange::Bold,tokenName); } break; + case HTML_STRIKE: + if (!g_token->endTag) + { + handleStyleEnter(parent,children,DocStyleChange::Strike,&g_token->attribs); + } + else + { + handleStyleLeave(parent,children,DocStyleChange::Strike,tokenName); + } + break; + case HTML_UNDERLINE: + if (!g_token->endTag) + { + handleStyleEnter(parent,children,DocStyleChange::Underline,&g_token->attribs); + } + else + { + handleStyleLeave(parent,children,DocStyleChange::Underline,tokenName); + } + break; case HTML_CODE: case XML_C: if (!g_token->endTag) @@ -1643,6 +1669,10 @@ reparsetoken: handleStyleLeave(parent,children,DocStyleChange::Small,tokenName); } break; + case HTML_IMG: + if (!g_token->endTag) + handleImg(parent,children,g_token->attribs); + break; default: return FALSE; break; @@ -5197,7 +5227,31 @@ void DocPara::handleInclude(const QCString &cmdName,DocInclude::Type t) { DBG(("handleInclude(%s)\n",qPrint(cmdName))); int tok=doctokenizerYYlex(); - if (tok!=TK_WHITESPACE) + if (tok==TK_WORD && g_token->name=="{") + { + doctokenizerYYsetStateOptions(); + tok=doctokenizerYYlex(); + doctokenizerYYsetStatePara(); + QCStringList optList=QCStringList::split(",",g_token->name); + if (t==DocInclude::Include && optList.contains("lineno")) + { + t = DocInclude::IncWithLines; + } + else if (t==DocInclude::Snippet && optList.contains("lineno")) + { + t = DocInclude::SnipWithLines; + } + else if (t==DocInclude::Include && optList.contains("doc")) + { + t = DocInclude::IncludeDoc; + } + else if (t==DocInclude::Snippet && optList.contains("doc")) + { + t = DocInclude::SnippetDoc; + } + tok=doctokenizerYYlex(); + } + else if (tok!=TK_WHITESPACE) { warn_doc_error(g_fileName,doctokenizerYYlineno,"expected whitespace after %s command", qPrint(cmdName)); @@ -5906,6 +5960,12 @@ int DocPara::handleHtmlStartTag(const QCString &tagName,const HtmlAttribList &ta case HTML_BOLD: handleStyleEnter(this,m_children,DocStyleChange::Bold,&g_token->attribs); break; + case HTML_STRIKE: + handleStyleEnter(this,m_children,DocStyleChange::Strike,&g_token->attribs); + break; + case HTML_UNDERLINE: + handleStyleEnter(this,m_children,DocStyleChange::Underline,&g_token->attribs); + break; case HTML_CODE: if (/*getLanguageFromFileName(g_fileName)==SrcLangExt_CSharp ||*/ g_xmlComment) // for C# source or inside a <summary> or <remark> section we @@ -6315,6 +6375,12 @@ int DocPara::handleHtmlEndTag(const QCString &tagName) case HTML_BOLD: handleStyleLeave(this,m_children,DocStyleChange::Bold,"b"); break; + case HTML_STRIKE: + handleStyleLeave(this,m_children,DocStyleChange::Strike,"strike"); + break; + case HTML_UNDERLINE: + handleStyleLeave(this,m_children,DocStyleChange::Underline,"u"); + break; case HTML_CODE: handleStyleLeave(this,m_children,DocStyleChange::Code,"code"); break; diff --git a/src/docparser.h b/src/docparser.h index d7390c2..6b75426 100644 --- a/src/docparser.h +++ b/src/docparser.h @@ -367,7 +367,9 @@ class DocStyleChange : public DocNode Superscript = (1<<6), Preformatted = (1<<7), Span = (1<<8), - Div = (1<<9) + Div = (1<<9), + Strike = (1<<10), + Underline = (1<<11) }; DocStyleChange(DocNode *parent,uint position,Style s,bool enable, diff --git a/src/doctokenizer.h b/src/doctokenizer.h index eb39906..b3b9fa5 100644 --- a/src/doctokenizer.h +++ b/src/doctokenizer.h @@ -163,5 +163,6 @@ void doctokenizerYYendAutoList(); void doctokenizerYYsetStatePlantUML(); void doctokenizerYYsetStateSetScope(); void doctokenizerYYsetStatePlantUMLOpt(); +void doctokenizerYYsetStateOptions(); #endif diff --git a/src/doctokenizer.l b/src/doctokenizer.l index e6b8865..3118cfd 100644 --- a/src/doctokenizer.l +++ b/src/doctokenizer.l @@ -388,14 +388,14 @@ LNKWORD3 ([0-9a-z_A-Z\-]+("/"|"\\"))*[0-9a-z_A-Z\-]+("."[0-9a-z_A-Z]+)+ CHARWORDQ [^ \t\n\r\\@<>()\[\]:;\?{}&%$#,."='] ESCWORD ("%"{ID}(("::"|"."){ID})*)|("%'") CHARWORDQ1 [^ \-+0-9\t\n\r\\@<>()\[\]:;\?{}&%$#,."='] -WORD1 {ESCWORD}|{CHARWORDQ1}+|"{"|"}"|"'\"'"|("\""[^"\n]*\n?[^"\n]*"\"") +WORD1 {ESCWORD}|{CHARWORDQ1}{CHARWORDQ}*|"{"|"}"|"'\"'"|("\""[^"\n]*\n?[^"\n]*"\"") WORD2 "."|","|"("|")"|"["|"]"|":"|";"|"\?"|"="|"'" WORD1NQ {ESCWORD}|{CHARWORDQ}+|"{"|"}" WORD2NQ "."|","|"("|")"|"["|"]"|":"|";"|"\?"|"="|"'" CAPTION [cC][aA][pP][tT][iI][oO][nN] HTMLTAG "<"(("/")?){ID}({WS}+{ATTRIB})*{WS}*(("/")?)">" -HTMLKEYL "strong"|"center"|"table"|"caption"|"small"|"code"|"dfn"|"var"|"img"|"pre"|"sub"|"sup"|"tr"|"td"|"th"|"ol"|"ul"|"li"|"tt"|"kbd"|"em"|"hr"|"dl"|"dt"|"dd"|"br"|"i"|"a"|"b"|"p" -HTMLKEYU "STRONG"|"CENTER"|"TABLE"|"CAPTION"|"SMALL"|"CODE"|"DFN"|"VAR"|"IMG"|"PRE"|"SUB"|"SUP"|"TR"|"TD"|"TH"|"OL"|"UL"|"LI"|"TT"|"KBD"|"EM"|"HR"|"DL"|"DT"|"DD"|"BR"|"I"|"A"|"B"|"P" +HTMLKEYL "strong"|"center"|"table"|"caption"|"small"|"code"|"dfn"|"var"|"img"|"pre"|"sub"|"sup"|"tr"|"td"|"th"|"ol"|"ul"|"li"|"tt"|"kbd"|"em"|"hr"|"dl"|"dt"|"dd"|"br"|"i"|"a"|"b"|"p"|"strike"|"u" +HTMLKEYU "STRONG"|"CENTER"|"TABLE"|"CAPTION"|"SMALL"|"CODE"|"DFN"|"VAR"|"IMG"|"PRE"|"SUB"|"SUP"|"TR"|"TD"|"TH"|"OL"|"UL"|"LI"|"TT"|"KBD"|"EM"|"HR"|"DL"|"DT"|"DD"|"BR"|"I"|"A"|"B"|"P"|"STRIKE"|"U" HTMLKEYW {HTMLKEYL}|{HTMLKEYU} REFWORD2_PRE ("#"|"::")?((({ID}{TEMPLPART}?)|{ANONNS})("."|"#"|"::"|"-"|"/"))*({ID}{TEMPLPART}?(":")?) REFWORD2 {REFWORD2_PRE}{FUNCARG2}? @@ -447,6 +447,7 @@ REFWORD_NOCV {LABELID}|{REFWORD2_NOCV}|{REFWORD3}|{REFWORD4_NOCV} %x St_Snippet %x St_SetScope %x St_SetScopeEnd +%x St_Options %x St_Sections %s St_SecLabel1 @@ -658,7 +659,8 @@ REFWORD_NOCV {LABELID}|{REFWORD2_NOCV}|{REFWORD3}|{REFWORD4_NOCV} g_token->text = tagName.mid(text_begin,text_end-text_begin); return TK_RCSTAG; } -<St_Para,St_HtmlOnly>"$("{ID}")" { /* environment variable */ +<St_Para,St_HtmlOnly,St_ManOnly,St_LatexOnly,St_RtfOnly,St_XmlOnly,St_DbOnly>"$("{ID}")" | /* environment variable */ +<St_Para,St_HtmlOnly,St_ManOnly,St_LatexOnly,St_RtfOnly,St_XmlOnly,St_DbOnly>"$("{ID}"("{ID}"))" { /* environment variable */ QCString name = &yytext[2]; name = name.left(name.length()-1); QCString value = portable_getenv(name); @@ -1147,6 +1149,16 @@ REFWORD_NOCV {LABELID}|{REFWORD2_NOCV}|{REFWORD3}|{REFWORD4_NOCV} g_token->chars=yytext; return TK_WHITESPACE; } +<St_Options>{ID} { + g_token->name+=yytext; + } +<St_Options>{WS}*","{WS}* +<St_Options>{WS} { /* option separator */ + g_token->name+=","; + } +<St_Options>"}" { + return TK_WORD; + } <St_File>{FILEMASK} { g_token->name = yytext; return TK_WORD; @@ -1509,6 +1521,12 @@ void doctokenizerYYsetStateSetScope() BEGIN(St_SetScope); } +void doctokenizerYYsetStateOptions() +{ + g_token->name=""; + BEGIN(St_Options); +} + void doctokenizerYYcleanup() { yy_delete_buffer( YY_CURRENT_BUFFER ); diff --git a/src/doxygen.cpp b/src/doxygen.cpp index 68b49c2..bf93a9b 100644 --- a/src/doxygen.cpp +++ b/src/doxygen.cpp @@ -8926,7 +8926,7 @@ static void generatePageDocs() static void buildExampleList(EntryNav *rootNav) { - if (rootNav->section()==Entry::EXAMPLE_SEC && !rootNav->name().isEmpty()) + if ((rootNav->section()==Entry::EXAMPLE_SEC || rootNav->section()==Entry::EXAMPLE_LINENO_SEC) && !rootNav->name().isEmpty()) { rootNav->loadEntry(g_storage); Entry *root = rootNav->entry(); @@ -8947,7 +8947,7 @@ static void buildExampleList(EntryNav *rootNav) pd->setFileName(convertNameToFile(pd->name()+"-example",FALSE,TRUE)); pd->addSectionsToDefinition(root->anchors); pd->setLanguage(root->lang); - //pi->addSections(root->anchors); + pd->setShowLineNo(rootNav->section()==Entry::EXAMPLE_LINENO_SEC); Doxygen::exampleSDict->inSort(root->name,pd); //we don't add example to groups @@ -8996,11 +8996,16 @@ static void generateExampleDocs() g_outputList->docify(pd->name()); endTitle(*g_outputList,n,0); g_outputList->startContents(); + QCString lineNoOptStr; + if (pd->showLineNo()) + { + lineNoOptStr="{lineno}"; + } g_outputList->generateDoc(pd->docFile(), // file pd->docLine(), // startLine pd, // context 0, // memberDef - pd->documentation()+"\n\n\\include "+pd->name(), // docs + pd->documentation()+"\n\n\\include"+lineNoOptStr+" "+pd->name(), // docs TRUE, // index words TRUE, // is example pd->name() @@ -10207,7 +10212,6 @@ void readConfiguration(int argc, char **argv) bool genConfig=FALSE; bool shortList=FALSE; bool updateConfig=FALSE; - bool genLayout=FALSE; int retVal; while (optind<argc && argv[optind][0]=='-' && (isalpha(argv[optind][1]) || argv[optind][1]=='?' || @@ -10220,10 +10224,12 @@ void readConfiguration(int argc, char **argv) genConfig=TRUE; break; case 'l': - genLayout=TRUE; layoutName=getArg(argc,argv,optind); if (!layoutName) { layoutName="DoxygenLayout.xml"; } + writeDefaultLayoutFile(layoutName); + cleanUpDoxygen(); + exit(0); break; case 'd': debugLabel=getArg(argc,argv,optind); @@ -10505,12 +10511,6 @@ void readConfiguration(int argc, char **argv) cleanUpDoxygen(); exit(0); } - if (genLayout) - { - writeDefaultLayoutFile(layoutName); - cleanUpDoxygen(); - exit(0); - } if (!Config::parse(configName,updateConfig)) { diff --git a/src/entry.h b/src/entry.h index fac3831..739b128 100644 --- a/src/entry.h +++ b/src/entry.h @@ -91,14 +91,14 @@ class Entry ENUMDOC_SEC = 0x01000000, ENUM_SEC = 0x02000000, - EMPTY_SEC = 0x03000000, - PAGEDOC_SEC = 0x04000000, + EMPTY_SEC = 0x03000000, + PAGEDOC_SEC = 0x04000000, VARIABLE_SEC = 0x05000000, FUNCTION_SEC = 0x06000000, TYPEDEF_SEC = 0x07000000, - MEMBERDOC_SEC = 0x08000000, + MEMBERDOC_SEC = 0x08000000, OVERLOADDOC_SEC = 0x09000000, - EXAMPLE_SEC = 0x0a000000, + EXAMPLE_SEC = 0x0a000000, VARIABLEDOC_SEC = 0x0b000000, FILEDOC_SEC = 0x0c000000, DEFINEDOC_SEC = 0x0d000000, @@ -112,9 +112,10 @@ class Entry PACKAGE_SEC = 0x15000000, PACKAGEDOC_SEC = 0x16000000, OBJCIMPL_SEC = 0x17000000, - DIRDOC_SEC = 0x18000000 - ,EXPORTED_INTERFACE_SEC = 0x19000000 - ,INCLUDED_SERVICE_SEC = 0x1A000000 + DIRDOC_SEC = 0x18000000, + EXPORTED_INTERFACE_SEC = 0x19000000, + INCLUDED_SERVICE_SEC = 0x1A000000, + EXAMPLE_LINENO_SEC = 0x1B000000, }; // class specifiers (add new items to the end) diff --git a/src/fortrancode.l b/src/fortrancode.l index 3c1829d..3014dc3 100644 --- a/src/fortrancode.l +++ b/src/fortrancode.l @@ -37,7 +37,7 @@ #include <ctype.h> #include <qregexp.h> #include <qdir.h> -#include <qstringlist.h> +#include <qcstringlist.h> #include "entry.h" #include "doxygen.h" #include "message.h" @@ -86,7 +86,7 @@ class UseEntry { public: QCString module; // just for debug - QStringList onlyNames; /* entries of the ONLY-part */ + QCStringList onlyNames; /* entries of the ONLY-part */ }; /** @@ -105,7 +105,7 @@ class UseSDict : public SDict<UseEntry> class Scope { public: - QStringList useNames; //!< contains names of used modules + QCStringList useNames; //!< contains names of used modules QDict<void> localVars; //!< contains names of local variables Scope() : localVars(7, FALSE /*caseSensitive*/) {} @@ -122,7 +122,7 @@ static QCString currentClass=0; //!< name of the current enclosing static UseSDict *useMembers= new UseSDict; //!< info about used modules static UseEntry *useEntry = 0; //!< current use statement info static QList<Scope> scopeStack; -// static QStringList *currentUseNames= new QStringList; //! contains names of used modules of current program unit +// static QCStringList *currentUseNames= new QCStringList; //! contains names of used modules of current program unit static QCString str=""; //!> contents of fortran string static CodeOutputInterface * g_code; @@ -478,7 +478,7 @@ static bool getFortranDefs(const QCString &memberName, const QCString &moduleNam if (ue) { // check if only-list exists and if current entry exists is this list - QStringList &only= ue->onlyNames; + QCStringList &only= ue->onlyNames; if (only.isEmpty()) { //cout << " found in module " << moduleName << " entry " << memberName << endl; @@ -486,10 +486,10 @@ static bool getFortranDefs(const QCString &memberName, const QCString &moduleNam } else { - for ( QStringList::Iterator it = only.begin(); it != only.end(); ++it) + for ( QCStringList::Iterator it = only.begin(); it != only.end(); ++it) { //cout << " search in only: " << moduleName << ":: " << memberName << "==" << (*it)<< endl; - if (memberName == (*it).utf8()) + if (memberName == *it) { return TRUE; // found in ONLY-part of use list } @@ -632,9 +632,9 @@ static void endScope() Scope *scope = scopeStack.getLast(); scopeStack.removeLast(); - for ( QStringList::Iterator it = scope->useNames.begin(); it != scope->useNames.end(); ++it) + for ( QCStringList::Iterator it = scope->useNames.begin(); it != scope->useNames.end(); ++it) { - useMembers->remove((*it).utf8()); + useMembers->remove(*it); } delete scope; } diff --git a/src/htmldocvisitor.cpp b/src/htmldocvisitor.cpp index 6a9c142..6e0c62d 100644 --- a/src/htmldocvisitor.cpp +++ b/src/htmldocvisitor.cpp @@ -38,6 +38,31 @@ static const int NUM_HTML_LIST_TYPES = 4; static const char types[][NUM_HTML_LIST_TYPES] = {"1", "a", "i", "A"}; +enum contexts_t +{ + NONE, // 0 + STARTLI, // 1 + STARTDD, // 2 + ENDLI, // 3 + ENDDD, // 4 + STARTTD, // 5 + ENDTD, // 6 + INTERLI, // 7 + INTERDD, // 8 + INTERTD // 9 +}; +static const char *contexts[10] = +{ "", // 0 + "startli", // 1 + "startdd", // 2 + "endli", // 3 + "enddd", // 4 + "starttd", // 5 + "endtd", // 6 + "interli", // 7 + "interdd", // 8 + "intertd" // 9 +}; static QCString convertIndexWordToAnchor(const QString &word) { @@ -271,6 +296,12 @@ void HtmlDocVisitor::visit(DocStyleChange *s) case DocStyleChange::Bold: if (s->enable()) m_t << "<b" << htmlAttribsToString(s->attribs()) << ">"; else m_t << "</b>"; break; + case DocStyleChange::Strike: + if (s->enable()) m_t << "<strike" << htmlAttribsToString(s->attribs()) << ">"; else m_t << "</strike>"; + break; + case DocStyleChange::Underline: + if (s->enable()) m_t << "<u" << htmlAttribsToString(s->attribs()) << ">"; else m_t << "</u>"; + break; case DocStyleChange::Italic: if (s->enable()) m_t << "<em" << htmlAttribsToString(s->attribs()) << ">"; else m_t << "</em>"; break; @@ -887,24 +918,24 @@ static int getParagraphContext(DocPara *p,bool &isFirst,bool &isLast) } isFirst=isFirstChildNode((DocParBlock*)p->parent(),p); isLast =isLastChildNode ((DocParBlock*)p->parent(),p); - t=0; + t=NONE; if (isFirst) { if (kind==DocNode::Kind_HtmlListItem || kind==DocNode::Kind_SecRefItem) { - t=1; + t=STARTLI; } else if (kind==DocNode::Kind_HtmlDescData || kind==DocNode::Kind_XRefItem || kind==DocNode::Kind_SimpleSect) { - t=2; + t=STARTDD; } else if (kind==DocNode::Kind_HtmlCell || kind==DocNode::Kind_ParamList) { - t=5; + t=STARTTD; } } if (isLast) @@ -912,18 +943,37 @@ static int getParagraphContext(DocPara *p,bool &isFirst,bool &isLast) if (kind==DocNode::Kind_HtmlListItem || kind==DocNode::Kind_SecRefItem) { - t=3; + t=ENDLI; + } + else if (kind==DocNode::Kind_HtmlDescData || + kind==DocNode::Kind_XRefItem || + kind==DocNode::Kind_SimpleSect) + { + t=ENDDD; + } + else if (kind==DocNode::Kind_HtmlCell || + kind==DocNode::Kind_ParamList) + { + t=ENDTD; + } + } + if (!isFirst && !isLast) + { + if (kind==DocNode::Kind_HtmlListItem || + kind==DocNode::Kind_SecRefItem) + { + t=INTERLI; } else if (kind==DocNode::Kind_HtmlDescData || kind==DocNode::Kind_XRefItem || kind==DocNode::Kind_SimpleSect) { - t=4; + t=INTERDD; } else if (kind==DocNode::Kind_HtmlCell || kind==DocNode::Kind_ParamList) { - t=6; + t=INTERTD; } } break; @@ -931,47 +981,51 @@ static int getParagraphContext(DocPara *p,bool &isFirst,bool &isLast) case DocNode::Kind_AutoListItem: isFirst=isFirstChildNode((DocAutoListItem*)p->parent(),p); isLast =isLastChildNode ((DocAutoListItem*)p->parent(),p); - t=1; // not used + t=STARTLI; // not used break; case DocNode::Kind_SimpleListItem: isFirst=TRUE; isLast =TRUE; - t=1; // not used + t=STARTLI; // not used break; case DocNode::Kind_ParamList: isFirst=TRUE; isLast =TRUE; - t=1; // not used + t=STARTLI; // not used break; case DocNode::Kind_HtmlListItem: isFirst=isFirstChildNode((DocHtmlListItem*)p->parent(),p); isLast =isLastChildNode ((DocHtmlListItem*)p->parent(),p); - if (isFirst) t=1; - if (isLast) t=3; + if (isFirst) t=STARTLI; + if (isLast) t=ENDLI; + if (!isFirst && !isLast) t = INTERLI; break; case DocNode::Kind_SecRefItem: isFirst=isFirstChildNode((DocSecRefItem*)p->parent(),p); isLast =isLastChildNode ((DocSecRefItem*)p->parent(),p); - if (isFirst) t=1; - if (isLast) t=3; + if (isFirst) t=STARTLI; + if (isLast) t=ENDLI; + if (!isFirst && !isLast) t = INTERLI; break; case DocNode::Kind_HtmlDescData: isFirst=isFirstChildNode((DocHtmlDescData*)p->parent(),p); isLast =isLastChildNode ((DocHtmlDescData*)p->parent(),p); - if (isFirst) t=2; - if (isLast) t=4; + if (isFirst) t=STARTDD; + if (isLast) t=ENDDD; + if (!isFirst && !isLast) t = INTERDD; break; case DocNode::Kind_XRefItem: isFirst=isFirstChildNode((DocXRefItem*)p->parent(),p); isLast =isLastChildNode ((DocXRefItem*)p->parent(),p); - if (isFirst) t=2; - if (isLast) t=4; + if (isFirst) t=STARTDD; + if (isLast) t=ENDDD; + if (!isFirst && !isLast) t = INTERDD; break; case DocNode::Kind_SimpleSect: isFirst=isFirstChildNode((DocSimpleSect*)p->parent(),p); isLast =isLastChildNode ((DocSimpleSect*)p->parent(),p); - if (isFirst) t=2; - if (isLast) t=4; + if (isFirst) t=STARTDD; + if (isLast) t=ENDDD; if (isSeparatedParagraph((DocSimpleSect*)p->parent(),p)) // if the paragraph is enclosed with separators it will // be included in <dd>..</dd> so avoid addition paragraph @@ -979,12 +1033,14 @@ static int getParagraphContext(DocPara *p,bool &isFirst,bool &isLast) { isFirst=isLast=TRUE; } + if (!isFirst && !isLast) t = INTERDD; break; case DocNode::Kind_HtmlCell: isFirst=isFirstChildNode((DocHtmlCell*)p->parent(),p); isLast =isLastChildNode ((DocHtmlCell*)p->parent(),p); - if (isFirst) t=5; - if (isLast) t=6; + if (isFirst) t=STARTTD; + if (isLast) t=ENDTD; + if (!isFirst && !isLast) t = INTERTD; break; default: break; @@ -1052,19 +1108,10 @@ void HtmlDocVisitor::visitPre(DocPara *p) } } - // check if this paragraph is the first or last child of a <li> or <dd>. + // check if this paragraph is the first or last or intermediate child of a <li> or <dd>. // this allows us to mark the tag with a special class so we can // fix the otherwise ugly spacing. int t; - static const char *contexts[7] = - { "", // 0 - "startli", // 1 - "startdd", // 2 - "endli", // 3 - "enddd", // 4 - "starttd", // 5 - "endtd" // 6 - }; bool isFirst; bool isLast; t = getParagraphContext(p,isFirst,isLast); diff --git a/src/htmlgen.cpp b/src/htmlgen.cpp index 87bc10a..ee23fb8 100644 --- a/src/htmlgen.cpp +++ b/src/htmlgen.cpp @@ -1943,25 +1943,16 @@ void HtmlGenerator::endDescTableData() t << "</td>"; } -void HtmlGenerator::startSimpleSect(SectionTypes, - const char *filename,const char *anchor, - const char *title) +void HtmlGenerator::startExamples() { - t << "<dl><dt><b>"; - if (filename) - { - writeObjectLink(0,filename,anchor,title); - } - else - { - docify(title); - } - t << "</b></dt>"; + t << "<dl class=\"section examples\"><dt>"; + docify(theTranslator->trExamples()); + t << "</dt>"; } -void HtmlGenerator::endSimpleSect() +void HtmlGenerator::endExamples() { - t << "</dl>"; + t << "</dl>" << endl; } void HtmlGenerator::startParamList(ParamListTypes, diff --git a/src/htmlgen.h b/src/htmlgen.h index 2d8d6e0..221269f 100644 --- a/src/htmlgen.h +++ b/src/htmlgen.h @@ -246,13 +246,10 @@ class HtmlGenerator : public OutputGenerator void endCenter() { t << "</center>" << endl; } void startSmall() { t << "<small>" << endl; } void endSmall() { t << "</small>" << endl; } - //void startDescList(SectionTypes) { t << "<dl compact><dt><b>" << endl; } - //void endDescList() { t << "</dl>"; } - void startSimpleSect(SectionTypes,const char *,const char *,const char *); - void endSimpleSect(); + void startExamples(); + void endExamples(); void startParamList(ParamListTypes,const char *); void endParamList(); - //void writeDescItem() { t << "<dd>" << endl; } void startSection(const char *,const char *,SectionInfo::SectionType); void endSection(const char *,SectionInfo::SectionType); void addIndexItem(const char *,const char *); diff --git a/src/latexdocvisitor.cpp b/src/latexdocvisitor.cpp index d2c4c5d..c35ef11 100644 --- a/src/latexdocvisitor.cpp +++ b/src/latexdocvisitor.cpp @@ -242,7 +242,13 @@ void LatexDocVisitor::visit(DocStyleChange *s) switch (s->style()) { case DocStyleChange::Bold: - if (s->enable()) m_t << "{\\bfseries "; else m_t << "}"; + if (s->enable()) m_t << "{\\bfseries{"; else m_t << "}}"; + break; + case DocStyleChange::Strike: + if (s->enable()) m_t << "\\sout{"; else m_t << "}"; + break; + case DocStyleChange::Underline: + if (s->enable()) m_t << "\\uline{"; else m_t << "}"; break; case DocStyleChange::Italic: if (s->enable()) m_t << "{\\itshape "; else m_t << "}"; diff --git a/src/latexgen.cpp b/src/latexgen.cpp index 474d368..13a88a9 100644 --- a/src/latexgen.cpp +++ b/src/latexgen.cpp @@ -2095,22 +2095,14 @@ void LatexGenerator::endDescItem() } } -void LatexGenerator::startSimpleSect(SectionTypes,const char *file, - const char *anchor,const char *title) +void LatexGenerator::startExamples() { t << "\\begin{Desc}\n\\item["; - if (file) - { - writeObjectLink(0,file,anchor,title); - } - else - { - docify(title); - } + docify(theTranslator->trExamples()); t << "]"; } -void LatexGenerator::endSimpleSect() +void LatexGenerator::endExamples() { t << "\\end{Desc}" << endl; } @@ -2167,7 +2159,7 @@ void LatexGenerator::endParameterName(bool last,bool /*emptyList*/,bool closeBra void LatexGenerator::exceptionEntry(const char* prefix,bool closeBracket) { if (prefix) - t << " " << prefix; + t << " " << prefix << "("; else if (closeBracket) t << ")"; t << " "; diff --git a/src/latexgen.h b/src/latexgen.h index 07c4080..1460000 100644 --- a/src/latexgen.h +++ b/src/latexgen.h @@ -235,8 +235,8 @@ class LatexGenerator : public OutputGenerator const char *,const char *,const char *) {} void startDescList(SectionTypes) { t << "\\begin{Desc}\n\\item["; } void endDescList() { t << "\\end{Desc}" << endl; } - void startSimpleSect(SectionTypes,const char *,const char *,const char *); - void endSimpleSect(); + void startExamples(); + void endExamples(); void startParamList(ParamListTypes,const char *title); void endParamList(); void startDescForItem() { t << "\\par" << endl; } diff --git a/src/mandocvisitor.cpp b/src/mandocvisitor.cpp index 2233cc6..e09cc8e 100644 --- a/src/mandocvisitor.cpp +++ b/src/mandocvisitor.cpp @@ -120,6 +120,13 @@ void ManDocVisitor::visit(DocStyleChange *s) if (s->enable()) m_t << "\\fB"; else m_t << "\\fP"; m_firstCol=FALSE; break; + case DocStyleChange::Strike: + /* not supported */ + break; + case DocStyleChange::Underline: //underline is shown as emphasis + if (s->enable()) m_t << "\\fI"; else m_t << "\\fP"; + m_firstCol=FALSE; + break; case DocStyleChange::Italic: if (s->enable()) m_t << "\\fI"; else m_t << "\\fP"; m_firstCol=FALSE; diff --git a/src/mangen.cpp b/src/mangen.cpp index d23b2fe..b3ae732 100644 --- a/src/mangen.cpp +++ b/src/mangen.cpp @@ -34,7 +34,7 @@ static QCString getExtension() { /* - * [.][nuber][rest] + * [.][number][rest] * in case of . missing, just ignore it * in case number missing, just place a 3 in front of it */ @@ -650,8 +650,25 @@ void ManGenerator::endSection(const char *,SectionInfo::SectionType type) } } -void ManGenerator::startSimpleSect(SectionTypes,const char *, - const char *,const char *title) +void ManGenerator::startExamples() +{ + if (!firstCol) + { t << endl << ".PP" << endl; + firstCol=TRUE; paragraph=TRUE; + col=0; + } + paragraph=FALSE; + startBold(); + docify(theTranslator->trExamples()); + endBold(); + paragraph=TRUE; +} + +void ManGenerator::endExamples() +{ +} + +void ManGenerator::startDescTable(const char *title) { if (!firstCol) { t << endl << ".PP" << endl; @@ -663,10 +680,12 @@ void ManGenerator::startSimpleSect(SectionTypes,const char *, docify(title); endBold(); paragraph=TRUE; + startDescForItem(); } -void ManGenerator::endSimpleSect() +void ManGenerator::endDescTable() { + endDescForItem(); } void ManGenerator::startParamList(ParamListTypes,const char *title) diff --git a/src/mangen.h b/src/mangen.h index 0413ffd..e109355 100644 --- a/src/mangen.h +++ b/src/mangen.h @@ -169,8 +169,8 @@ class ManGenerator : public OutputGenerator const char *,const char *,const char *) {} void startDescList(SectionTypes); void endDescList() {} - void startSimpleSect(SectionTypes,const char *,const char *,const char *); - void endSimpleSect(); + void startExamples(); + void endExamples(); void startParamList(ParamListTypes,const char *title); void endParamList(); //void writeDescItem(); @@ -197,9 +197,8 @@ class ManGenerator : public OutputGenerator void endContents() {} void writeNonBreakableSpace(int n) { int i; for (i=0;i<n;i++) t << " "; } - void startDescTable(const char *t) - { startSimpleSect(EnumValues,0,0,t); startDescForItem(); } - void endDescTable() { endDescForItem(); endSimpleSect(); } + void startDescTable(const char *t); + void endDescTable(); void startDescTableRow() {} void endDescTableRow() {} void startDescTableTitle() { startItemListItem(); startBold(); startEmphasis(); endItemListItem(); } diff --git a/src/markdown.cpp b/src/markdown.cpp index 0ca95a4..c19d6db 100644 --- a/src/markdown.cpp +++ b/src/markdown.cpp @@ -406,7 +406,7 @@ static int processEmphasis2(GrowBuf &out, const char *data, int size, char c) return 0; } -/** Parsing tripple emphasis. +/** Parsing triple emphasis. * Finds the first closing tag, and delegates to the other emph */ static int processEmphasis3(GrowBuf &out, const char *data, int size, char c) @@ -1780,22 +1780,20 @@ static int writeTableBlock(GrowBuf &out,const char *data,int size) QCString cellTag("th"), cellClass("class=\"markdownTableHead"); for (unsigned row = 0; row < tableContents.size(); row++) { - out.addStr(" <tr class=\"markdownTable"); if (row) { - out.addStr("Body\""); if (row % 2) { - out.addStr(" class=\"markdownTableRowOdd\">\n"); + out.addStr("<tr class=\"markdownTableRowOdd\">\n"); } else { - out.addStr(" class=\"markdownTableRowEven\">\n"); + out.addStr("<tr class=\"markdownTableRowEven\">\n"); } } else { - out.addStr("Head\">\n"); + out.addStr(" <tr class=\"markdownTableHead\">\n"); } for (int c = 0; c < columns; c++) { diff --git a/src/memberdef.cpp b/src/memberdef.cpp index 819904f..c9745ac 100644 --- a/src/memberdef.cpp +++ b/src/memberdef.cpp @@ -2309,11 +2309,11 @@ void MemberDef::_writeExamples(OutputList &ol) // write the list of examples that use this member if (hasExamples()) { - ol.startSimpleSect(BaseOutputDocInterface::Examples,0,0,theTranslator->trExamples()+": "); + ol.startExamples(); ol.startDescForItem(); writeExample(ol,m_impl->exampleSDict); ol.endDescForItem(); - ol.endSimpleSect(); + ol.endExamples(); } } @@ -2346,8 +2346,6 @@ void MemberDef::_writeEnumValues(OutputList &ol,Definition *container, { if (first) { - //ol.startSimpleSect(BaseOutputDocInterface::EnumValues,0,0,theTranslator->trEnumerationValues()+": "); - //ol.startDescForItem(); ol.startDescTable(theTranslator->trEnumerationValues()); } @@ -2355,28 +2353,17 @@ void MemberDef::_writeEnumValues(OutputList &ol,Definition *container, ol.addIndexItem(fmd->name(),ciname); ol.addIndexItem(ciname,fmd->name()); - //Doxygen::indexList->addIndexItem( - // ciname, // level1 - // fmd->name(), // level2 - // separateMemPages ? cfname : cfiname, // contRef - // cfname, // memRef - // fmd->anchor(), // anchor - // fmd); // memberdef Doxygen::indexList->addIndexItem(container,fmd); - //ol.writeListItem(); ol.startDescTableTitle(); ol.startDoxyAnchor(cfname,cname,fmd->anchor(),fmd->name(),fmd->argsString()); first=FALSE; - //ol.startEmphasis(); ol.docify(fmd->name()); - //ol.endEmphasis(); ol.disableAllBut(OutputGenerator::Man); ol.writeString(" "); ol.enableAll(); ol.endDoxyAnchor(cfname,fmd->anchor()); ol.endDescTableTitle(); - //ol.newParagraph(); ol.startDescTableData(); bool hasBrief = !fmd->briefDescription().isEmpty(); @@ -2407,11 +2394,7 @@ void MemberDef::_writeEnumValues(OutputList &ol,Definition *container, } if (!first) { - //ol.endItemList(); ol.endDescTable(); - //ol.endDescForItem(); - //ol.endSimpleSect(); - //ol.writeChar('\n'); } } } diff --git a/src/outputgen.h b/src/outputgen.h index 44d34b8..9935bd9 100644 --- a/src/outputgen.h +++ b/src/outputgen.h @@ -145,7 +145,8 @@ class BaseOutputDocInterface : public CodeOutputInterface Since, Date, Bug, Note, Warning, Par, Deprecated, Pre, Post, Invar, Remark, Attention, - Todo, Test, RCS, */ EnumValues, + Todo, Test, RCS, */ + EnumValues, Examples }; @@ -279,9 +280,8 @@ class BaseOutputDocInterface : public CodeOutputInterface virtual void startSmall() = 0; virtual void endSmall() = 0; - virtual void startSimpleSect(SectionTypes t,const char *file, - const char *anchor,const char *title) = 0; - virtual void endSimpleSect() = 0; + virtual void startExamples() = 0; + virtual void endExamples() = 0; virtual void startParamList(ParamListTypes t,const char *title) = 0; virtual void endParamList() = 0; diff --git a/src/outputlist.h b/src/outputlist.h index 2e89101..5fd8017 100644 --- a/src/outputlist.h +++ b/src/outputlist.h @@ -321,11 +321,10 @@ class OutputList : public OutputDocInterface const char *title,const char *name) { forall(&OutputGenerator::writeInheritedSectionTitle,id,ref, file,anchor,title,name); } - void startSimpleSect(SectionTypes t,const char *file,const char *anchor, - const char *title) - { forall(&OutputGenerator::startSimpleSect,t,file,anchor,title); } - void endSimpleSect() - { forall(&OutputGenerator::endSimpleSect); } + void startExamples() + { forall(&OutputGenerator::startExamples); } + void endExamples() + { forall(&OutputGenerator::endExamples); } void startParamList(ParamListTypes t,const char *title) { forall(&OutputGenerator::startParamList,t,title); } void endParamList() diff --git a/src/pagedef.cpp b/src/pagedef.cpp index 4721306..d2c3f68 100644 --- a/src/pagedef.cpp +++ b/src/pagedef.cpp @@ -35,6 +35,7 @@ PageDef::PageDef(const char *f,int l,const char *n, m_pageScope = 0; m_nestingLevel = 0; m_fileName = ::convertNameToFile(n,FALSE,TRUE); + m_showLineNo = FALSE; } PageDef::~PageDef() @@ -329,3 +330,13 @@ void PageDef::setLocalToc(const LocalToc <) { m_localToc = lt; } + +void PageDef::setShowLineNo(bool b) +{ + m_showLineNo = b; +} + +bool PageDef::showLineNo() const +{ + return m_showLineNo; +} diff --git a/src/pagedef.h b/src/pagedef.h index 27316cb..a0c3acb 100644 --- a/src/pagedef.h +++ b/src/pagedef.h @@ -35,6 +35,7 @@ class PageDef : public Definition // setters void setFileName(const char *name); void setLocalToc(const LocalToc &tl); + void setShowLineNo(bool); // getters DefType definitionType() const { return TypePage; } @@ -63,6 +64,7 @@ class PageDef : public Definition void setPageScope(Definition *d){ m_pageScope = d; } Definition *getPageScope() const { return m_pageScope; } QCString displayName(bool=TRUE) const { return !m_title.isEmpty() ? m_title : Definition::name(); } + bool showLineNo() const; void writeDocumentation(OutputList &ol); void writeTagFile(FTextStream &); @@ -76,6 +78,7 @@ class PageDef : public Definition Definition *m_pageScope; int m_nestingLevel; LocalToc m_localToc; + bool m_showLineNo; }; class PageSDict : public SDict<PageDef> diff --git a/src/perlmodgen.cpp b/src/perlmodgen.cpp index ef5cbc2..f805383 100644 --- a/src/perlmodgen.cpp +++ b/src/perlmodgen.cpp @@ -626,6 +626,8 @@ void PerlModDocVisitor::visit(DocStyleChange *s) switch (s->style()) { case DocStyleChange::Bold: style = "bold"; break; + case DocStyleChange::Strike: style = "strike"; break; + case DocStyleChange::Underline: style = "underline"; break; case DocStyleChange::Italic: style = "italic"; break; case DocStyleChange::Code: style = "code"; break; case DocStyleChange::Subscript: style = "subscript"; break; @@ -1254,6 +1256,7 @@ void PerlModDocVisitor::visitPre(DocParamSect *s) err("unknown parameter section found\n"); break; } + m_output.openHash(); openOther(); openSubBlock(type); } @@ -1262,6 +1265,7 @@ void PerlModDocVisitor::visitPost(DocParamSect *) { closeSubBlock(); closeOther(); + m_output.closeHash(); } void PerlModDocVisitor::visitPre(DocParamList *pl) diff --git a/src/plantuml.cpp b/src/plantuml.cpp index 89e6e9e..ada035b 100644 --- a/src/plantuml.cpp +++ b/src/plantuml.cpp @@ -47,7 +47,7 @@ QCString writePlantUMLSource(const QCString &outDir,const QCString &fileName,con } QCString text = "@startuml\n"; text+=content; - text+="@enduml\n"; + text+="\n@enduml\n"; file.writeBlock( text, text.length() ); file.close(); return baseName; diff --git a/src/printdocvisitor.h b/src/printdocvisitor.h index d1dbb74..8d9a2b9 100644 --- a/src/printdocvisitor.h +++ b/src/printdocvisitor.h @@ -91,6 +91,12 @@ class PrintDocVisitor : public DocVisitor case DocStyleChange::Bold: if (s->enable()) printf("<bold>"); else printf("</bold>"); break; + case DocStyleChange::Strike: + if (s->enable()) printf("<strike>"); else printf("</strike>"); + break; + case DocStyleChange::Underline: + if (s->enable()) printf("<underline>"); else printf("</underline>"); + break; case DocStyleChange::Italic: if (s->enable()) printf("<italic>"); else printf("</italic>"); break; diff --git a/src/pycode.l b/src/pycode.l index 1b176d6..dfa383f 100644 --- a/src/pycode.l +++ b/src/pycode.l @@ -1311,7 +1311,7 @@ TARGET ({IDENTIFIER}|"("{TARGET_LIST}")"|"["{TARGET_LIST}"]"|{ATTRIBUT \\. { // espaced char codify(yytext); } - {STRINGPREFIX}?{TRIDOUBLEQUOTE} { // tripple double quotes + {STRINGPREFIX}?{TRIDOUBLEQUOTE} { // triple double quotes codify(yytext); } "'" { // end of the string @@ -1334,7 +1334,7 @@ TARGET ({IDENTIFIER}|"("{TARGET_LIST}")"|"["{TARGET_LIST}"]"|{ATTRIBUT \\. { // espaced char codify(yytext); } - {STRINGPREFIX}?{TRISINGLEQUOTE} { // tripple single quotes + {STRINGPREFIX}?{TRISINGLEQUOTE} { // triple single quotes codify(yytext); } "\"" { // end of the string diff --git a/src/pyscanner.l b/src/pyscanner.l index 4718e3b..2adf632 100644 --- a/src/pyscanner.l +++ b/src/pyscanner.l @@ -1508,7 +1508,7 @@ STARTDOCSYMS "##" \\. { // espaced char addToString(yytext); } - "\"\"\"" { // tripple double quotes + "\"\"\"" { // triple double quotes addToString(yytext); } "'" { // end of the string @@ -1531,7 +1531,7 @@ STARTDOCSYMS "##" \\. { // espaced char addToString(yytext); } - "'''" { // tripple single quotes + "'''" { // triple single quotes addToString(yytext); } "\"" { // end of the string diff --git a/src/qhp.cpp b/src/qhp.cpp index e7c8d10..6ce6b06 100644 --- a/src/qhp.cpp +++ b/src/qhp.cpp @@ -23,7 +23,7 @@ #include "doxygen.h" #include "filedef.h" -#include <qstringlist.h> +#include <qcstringlist.h> #include <string.h> #include <qfile.h> @@ -101,10 +101,10 @@ void Qhp::initialize() { "name", filterName, 0 }; m_doc.open("customFilter", tagAttributes); - QStringList customFilterAttributes = QStringList::split(QChar(' '), Config_getString(QHP_CUST_FILTER_ATTRS)); + QCStringList customFilterAttributes = QCStringList::split(' ', Config_getString(QHP_CUST_FILTER_ATTRS)); for (int i = 0; i < (int)customFilterAttributes.count(); i++) { - m_doc.openCloseContent("filterAttribute", customFilterAttributes[i].utf8()); + m_doc.openCloseContent("filterAttribute", customFilterAttributes[i]); } m_doc.close("customFilter"); } @@ -112,15 +112,15 @@ void Qhp::initialize() m_doc.open("filterSection"); // Add section attributes - QStringList sectionFilterAttributes = QStringList::split(QChar(' '), + QCStringList sectionFilterAttributes = QCStringList::split(' ', Config_getString(QHP_SECT_FILTER_ATTRS)); - if (!sectionFilterAttributes.contains(QString("doxygen"))) + if (!sectionFilterAttributes.contains("doxygen")) { sectionFilterAttributes << "doxygen"; } for (int i = 0; i < (int)sectionFilterAttributes.count(); i++) { - m_doc.openCloseContent("filterAttribute", sectionFilterAttributes[i].utf8()); + m_doc.openCloseContent("filterAttribute", sectionFilterAttributes[i]); } m_toc.open("toc"); diff --git a/src/rtfdocvisitor.cpp b/src/rtfdocvisitor.cpp index ec6d015..7fbfdc8 100644 --- a/src/rtfdocvisitor.cpp +++ b/src/rtfdocvisitor.cpp @@ -192,6 +192,12 @@ void RTFDocVisitor::visit(DocStyleChange *s) case DocStyleChange::Bold: if (s->enable()) m_t << "{\\b "; else m_t << "} "; break; + case DocStyleChange::Strike: + if (s->enable()) m_t << "{\\strike "; else m_t << "} "; + break; + case DocStyleChange::Underline: + if (s->enable()) m_t << "{\\ul "; else m_t << "} "; + break; case DocStyleChange::Italic: if (s->enable()) m_t << "{\\i "; else m_t << "} "; break; diff --git a/src/rtfgen.cpp b/src/rtfgen.cpp index 64da929..b4a9e65 100644 --- a/src/rtfgen.cpp +++ b/src/rtfgen.cpp @@ -2632,7 +2632,7 @@ void testRTFOutput(const char *name) err: err("RTF integrity test failed at line %d of %s due to a bracket mismatch.\n" " Please try to create a small code example that produces this error \n" - " and send that to dimitri@stack.nl.\n",line,name); + " and send that to doxygen@gmail.com.\n",line,name); } /** @@ -2727,21 +2727,14 @@ void RTFGenerator::endMemberGroup(bool hasHeader) t << "}"; } -void RTFGenerator::startSimpleSect(SectionTypes,const char *file,const char *anchor,const char *title) +void RTFGenerator::startExamples() { - DBG_RTF(t << "{\\comment (startSimpleSect)}" << endl) + DBG_RTF(t << "{\\comment (startExamples)}" << endl) t << "{"; // ends at endDescList t << "{"; // ends at endDescTitle startBold(); newParagraph(); - if (file) - { - writeObjectLink(0,file,anchor,title); - } - else - { - docify(title); - } + docify(theTranslator->trExamples()); endBold(); t << "}"; newParagraph(); @@ -2749,9 +2742,9 @@ void RTFGenerator::startSimpleSect(SectionTypes,const char *file,const char *anc t << rtf_Style_Reset << rtf_DList_DepthStyle(); } -void RTFGenerator::endSimpleSect() +void RTFGenerator::endExamples() { - DBG_RTF(t << "{\\comment (endSimpleSect)}" << endl) + DBG_RTF(t << "{\\comment (endExamples)}" << endl) m_omitParagraph = FALSE; newParagraph(); decrementIndentLevel(); @@ -2802,7 +2795,7 @@ void RTFGenerator::exceptionEntry(const char* prefix,bool closeBracket) { DBG_RTF(t << "{\\comment (exceptionEntry)}" << endl) if (prefix) - t << " " << prefix; + t << " " << prefix << "("; else if (closeBracket) t << ")"; t << " "; diff --git a/src/rtfgen.h b/src/rtfgen.h index bb3146a..b6b32c7 100644 --- a/src/rtfgen.h +++ b/src/rtfgen.h @@ -164,8 +164,8 @@ class RTFGenerator : public OutputGenerator void writeInheritedSectionTitle(const char *,const char *,const char *, const char *,const char *,const char *) {} void startDescList(SectionTypes); - void startSimpleSect(SectionTypes,const char *,const char *,const char *); - void endSimpleSect(); + void startExamples(); + void endExamples(); void startParamList(ParamListTypes,const char *); void endParamList(); //void writeDescItem(); diff --git a/src/tagreader.cpp b/src/tagreader.cpp index dfa8511..cf64a35 100644 --- a/src/tagreader.cpp +++ b/src/tagreader.cpp @@ -27,7 +27,7 @@ #include <qfileinfo.h> #include <qlist.h> #include <qstring.h> -#include <qstringlist.h> +#include <qcstringlist.h> #include "entry.h" #include "classdef.h" @@ -105,7 +105,7 @@ class TagClassInfo QList<BaseInfo> *bases; QList<TagMemberInfo> members; QList<QCString> *templateArguments; - QStringList classList; + QCStringList classList; Kind kind; bool isObjC; }; @@ -118,8 +118,8 @@ class TagNamespaceInfo QCString name; QCString filename; QCString clangId; - QStringList classList; - QStringList namespaceList; + QCStringList classList; + QCStringList namespaceList; TagAnchorInfoList docAnchors; QList<TagMemberInfo> members; }; @@ -133,7 +133,7 @@ class TagPackageInfo QCString filename; TagAnchorInfoList docAnchors; QList<TagMemberInfo> members; - QStringList classList; + QCStringList classList; }; /** Container for include info that can be read from a tagfile */ @@ -157,8 +157,8 @@ class TagFileInfo QCString filename; TagAnchorInfoList docAnchors; QList<TagMemberInfo> members; - QStringList classList; - QStringList namespaceList; + QCStringList classList; + QCStringList namespaceList; QList<TagIncludeInfo> includes; }; @@ -172,12 +172,12 @@ class TagGroupInfo QCString filename; TagAnchorInfoList docAnchors; QList<TagMemberInfo> members; - QStringList subgroupList; - QStringList classList; - QStringList namespaceList; - QStringList fileList; - QStringList pageList; - QStringList dirList; + QCStringList subgroupList; + QCStringList classList; + QCStringList namespaceList; + QCStringList fileList; + QCStringList pageList; + QCStringList dirList; }; /** Container for page specific info that can be read from a tagfile */ @@ -197,8 +197,8 @@ class TagDirInfo QCString name; QCString filename; QCString path; - QStringList subdirList; - QStringList fileList; + QCStringList subdirList; + QCStringList fileList; TagAnchorInfoList docAnchors; }; @@ -1009,11 +1009,11 @@ void TagFileParser::dump() { msg("namespace `%s'\n",nd->name.data()); msg(" filename `%s'\n",nd->filename.data()); - QStringList::Iterator it; + QCStringList::Iterator it; for ( it = nd->classList.begin(); it != nd->classList.end(); ++it ) { - msg( " class: %s \n", (*it).latin1() ); + msg( " class: %s \n", (*it).data() ); } QListIterator<TagMemberInfo> mci(nd->members); @@ -1034,16 +1034,16 @@ void TagFileParser::dump() { msg("file `%s'\n",fd->name.data()); msg(" filename `%s'\n",fd->filename.data()); - QStringList::Iterator it; + QCStringList::Iterator it; for ( it = fd->namespaceList.begin(); it != fd->namespaceList.end(); ++it ) { - msg( " namespace: %s \n", (*it).latin1() ); + msg( " namespace: %s \n", (*it).data() ); } for ( it = fd->classList.begin(); it != fd->classList.end(); ++it ) { - msg( " class: %s \n", (*it).latin1() ); + msg( " class: %s \n", (*it).data() ); } QListIterator<TagMemberInfo> mci(fd->members); @@ -1072,31 +1072,31 @@ void TagFileParser::dump() { msg("group `%s'\n",gd->name.data()); msg(" filename `%s'\n",gd->filename.data()); - QStringList::Iterator it; + QCStringList::Iterator it; for ( it = gd->namespaceList.begin(); it != gd->namespaceList.end(); ++it ) { - msg( " namespace: %s \n", (*it).latin1() ); + msg( " namespace: %s \n", (*it).data() ); } for ( it = gd->classList.begin(); it != gd->classList.end(); ++it ) { - msg( " class: %s \n", (*it).latin1() ); + msg( " class: %s \n", (*it).data() ); } for ( it = gd->fileList.begin(); it != gd->fileList.end(); ++it ) { - msg( " file: %s \n", (*it).latin1() ); + msg( " file: %s \n", (*it).data() ); } for ( it = gd->subgroupList.begin(); it != gd->subgroupList.end(); ++it ) { - msg( " subgroup: %s \n", (*it).latin1() ); + msg( " subgroup: %s \n", (*it).data() ); } for ( it = gd->pageList.begin(); it != gd->pageList.end(); ++it ) { - msg( " page: %s \n", (*it).latin1() ); + msg( " page: %s \n", (*it).data() ); } QListIterator<TagMemberInfo> mci(gd->members); @@ -1126,16 +1126,16 @@ void TagFileParser::dump() { msg("dir `%s'\n",dd->name.data()); msg(" path `%s'\n",dd->path.data()); - QStringList::Iterator it; + QCStringList::Iterator it; for ( it = dd->fileList.begin(); it != dd->fileList.end(); ++it ) { - msg( " file: %s \n", (*it).latin1() ); + msg( " file: %s \n", (*it).data() ); } for ( it = dd->subdirList.begin(); it != dd->subdirList.end(); ++it ) { - msg( " subdir: %s \n", (*it).latin1() ); + msg( " subdir: %s \n", (*it).data() ); } } } diff --git a/src/tclscanner.l b/src/tclscanner.l index 56d2e3d..7ca5ade 100644 --- a/src/tclscanner.l +++ b/src/tclscanner.l @@ -25,7 +25,7 @@ #include <ctype.h> #include <qstring.h> -#include <qstringlist.h> +#include <qcstringlist.h> #include <qlist.h> #include <qmap.h> #include <qarray.h> @@ -369,7 +369,7 @@ int Tcl_SplitList( } // END of tclUtil.c -void tcl_split_list(QString &str, QStringList &list) +void tcl_split_list(QCString &str, QCStringList &list) { int argc; const char **argv; @@ -383,17 +383,20 @@ void tcl_split_list(QString &str, QStringList &list) { str=str.mid(1,str.length()-2); } - if (Tcl_SplitList(str.ascii(),&argc,&argv) != TCL_OK) + if (!str.isEmpty()) { - list.append(str); - } - else - { - for (int i = 0; i < argc; i++) + if (Tcl_SplitList(str,&argc,&argv) != TCL_OK) { - list.append(argv[i]); + list.append(str); + } + else + { + for (int i = 0; i < argc; i++) + { + list.append(argv[i]); + } + ckfree((char *) argv); } - ckfree((char *) argv); } } @@ -409,7 +412,7 @@ typedef struct Entry *entry_cl; // if set contain the current class Entry *entry_scan; // current scan entry Protection protection; // current protections state - QStringList after; // option/value list (options: NULL comment keyword script) + QCStringList after; // option/value list (options: NULL comment keyword script) } tcl_scan; //* Structure containing all internal global variables. @@ -446,7 +449,7 @@ static struct Entry* entry_file; // entry of current file Entry* entry_current; // currently used entry Entry* entry_inside; // contain entry of current scan context - QStringList list_commandwords; // list of command words + QCStringList list_commandwords; // list of command words QList<tcl_scan> scan; // stack of scan contexts QAsciiDict<Entry> ns; // all read namespace entries QAsciiDict<Entry> cl; // all read class entries @@ -602,7 +605,7 @@ Entry* tcl_entry_class(const QCString cl) // @return 1 if keyword and 0 otherwise static int tcl_keyword(QCString str) { - static QStringList myList; + static QCStringList myList; static int myInit=1; if (myInit) { @@ -639,7 +642,7 @@ static int tcl_keyword(QCString str) myList <<"tkerror"<<"tkwait"<<"tk_bisque"<<"tk_focusNext"<<"tk_focusPrev"<<"tk_focusFollowsMouse"<<"tk_popup"<<"tk_setPalette"<<"tk_textCut"<<"tk_TextCopy"<<"tk_textPaste"<<"chooseColor"<<"tk_chooseColor"<<"tk_chooseDirectory"<<"tk_dialog"<<"tk_getOpenFile"<<"tkDialog"<<"tk_getSaveFile"<<"tk_messageBox"; myList <<"winfo"<<"wm"; myList <<"button"<<"canvas"<<"checkbutton"<<"entry"<<"frame"<<"image"<<"label"<<"labelframe"<<"listbox"<<"menu"<<"menubutton"<<"message"<<"panedwindow"<<"radiobutton"<<"scale"<<"scrollbar"<<"spinbox"<<"toplevel"; - myList.sort(); + //myList.sort(); myInit=0; } str=str.stripWhiteSpace(); @@ -727,7 +730,7 @@ static void tcl_codify(const char *s,const char *str) static void tcl_codify(const char *s,const QString &str) { if (tcl.code==NULL) return; - tcl_codify(s,str.utf8()); + tcl_codify(s,str); } //! Codify 'str' with special font class 's'. @@ -740,7 +743,7 @@ static void tcl_codify(const char *s,const QCString &str) static void tcl_codify_cmd(const char *s,int i) { - tcl_codify(s,(*tcl.list_commandwords.at(i)).utf8()); + tcl_codify(s,(*tcl.list_commandwords.at(i))); } //! codify a string token // @@ -1193,7 +1196,7 @@ tcl_inf("line=%d\n",myScan->line1); myStart=i; break; } - tcl_codify(myScan->after[i].utf8(),myScan->after[i+1].utf8()); + tcl_codify(myScan->after[i],myScan->after[i+1]); } yy_delete_buffer(myScan->buffer_state); yy_pop_state(); @@ -1608,12 +1611,12 @@ tcl_inf("-> %s\n",(const char *)tcl.string_comment); } //! Parse given \c arglist . -static void tcl_command_ARGLIST(QString &arglist) +static void tcl_command_ARGLIST(QCString &arglist) { D Argument *myArg; - QStringList myArgs; - QString myArglist=""; + QCStringList myArgs; + QCString myArglist=""; if (!tcl.entry_current->argList) { @@ -1622,14 +1625,14 @@ D tcl_split_list(arglist,myArgs); for (uint i=0;i<myArgs.count();i++) { - QStringList myArgs1; + QCStringList myArgs1; myArg=new Argument; tcl_split_list(*myArgs.at(i),myArgs1); if (myArgs1.count()==2) { - myArg->name= (*myArgs1.at(0)).utf8(); - myArg->defval= (*myArgs1.at(1)).utf8(); + myArg->name= (*myArgs1.at(0)); + myArg->defval= (*myArgs1.at(1)); if (myArg->defval.isEmpty()) { myArg->defval = " "; @@ -1638,13 +1641,13 @@ D } else { - myArg->name= (*myArgs.at(i)).utf8(); - myArglist += QString(myArg->name) + " "; + myArg->name= (*myArgs.at(i)); + myArglist += myArg->name + " "; } tcl.entry_current->argList->append(myArg); } arglist = myArglist; - tcl.entry_current->args = arglist.utf8(); + tcl.entry_current->args = arglist; } //! Create link. @@ -1763,7 +1766,7 @@ static void tcl_codify_link(QCString name) //! scan general argument for brackets // -// parses (*tcl.list_commandwords.at(i)).utf8() and checks for brackets. +// parses (*tcl.list_commandwords.at(i)) and checks for brackets. // Starts a new scan context if needed (*myScan==0 and brackets found). // Returns NULL or the created scan context. // @@ -1773,7 +1776,7 @@ static tcl_scan *tcl_command_ARG(tcl_scan *myScan, unsigned int i, bool ignoreOu bool insideQuotes=false; unsigned int insideBrackets=0; unsigned int insideBraces=0; - myName = (*tcl.list_commandwords.at(i)).utf8(); + myName = (*tcl.list_commandwords.at(i)); if (i%2 != 0) { // handle white space @@ -1861,7 +1864,7 @@ D // Example: eval [list set] [list NotInvoked] [Invoked NotInvoked] for (unsigned int i = 1; i < tcl.list_commandwords.count(); i++) { - myString += (*tcl.list_commandwords.at(i)).utf8(); + myString += (*tcl.list_commandwords.at(i)); } myScan = tcl_scan_start('?', myString, myScan->ns, myScan->entry_cl, myScan->entry_fn); @@ -1882,7 +1885,7 @@ D unsigned int lastOptionIndex = 0; for (i = 2; i<tcl.list_commandwords.count(); i += 2) { - token = (*tcl.list_commandwords.at(i)).utf8(); + token = (*tcl.list_commandwords.at(i)); if (token == "--") { lastOptionIndex = i; @@ -1913,7 +1916,7 @@ D int size; const char *elem; const char *next; - token = (*tcl.list_commandwords.at(lastOptionIndex + 4)).utf8(); + token = (*tcl.list_commandwords.at(lastOptionIndex + 4)); if (token[0] == '{') { inBraces = true; @@ -1966,15 +1969,15 @@ D //printf("detected: switch ?options? string pattern body ?pattern body ...?\n"); myScan = tcl_command_ARG(myScan, lastOptionIndex + 1, false); myScan = tcl_command_ARG(myScan, lastOptionIndex + 2, false); - //printf("value=%s\n",(const char*) (*tcl.list_commandwords.at(lastOptionIndex + 2)).utf8()); + //printf("value=%s\n",(const char*) (*tcl.list_commandwords.at(lastOptionIndex + 2))); for (i = lastOptionIndex + 3; i < tcl.list_commandwords.count(); i += 4) { myScan = tcl_command_ARG(myScan, i + 0, false); // whitespace myScan = tcl_command_ARG(myScan, i + 1, false); // pattern myScan = tcl_command_ARG(myScan, i + 2, false); // whitespace - myScan = tcl_codify_token(myScan, "script", (*tcl.list_commandwords.at(i+3)).utf8()); // script - //printf("pattern=%s\n",(const char*) (*tcl.list_commandwords.at(i+1)).utf8()); - //printf("script=%s\n",(const char*) (*tcl.list_commandwords.at(i+3)).utf8()); + myScan = tcl_codify_token(myScan, "script", (*tcl.list_commandwords.at(i+3))); // script + //printf("pattern=%s\n",(const char*) (*tcl.list_commandwords.at(i+1)))); + //printf("script=%s\n",(const char*) (*tcl.list_commandwords.at(i+3))); } } else @@ -2007,7 +2010,7 @@ D //! Handle internal tcl commands. // "if expr1 ?then? body1 elseif expr2 ?then? body2 elseif ... ?else? ?bodyN?" -static void tcl_command_IF(QStringList type) +static void tcl_command_IF(QCStringList type) { D tcl_codify_cmd("keyword",0); @@ -2126,7 +2129,7 @@ D tcl_codify_cmd(NULL,3); tcl_codify_cmd(NULL,4); tcl_codify_cmd(NULL,5); - tcl_name_SnippetAware(myScan->ns,(*tcl.list_commandwords.at(2)).utf8(),myNs,myName); + tcl_name_SnippetAware(myScan->ns,(*tcl.list_commandwords.at(2)),myNs,myName); if (myNs.length()) { myEntryNs = tcl_entry_namespace(myNs); @@ -2165,7 +2168,7 @@ D tcl_codify_cmd(NULL,3); tcl_codify_cmd(NULL,4); tcl_codify_cmd(NULL,5); - tcl_name(myScan->ns,(*tcl.list_commandwords.at(2)).utf8(),myNs,myName); + tcl_name(myScan->ns,(*tcl.list_commandwords.at(2)),myNs,myName); if (myNs.length()) { myEntryCl = tcl_entry_class(myNs); @@ -2205,7 +2208,7 @@ D tcl_codify_cmd(NULL,1); tcl_codify_cmd(NULL,2); tcl_codify_cmd(NULL,3); - tcl_name(myScan->ns,(*tcl.list_commandwords.at(0)).utf8(),myNs,myName); + tcl_name(myScan->ns,(*tcl.list_commandwords.at(0)),myNs,myName); if (myNs.length()) { myEntryCl = tcl_entry_class(myNs); @@ -2240,7 +2243,7 @@ D tcl_codify_cmd("keyword",0); tcl_codify_cmd(NULL,1); - tcl_name(myScan->ns,(*tcl.list_commandwords.at(0)).utf8(),myNs,myName); + tcl_name(myScan->ns,(*tcl.list_commandwords.at(0)),myNs,myName); if (myNs.length()) { myEntryCl = tcl_entry_class(myNs); @@ -2278,7 +2281,7 @@ D tcl_codify_cmd(NULL,3); tcl_codify_cmd(NULL,4); tcl_codify_cmd(NULL,5); - tcl_name(myScan->ns,(*tcl.list_commandwords.at(4)).utf8(),myNs,myName); + tcl_name(myScan->ns,(*tcl.list_commandwords.at(4)),myNs,myName); if (myNs.length()) { myName = myNs+"::"+myName; @@ -2291,12 +2294,12 @@ D tcl.entry_main->addSubEntry(tcl.entry_current); tcl.ns.insert(myName,tcl.entry_current); //myEntryNs = tcl.entry_current; - myStr = (*tcl.list_commandwords.at(6)).utf8(); + myStr = (*tcl.list_commandwords.at(6)); if (tcl.list_commandwords.count() > 7) { for (uint i=7;i<tcl.list_commandwords.count();i++) { - myStr.append((*tcl.list_commandwords.at(i)).utf8()); + myStr.append((*tcl.list_commandwords.at(i))); } tcl.word_is=' '; } @@ -2315,7 +2318,7 @@ D tcl_codify_cmd(NULL,1); tcl_codify_cmd("NULL",2); tcl_codify_cmd("NULL",3); - tcl_name(myScan->ns,(*tcl.list_commandwords.at(2)).utf8(),myNs,myName); + tcl_name(myScan->ns,(*tcl.list_commandwords.at(2)),myNs,myName); if (myNs.length()) { myName = myNs+"::"+myName; @@ -2347,7 +2350,7 @@ D tcl_codify_cmd("NULL",3); tcl_codify_cmd("NULL",4); tcl_codify_cmd("NULL",5); - tcl_name(myScan->ns,(*tcl.list_commandwords.at(4)).utf8(),myNs,myName); + tcl_name(myScan->ns,(*tcl.list_commandwords.at(4)),myNs,myName); if (myNs.length()) { myName = myNs+"::"+myName; @@ -2377,13 +2380,13 @@ D tcl_codify_cmd(NULL,1); tcl_codify_cmd("NULL",2); tcl_codify_cmd("NULL",3); - tcl_name(myScan->ns,(*tcl.list_commandwords.at(2)).utf8(),myNs,myName); + tcl_name(myScan->ns,(*tcl.list_commandwords.at(2)),myNs,myName); if (myNs.length()) { myName = myNs+"::"+myName; } myEntryCl = tcl_entry_class(myName); - myStr = (*tcl.list_commandwords.at(4)).utf8(); + myStr = (*tcl.list_commandwords.at(4)); // // special cases first // oo::define classname method methodname args script @@ -2400,7 +2403,7 @@ D } Entry *myEntry; QCString myMethod; - tcl_name(myScan->ns,(*tcl.list_commandwords.at(n==11?6:4)).utf8(),myNs,myMethod); + tcl_name(myScan->ns,(*tcl.list_commandwords.at(n==11?6:4)),myNs,myMethod); // code snippet taken from tcl_command_METHOD()/tcl_command_CONSTRUCTOR tcl.fn.remove(myMethod); tcl.entry_current->section = Entry::FUNCTION_SEC; @@ -2434,7 +2437,7 @@ D { for (uint i=5;i<tcl.list_commandwords.count();i++) { - myStr.append((*tcl.list_commandwords.at(i)).utf8()); + myStr.append((*tcl.list_commandwords.at(i))); } tcl.word_is=' '; } @@ -2455,7 +2458,7 @@ D { tcl_codify_cmd(NULL,i); } - tcl_name(myScan->ns,(*tcl.list_commandwords.at(2)).utf8(),myNs,myName); + tcl_name(myScan->ns,(*tcl.list_commandwords.at(2)),myNs,myName); if (myNs.length()) {// qualified variables go into namespace myEntry = tcl_entry_namespace(myNs); @@ -2535,7 +2538,7 @@ tcl_inf("->\n"); yy_pop_state(); // check command - QCString myStr = (*tcl.list_commandwords.at(0)).utf8(); + QCString myStr = (*tcl.list_commandwords.at(0)); tcl_scan *myScanBackup=tcl.scan.at(0); int myLevel = 0; Protection myProt = tcl.protection; @@ -2580,7 +2583,7 @@ tcl_inf("->\n"); myProt = tcl.protection; goto command_end; } - myStr = (*tcl.list_commandwords.at(0)).utf8(); + myStr = (*tcl.list_commandwords.at(0)); // remove leading "::" and apply TCL_SUBST if (myStr.left(2)=="::") myStr = myStr.mid(2); if (tcl.config_subst.contains(myStr)) @@ -2624,7 +2627,7 @@ tcl_inf("->\n"); } if (myStr=="namespace") { - if ((*tcl.list_commandwords.at(2)).utf8()=="eval") + if ((*tcl.list_commandwords.at(2))=="eval") { if (tcl.list_commandwords.count() < 7) {myLine=__LINE__;goto command_warn;} tcl_command_NAMESPACE(); @@ -2647,7 +2650,7 @@ tcl_inf("->\n"); } if (myStr=="oo::class") { - if ((*tcl.list_commandwords.at(2)).utf8()=="create") + if ((*tcl.list_commandwords.at(2))=="create") { if (tcl.list_commandwords.count() != 7) {myLine=__LINE__;goto command_warn;} tcl_command_OO_CLASS(); @@ -2687,7 +2690,7 @@ tcl_inf("->\n"); { for (unsigned int i = 2; i < tcl.list_commandwords.count(); i = i + 2) { - tcl.scan.at(0)->entry_cl->extends->append(new BaseInfo((*tcl.list_commandwords.at(i)).utf8(),Public,Normal)); + tcl.scan.at(0)->entry_cl->extends->append(new BaseInfo((*tcl.list_commandwords.at(i)),Public,Normal)); } } goto command_end; @@ -2731,12 +2734,12 @@ if expr1 ?then? body1 elseif expr2 ?then? body2 elseif ... ?else? ?bodyN? */ if (myStr=="if" && tcl.list_commandwords.count() > 4) { - QStringList myType; + QCStringList myType; myType << "keyword" << "NULL" << "expr" << "NULL"; char myState='x';// last word: e'x'pr 't'hen 'b'ody 'e'lse else'i'f.. for (unsigned int i = 4; i < tcl.list_commandwords.count(); i = i + 2) { - QCString myStr=(*tcl.list_commandwords.at(i)).utf8(); + QCString myStr=(*tcl.list_commandwords.at(i)); if (myState=='x') { if (myStr=="then") @@ -2797,7 +2800,7 @@ if expr1 ?then? body1 elseif expr2 ?then? body2 elseif ... ?else? ?bodyN? tcl_command_OTHER(); goto command_end; command_warn:// print warning message because of wrong used syntax - tcl_war("%d count=%d: %s\n",myLine,tcl.list_commandwords.count(),tcl.list_commandwords.join(" ").ascii()); + tcl_war("%d count=%d: %s\n",myLine,tcl.list_commandwords.count(),tcl.list_commandwords.join(" ").data()); tcl_command_OTHER(); command_end:// add remaining text to current context if (!myText.isEmpty()) diff --git a/src/util.cpp b/src/util.cpp index 6c7e3d5..7b4c1d2 100644 --- a/src/util.cpp +++ b/src/util.cpp @@ -2591,7 +2591,7 @@ QCString dateToString(bool includeTime) static bool warnedOnce=FALSE; if (!warnedOnce) { - warn_uncond("Environment variable SOURCE_DATA_EPOCH must have a value smaller than or equal to %llu; actual value %llu\n",UINT_MAX,epoch); + warn_uncond("Environment variable SOURCE_DATE_EPOCH must have a value smaller than or equal to %llu; actual value %llu\n",UINT_MAX,epoch); warnedOnce=TRUE; } } @@ -2665,7 +2665,7 @@ Protection classInheritedProtectionLevel(ClassDef *cd,ClassDef *bcd,Protection p if (level==256) { err("Internal inconsistency: found class %s seem to have a recursive " - "inheritance relation! Please send a bug report to dimitri@stack.nl\n",cd->name().data()); + "inheritance relation! Please send a bug report to doxygen@gmail.com\n",cd->name().data()); } else if (cd->baseClasses()) { @@ -7949,8 +7949,8 @@ bool readInputFile(const char *fileName,BufStr &inBuf,bool filter,bool isSourceC int start=0; if (size>=2 && - ((inBuf.at(0)==-1 && inBuf.at(1)==-2) || // Little endian BOM - (inBuf.at(0)==-2 && inBuf.at(1)==-1) // big endian BOM + (((uchar)inBuf.at(0)==0xFF && (uchar)inBuf.at(1)==0xFE) || // Little endian BOM + ((uchar)inBuf.at(0)==0xFE && (uchar)inBuf.at(1)==0xFF) // big endian BOM ) ) // UCS-2 encoded file { diff --git a/src/vhdlcode.l b/src/vhdlcode.l index 618258f..68dcafb 100644 --- a/src/vhdlcode.l +++ b/src/vhdlcode.l @@ -31,7 +31,7 @@ #include <ctype.h> #include <qregexp.h> #include <qdir.h> -#include <qstringlist.h> +#include <qcstringlist.h> #include "entry.h" #include "doxygen.h" @@ -138,8 +138,8 @@ static bool checkVhdlString(QCString &name) int len=name.length(); if (name.at(0)=='"' && name.at(len-1)=='"' && len > 2) { - QStringList qrl=QStringList::split(regg,name,FALSE); - if (VhdlDocGen::isNumber(qrl[0].utf8())) + QCStringList qrl=QCStringList::split(regg,name); + if (VhdlDocGen::isNumber(qrl[0])) { g_code->codify("\""); startFontClass("vhdllogic"); @@ -691,8 +691,8 @@ static void writeFuncProto() codifyLines(g_FuncProto.data(),g_CurrClass.data()); return; } - QStringList qlist=QStringList::split(name,g_FuncProto,FALSE); - QCString temp=qlist[0].utf8(); + QCStringList qlist=QCStringList::split(name,g_FuncProto); + QCString temp=qlist[0]; codifyLines(temp.data(),g_CurrClass.data()); g_FuncProto.stripPrefix(temp.data()); temp.resize(0); @@ -831,11 +831,11 @@ XILINX "INST"|"NET"|"PIN"|"BLKNM"|"BUFG"|"COLLAPSE"|"CPLD"|"COMPGRP"|"CONFI QCString tt(vhdlcodeYYtext); VhdlDocGen::deleteAllChars(tt,','); QRegExp r("=>"); - QStringList ql=QStringList::split(r,tt,FALSE); + QCStringList ql=QCStringList::split(r,tt); if (ql.count()>=2) { unsigned int index=0; - QCString t1=ql[0].utf8(); + QCString t1=ql[0]; char cc=t1.at(index); while (cc==' ' || cc=='\t') { @@ -866,7 +866,7 @@ XILINX "INST"|"NET"|"PIN"|"BLKNM"|"BUFG"|"COLLAPSE"|"CPLD"|"COMPGRP"|"CONFI } codifyLines("=>"); index=0; - QCString s2=ql[1].utf8(); + QCString s2=ql[1]; t1=s2; cc=t1.at(index); while (cc==' ' || cc=='\t') @@ -959,7 +959,7 @@ XILINX "INST"|"NET"|"PIN"|"BLKNM"|"BUFG"|"COLLAPSE"|"CPLD"|"COMPGRP"|"CONFI tt=tt.lower(); VhdlDocGen::deleteAllChars(tt,';'); tt.stripWhiteSpace(); - QStringList ql=QStringList::split(regg,tt,FALSE); + QCStringList ql=QCStringList::split(regg,tt); int index=ql.findIndex(QCString("if"))+1; index+=ql.findIndex(QCString("case"))+1; index+=ql.findIndex(QCString("loop"))+1; @@ -1168,13 +1168,12 @@ XILINX "INST"|"NET"|"PIN"|"BLKNM"|"BUFG"|"COLLAPSE"|"CPLD"|"COMPGRP"|"CONFI <ParsePackage>[^:;]* { //found package QCString temp(vhdlcodeYYtext); - QStringList strl=QStringList::split(".",temp,FALSE); - + QCStringList strl=QCStringList::split(".",temp); if (strl.count()>2) { - QCString s1=strl[0].utf8(); - QCString s2=strl[1].utf8(); - QCString s3=strl[2].utf8(); + QCString s1=strl[0]; + QCString s2=strl[1]; + QCString s3=strl[2]; s1.append("."); s3.prepend("."); codifyLines(s1.data(),g_CurrClass.data()); @@ -1297,8 +1296,8 @@ XILINX "INST"|"NET"|"PIN"|"BLKNM"|"BUFG"|"COLLAPSE"|"CPLD"|"COMPGRP"|"CONFI <Bases>^{B}*("package "){BN}*("body"){BN}*{FUNCNAME} { // found package body QCString ss(vhdlcodeYYtext); QCString temp=VhdlDocGen::getIndexWord(vhdlcodeYYtext,2); - QStringList ql=QStringList::split(temp,ss,FALSE); - QCString ll=ql[0].utf8(); + QCStringList ql=QCStringList::split(temp,ss); + QCString ll=ql[0]; codifyLines(ll.data(),g_CurrClass.data()); temp=temp.stripWhiteSpace(); temp.prepend("_"); diff --git a/src/vhdldocgen.cpp b/src/vhdldocgen.cpp index 007c45f..287565b 100644 --- a/src/vhdldocgen.cpp +++ b/src/vhdldocgen.cpp @@ -26,7 +26,7 @@ #include <string.h> #include <qcstring.h> #include <qfileinfo.h> -#include <qstringlist.h> +#include <qcstringlist.h> #include <qmap.h> /* --------------------------------------------------------------- */ @@ -299,10 +299,10 @@ static QCString formatBriefNote(const QCString &brief,ClassDef * cd) int k=cd->briefLine(); - QStringList qsl=QStringList::split(ep,brief); + QCStringList qsl=QCStringList::split(ep,brief); for(uint j=0;j<qsl.count();j++) { - QCString qcs=qsl[j].data(); + QCString qcs=qsl[j]; vForm+=parseCommentAsText(cd,NULL,qcs,file,k); k++; vForm+='\n'; @@ -1028,8 +1028,8 @@ void VhdlDocGen::writeInlineClassLink(const ClassDef* cd ,OutputList& ol) } else if (ii==VhdlDocGen::ARCHITECTURE) { - QStringList qlist=QStringList::split("-",nn,FALSE); - nn=qlist[1].utf8(); + QCStringList qlist=QCStringList::split("-",nn); + nn=qlist[1]; cd=VhdlDocGen::getClass(nn.data()); } @@ -1041,9 +1041,9 @@ void VhdlDocGen::writeInlineClassLink(const ClassDef* cd ,OutputList& ol) for (int i=0;i<j;i++) { QCString *temp=ql.at(i); - QStringList qlist=QStringList::split("-",*temp,FALSE); - QCString s1=qlist[0].utf8(); - QCString s2=qlist[1].utf8(); + QCStringList qlist=QCStringList::split("-",*temp); + QCString s1=qlist[0]; + QCString s2=qlist[1]; s1.stripPrefix("_"); if (j==1) s1.resize(0); ClassDef*cc = getClass(temp->data()); @@ -1075,8 +1075,8 @@ void VhdlDocGen::findAllArchitectures(QList<QCString>& qll,const ClassDef *cd) QCString jj=citer->className(); if (cd != citer && jj.contains('-')!=-1) { - QStringList ql=QStringList::split("-",jj,FALSE); - QCString temp=ql[1].utf8(); + QCStringList ql=QCStringList::split("-",jj); + QCString temp=ql[1]; if (qstricmp(cd->className(),temp)==0) { QCString *cl=new QCString(jj); @@ -1095,10 +1095,10 @@ ClassDef* VhdlDocGen::findArchitecture(const ClassDef *cd) for ( ; (citer=cli.current()) ; ++cli ) { QCString jj=citer->name(); - QStringList ql=QStringList::split(":",jj,FALSE); + QCStringList ql=QCStringList::split(":",jj); if (ql.count()>1) { - if (ql[0].utf8()==nn ) + if (ql[0]==nn ) { return citer; } @@ -1211,15 +1211,15 @@ void VhdlDocGen::parseFuncProto(const char* text,QList<Argument>& qlist, QCString VhdlDocGen::getIndexWord(const char* c,int index) { - QStringList ql; + QCStringList ql; QCString temp(c); QRegExp reg("[\\s:|]"); - ql=QStringList::split(reg,temp,FALSE); + ql=QCStringList::split(reg,temp); if (ql.count() > (unsigned int)index) { - return ql[index].utf8(); + return ql[index]; } return ""; @@ -2678,11 +2678,11 @@ QCString VhdlDocGen::parseForConfig(QCString & entity,QCString & arch) if (!entity.contains(":")) return ""; QRegExp exp("[:()\\s]"); - QStringList ql=QStringList::split(exp,entity,FALSE); + QCStringList ql=QCStringList::split(exp,entity); //int ii=ql.findIndex(ent); assert(ql.count()>=2); - label = ql[0].utf8(); - entity = ql[1].utf8(); + label = ql[0]; + entity = ql[1]; if ((index=entity.findRev("."))>=0) { entity.remove(0,index+1); @@ -2690,8 +2690,8 @@ QCString VhdlDocGen::parseForConfig(QCString & entity,QCString & arch) if (ql.count()==3) { - arch= ql[2].utf8(); - ql=QStringList::split(exp,arch,FALSE); + arch= ql[2]; + ql=QCStringList::split(exp,arch); if (ql.count()>1) // expression { arch=""; @@ -2708,16 +2708,16 @@ QCString VhdlDocGen::parseForBinding(QCString & entity,QCString & arch) QRegExp exp("[()\\s]"); QCString label=""; - QStringList ql=QStringList::split(exp,entity,FALSE); + QCStringList ql=QCStringList::split(exp,entity); if (ql.contains("open")) { return "open"; } - label=ql[0].utf8(); + label=ql[0]; - entity = ql[1].utf8(); + entity = ql[1]; if ((index=entity.findRev("."))>=0) { entity.remove(0,index+1); @@ -2725,7 +2725,7 @@ QCString VhdlDocGen::parseForBinding(QCString & entity,QCString & arch) if (ql.count()==3) { - arch=ql[2].utf8(); + arch=ql[2]; } return label; } @@ -2843,7 +2843,7 @@ void assignBinding(VhdlConfNode * conf) QCString inst1=VhdlDocGen::getIndexWord(archy.data(),0).lower(); QCString comp=VhdlDocGen::getIndexWord(archy.data(),1).lower(); - QStringList ql=QStringList::split(",",inst1); + QCStringList ql=QCStringList::split(",",inst1); for (uint j=0;j<ql.count();j++) { @@ -2855,7 +2855,7 @@ void assignBinding(VhdlConfNode * conf) } else { - archy1=comp+":"+ql[j].utf8(); + archy1=comp+":"+ql[j]; sign1=cur->type+":"+cur->name; } @@ -3029,11 +3029,11 @@ ferr: void VhdlDocGen::writeRecorUnit(QCString & largs,OutputList& ol ,const MemberDef *mdef) { - QStringList ql=QStringList::split("#",largs,FALSE); + QCStringList ql=QCStringList::split("#",largs,FALSE); uint len=ql.count(); for(uint i=0;i<len;i++) { - QCString n=ql[i].utf8(); + QCString n=ql[i]; VhdlDocGen::formatString(n,ol,mdef); if ((len-i)>1) ol.lineBreak(); } @@ -3046,14 +3046,14 @@ void VhdlDocGen::writeRecUnitDocu( QCString largs) { - QStringList ql=QStringList::split("#",largs,FALSE); + QCStringList ql=QCStringList::split("#",largs); uint len=ql.count(); ol.startParameterList(TRUE); bool first=TRUE; for(uint i=0;i<len;i++) { - QCString n=ql[i].utf8(); + QCString n=ql[i]; ol.startParameterType(first,""); ol.endParameterType(); ol.startParameterName(TRUE); @@ -3486,14 +3486,14 @@ void FlowChart::alignCommentNode(FTextStream &t,QCString com) { uint max=0; QCString s; - QStringList ql=QStringList::split("\n",com); + QCStringList ql=QCStringList::split("\n",com); for (uint j=0;j<ql.count();j++) { - s=(QCString)ql[j].utf8(); + s=(QCString)ql[j]; if (max<s.length()) max=s.length(); } - s=ql.last().utf8(); + s=ql.last(); int diff=max-s.length(); QCString n(1); @@ -3508,7 +3508,7 @@ void FlowChart::alignCommentNode(FTextStream &t,QCString com) for (uint j=0;j<ql.count();j++) { - s=(QCString)ql[j].utf8(); + s=ql[j]; if (j<ql.count()-1) { s+="\n"; diff --git a/src/vhdljjparser.cpp b/src/vhdljjparser.cpp index 706e8db..81a7ca1 100644 --- a/src/vhdljjparser.cpp +++ b/src/vhdljjparser.cpp @@ -12,7 +12,7 @@ #include <qcstring.h> #include <qfileinfo.h> -#include <qstringlist.h> +#include <qcstringlist.h> #include "vhdljjparser.h" #include "vhdlcode.h" #include "vhdldocgen.h" @@ -381,11 +381,11 @@ void VhdlParser::addVhdlType(const char *n,int startLine,int section, spec= VhdlDocGen::GENERIC; } - QStringList ql=QStringList::split(",",name,FALSE); + QCStringList ql=QCStringList::split(",",name); for (uint u=0;u<ql.count();u++) { - current->name=ql[u].utf8(); + current->name=ql[u]; current->startLine=startLine; current->bodyLine=startLine; current->section=section; @@ -442,11 +442,11 @@ void VhdlParser::createFunction(const char *imp,uint64 spec,const char *fn) VhdlDocGen::deleteAllChars(current->args,' '); if (!fname.isEmpty()) { - QStringList q1=QStringList::split(",",fname); + QCStringList q1=QCStringList::split(",",fname); for (uint ii=0;ii<q1.count();ii++) { Argument *arg=new Argument; - arg->name=q1[ii].utf8(); + arg->name=q1[ii]; current->argList->append(arg); } } @@ -540,12 +540,12 @@ void VhdlParser::addProto(const char *s1,const char *s2,const char *s3, { (void)s5; // avoid unused warning QCString name=s2; - QStringList ql=QStringList::split(",",name,FALSE); + QCStringList ql=QCStringList::split(",",name); for (uint u=0;u<ql.count();u++) { Argument *arg=new Argument; - arg->name=ql[u].utf8(); + arg->name=ql[u]; if (s3) { arg->type=s3; diff --git a/src/vhdljjparser.h b/src/vhdljjparser.h index a0851d7..3a2ed61 100644 --- a/src/vhdljjparser.h +++ b/src/vhdljjparser.h @@ -7,6 +7,7 @@ #include <assert.h> #include <ctype.h> #include <qarray.h> +#include <qcstringlist.h> #include <qfile.h> #include <qdict.h> @@ -14,7 +15,6 @@ #include "types.h" #include "entry.h" #include "vhdldocgen.h" -#include "qstringlist.h" #include "vhdlcode.h" #include "memberlist.h" #include "config.h" @@ -30,7 +30,6 @@ class ClassSDict; class FileStorage; class ClassDef; class MemberDef; -class QStringList; struct VhdlConfNode; diff --git a/src/xmldocvisitor.cpp b/src/xmldocvisitor.cpp index 93765b1..525dbf5 100644 --- a/src/xmldocvisitor.cpp +++ b/src/xmldocvisitor.cpp @@ -65,7 +65,7 @@ static void visitPreStart(FTextStream &t, const char *cmd, const bool doCaption, { t << " width=\"" << convertToXML(width) << "\""; } - else if (!height.isEmpty()) + if (!height.isEmpty()) { t << " height=\"" << convertToXML(height) << "\""; } @@ -164,6 +164,12 @@ void XmlDocVisitor::visit(DocStyleChange *s) case DocStyleChange::Bold: if (s->enable()) m_t << "<bold>"; else m_t << "</bold>"; break; + case DocStyleChange::Strike: + if (s->enable()) m_t << "<strike>"; else m_t << "</strike>"; + break; + case DocStyleChange::Underline: + if (s->enable()) m_t << "<underline>"; else m_t << "</underline>"; + break; case DocStyleChange::Italic: if (s->enable()) m_t << "<emphasis>"; else m_t << "</emphasis>"; break; |