From f0cc0f5da51faddd490c2cf358614b4ab70cc8ac Mon Sep 17 00:00:00 2001 From: Dimitri van Heesch Date: Sun, 18 Nov 2018 15:00:59 +0100 Subject: Minor restructuring --- src/classdef.cpp | 380 +++++++++++++++++++++++++-------------------------- src/classdef.h | 4 +- src/code.l | 43 +++++- src/context.cpp | 4 +- src/filedef.cpp | 36 ++--- src/ftvhelp.cpp | 73 ++++------ src/htmlgen.cpp | 46 ++++--- src/index.cpp | 11 +- src/index.h | 5 + src/layout.h | 1 - src/namespacedef.cpp | 22 +-- src/perlmodgen.cpp | 31 +++-- src/scanner.l | 74 +++++----- src/searchindex.cpp | 10 +- src/types.h | 16 +-- src/util.cpp | 14 +- 16 files changed, 378 insertions(+), 392 deletions(-) diff --git a/src/classdef.cpp b/src/classdef.cpp index 944cd8c..77d9e05 100644 --- a/src/classdef.cpp +++ b/src/classdef.cpp @@ -1375,202 +1375,200 @@ QCString ClassDef::includeStatement() const } } -void ClassDef::writeIncludeFiles(OutputList &ol) +void ClassDef::writeIncludeFilesForSlice(OutputList &ol) { - if (m_impl->incInfo /*&& Config_getBool(SHOW_INCLUDE_FILES)*/) + if (m_impl->incInfo) { - SrcLangExt lang = getLanguage(); - if (lang==SrcLangExt_Slice) + QCString nm; + QStrList paths = Config_getList(STRIP_FROM_PATH); + if (!paths.isEmpty() && m_impl->incInfo->fileDef) { - QCString nm; - QStrList paths = Config_getList(STRIP_FROM_PATH); - if (!paths.isEmpty() && m_impl->incInfo->fileDef) + QCString abs = m_impl->incInfo->fileDef->absFilePath(); + const char *s = paths.first(); + QCString potential; + unsigned int length = 0; + while (s) { - QCString abs = m_impl->incInfo->fileDef->absFilePath(); - const char *s = paths.first(); - QCString potential; - unsigned int length = 0; - while (s) + QFileInfo info(s); + if (info.exists()) { - QFileInfo info(s); - if (info.exists()) + QString prefix = info.absFilePath(); + if (prefix.at(prefix.length() - 1) != '/') { - QString prefix = info.absFilePath(); - if (prefix.at(prefix.length() - 1) != '/') - { - prefix += '/'; - } - - if (prefix.length() > length && - qstricmp(abs.left(prefix.length()).data(), prefix.data()) == 0) // case insensitive compare - { - length = prefix.length(); - potential = abs.right(abs.length() - prefix.length()); - } - s = paths.next(); + prefix += '/'; } - } - if (length > 0) - { - nm = potential; + if (prefix.length() > length && + qstricmp(abs.left(prefix.length()).data(), prefix.data()) == 0) // case insensitive compare + { + length = prefix.length(); + potential = abs.right(abs.length() - prefix.length()); + } + s = paths.next(); } } - if (nm.isEmpty()) + if (length > 0) { - nm = m_impl->incInfo->includeName.data(); + nm = potential; } + } - ol.startParagraph(); - ol.docify("Defined in "); - ol.startTypewriter(); - ol.docify("<"); - if (m_impl->incInfo->fileDef) - { - ol.writeObjectLink(0,m_impl->incInfo->fileDef->includeName(),0,nm); - } - else + if (nm.isEmpty()) + { + nm = m_impl->incInfo->includeName.data(); + } + + ol.startParagraph(); + ol.docify(theTranslator->trDefinedIn()+" "); + ol.startTypewriter(); + ol.docify("<"); + if (m_impl->incInfo->fileDef) + { + ol.writeObjectLink(0,m_impl->incInfo->fileDef->includeName(),0,nm); + } + else + { + ol.docify(nm); + } + ol.docify(">"); + ol.endTypewriter(); + ol.endParagraph(); + } + + // Write a summary of the Slice definition including metadata. + ol.startParagraph(); + ol.startTypewriter(); + if (!m_impl->metaData.isEmpty()) + { + ol.docify(m_impl->metaData); + ol.lineBreak(); + } + if (m_impl->spec & Entry::Local) + { + ol.docify("local "); + } + if (m_impl->spec & Entry::Interface) + { + ol.docify("interface "); + } + else if (m_impl->spec & Entry::Struct) + { + ol.docify("struct "); + } + else if (m_impl->spec & Entry::Exception) + { + ol.docify("exception "); + } + else + { + ol.docify("class "); + } + ol.docify(stripScope(name())); + if (m_impl->inherits) + { + if (m_impl->spec & (Entry::Interface|Entry::Exception)) + { + ol.docify(" extends "); + BaseClassListIterator it(*m_impl->inherits); + BaseClassDef *ibcd; + for (;(ibcd=it.current());++it) { - ol.docify(nm); + ClassDef *icd = ibcd->classDef; + ol.docify(icd->name()); + if (!it.atLast()) + { + ol.docify(", "); + } } - ol.docify(">"); - ol.endTypewriter(); - ol.endParagraph(); } else { - QCString nm=m_impl->incInfo->includeName.isEmpty() ? - (m_impl->incInfo->fileDef ? - m_impl->incInfo->fileDef->docName().data() : "" - ) : - m_impl->incInfo->includeName.data(); - if (!nm.isEmpty()) + // Must be a class. + bool implements = false; + BaseClassListIterator it(*m_impl->inherits); + BaseClassDef *ibcd; + for (;(ibcd=it.current());++it) { - ol.startParagraph(); - ol.startTypewriter(); - ol.docify(includeStatement()); - bool isIDLorJava = lang==SrcLangExt_IDL || lang==SrcLangExt_Java; - if (m_impl->incInfo->local || isIDLorJava) - ol.docify("\""); - else - ol.docify("<"); - ol.pushGeneratorState(); - ol.disable(OutputGenerator::Html); - ol.docify(nm); - ol.disableAllBut(OutputGenerator::Html); - ol.enable(OutputGenerator::Html); - if (m_impl->incInfo->fileDef) + ClassDef *icd = ibcd->classDef; + if (icd->m_impl->spec & Entry::Interface) { - ol.writeObjectLink(0,m_impl->incInfo->fileDef->includeName(),0,nm); + implements = true; } else { - ol.docify(nm); + ol.docify(" extends "); + ol.docify(icd->name()); } - ol.popGeneratorState(); - if (m_impl->incInfo->local || isIDLorJava) - ol.docify("\""); - else - ol.docify(">"); - if (isIDLorJava) - ol.docify(";"); - ol.endTypewriter(); - ol.endParagraph(); - } - } - - // Write a summary of the Slice definition including metadata. - if (lang == SrcLangExt_Slice) - { - ol.startParagraph(); - ol.startTypewriter(); - if (!m_impl->metaData.isEmpty()) - { - ol.docify(m_impl->metaData); - ol.lineBreak(); - } - if (m_impl->spec & Entry::Local) - { - ol.docify("local "); - } - if (m_impl->spec & Entry::Interface) - { - ol.docify("interface "); } - else if (m_impl->spec & Entry::Struct) + if (implements) { - ol.docify("struct "); - } - else if (m_impl->spec & Entry::Exception) - { - ol.docify("exception "); - } - else - { - ol.docify("class "); - } - ol.docify(stripScope(name())); - if (m_impl->inherits) - { - if (m_impl->spec & (Entry::Interface|Entry::Exception)) + ol.docify(" implements "); + bool first = true; + for (ibcd=it.toFirst();(ibcd=it.current());++it) { - ol.docify(" extends "); - BaseClassListIterator it(*m_impl->inherits); - BaseClassDef *ibcd; - for (;(ibcd=it.current());++it) + ClassDef *icd = ibcd->classDef; + if (icd->m_impl->spec & Entry::Interface) { - ClassDef *icd = ibcd->classDef; - ol.docify(icd->name()); - if (!it.atLast()) + if (!first) { ol.docify(", "); } - } - } - else - { - // Must be a class. - bool implements = false; - BaseClassListIterator it(*m_impl->inherits); - BaseClassDef *ibcd; - for (;(ibcd=it.current());++it) - { - ClassDef *icd = ibcd->classDef; - if (icd->m_impl->spec & Entry::Interface) - { - implements = true; - } else { - ol.docify(" extends "); - ol.docify(icd->name()); - } - } - if (implements) - { - ol.docify(" implements "); - bool first = true; - for (ibcd=it.toFirst();(ibcd=it.current());++it) - { - ClassDef *icd = ibcd->classDef; - if (icd->m_impl->spec & Entry::Interface) - { - if (!first) - { - ol.docify(", "); - } - else - { - first = false; - } - ol.docify(icd->name()); - } + first = false; } + ol.docify(icd->name()); } } } - ol.docify(" { ... }"); + } + } + ol.docify(" { ... }"); + ol.endTypewriter(); + ol.endParagraph(); +} + +void ClassDef::writeIncludeFiles(OutputList &ol) +{ + if (m_impl->incInfo /*&& Config_getBool(SHOW_INCLUDE_FILES)*/) + { + SrcLangExt lang = getLanguage(); + QCString nm=m_impl->incInfo->includeName.isEmpty() ? + (m_impl->incInfo->fileDef ? + m_impl->incInfo->fileDef->docName().data() : "" + ) : + m_impl->incInfo->includeName.data(); + if (!nm.isEmpty()) + { + ol.startParagraph(); + ol.startTypewriter(); + ol.docify(includeStatement()); + bool isIDLorJava = lang==SrcLangExt_IDL || lang==SrcLangExt_Java; + if (m_impl->incInfo->local || isIDLorJava) + ol.docify("\""); + else + ol.docify("<"); + ol.pushGeneratorState(); + ol.disable(OutputGenerator::Html); + ol.docify(nm); + ol.disableAllBut(OutputGenerator::Html); + ol.enable(OutputGenerator::Html); + if (m_impl->incInfo->fileDef) + { + ol.writeObjectLink(0,m_impl->incInfo->fileDef->includeName(),0,nm); + } + else + { + ol.docify(nm); + } + ol.popGeneratorState(); + if (m_impl->incInfo->local || isIDLorJava) + ol.docify("\""); + else + ol.docify(">"); + if (isIDLorJava) + ol.docify(";"); ol.endTypewriter(); ol.endParagraph(); } @@ -2054,24 +2052,24 @@ void ClassDef::writeDeclarationLink(OutputList &ol,bool &found,const char *heade { if (sliceOpt) { - if (isInterface()) + if (compoundType()==Interface) { ol.startMemberHeader("interfaces"); } - else if (isStruct()) + else if (compoundType()==Struct) { ol.startMemberHeader("structs"); } - else if (isException()) + else if (compoundType()==Exception) { ol.startMemberHeader("exceptions"); } - else + else // compoundType==Class { ol.startMemberHeader("nested-classes"); } } - else + else // non-Slice optimization: single header for class/struct/.. { ol.startMemberHeader("nested-classes"); } @@ -2207,7 +2205,14 @@ void ClassDef::writeDocumentationContents(OutputList &ol,const QCString & /*page writeBriefDescription(ol,exampleFlag); break; case LayoutDocEntry::ClassIncludes: - writeIncludeFiles(ol); + if (lang==SrcLangExt_Slice) + { + writeIncludeFilesForSlice(ol); + } + else + { + writeIncludeFiles(ol); + } break; case LayoutDocEntry::ClassInheritanceGraph: writeInheritanceGraph(ol); @@ -2365,15 +2370,15 @@ void ClassDef::writeDocumentation(OutputList &ol) HighlightedItem hli; if (sliceOpt) { - if (isInterface()) + if (compoundType()==Interface) { hli = HLI_InterfaceVisible; } - else if (isStruct()) + else if (compoundType()==Struct) { hli = HLI_StructVisible; } - else if (isException()) + else if (compoundType()==Exception) { hli = HLI_ExceptionVisible; } @@ -2524,15 +2529,15 @@ void ClassDef::writeMemberList(OutputList &ol) HighlightedItem hli; if (sliceOpt) { - if (isInterface()) + if (compoundType()==Interface) { hli = HLI_InterfaceVisible; } - else if (isStruct()) + else if (compoundType()==Struct) { hli = HLI_StructVisible; } - else if (isException()) + else if (compoundType()==Exception) { hli = HLI_ExceptionVisible; } @@ -3802,21 +3807,19 @@ QCString ClassDef::compoundTypeString() const } else { - QCString type; switch (m_impl->compType) { - case Class: type += isJavaEnum() ? "enum" : "class"; break; - case Struct: type += "struct"; break; - case Union: type += "union"; break; - case Interface: type += getLanguage()==SrcLangExt_ObjC ? "class" : "interface"; break; - case Protocol: type += "protocol"; break; - case Category: type += "category"; break; - case Exception: type += "exception"; break; - case Service: type += "service"; break; - case Singleton: type += "singleton"; break; + case Class: return isJavaEnum() ? "enum" : "class"; + case Struct: return "struct"; + case Union: return "union"; + case Interface: return getLanguage()==SrcLangExt_ObjC ? "class" : "interface"; + case Protocol: return "protocol"; + case Category: return "category"; + case Exception: return "exception"; + case Service: return "service"; + case Singleton: return "singleton"; default: return "unknown"; } - return type; } } @@ -5001,21 +5004,6 @@ bool ClassDef::subGrouping() const return m_impl->subGrouping; } -bool ClassDef::isInterface() const -{ - return m_impl->compType == Interface; -} - -bool ClassDef::isStruct() const -{ - return m_impl->compType == Struct; -} - -bool ClassDef::isException() const -{ - return m_impl->compType == Exception; -} - bool ClassDef::isSliceLocal() const { return m_impl->spec&Entry::Local; diff --git a/src/classdef.h b/src/classdef.h index caa2750..14f9fc8 100644 --- a/src/classdef.h +++ b/src/classdef.h @@ -336,9 +336,6 @@ class ClassDef : public Definition QCString getMemberListFileName() const; bool subGrouping() const; - bool isInterface() const; - bool isStruct() const; - bool isException() const; bool isSliceLocal() const; //----------------------------------------------------------------------------------- @@ -435,6 +432,7 @@ class ClassDef : public Definition void writeDetailedDescription(OutputList &ol,const QCString &pageType,bool exampleFlag, const QCString &title,const QCString &anchor=QCString()); void writeIncludeFiles(OutputList &ol); + void writeIncludeFilesForSlice(OutputList &ol); //void writeAllMembersLink(OutputList &ol); void writeInheritanceGraph(OutputList &ol); void writeCollaborationGraph(OutputList &ol); diff --git a/src/code.l b/src/code.l index 053b6b5..558c439 100644 --- a/src/code.l +++ b/src/code.l @@ -122,6 +122,7 @@ static bool g_insideJava; static bool g_insideCS; static bool g_insidePHP; static bool g_insideProtocolList; +static bool g_insideSlice; static bool g_lexInit = FALSE; @@ -1834,7 +1835,8 @@ KEYWORD_OBJC ("@public"|"@private"|"@protected"|"@class"|"@implementation"|"@int KEYWORD ("asm"|"__assume"|"auto"|"class"|"const"|"delete"|"enum"|"explicit"|"extern"|"false"|"friend"|"gcnew"|"gcroot"|"set"|"get"|"inline"|"internal"|"mutable"|"namespace"|"new"|"null"|"nullptr"|"override"|"operator"|"pin_ptr"|"private"|"protected"|"public"|"raise"|"register"|"remove"|"self"|"sizeof"|"static"|"struct"|"__super"|"function"|"template"|"generic"|"this"|"true"|"typedef"|"typeid"|"typename"|"union"|"using"|"virtual"|"volatile"|"abstract"|"final"|"import"|"synchronized"|"transient"|"alignas"|"alignof"|{KEYWORD_OBJC}) FLOWKW ("break"|"catch"|"continue"|"default"|"do"|"else"|"finally"|"return"|"switch"|"throw"|"throws"|"@catch"|"@finally") FLOWCONDITION ("case"|"for"|"foreach"|"for each"|"goto"|"if"|"try"|"while"|"@try") -TYPEKW ("bool"|"byte"|"char"|"double"|"float"|"int"|"long"|"object"|"short"|"signed"|"unsigned"|"void"|"wchar_t"|"size_t"|"boolean"|"id"|"SEL"|"string"|"nullptr"|"LocalObject"|"Object"|"Value") +TYPEKW ("bool"|"byte"|"char"|"double"|"float"|"int"|"long"|"object"|"short"|"signed"|"unsigned"|"void"|"wchar_t"|"size_t"|"boolean"|"id"|"SEL"|"string"|"nullptr") +TYPEKWSL ("LocalObject"|"Object"|"Value") CASTKW ("const_cast"|"dynamic_cast"|"reinterpret_cast"|"static_cast") CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^' \\\n]{1,4}"'")) ARITHOP "+"|"-"|"/"|"*"|"%"|"--"|"++" @@ -2542,6 +2544,20 @@ RAWEND ")"[^ \t\(\)\\]{0,16}\" addType(); g_name+=yytext; } +{TYPEKWSL}/{B}* { + if (!g_insideSlice) + { + REJECT; + } + else + { + startFontClass("keywordtype"); + g_code->codify(yytext); + endFontClass(); + addType(); + g_name+=yytext; + } + } "generic"/{B}*"<"[^\n\/\-\.\{\"\>]*">"{B}* { startFontClass("keyword"); g_code->codify(yytext); @@ -3013,6 +3029,20 @@ RAWEND ")"[^ \t\(\)\\]{0,16}\" g_code->codify(yytext); endFontClass(); } +{TYPEKWSL}/([^a-z_A-Z0-9]) { + if (!g_insideSlice) + { + REJECT; + } + else + { + addParmType(); + g_parmName=yytext; + startFontClass("keywordtype"); + g_code->codify(yytext); + endFontClass(); + } + } {FLOWKW}/([^a-z_A-Z0-9]) { addParmType(); g_parmName=yytext; @@ -3759,11 +3789,12 @@ void parseCCode(CodeOutputInterface &od,const char *className,const QCString &s, g_sourceFileDef = new FileDef("",(exName?exName:"generated")); cleanupSourceDef = TRUE; } - g_insideObjC = lang==SrcLangExt_ObjC; - g_insideJava = lang==SrcLangExt_Java; - g_insideCS = lang==SrcLangExt_CSharp; - g_insidePHP = lang==SrcLangExt_PHP; - g_insideCpp = lang==SrcLangExt_Cpp; + g_insideObjC = lang==SrcLangExt_ObjC; + g_insideJava = lang==SrcLangExt_Java; + g_insideCS = lang==SrcLangExt_CSharp; + g_insidePHP = lang==SrcLangExt_PHP; + g_insideCpp = lang==SrcLangExt_Cpp; + g_insideSlice = lang==SrcLangExt_Slice; if (g_sourceFileDef) { setCurrentDoc("l00001"); diff --git a/src/context.cpp b/src/context.cpp index 40fa6ef..405d0b5 100644 --- a/src/context.cpp +++ b/src/context.cpp @@ -2751,7 +2751,9 @@ class NamespaceContext::Private : public DefinitionContextisStruct() || cd->isInterface() || cd->isException())) + if (sliceOpt && (cd->compoundType()==ClassDef::Struct || + cd->compoundType()==ClassDef::Interface || + cd->compoundType()==ClassDef::Exception)) { continue; // These types appear in their own sections. } diff --git a/src/filedef.cpp b/src/filedef.cpp index 6e14e2f..f9f68d1 100644 --- a/src/filedef.cpp +++ b/src/filedef.cpp @@ -1265,41 +1265,27 @@ void FileDef::insertClass(ClassDef *cd) { if (cd->isHidden()) return; - ClassSDict *d; + ClassSDict *d=0; + ClassSDict **dd=&m_classSDict; if (Config_getBool(OPTIMIZE_OUTPUT_SLICE)) { - if (cd->isInterface()) + if (cd->compoundType()==ClassDef::Interface) { - if (m_interfaceSDict==0) - m_interfaceSDict = new ClassSDict(17); - d = m_interfaceSDict; + dd = &m_interfaceSDict; } - else if (cd->isStruct()) + else if (cd->compoundType()==ClassDef::Struct) { - if (m_structSDict==0) - m_structSDict = new ClassSDict(17); - d = m_structSDict; + dd = &m_structSDict; } - else if (cd->isException()) + else if (cd->compoundType()==ClassDef::Exception) { - if (m_exceptionSDict==0) - m_exceptionSDict = new ClassSDict(17); - d = m_exceptionSDict; - } - else - { - if (m_classSDict==0) - m_classSDict = new ClassSDict(17); - d = m_classSDict; + dd = &m_exceptionSDict; } } - else - { - if (m_classSDict==0) - m_classSDict = new ClassSDict(17); - d = m_classSDict; - } + + if (*dd==0) *dd = new ClassSDict(17); + d = *dd; if (Config_getBool(SORT_BRIEF_DOCS)) { diff --git a/src/ftvhelp.cpp b/src/ftvhelp.cpp index a13d45f..73ac775 100644 --- a/src/ftvhelp.cpp +++ b/src/ftvhelp.cpp @@ -332,6 +332,27 @@ static void generateBriefDoc(FTextStream &t,Definition *def) } } +static char compoundIcon(ClassDef *cd) +{ + char icon='C'; + if (cd->getLanguage() == SrcLangExt_Slice) + { + if (cd->compoundType()==ClassDef::Interface) + { + icon='I'; + } + else if (cd->compoundType()==ClassDef::Struct) + { + icon='S'; + } + else if (cd->compoundType()==ClassDef::Exception) + { + icon='E'; + } + } + return icon; +} + void FTVHelp::generateTree(FTextStream &t, const QList &nl,int level,int maxLevel,int &index) { QListIterator nli(nl); @@ -371,30 +392,8 @@ void FTVHelp::generateTree(FTextStream &t, const QList &nl,int level,in } else if (n->def && n->def->definitionType()==Definition::TypeClass) { - if (n->def->getLanguage() == SrcLangExt_Slice) - { - ClassDef *cd = dynamic_cast(n->def); - if (cd->isInterface()) - { - t << "I"; - } - else if (cd->isStruct()) - { - t << "S"; - } - else if (cd->isException()) - { - t << "E"; - } - else - { - t << "C"; - } - } - else - { - t << "C"; - } + char icon=compoundIcon(dynamic_cast(n->def)); + t << "" << icon << ""; } else { @@ -449,30 +448,8 @@ void FTVHelp::generateTree(FTextStream &t, const QList &nl,int level,in } else if (n->def && n->def->definitionType()==Definition::TypeClass) { - if (n->def->getLanguage() == SrcLangExt_Slice) - { - ClassDef *cd = dynamic_cast(n->def); - if (cd->isInterface()) - { - t << "I"; - } - else if (cd->isStruct()) - { - t << "S"; - } - else if (cd->isException()) - { - t << "E"; - } - else - { - t << "C"; - } - } - else - { - t << "C"; - } + char icon=compoundIcon(dynamic_cast(n->def)); + t << "" << icon << ""; } else { diff --git a/src/htmlgen.cpp b/src/htmlgen.cpp index 8de836d..581f3f2 100644 --- a/src/htmlgen.cpp +++ b/src/htmlgen.cpp @@ -2039,24 +2039,34 @@ static bool quickLinkVisible(LayoutNavEntry::Kind kind) static bool showNamespaces = Config_getBool(SHOW_NAMESPACES); switch (kind) { - case LayoutNavEntry::MainPage: return TRUE; - case LayoutNavEntry::User: return TRUE; - case LayoutNavEntry::UserGroup: return TRUE; - case LayoutNavEntry::Pages: return indexedPages>0; - case LayoutNavEntry::Modules: return documentedGroups>0; - case LayoutNavEntry::Namespaces: return documentedNamespaces>0 && showNamespaces; - case LayoutNavEntry::NamespaceList: return documentedNamespaces>0 && showNamespaces; - case LayoutNavEntry::NamespaceMembers: return documentedNamespaceMembers[NMHL_All]>0; - case LayoutNavEntry::Classes: return annotatedClasses>0; - case LayoutNavEntry::ClassList: return annotatedClasses>0; - case LayoutNavEntry::ClassIndex: return annotatedClasses>0; - case LayoutNavEntry::ClassHierarchy: return hierarchyClasses>0; - case LayoutNavEntry::ClassMembers: return documentedClassMembers[CMHL_All]>0; - case LayoutNavEntry::Files: return documentedHtmlFiles>0 && showFiles; - case LayoutNavEntry::FileList: return documentedHtmlFiles>0 && showFiles; - case LayoutNavEntry::FileGlobals: return documentedFileMembers[FMHL_All]>0; - //case LayoutNavEntry::Dirs: return documentedDirs>0; - case LayoutNavEntry::Examples: return Doxygen::exampleSDict->count()>0; + case LayoutNavEntry::MainPage: return TRUE; + case LayoutNavEntry::User: return TRUE; + case LayoutNavEntry::UserGroup: return TRUE; + case LayoutNavEntry::Pages: return indexedPages>0; + case LayoutNavEntry::Modules: return documentedGroups>0; + case LayoutNavEntry::Namespaces: return documentedNamespaces>0 && showNamespaces; + case LayoutNavEntry::NamespaceList: return documentedNamespaces>0 && showNamespaces; + case LayoutNavEntry::NamespaceMembers: return documentedNamespaceMembers[NMHL_All]>0; + case LayoutNavEntry::Classes: return annotatedClasses>0; + case LayoutNavEntry::ClassList: return annotatedClasses>0; + case LayoutNavEntry::ClassIndex: return annotatedClasses>0; + case LayoutNavEntry::ClassHierarchy: return hierarchyClasses>0; + case LayoutNavEntry::ClassMembers: return documentedClassMembers[CMHL_All]>0; + case LayoutNavEntry::Files: return documentedHtmlFiles>0 && showFiles; + case LayoutNavEntry::FileList: return documentedHtmlFiles>0 && showFiles; + case LayoutNavEntry::FileGlobals: return documentedFileMembers[FMHL_All]>0; + case LayoutNavEntry::Examples: return Doxygen::exampleSDict->count()>0; + case LayoutNavEntry::Interfaces: return annotatedInterfaces>0; + case LayoutNavEntry::InterfaceList: return annotatedInterfaces>0; + case LayoutNavEntry::InterfaceIndex: return annotatedInterfaces>0; + case LayoutNavEntry::InterfaceHierarchy: return hierarchyInterfaces>0; + case LayoutNavEntry::Structs: return annotatedStructs>0; + case LayoutNavEntry::StructList: return annotatedStructs>0; + case LayoutNavEntry::StructIndex: return annotatedStructs>0; + case LayoutNavEntry::Exceptions: return annotatedExceptions>0; + case LayoutNavEntry::ExceptionList: return annotatedExceptions>0; + case LayoutNavEntry::ExceptionIndex: return annotatedExceptions>0; + case LayoutNavEntry::ExceptionHierarchy: return hierarchyExceptions>0; case LayoutNavEntry::None: // should never happen, means not properly initialized assert(kind != LayoutNavEntry::None); return FALSE; diff --git a/src/index.cpp b/src/index.cpp index ff3ceb9..8ce48db 100644 --- a/src/index.cpp +++ b/src/index.cpp @@ -1694,7 +1694,7 @@ static void writeNamespaceTree(NamespaceSDict *nsDict,FTVHelp *ftv, writeNamespaceTree(nd->getNamespaceSDict(),ftv,FALSE,showClasses,addToIndex,ct); if (showClasses) { - ClassSDict *d; + ClassSDict *d = nd->getClassSDict(); if (sliceOpt) { if (ct == ClassDef::Interface) @@ -1709,14 +1709,6 @@ static void writeNamespaceTree(NamespaceSDict *nsDict,FTVHelp *ftv, { d = nd->getExceptionSDict(); } - else - { - d = nd->getClassSDict(); - } - } - else - { - d = nd->getClassSDict(); } writeClassTree(d,ftv,addToIndex,FALSE,ct); } @@ -5153,7 +5145,6 @@ static bool quickLinkVisible(LayoutNavEntry::Kind kind) case LayoutNavEntry::Files: return documentedHtmlFiles>0 && showFiles; case LayoutNavEntry::FileList: return documentedHtmlFiles>0 && showFiles; case LayoutNavEntry::FileGlobals: return documentedFileMembers[FMHL_All]>0; - //case LayoutNavEntry::Dirs: return documentedDirs>0; case LayoutNavEntry::Examples: return Doxygen::exampleSDict->count()>0; case LayoutNavEntry::None: // should never happen, means not properly initialized assert(kind != LayoutNavEntry::None); diff --git a/src/index.h b/src/index.h index 63dd494..f3e0241 100644 --- a/src/index.h +++ b/src/index.h @@ -272,7 +272,12 @@ void writeIndexHierarchy(OutputList &ol); void countDataStructures(); extern int annotatedClasses; +extern int annotatedInterfaces; +extern int annotatedStructs; +extern int annotatedExceptions; extern int hierarchyClasses; +extern int hierarchyInterfaces; +extern int hierarchyExceptions; extern int documentedFiles; extern int documentedGroups; extern int documentedNamespaces; diff --git a/src/layout.h b/src/layout.h index a23fd2f..b25aa4e 100644 --- a/src/layout.h +++ b/src/layout.h @@ -146,7 +146,6 @@ struct LayoutNavEntry Files, FileList, FileGlobals, - //Dirs, Examples, User, UserGroup diff --git a/src/namespacedef.cpp b/src/namespacedef.cpp index 520b0ca..bc8bb47 100644 --- a/src/namespacedef.cpp +++ b/src/namespacedef.cpp @@ -170,28 +170,34 @@ void NamespaceDef::addInnerCompound(Definition *d) void NamespaceDef::insertClass(ClassDef *cd) { - ClassSDict *d; + ClassSDict *d = classSDict; if (Config_getBool(OPTIMIZE_OUTPUT_SLICE)) { - if (cd->isInterface()) + if (cd->compoundType()==ClassDef::Interface) + { d = interfaceSDict; - else if (cd->isStruct()) + } + else if (cd->compoundType()==ClassDef::Struct) + { d = structSDict; - else if (cd->isException()) + } + else if (cd->compoundType()==ClassDef::Exception) + { d = exceptionSDict; - else - d = classSDict; + } } - else - d = classSDict; if (d->find(cd->name())==0) { if (Config_getBool(SORT_BRIEF_DOCS)) + { d->inSort(cd->name(),cd); + } else + { d->append(cd->name(),cd); + } } } diff --git a/src/perlmodgen.cpp b/src/perlmodgen.cpp index bd52810..044efff 100644 --- a/src/perlmodgen.cpp +++ b/src/perlmodgen.cpp @@ -1577,21 +1577,22 @@ void PerlModGenerator::generatePerlModForMember(MemberDef *md,Definition *) bool isFunc=FALSE; switch (md->memberType()) { - case MemberType_Define: memType="define"; break; - case MemberType_EnumValue: memType="enumvalue"; break; - case MemberType_Property: memType="property"; break; - case MemberType_Variable: memType="variable"; break; - case MemberType_Typedef: memType="typedef"; break; - case MemberType_Enumeration: memType="enum"; break; - case MemberType_Function: memType="function"; isFunc=TRUE; break; - case MemberType_Signal: memType="signal"; isFunc=TRUE; break; - //case MemberType_Prototype: memType="prototype"; isFunc=TRUE; break; - case MemberType_Friend: memType="friend"; isFunc=TRUE; break; - case MemberType_DCOP: memType="dcop"; isFunc=TRUE; break; - case MemberType_Slot: memType="slot"; isFunc=TRUE; break; - case MemberType_Event: memType="event"; break; - case MemberType_Interface: memType="interface"; break; - case MemberType_Service: memType="service"; break; + case MemberType_Define: memType="define"; break; + case MemberType_EnumValue: memType="enumvalue"; break; + case MemberType_Property: memType="property"; break; + case MemberType_Variable: memType="variable"; break; + case MemberType_Typedef: memType="typedef"; break; + case MemberType_Enumeration: memType="enum"; break; + case MemberType_Function: memType="function"; isFunc=TRUE; break; + case MemberType_Signal: memType="signal"; isFunc=TRUE; break; + case MemberType_Friend: memType="friend"; isFunc=TRUE; break; + case MemberType_DCOP: memType="dcop"; isFunc=TRUE; break; + case MemberType_Slot: memType="slot"; isFunc=TRUE; break; + case MemberType_Event: memType="event"; break; + case MemberType_Interface: memType="interface"; break; + case MemberType_Service: memType="service"; break; + case MemberType_Sequence: memType="sequence"; break; + case MemberType_Dictionary: memType="dictionary"; break; } m_output.openHash() diff --git a/src/scanner.l b/src/scanner.l index 1642fec..a0b4e83 100644 --- a/src/scanner.l +++ b/src/scanner.l @@ -6414,64 +6414,64 @@ OPERATOR "operator"{B}*({ARITHOP}|{ASSIGNOP}|{LOGICOP}|{BITOP}) /* ---- Slice-specific rules ------ */ -{SCOPENAME} { - if (current->spec&Entry::Local) - { - current->type = "local "; - } - current->type += "sequence<"; - current->type += yytext; - current->type += ">"; +{SCOPENAME} { + if (current->spec&Entry::Local) + { + current->type = "local "; + } + current->type += "sequence<"; + current->type += yytext; + current->type += ">"; } {BN}*">"{BN}* { - lineCount(); - BEGIN(SliceSequenceName); + lineCount(); + BEGIN(SliceSequenceName); } {ID}{BN}* { - lineCount(); - current->name = yytext ; - current->name = current->name.stripWhiteSpace(); + lineCount(); + current->name = yytext ; + current->name = current->name.stripWhiteSpace(); } ";" { - current->section = Entry::VARIABLE_SEC; - current_root->addSubEntry(current); - current = new Entry; - initEntry(); - BEGIN(FindMembers); + current->section = Entry::VARIABLE_SEC; + current_root->addSubEntry(current); + current = new Entry; + initEntry(); + BEGIN(FindMembers); } {SCOPENAME}{BN}*","{BN}*{SCOPENAME} { - lineCount(); - if (current->spec&Entry::Local) - { - current->type = "local "; - } - current->type += "dictionary<"; - current->type += yytext; - current->type += ">"; - current->type = current->type.simplifyWhiteSpace(); + lineCount(); + if (current->spec&Entry::Local) + { + current->type = "local "; + } + current->type += "dictionary<"; + current->type += yytext; + current->type += ">"; + current->type = current->type.simplifyWhiteSpace(); } {BN}*">"{BN}* { - lineCount(); - BEGIN(SliceDictionaryName); + lineCount(); + BEGIN(SliceDictionaryName); } {ID}{BN}* { - lineCount(); - current->name = yytext ; - current->name = current->name.stripWhiteSpace(); + lineCount(); + current->name = yytext ; + current->name = current->name.stripWhiteSpace(); } ";" { - current->section = Entry::VARIABLE_SEC; - current_root->addSubEntry(current); - current = new Entry; - initEntry(); - BEGIN(FindMembers); + current->section = Entry::VARIABLE_SEC; + current_root->addSubEntry(current); + current = new Entry; + initEntry(); + BEGIN(FindMembers); } /**********************************************************************************/ diff --git a/src/searchindex.cpp b/src/searchindex.cpp index 74aa138..e0d4acc 100644 --- a/src/searchindex.cpp +++ b/src/searchindex.cpp @@ -795,24 +795,24 @@ void createJavascriptSearchIndex() g_searchIndexInfo[SEARCH_INDEX_ALL].symbolList.append(letter,cd); if (sliceOpt) { - if (cd->isInterface()) + if (cd->compoundType()==ClassDef::Interface) { g_searchIndexInfo[SEARCH_INDEX_INTERFACES].symbolList.append(letter,cd); } - else if (cd->isStruct()) + else if (cd->compoundType()==ClassDef::Struct) { g_searchIndexInfo[SEARCH_INDEX_STRUCTS].symbolList.append(letter,cd); } - else if (cd->isException()) + else if (cd->compoundType()==ClassDef::Exception) { g_searchIndexInfo[SEARCH_INDEX_EXCEPTIONS].symbolList.append(letter,cd); } - else + else // cd->compoundType()==ClassDef::Class { g_searchIndexInfo[SEARCH_INDEX_CLASSES].symbolList.append(letter,cd); } } - else + else // non slice optimisation: group all types under classes { g_searchIndexInfo[SEARCH_INDEX_CLASSES].symbolList.append(letter,cd); } diff --git a/src/types.h b/src/types.h index 78bc1e7..4d305b6 100644 --- a/src/types.h +++ b/src/types.h @@ -197,16 +197,16 @@ enum MemberListType MemberListType_decSequenceMembers = 74 + MemberListType_declarationLists, MemberListType_docSequenceMembers = 75 + MemberListType_documentationLists, MemberListType_decDictionaryMembers = 76 + MemberListType_declarationLists, - MemberListType_docDictionaryMembers = 77 + MemberListType_documentationLists, + MemberListType_docDictionaryMembers = 77 + MemberListType_documentationLists }; -enum MemberType -{ +enum MemberType +{ MemberType_Define, - MemberType_Function, - MemberType_Variable, - MemberType_Typedef, - MemberType_Enumeration, + MemberType_Function, + MemberType_Variable, + MemberType_Typedef, + MemberType_Enumeration, MemberType_EnumValue, MemberType_Signal, MemberType_Slot, @@ -217,7 +217,7 @@ enum MemberType MemberType_Interface, MemberType_Service, MemberType_Sequence, - MemberType_Dictionary, + MemberType_Dictionary }; enum FortranFormat diff --git a/src/util.cpp b/src/util.cpp index 76691d1..819903c 100644 --- a/src/util.cpp +++ b/src/util.cpp @@ -8655,7 +8655,7 @@ bool namespaceHasVisibleChild(NamespaceDef *nd,bool includeClasses,bool filterCl } if (includeClasses) { - ClassSDict *d; + ClassSDict *d = nd->getClassSDict(); if (filterClasses) { if (ct == ClassDef::Interface) @@ -8670,14 +8670,6 @@ bool namespaceHasVisibleChild(NamespaceDef *nd,bool includeClasses,bool filterCl { d = nd->getExceptionSDict(); } - else - { - d = nd->getClassSDict(); - } - } - else - { - d = nd->getClassSDict(); } if (d) @@ -8686,8 +8678,8 @@ bool namespaceHasVisibleChild(NamespaceDef *nd,bool includeClasses,bool filterCl ClassDef *cd; for (;(cd=cli.current());++cli) { - if (cd->isLinkableInProject() && cd->templateMaster()==0) - { + if (cd->isLinkableInProject() && cd->templateMaster()==0) + { return TRUE; } } -- cgit v0.12