summaryrefslogtreecommitdiffstats
path: root/Python
Commit message (Expand)AuthorAgeFilesLines
* Added sys.version object.Guido van Rossum1991-12-101-1/+5
* Use new exceptions.Guido van Rossum1991-12-103-12/+12
* Implement 'global' and new class syntax.Guido van Rossum1991-12-101-15/+92
* Added STORE_GLOBAL and DELETE_GLOBAL.Guido van Rossum1991-12-101-4/+24
* Added new exceptions.Guido van Rossum1991-12-101-4/+25
* Added shift and mask ops.Guido van Rossum1991-10-242-33/+296
* Made dir() more robust.Guido van Rossum1991-10-241-6/+57
* newclassobject() gets a third argumentGuido van Rossum1991-10-201-1/+1
* Added __members__ secret attributeGuido van Rossum1991-10-201-0/+25
* Check for EINTR and turn it into KeyboardInterruptGuido van Rossum1991-10-201-1/+6
* Comment out 'abort()' call.Guido van Rossum1991-10-201-6/+7
* Protect dir() against non-directory __dict__ attributes.Guido van Rossum1991-10-201-7/+14
* getlonglongargs --> getlonglongargGuido van Rossum1991-09-101-2/+20
* Use dict2lookup.Guido van Rossum1991-08-161-1/+1
* Use more dict2 functions./Guido van Rossum1991-08-161-4/+6
* Use dmore dict2lookup.Guido van Rossum1991-08-161-3/+6
* Changed many calls to dict stufff to dict2 variants.Guido van Rossum1991-08-161-31/+35
* Change getbuiltin interface to get the name as an object;Guido van Rossum1991-08-161-2/+2
* Support for long integersGuido van Rossum1991-07-271-0/+4
* New grammar (semicolons, continue, no multiple NEWLINES)Guido van Rossum1991-07-271-538/+577
* New syntax: semicolons, continue statement.Guido van Rossum1991-07-271-21/+123
* Support for long integersGuido van Rossum1991-07-271-14/+9
* Add interface to call a Python function (or other callable) objectGuido van Rossum1991-07-271-0/+13
* Call printobject instead of fwrite to print strings.Guido van Rossum1991-07-221-2/+2
* Added getintintintarg() (3 int args)Guido van Rossum1991-07-011-0/+15
* Check for identical types before comparing objects to see if theyGuido van Rossum1991-07-011-1/+1
* Call coerce() in arithmetic operations, to support mixed mode arithmeticGuido van Rossum1991-07-011-12/+46
* Add and use coerce() routine for mixed mode arithmeticGuido van Rossum1991-07-011-17/+76
* Generalize to macintosh.Guido van Rossum1991-06-242-6/+2
* Don't use printobject() to print a string (filename).Guido van Rossum1991-06-241-7/+10
* printobject now returns an error codeGuido van Rossum1991-06-072-6/+10
* printobject now returns an error codeGuido van Rossum1991-06-072-7/+12
* Add run_command() to implement "-c command".Guido van Rossum1991-06-071-9/+73
* Add marshalling for dictionaries.Guido van Rossum1991-06-071-1/+33
* Declare errno, for prehistoric systems.Guido van Rossum1991-06-041-0/+1
* Initial revisionGuido van Rossum1991-06-041-0/+340
* Changed and exported newcodeobject() interface, for ".pyc" files.Guido van Rossum1991-06-041-10/+9
* Added fclose to newopenfileobject() calls.Guido van Rossum1991-06-041-4/+4
* Support ".pyc" files: cached compilation results.Guido van Rossum1991-06-041-5/+72
* Removed Think C 3.0 stuff and wish list.Guido van Rossum1991-06-041-34/+1
* Remove test for unimplemented sq_repeat method (see tupleobject comments)Guido van Rossum1991-06-041-4/+0
* Fix conversion of double to long; stylistic changes.Guido van Rossum1991-06-031-3/+3
* Don't optimize <string> and <stdin> codeGuido van Rossum1991-05-141-1/+1
* Declare ticker as int; made testbool generic for all numeric typesGuido van Rossum1991-05-141-7/+5
* Defined path delimiter for MS-DOS as semicolonGuido van Rossum1991-05-051-0/+4
* Pre-define MS-DOS separatorGuido van Rossum1991-05-051-0/+4
* Added long integer support.Guido van Rossum1991-05-051-0/+4
* Renamed class methods to instance methods (which they are)Guido van Rossum1991-05-051-5/+5
* Added long() and support for longs in int() and float();Guido van Rossum1991-05-051-58/+72
* Initial revisionGuido van Rossum1991-04-161-0/+17
+OUTPUT_DIRECTORY = manual +GENERATE_LATEX = NO +GENERATE_MAN = NO +GENERATE_RTF = NO +CASE_SENSE_NAMES = NO +INPUT = manual.c +QUIET = YES +JAVADOC_AUTOBRIEF = YES +EXTRACT_PRIVATE = YES +EXTRACT_STATIC = YES +TYPEDEF_HIDES_STRUCT = YES +INLINE_SOURCES = YES +REFERENCED_BY_RELATION = YES +REFERENCES_RELATION = YES diff --git a/src/classdef.cpp b/src/classdef.cpp index cf4b4be..d30ee62 100644 --- a/src/classdef.cpp +++ b/src/classdef.cpp @@ -374,40 +374,40 @@ void ClassDef::internalInsertMember(MemberDef *md, /********************************************/ if (md->isRelated() && (extractPrivate || prot!=Private)) { - addMemberToList(MemberList::related,md); + addMemberToList(MemberList::related,md,true); } else if (md->isFriend()) { - addMemberToList(MemberList::friends,md); + addMemberToList(MemberList::friends,md,true); } else { switch (md->memberType()) { case MemberDef::Signal: // Qt specific - addMemberToList(MemberList::signals,md); + addMemberToList(MemberList::signals,md,true); break; case MemberDef::DCOP: // KDE2 specific - addMemberToList(MemberList::dcopMethods,md); + addMemberToList(MemberList::dcopMethods,md,true); break; case MemberDef::Property: - addMemberToList(MemberList::properties,md); + addMemberToList(MemberList::properties,md,true); break; case MemberDef::Event: - addMemberToList(MemberList::events,md); + addMemberToList(MemberList::events,md,true); break; case MemberDef::Slot: // Qt specific switch (prot) { case Protected: case Package: // slots in packages are not possible! - addMemberToList(MemberList::proSlots,md); + addMemberToList(MemberList::proSlots,md,true); break; case Public: - addMemberToList(MemberList::pubSlots,md); + addMemberToList(MemberList::pubSlots,md,true); break; case Private: - addMemberToList(MemberList::priSlots,md); + addMemberToList(MemberList::priSlots,md,true); break; } break; @@ -419,16 +419,16 @@ void ClassDef::internalInsertMember(MemberDef *md, switch (prot) { case Protected: - addMemberToList(MemberList::proStaticAttribs,md); + addMemberToList(MemberList::proStaticAttribs,md,true); break; case Package: - addMemberToList(MemberList::pacStaticAttribs,md); + addMemberToList(MemberList::pacStaticAttribs,md,true); break; case Public: - addMemberToList(MemberList::pubStaticAttribs,md); + addMemberToList(MemberList::pubStaticAttribs,md,true); break; case Private: - addMemberToList(MemberList::priStaticAttribs,md); + addMemberToList(MemberList::priStaticAttribs,md,true); break; } } @@ -437,16 +437,16 @@ void ClassDef::internalInsertMember(MemberDef *md, switch (prot) { case Protected: - addMemberToList(MemberList::proStaticMethods,md); + addMemberToList(MemberList::proStaticMethods,md,true); break; case Package: - addMemberToList(MemberList::pacStaticMethods,md); + addMemberToList(MemberList::pacStaticMethods,md,true); break; case Public: - addMemberToList(MemberList::pubStaticMethods,md); + addMemberToList(MemberList::pubStaticMethods,md,true); break; case Private: - addMemberToList(MemberList::priStaticMethods,md); + addMemberToList(MemberList::priStaticMethods,md,true); break; } } @@ -458,16 +458,16 @@ void ClassDef::internalInsertMember(MemberDef *md, switch (prot) { case Protected: - addMemberToList(MemberList::proAttribs,md); + addMemberToList(MemberList::proAttribs,md,true); break; case Package: - addMemberToList(MemberList::pacAttribs,md); + addMemberToList(MemberList::pacAttribs,md,true); break; case Public: - addMemberToList(MemberList::pubAttribs,md); + addMemberToList(MemberList::pubAttribs,md,true); break; case Private: - addMemberToList(MemberList::priAttribs,md); + addMemberToList(MemberList::priAttribs,md,true); break; } } @@ -476,16 +476,16 @@ void ClassDef::internalInsertMember(MemberDef *md, switch (prot) { case Protected: - addMemberToList(MemberList::proTypes,md); + addMemberToList(MemberList::proTypes,md,true); break; case Package: - addMemberToList(MemberList::pacTypes,md); + addMemberToList(MemberList::pacTypes,md,true); break; case Public: - addMemberToList(MemberList::pubTypes,md); + addMemberToList(MemberList::pubTypes,md,true); break; case Private: - addMemberToList(MemberList::priTypes,md); + addMemberToList(MemberList::priTypes,md,true); break; } } @@ -494,16 +494,16 @@ void ClassDef::internalInsertMember(MemberDef *md, switch (prot) { case Protected: - addMemberToList(MemberList::proMethods,md); + addMemberToList(MemberList::proMethods,md,true); break; case Package: - addMemberToList(MemberList::pacMethods,md); + addMemberToList(MemberList::pacMethods,md,true); break; case Public: - addMemberToList(MemberList::pubMethods,md); + addMemberToList(MemberList::pubMethods,md,true); break; case Private: - addMemberToList(MemberList::priMethods,md); + addMemberToList(MemberList::priMethods,md,true); break; } } @@ -517,21 +517,21 @@ void ClassDef::internalInsertMember(MemberDef *md, /*******************************************************/ if ((md->isRelated() && (extractPrivate || prot!=Private)) || md->isFriend()) { - addMemberToList(MemberList::relatedMembers,md); + addMemberToList(MemberList::relatedMembers,md,false); } else { switch (md->memberType()) { case MemberDef::Property: - addMemberToList(MemberList::propertyMembers,md); + addMemberToList(MemberList::propertyMembers,md,false); break; case MemberDef::Event: - addMemberToList(MemberList::eventMembers,md); + addMemberToList(MemberList::eventMembers,md,false); break; case MemberDef::Signal: // fall through case MemberDef::DCOP: - addMemberToList(MemberList::functionMembers,md); + addMemberToList(MemberList::functionMembers,md,false); break; case MemberDef::Slot: switch (prot) @@ -539,12 +539,12 @@ void ClassDef::internalInsertMember(MemberDef *md, case Protected: case Package: case Public: - addMemberToList(MemberList::functionMembers,md); + addMemberToList(MemberList::functionMembers,md,false); break; case Private: if (extractPrivate) { - addMemberToList(MemberList::functionMembers,md); + addMemberToList(MemberList::functionMembers,md,false); } break; } @@ -555,13 +555,13 @@ void ClassDef::internalInsertMember(MemberDef *md, switch (md->memberType()) { case MemberDef::Typedef: - addMemberToList(MemberList::typedefMembers,md); + addMemberToList(MemberList::typedefMembers,md,false); break; case MemberDef::Enumeration: - addMemberToList(MemberList::enumMembers,md); + addMemberToList(MemberList::enumMembers,md,false); break; case MemberDef::EnumValue: - addMemberToList(MemberList::enumValMembers,md); + addMemberToList(MemberList::enumValMembers,md,false); break; case MemberDef::Function: if (md->isConstructor() || md->isDestructor()) @@ -571,11 +571,11 @@ void ClassDef::internalInsertMember(MemberDef *md, } else { - addMemberToList(MemberList::functionMembers,md); + addMemberToList(MemberList::functionMembers,md,false); } break; case MemberDef::Variable: - addMemberToList(MemberList::variableMembers,md); + addMemberToList(MemberList::variableMembers,md,false); break; default: err("Unexpected member type %d found!\n",md->memberType()); @@ -3168,11 +3168,14 @@ MemberList *ClassDef::getMemberList(MemberList::ListType lt) return 0; } -void ClassDef::addMemberToList(MemberList::ListType lt,MemberDef *md) +void ClassDef::addMemberToList(MemberList::ListType lt,MemberDef *md,bool isBrief) { static bool sortBriefDocs = Config_getBool("SORT_BRIEF_DOCS"); + static bool sortMemberDocs = Config_getBool("SORT_MEMBER_DOCS"); MemberList *ml = createMemberList(lt); - if (sortBriefDocs) + if (( isBrief && sortBriefDocs ) || + (!isBrief && sortMemberDocs) + ) ml->inSort(md); else ml->append(md); diff --git a/src/classdef.h b/src/classdef.h index 69e7368..8659449 100644 --- a/src/classdef.h +++ b/src/classdef.h @@ -327,7 +327,7 @@ class ClassDef : public Definition private: void internalInsertMember(MemberDef *md,Protection prot,bool addToAllList); QCString getMemberListFileName() const; - void addMemberToList(MemberList::ListType lt,MemberDef *md); + void addMemberToList(MemberList::ListType lt,MemberDef *md,bool isBrief); MemberList *createMemberList(MemberList::ListType lt); void writeMemberDeclarations(OutputList &ol,MemberList::ListType lt,const QCString &title, const char *subTitle=0); diff --git a/src/commentscan.l b/src/commentscan.l index cfbc050..8351407 100644 --- a/src/commentscan.l +++ b/src/commentscan.l @@ -79,6 +79,7 @@ static bool handleDeprecated(const QCString &); static bool handleXRefItem(const QCString &); static bool handleRelated(const QCString &); static bool handleRelatedAlso(const QCString &); +static bool handleMemberOf(const QCString &); static bool handleRefItem(const QCString &); static bool handleSection(const QCString &); static bool handleAnchor(const QCString &); @@ -106,6 +107,7 @@ static bool handleProtectedSection(const QCString &); static bool handlePublic(const QCString &s); static bool handlePublicSection(const QCString &s); static bool handleInherit(const QCString &); +static bool handleExtends(const QCString &); typedef bool (*DocCmdFunc)(const QCString &name); @@ -197,6 +199,9 @@ static DocCmdMap docCmdMap[] = { "public", &handlePublic, FALSE }, { "publicsection", &handlePublicSection, FALSE }, { "inherit", &handleInherit, TRUE }, + { "extends", &handleExtends, TRUE }, + { "implements", &handleExtends, TRUE }, + { "memberof", &handleMemberOf, TRUE }, { "arg", 0, TRUE }, { "attention", 0, TRUE }, { "author", 0, TRUE }, @@ -840,6 +845,7 @@ RCSTAG "$"{ID}":"[^\n$]+"$" %x FnParam %x OverloadParam %x InheritParam +%x ExtendsParam %x ReadFormulaShort %x ReadFormulaLong %x AnchorLabel @@ -920,7 +926,7 @@ RCSTAG "$"{ID}":"[^\n$]+"$" { if (cmdPtr->endsBrief) { - briefEndsAtDot=FALSE; + briefEndsAtDot=FALSE; // this command forces the end of brief description setOutput(OutputDoc); } @@ -1366,7 +1372,7 @@ RCSTAG "$"{ID}":"[^\n$]+"$" } - /* --------- handle arguments of the relates(also) command ------------ */ + /* ----- handle arguments of the relates(also)/memberof command ------- */ ({ID}("::"|"."))*{ID} { // argument current->relates = yytext; @@ -1382,7 +1388,7 @@ RCSTAG "$"{ID}":"[^\n$]+"$" } {DOCNL} { // missing argument warn(yyFileName,yyLineNr, - "Warning: Missing argument of \\relates command" + "Warning: Missing argument of \\relates or \\memberof command" ); if (*yytext=='\n') yyLineNr++; addOutput('\n'); @@ -1800,6 +1806,25 @@ RCSTAG "$"{ID}":"[^\n$]+"$" BEGIN(Comment); } + /* ----- handle argument of extends and implements commands ------- */ + +({ID}("::"|"."))*{ID} { // found argument + current->extends->append( + new BaseInfo(removeRedundantWhiteSpace(yytext),Public,Normal) + ); + BEGIN( Comment ); + } +{DOCNL} { // missing argument + warn(yyFileName,yyLineNr, + "Warning: \\extends or \\implements command has no argument" + ); + if (*yytext=='\n') yyLineNr++; + addOutput('\n'); + BEGIN( Comment ); + } +. { // ignore other stuff + } + /* ----- handle language specific sections ------- */ [\\@]"~"[a-zA-Z]* { /* language switch */ @@ -2060,7 +2085,14 @@ static bool handleRelated(const QCString &) static bool handleRelatedAlso(const QCString &) { - current->relatesDup = TRUE; + current->relatesType = Duplicate; + BEGIN(RelatesParam1); + return FALSE; +} + +static bool handleMemberOf(const QCString &) +{ + current->relatesType = MemberOf; BEGIN(RelatesParam1); return FALSE; } @@ -2257,53 +2289,52 @@ static bool handlePure(const QCString &) static bool handlePrivate(const QCString &) { - endBrief(); - current->protection = Private; + current->protection = Private; return FALSE; } static bool handlePrivateSection(const QCString &) { - endBrief(); - current->protection = protection = Private; + current->protection = protection = Private; return FALSE; } static bool handleProtected(const QCString &) { - endBrief(); - current->protection = Protected; + current->protection = Protected; return FALSE; } static bool handleProtectedSection(const QCString &) { - endBrief(); current->protection = protection = Protected ; return FALSE; } static bool handlePublic(const QCString &) { - endBrief(); current->protection = Public; return FALSE; } static bool handlePublicSection(const QCString &) { - endBrief(); - current->protection = protection = Public; + current->protection = protection = Public; return FALSE; } static bool handleInherit(const QCString &) { - endBrief(); BEGIN(InheritParam); return FALSE; } +static bool handleExtends(const QCString &) +{ + BEGIN(ExtendsParam); + return FALSE; +} + //---------------------------------------------------------------------------- static void checkFormula() diff --git a/src/config.l b/src/config.l index ee1ebab..9fffc0b 100644 --- a/src/config.l +++ b/src/config.l @@ -1779,6 +1779,24 @@ void Config::create() "types are typedef'ed and only the typedef is referenced, never the tag name.\n", FALSE ); + ci = addInt( + "SYMBOL_CACHE_SIZE", + "The SYMBOL_CACHE_SIZE determines the size of the internal cache use to \n" + "determine which symbols to keep in memory and which to flush to disk.\n" + "When the cache is full, less often used symbols will be written to disk.\n" + "For small to medium size projects (<1000 input files) the default value is \n" + "probably good enough. For larger projects a too small cache size can cause \n" + "doxygen to be busy swapping symbols to and from disk most of the time \n" + "causing a significant performance penality. \n" + "If the system has enough physical memory increasing the cache will improve the \n" + "performance by keeping more symbols in memory. Note that the value works on \n" + "a logarithmic scale so increasing the size by one will rougly double the \n" + "memory usage. The cache size is given by this formula: \n" + "2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0, \n" + "corresponding to a cache size of 2^16 = 65536 symbols\n", + 0,9,0 + ); + //----------------------------------------------------------------------------------------------- addInfo("Build","Build related configuration options"); //----------------------------------------------------------------------------------------------- @@ -2410,6 +2428,31 @@ void Config::create() ); cs->setWidgetType(ConfigString::File); cs->addDependency("GENERATE_HTML"); + cs = addString( + "QTHELP_FILE", + "If the GENERATE_HTMLHELP tag is set to YES, the QTHELP_FILE tag can \n" + "be used to specify the file name of the resulting .(qch|qhp) file. \n" + "You can add a path in front of the file if the result should not be \n" + "written to the html output directory. \n" + ); + cs->setWidgetType(ConfigString::File); + cs->addDependency("GENERATE_HTML"); + cs = addString( + "QTHELP_CONFIG", + "If DOXYGEN2QTHELP_LOC is set, QTHELP_CONFIG must specify the file name \n" + "of a config file to pass to doxygen2qthelp. \n" + ); + cs->setWidgetType(ConfigString::File); + cs->addDependency("GENERATE_HTML"); + cs = addString( + "DOXYGEN2QTHELP_LOC", + "If the GENERATE_HTMLHELP tag is set to YES, the DOXYGEN2QTHELP_LOC tag \n" + "can be used to specify the location (absolute path including file name) of \n" + "the doxygen2qthelp tool. If non-empty doxygen will try to run doxygen2qthelp \n" + "on the generated index.hhp.\n" + ); + cs->setWidgetType(ConfigString::File); + cs->addDependency("GENERATE_HTML"); cb = addBool( "GENERATE_CHI", "If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag \n" diff --git a/src/doxygen.cpp b/src/doxygen.cpp index c2cd624..826b86d 100644 --- a/src/doxygen.cpp +++ b/src/doxygen.cpp @@ -1794,7 +1794,7 @@ static void findUsingDeclImports(EntryNav *rootNav) root->fileName,root->startLine, md->typeString(),memName,md->argsString(), md->excpString(),root->protection,root->virt, - md->isStatic(),FALSE,md->memberType(), + md->isStatic(),Member,md->memberType(), templAl.pointer(),al.pointer() ); } @@ -1880,7 +1880,7 @@ static MemberDef *addVariableToClass( bool fromAnnScope, MemberDef *fromAnnMemb, Protection prot, - bool related) + Relationship related) { Entry *root = rootNav->entry(); @@ -2145,7 +2145,7 @@ static MemberDef *addVariableToFile( MemberDef *md=new MemberDef( root->fileName,root->startLine, root->type,name,root->args,0, - Public, Normal,root->stat,FALSE, + Public, Normal,root->stat,Member, mtype,0,0); md->setTagInfo(rootNav->tagInfo()); md->setDocumentation(root->doc,root->docFile,root->docLine); @@ -2427,6 +2427,7 @@ static void addVariable(EntryNav *rootNav,int isFuncPtr=-1) QCString type=root->type.stripWhiteSpace(); ClassDef *cd=0; bool isRelated=FALSE; + bool isMemberOf=FALSE; QCString classScope=stripAnonymousNamespaceScope(scope); classScope=stripTemplateSpecifiersFromScope(classScope,FALSE); @@ -2447,7 +2448,7 @@ static void addVariable(EntryNav *rootNav,int isFuncPtr=-1) FALSE, // from Anonymous scope 0, // anonymous member Public, // protection - FALSE // related to a class + Member // related to a class ); } } @@ -2476,6 +2477,7 @@ static void addVariable(EntryNav *rootNav,int isFuncPtr=-1) if (!root->relates.isEmpty()) // related variable { isRelated=TRUE; + isMemberOf=(root->relatesType == MemberOf); if (getClass(root->relates)==0 && !scope.isEmpty()) scope=mergeScopes(scope,root->relates); else @@ -2517,7 +2519,7 @@ static void addVariable(EntryNav *rootNav,int isFuncPtr=-1) TRUE, // from anonymous scope 0, // from anonymous member root->protection, - isRelated + isMemberOf ? Foreign : isRelated ? Related : Member ); added=TRUE; } @@ -2541,7 +2543,7 @@ static void addVariable(EntryNav *rootNav,int isFuncPtr=-1) FALSE, // from anonymous scope md, // from anonymous member root->protection, - isRelated); + isMemberOf ? Foreign : isRelated ? Related : Member); } else if (!name.isEmpty()) // global variable { @@ -2662,7 +2664,10 @@ static void addMethodToClass(EntryNav *rootNav,ClassDef *cd, MemberDef *md=new MemberDef( root->fileName,root->startLine, root->type,name,root->args,root->exception, - root->protection,root->virt,root->stat,!root->relates.isEmpty(), + root->protection,root->virt, + root->stat && root->relatesType != MemberOf, + root->relates.isEmpty() ? Member : + root->relatesType == MemberOf ? Foreign : Related, mtype,root->tArgLists ? root->tArgLists->last() : 0,root->argList); md->setTagInfo(rootNav->tagInfo()); md->setMemberClass(cd); @@ -2787,13 +2792,13 @@ static void buildFunctionList(EntryNav *rootNav) Debug::print(Debug::Functions,0, "FUNCTION_SEC:\n" - " `%s' `%s'::`%s' `%s' relates=`%s' relatesDup=`%d' file=`%s' line=`%d' bodyLine=`%d' #tArgLists=%d mGrpId=%d spec=%d proto=%d docFile=%s\n", + " `%s' `%s'::`%s' `%s' relates=`%s' relatesType=`%d' file=`%s' line=`%d' bodyLine=`%d' #tArgLists=%d mGrpId=%d spec=%d proto=%d docFile=%s\n", root->type.data(), rootNav->parent()->name().data(), root->name.data(), root->args.data(), root->relates.data(), - root->relatesDup, + root->relatesType, root->fileName.data(), root->startLine, root->bodyLine, @@ -2870,7 +2875,7 @@ static void buildFunctionList(EntryNav *rootNav) || rootNav->parent()->section()==Entry::OBJCIMPL_SEC ) && !isMember && - (root->relates.isEmpty() || root->relatesDup) && + (root->relates.isEmpty() || root->relatesType == Duplicate) && root->type.left(7)!="extern " && root->type.left(8)!="typedef " ) // no member => unrelated function @@ -3013,7 +3018,7 @@ static void buildFunctionList(EntryNav *rootNav) md=new MemberDef( root->fileName,root->startLine, root->type,name,root->args,root->exception, - root->protection,root->virt,root->stat,FALSE, + root->protection,root->virt,root->stat,Member, MemberDef::Function,tArgList,root->argList); md->setTagInfo(rootNav->tagInfo()); @@ -3127,8 +3132,8 @@ static void buildFunctionList(EntryNav *rootNav) Doxygen::functionNameSDict->append(name,mn); } addMemberToGroups(root,md); - if (!root->relatesDup) // if this is a relatesalso command, allow find - // Member to pick it up + if (root->relatesType == Simple) // if this is a relatesalso command, + // allow find Member to pick it up { rootNav->changeSection(Entry::EMPTY_SEC); // Otherwise we have finished // with this entry. @@ -3551,7 +3556,7 @@ static void transferRelatedFunctionDocumentation() LockingPtr mdAl = md->argumentList(); LockingPtr rmdAl = rmd->argumentList(); //printf(" Member found: related=`%d'\n",rmd->isRelated()); - if (rmd->isRelated() && // related function + if ((rmd->isRelated() || rmd->isForeign()) && // related function matchArguments2( md->getOuterScope(), md->getFileDef(), mdAl.pointer(), rmd->getOuterScope(),rmd->getFileDef(),rmdAl.pointer(), TRUE @@ -3561,6 +3566,8 @@ static void transferRelatedFunctionDocumentation() //printf(" Found related member `%s'\n",md->name().data()); if (rmd->relatedAlso()) md->setRelatedAlso(rmd->relatedAlso()); + else if (rmd->isForeign()) + md->makeForeign(); else md->makeRelated(); } @@ -4928,7 +4935,7 @@ static bool findGlobalMember(EntryNav *rootNav, } } } - if (!found && !root->relatesDup) // no match + if (!found && root->relatesType != Duplicate) // no match { QCString fullFuncDecl=decl; if (root->argList) fullFuncDecl+=argListToString(root->argList,TRUE); @@ -5114,6 +5121,7 @@ static void findMember(EntryNav *rootNav, QCString exceptions; QCString funcSpec; bool isRelated=FALSE; + bool isMemberOf=FALSE; bool isFriend=FALSE; bool done; do @@ -5195,6 +5203,7 @@ static void findMember(EntryNav *rootNav, if (!root->relates.isEmpty()) { // related member, prefix user specified scope isRelated=TRUE; + isMemberOf=(root->relatesType == MemberOf); if (getClass(root->relates)==0 && !scopeName.isEmpty()) scopeName= mergeScopes(scopeName,root->relates); else @@ -5375,11 +5384,12 @@ static void findMember(EntryNav *rootNav, " related=`%s'\n" " exceptions=`%s'\n" " isRelated=%d\n" + " isMemberOf=%d\n" " isFriend=%d\n" " isFunc=%d\n\n", namespaceName.data(),className.data(), funcType.data(),funcSpec.data(),funcName.data(),funcArgs.data(),funcTempList.data(), - funcDecl.data(),root->relates.data(),exceptions.data(),isRelated,isFriend, + funcDecl.data(),root->relates.data(),exceptions.data(),isRelated,isMemberOf,isFriend, isFunc ); @@ -5621,7 +5631,7 @@ static void findMember(EntryNav *rootNav, MemberDef *md=new MemberDef( root->fileName,root->startLine, funcType,funcName,funcArgs,exceptions, - root->protection,root->virt,root->stat,FALSE, + root->protection,root->virt,root->stat,Member, mtype,tArgList,root->argList); //printf("new specialized member %s args=`%s'\n",md->name().data(),funcArgs.data()); md->setTagInfo(rootNav->tagInfo()); @@ -5685,7 +5695,7 @@ static void findMember(EntryNav *rootNav, MemberDef *md=new MemberDef( root->fileName,root->startLine, funcType,funcName,funcArgs,exceptions, - root->protection,root->virt,root->stat,TRUE, + root->protection,root->virt,root->stat,Related, mtype,tArgList,root->argList); md->setTagInfo(rootNav->tagInfo()); md->setTypeConstraints(root->typeConstr); @@ -5814,7 +5824,9 @@ static void findMember(EntryNav *rootNav, MemberDef *md=new MemberDef( root->fileName,root->startLine, funcType,funcName,funcArgs,exceptions, - root->protection,root->virt,root->stat,TRUE, + root->protection,root->virt, + root->stat && !isMemberOf, + isMemberOf ? Foreign : isRelated ? Related : Member, mtype, (root->tArgLists ? root->tArgLists->last() : 0), funcArgs.isEmpty() ? 0 : root->argList); @@ -5897,7 +5909,7 @@ static void findMember(EntryNav *rootNav, cd->insertMember(md); cd->insertUsedFile(root->fileName); md->setRefItems(root->sli); - if (root->relatesDup) md->setRelatedAlso(cd); + if (root->relatesType == Duplicate) md->setRelatedAlso(cd); addMemberToGroups(root,md); //printf("Adding member=%s\n",md->name().data()); if (newMemberName) @@ -5907,7 +5919,7 @@ static void findMember(EntryNav *rootNav, Doxygen::memberNameSDict->append(funcName,mn); } } - if (root->relatesDup) + if (root->relatesType == Duplicate) { if (!findGlobalMember(rootNav,namespaceName,funcName,funcTempList,funcArgs,funcDecl)) { @@ -5940,7 +5952,7 @@ localObjCMethod: MemberDef *md=new MemberDef( root->fileName,root->startLine, funcType,funcName,funcArgs,exceptions, - root->protection,root->virt,root->stat,FALSE, + root->protection,root->virt,root->stat,Member, MemberDef::Function,0,root->argList); md->setTagInfo(rootNav->tagInfo()); md->makeImplementationDetail(); @@ -6020,7 +6032,7 @@ static void filterMemberDocumentation(EntryNav *rootNav) //printf("rootNav->parent()->name()=%s\n",rootNav->parent()->name().data()); bool isFunc=TRUE; - if (root->relatesDup && !root->relates.isEmpty()) + if (root->relatesType == Duplicate && !root->relates.isEmpty()) { QCString tmp = root->relates; root->relates.resize(0); @@ -6205,6 +6217,7 @@ static void findEnums(EntryNav *rootNav) MemberNameSDict *mnsd=0; bool isGlobal; bool isRelated=FALSE; + bool isMemberOf=FALSE; //printf("Found enum with name `%s' relates=%s\n",root->name.data(),root->relates.data()); int i; @@ -6232,6 +6245,7 @@ static void findEnums(EntryNav *rootNav) if (!root->relates.isEmpty()) { // related member, prefix user specified scope isRelated=TRUE; + isMemberOf=(root->relatesType == MemberOf); if (getClass(root->relates)==0 && !scope.isEmpty()) scope=mergeScopes(scope,root->relates); else @@ -6264,7 +6278,9 @@ static void findEnums(EntryNav *rootNav) md = new MemberDef( root->fileName,root->startLine, 0,name,0,0, - root->protection,Normal,FALSE,isRelated,MemberDef::Enumeration, + root->protection,Normal,FALSE, + isMemberOf ? Foreign : isRelated ? Related : Member, + MemberDef::Enumeration, 0,0); md->setTagInfo(rootNav->tagInfo()); if (!isGlobal) md->setMemberClass(cd); else md->setFileDef(fd); @@ -7463,7 +7479,7 @@ static void findDefineDocumentation(EntryNav *rootNav) { MemberDef *md=new MemberDef("",1, "#define",root->name,root->args,0, - Public,Normal,FALSE,FALSE,MemberDef::Define,0,0); + Public,Normal,FALSE,Member,MemberDef::Define,0,0); md->setTagInfo(rootNav->tagInfo()); //printf("Searching for `%s' fd=%p\n",filePathName.data(),fd); md->setFileDef(rootNav->parent()->fileDef()); @@ -8925,10 +8941,9 @@ extern void commentScanTest(); void initDoxygen() { -#if QT_VERSION >= 200 setlocale(LC_ALL,""); + setlocale(LC_CTYPE,"C"); // to get isspace(0xA0)==0, needed for UTF-8 setlocale(LC_NUMERIC,"C"); -#endif //Doxygen::symbolMap->setAutoDelete(TRUE); @@ -9400,8 +9415,11 @@ void parseInput() **************************************************************************/ Doxygen::symbolMap = new QDict(1000); - Doxygen::symbolCache = new ObjCache(16); // 16 -> room for 65536 elements, - // ~2.0 MByte "overhead" + int cacheSize = Config_getInt("SYMBOL_CACHE_SIZE"); + if (cacheSize<0) cacheSize=0; + if (cacheSize>9) cacheSize=9; + Doxygen::symbolCache = new ObjCache(16+cacheSize); // 16 -> room for 65536 elements, + // ~2.0 MByte "overhead" Doxygen::symbolStorage = new Store; #ifdef HAS_SIGNALS @@ -10196,6 +10214,24 @@ void generateOutput() } QDir::setCurrent(oldDir); } + if ( Config_getBool("GENERATE_HTMLHELP") && + !Config_getString("DOXYGEN2QTHELP_LOC").isEmpty() && + !Config_getString("QTHELP_CONFIG").isEmpty()) + { + msg("Running doxygen2qthelp...\n"); + const QCString qtHelpFile = Config_getString("QTHELP_FILE"); + const QCString args = QCString().sprintf("--config=%s index.hhp%s%s", + Config_getString("QTHELP_CONFIG").data(), + (qtHelpFile.isEmpty() ? "" : " "), (qtHelpFile.isEmpty() ? "" : qtHelpFile.data())); + + const QString oldDir = QDir::currentDirPath(); + QDir::setCurrent(Config_getString("HTML_OUTPUT")); + if (portable_system(Config_getString("DOXYGEN2QTHELP_LOC"), args.data(), FALSE)) + { + err("Error: failed to run doxygen2qthelp on index.hhp\n"); + } + QDir::setCurrent(oldDir); + } if (Config_getBool("SEARCHENGINE")) { msg("Generating search index\n"); diff --git a/src/doxygen.css b/src/doxygen.css index 74c22a2..c8356a2 100644 --- a/src/doxygen.css +++ b/src/doxygen.css @@ -1,363 +1,287 @@ -BODY,H1,H2,H3,H4,H5,H6,P,CENTER,TD,TH,UL,DL,DIV { - font-family: Geneva, Arial, Helvetica, sans-serif; +body, table, div, p, dl { + font-family: Lucida Grande, Verdana, Geneva, Arial, sans-serif; + font-size: 12px; } -BODY,TD { - font-size: 90%; -} -H1 { + +/* @group Heading Levels */ + +h1 { text-align: center; - font-size: 160%; + font-size: 150%; } -H2 { + +h2 { font-size: 120%; } -H3 { + +h3 { font-size: 100%; } -CAPTION { - font-weight: bold + +/* @end */ + +caption { + font-weight: bold; } -DIV.qindex { - width: 100%; + +div.qindex, div.navpath, div.navtab{ background-color: #e8eef2; border: 1px solid #84b0c7; text-align: center; margin: 2px; padding: 2px; - line-height: 140%; } -DIV.navpath { + +div.qindex, div.navpath { width: 100%; - background-color: #e8eef2; - border: 1px solid #84b0c7; - text-align: center; - margin: 2px; - padding: 2px; line-height: 140%; } -DIV.navtab { - background-color: #e8eef2; - border: 1px solid #84b0c7; - text-align: center; - margin: 2px; - margin-right: 15px; - padding: 2px; + +div.navtab { + margin-right: 15px; } -TD.navtab { - font-size: 70%; + +/* @group Link Styling */ + +a { + color: #153788; + font-weight: normal; + text-decoration: none; } -A.qindex { - text-decoration: none; - font-weight: bold; - color: #1A419D; + +.contents a:visited { + color: #1b77c5; } -A.qindex:visited { - text-decoration: none; - font-weight: bold; - color: #1A419D + +a:hover { + text-decoration: underline; } -A.qindex:hover { - text-decoration: none; - background-color: #ddddff; + +a.qindex { + font-weight: bold; } -A.qindexHL { - text-decoration: none; + +a.qindexHL { font-weight: bold; background-color: #6666cc; color: #ffffff; border: 1px double #9295C2; } -A.qindexHL:hover { - text-decoration: none; - background-color: #6666cc; - color: #ffffff; -} -A.qindexHL:visited { - text-decoration: none; - background-color: #6666cc; - color: #ffffff + +a.el { + font-weight: bold; } -A.el { - text-decoration: none; - font-weight: bold + +a.elRef { } -A.elRef { - font-weight: bold + +a.code { } -A.code:link { - text-decoration: none; - font-weight: normal; - color: #0000FF + +a.codeRef { } -A.code:visited { - text-decoration: none; - font-weight: normal; - color: #0000FF + +/* @end */ + +dl.el { + margin-left: -1cm; } -A.codeRef:link { - font-weight: normal; - color: #0000FF + +.fragment { + font-family: monospace, fixed; + font-size: 105%; } -A.codeRef:visited { - font-weight: normal; - color: #0000FF + +pre.fragment { + border: 1px solid #CCCCCC; + background-color: #f5f5f5; + padding: 4px 6px; + margin: 4px 8px 4px 2px; } -A:hover { - text-decoration: none; - background-color: #f2f2ff + +div.ah { + background-color: black; + font-weight: bold; + color: #ffffff; + margin-bottom: 3px; + margin-top: 3px } -DL.el { - margin-left: -1cm + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + margin-bottom: 6px; + font-weight: bold; } -.fragment { - font-family: monospace, fixed; - font-size: 95%; + +div.groupText { + margin-left: 16px; + font-style: italic; } -PRE.fragment { - border: 1px solid #CCCCCC; - background-color: #f5f5f5; - margin-top: 4px; - margin-bottom: 4px; - margin-left: 2px; - margin-right: 8px; - padding-left: 6px; - padding-right: 6px; - padding-top: 4px; - padding-bottom: 4px; -} -DIV.ah { - background-color: black; - font-weight: bold; - color: #ffffff; - margin-bottom: 3px; - margin-top: 3px -} - -DIV.groupHeader { - margin-left: 16px; - margin-top: 12px; - margin-bottom: 6px; - font-weight: bold; -} -DIV.groupText { - margin-left: 16px; - font-style: italic; - font-size: 90% -} -BODY { + +body { background: white; color: black; margin-right: 20px; margin-left: 20px; } -TD.indexkey { + +td.indexkey { background-color: #e8eef2; font-weight: bold; - padding-right : 10px; - padding-top : 2px; - padding-left : 10px; - padding-bottom : 2px; - margin-left : 0px; - margin-right : 0px; - margin-top : 2px; - margin-bottom : 2px; border: 1px solid #CCCCCC; + margin: 2px 0px 2px 0; + padding: 2px 10px; } -TD.indexvalue { + +td.indexvalue { background-color: #e8eef2; - font-style: italic; - padding-right : 10px; - padding-top : 2px; - padding-left : 10px; - padding-bottom : 2px; - margin-left : 0px; - margin-right : 0px; - margin-top : 2px; - margin-bottom : 2px; +// font-style: italic; border: 1px solid #CCCCCC; + padding: 2px 10px; + margin: 2px 0px; } -TR.memlist { - background-color: #f0f0f0; + +tr.memlist { + background-color: #f0f0f0; } -P.formulaDsp { - text-align: center; + +p.formulaDsp { + text-align: center; } -IMG.formulaDsp { + +img.formulaDsp { + } -IMG.formulaInl { - vertical-align: middle; + +img.formulaInl { + vertical-align: middle; } -SPAN.keyword { color: #008000 } -SPAN.keywordtype { color: #604020 } -SPAN.keywordflow { color: #e08000 } -SPAN.comment { color: #800000 } -SPAN.preprocessor { color: #806020 } -SPAN.stringliteral { color: #002080 } -SPAN.charliteral { color: #008080 } -SPAN.vhdldigit { color: #ff00ff } -SPAN.vhdlchar { color: #000000 } -SPAN.vhdlkeyword { color: #700070 } -SPAN.vhdllogic { color: #ff0000 } -.mdescLeft { - padding: 0px 8px 4px 8px; - font-size: 80%; - font-style: italic; - background-color: #FAFAFA; - border-top: 1px none #E0E0E0; - border-right: 1px none #E0E0E0; - border-bottom: 1px none #E0E0E0; - border-left: 1px none #E0E0E0; - margin: 0px; +/* @group Code Colorization */ + +span.keyword { + color: #008000 } -.mdescRight { - padding: 0px 8px 4px 8px; - font-size: 80%; - font-style: italic; - background-color: #FAFAFA; - border-top: 1px none #E0E0E0; - border-right: 1px none #E0E0E0; - border-bottom: 1px none #E0E0E0; - border-left: 1px none #E0E0E0; - margin: 0px; + +span.keywordtype { + color: #604020 } -.memItemLeft { - padding: 1px 0px 0px 8px; - margin: 4px; - border-top-width: 1px; - border-right-width: 1px; - border-bottom-width: 1px; - border-left-width: 1px; - border-top-color: #E0E0E0; - border-right-color: #E0E0E0; - border-bottom-color: #E0E0E0; - border-left-color: #E0E0E0; - border-top-style: solid; - border-right-style: none; - border-bottom-style: none; - border-left-style: none; - background-color: #FAFAFA; - font-size: 80%; + +span.keywordflow { + color: #e08000 } -.memItemRight { - padding: 1px 8px 0px 8px; - margin: 4px; - border-top-width: 1px; - border-right-width: 1px; - border-bottom-width: 1px; - border-left-width: 1px; - border-top-color: #E0E0E0; - border-right-color: #E0E0E0; - border-bottom-color: #E0E0E0; - border-left-color: #E0E0E0; - border-top-style: solid; - border-right-style: none; - border-bottom-style: none; - border-left-style: none; - background-color: #FAFAFA; - font-size: 80%; + +span.comment { + color: #800000 } -.memTemplItemLeft { - padding: 1px 0px 0px 8px; - margin: 4px; - border-top-width: 1px; - border-right-width: 1px; - border-bottom-width: 1px; - border-left-width: 1px; - border-top-color: #E0E0E0; - border-right-color: #E0E0E0; - border-bottom-color: #E0E0E0; - border-left-color: #E0E0E0; - border-top-style: none; - border-right-style: none; - border-bottom-style: none; - border-left-style: none; - background-color: #FAFAFA; - font-size: 80%; + +span.preprocessor { + color: #806020 } -.memTemplItemRight { - padding: 1px 8px 0px 8px; - margin: 4px; - border-top-width: 1px; - border-right-width: 1px; - border-bottom-width: 1px; - border-left-width: 1px; - border-top-color: #E0E0E0; - border-right-color: #E0E0E0; - border-bottom-color: #E0E0E0; - border-left-color: #E0E0E0; - border-top-style: none; - border-right-style: none; - border-bottom-style: none; - border-left-style: none; - background-color: #FAFAFA; - font-size: 80%; + +span.stringliteral { + color: #002080 } -.memTemplParams { - padding: 1px 0px 0px 8px; - margin: 4px; - border-top-width: 1px; - border-right-width: 1px; - border-bottom-width: 1px; - border-left-width: 1px; - border-top-color: #E0E0E0; - border-right-color: #E0E0E0; - border-bottom-color: #E0E0E0; - border-left-color: #E0E0E0; - border-top-style: solid; - border-right-style: none; - border-bottom-style: none; - border-left-style: none; - color: #606060; - background-color: #FAFAFA; - font-size: 80%; + +span.charliteral { + color: #008080 +} + +span.vhdldigit { + color: #ff00ff +} + +span.vhdlchar { + color: #000000 +} + +span.vhdlkeyword { + color: #700070 } -.search { + +span.vhdllogic { + color: #ff0000 +} + +/* @end */ + +.search { color: #003399; font-weight: bold; } -FORM.search { + +form.search { margin-bottom: 0px; margin-top: 0px; } -INPUT.search { + +input.search { font-size: 75%; color: #000080; font-weight: normal; background-color: #e8eef2; } -TD.tiny { + +td.tiny { font-size: 75%; } -a { - color: #1A41A8; -} -a:visited { - color: #2A3798; -} -.dirtab { + +.dirtab { padding: 4px; border-collapse: collapse; border: 1px solid #84b0c7; } -TH.dirtab { + +th.dirtab { background: #e8eef2; font-weight: bold; } -HR { - height: 1px; + +hr { + height: 0; border: none; - border-top: 1px solid black; + border-top: 1px solid #666; } -/* Style for detailed member documentation */ +/* @group Member Descriptions */ + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: #FAFAFA; + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: #555; +} + +.memItemLeft, .memItemRight, .memTemplParams { + border-top: 1px solid #ccc; +} + +.memTemplParams { + color: #606060; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + .memtemplate { font-size: 80%; color: #606060; font-weight: normal; margin-left: 3px; -} -.memnav { +} + +.memnav { background-color: #e8eef2; border: 1px solid #84b0c7; text-align: center; @@ -365,69 +289,154 @@ HR { margin-right: 15px; padding: 2px; } + .memitem { - padding: 4px; - background-color: #eef3f5; - border-width: 1px; - border-style: solid; - border-color: #dedeee; - -moz-border-radius: 8px 8px 8px 8px; + padding: 0; } + .memname { white-space: nowrap; font-weight: bold; } -.memdoc{ - padding-left: 10px; + +.memproto, .memdoc { + border: 1px solid #84b0c7; } + .memproto { + padding: 0; background-color: #d5e1e8; - width: 100%; - border-width: 1px; - border-style: solid; - border-color: #84b0c7; font-weight: bold; - -moz-border-radius: 8px 8px 8px 8px; + -webkit-border-top-left-radius: 8px; + -webkit-border-top-right-radius: 8px; + -moz-border-radius-topleft: 8px; + -moz-border-radius-topright: 8px; } + +.memdoc { + padding: 2px 5px; + background-color: #eef3f5; + border-top-width: 0; + -webkit-border-bottom-left-radius: 8px; + -webkit-border-bottom-right-radius: 8px; + -moz-border-radius-bottomleft: 8px; + -moz-border-radius-bottomright: 8px; +} + +.memdoc p, .memdoc dl, .memdoc ul { + margin: 6px 0; +} + .paramkey { text-align: right; } + .paramtype { white-space: nowrap; } + .paramname { color: #602020; - font-style: italic; white-space: nowrap; } -/* End Styling for detailed member documentation */ +.paramname em { + font-style: normal; +} + +/* @end */ + +/* @group Directory (tree) */ /* for the tree view */ + .ftvtree { font-family: sans-serif; - margin:0.5em; + margin: 0.5em; +} + +/* these are for tree view when used as main index */ + +.directory { + font-size: 9pt; + font-weight: bold; +} + +.directory h3 { + margin: 0px; + margin-top: 1em; + font-size: 11pt; +} + +/* +The following two styles can be used to replace the root node title +with an image of your choice. Simply uncomment the next two styles, +specify the name of your image and be sure to set 'height' to the +proper pixel height of your image. +*/ + +/* +.directory h3.swap { + height: 61px; + background-repeat: no-repeat; + background-image: url("yourimage.gif"); +} +.directory h3.swap span { + display: none; +} +*/ + +.directory > h3 { + margin-top: 0; } -.directory { - font-size: 9pt; - font-weight: bold; + +.directory p { + margin: 0px; + white-space: nowrap; +} + +.directory div { + display: none; + margin: 0px; +} + +.directory img { + vertical-align: -30%; +} + +/* these are for tree view when not used as main index */ + +.directory-alt { + font-size: 100%; + font-weight: bold; } -.directory h3 { - margin: 0px; - margin-top: 1em; - font-size: 11pt; + +.directory-alt h3 { + margin: 0px; + margin-top: 1em; + font-size: 11pt; } -.directory > h3 { - margin-top: 0; + +.directory-alt > h3 { + margin-top: 0; } -.directory p { - margin: 0px; - white-space: nowrap; + +.directory-alt p { + margin: 0px; + white-space: nowrap; } -.directory div { - display: none; - margin: 0px; + +.directory-alt div { + display: none; + margin: 0px; } -.directory img { - vertical-align: -30%; + +.directory-alt img { + vertical-align: -30%; } +/* @end */ + +address { + font-style: normal; + color: #333; +} diff --git a/src/doxygen_css.h b/src/doxygen_css.h index 2c42fd5..d9d381e 100644 --- a/src/doxygen_css.h +++ b/src/doxygen_css.h @@ -1,363 +1,287 @@ -"BODY,H1,H2,H3,H4,H5,H6,P,CENTER,TD,TH,UL,DL,DIV {\n" -" font-family: Geneva, Arial, Helvetica, sans-serif;\n" +"body, table, div, p, dl {\n" +" font-family: Lucida Grande, Verdana, Geneva, Arial, sans-serif;\n" +" font-size: 12px;\n" "}\n" -"BODY,TD {\n" -" font-size: 90%;\n" -"}\n" -"H1 {\n" +"\n" +"/* @group Heading Levels */\n" +"\n" +"h1 {\n" " text-align: center;\n" -" font-size: 160%;\n" +" font-size: 150%;\n" "}\n" -"H2 {\n" +"\n" +"h2 {\n" " font-size: 120%;\n" "}\n" -"H3 {\n" +"\n" +"h3 {\n" " font-size: 100%;\n" "}\n" -"CAPTION { \n" -" font-weight: bold \n" +"\n" +"/* @end */\n" +"\n" +"caption {\n" +" font-weight: bold;\n" "}\n" -"DIV.qindex {\n" -" width: 100%;\n" +"\n" +"div.qindex, div.navpath, div.navtab{\n" " background-color: #e8eef2;\n" " border: 1px solid #84b0c7;\n" " text-align: center;\n" " margin: 2px;\n" " padding: 2px;\n" -" line-height: 140%;\n" "}\n" -"DIV.navpath {\n" +"\n" +"div.qindex, div.navpath {\n" " width: 100%;\n" -" background-color: #e8eef2;\n" -" border: 1px solid #84b0c7;\n" -" text-align: center;\n" -" margin: 2px;\n" -" padding: 2px;\n" " line-height: 140%;\n" "}\n" -"DIV.navtab {\n" -" background-color: #e8eef2;\n" -" border: 1px solid #84b0c7;\n" -" text-align: center;\n" -" margin: 2px;\n" -" margin-right: 15px;\n" -" padding: 2px;\n" +"\n" +"div.navtab {\n" +" margin-right: 15px;\n" "}\n" -"TD.navtab {\n" -" font-size: 70%;\n" +"\n" +"/* @group Link Styling */\n" +"\n" +"a {\n" +" color: #153788;\n" +" font-weight: normal;\n" +" text-decoration: none;\n" "}\n" -"A.qindex {\n" -" text-decoration: none;\n" -" font-weight: bold;\n" -" color: #1A419D;\n" +"\n" +".contents a:visited {\n" +" color: #1b77c5;\n" "}\n" -"A.qindex:visited {\n" -" text-decoration: none;\n" -" font-weight: bold;\n" -" color: #1A419D\n" +"\n" +"a:hover {\n" +" text-decoration: underline;\n" "}\n" -"A.qindex:hover {\n" -" text-decoration: none;\n" -" background-color: #ddddff;\n" +"\n" +"a.qindex {\n" +" font-weight: bold;\n" "}\n" -"A.qindexHL {\n" -" text-decoration: none;\n" +"\n" +"a.qindexHL {\n" " font-weight: bold;\n" " background-color: #6666cc;\n" " color: #ffffff;\n" " border: 1px double #9295C2;\n" "}\n" -"A.qindexHL:hover {\n" -" text-decoration: none;\n" -" background-color: #6666cc;\n" -" color: #ffffff;\n" -"}\n" -"A.qindexHL:visited { \n" -" text-decoration: none; \n" -" background-color: #6666cc; \n" -" color: #ffffff \n" +"\n" +"a.el {\n" +" font-weight: bold;\n" "}\n" -"A.el { \n" -" text-decoration: none; \n" -" font-weight: bold \n" +"\n" +"a.elRef {\n" "}\n" -"A.elRef { \n" -" font-weight: bold \n" +"\n" +"a.code {\n" "}\n" -"A.code:link { \n" -" text-decoration: none; \n" -" font-weight: normal; \n" -" color: #0000FF\n" +"\n" +"a.codeRef {\n" "}\n" -"A.code:visited { \n" -" text-decoration: none; \n" -" font-weight: normal; \n" -" color: #0000FF\n" +"\n" +"/* @end */\n" +"\n" +"dl.el {\n" +" margin-left: -1cm;\n" "}\n" -"A.codeRef:link { \n" -" font-weight: normal; \n" -" color: #0000FF\n" +"\n" +".fragment {\n" +" font-family: monospace, fixed;\n" +" font-size: 105%;\n" "}\n" -"A.codeRef:visited { \n" -" font-weight: normal; \n" -" color: #0000FF\n" +"\n" +"pre.fragment {\n" +" border: 1px solid #CCCCCC;\n" +" background-color: #f5f5f5;\n" +" padding: 4px 6px;\n" +" margin: 4px 8px 4px 2px;\n" "}\n" -"A:hover { \n" -" text-decoration: none; \n" -" background-color: #f2f2ff \n" +"\n" +"div.ah {\n" +" background-color: black;\n" +" font-weight: bold;\n" +" color: #ffffff;\n" +" margin-bottom: 3px;\n" +" margin-top: 3px\n" "}\n" -"DL.el { \n" -" margin-left: -1cm \n" +"\n" +"div.groupHeader {\n" +" margin-left: 16px;\n" +" margin-top: 12px;\n" +" margin-bottom: 6px;\n" +" font-weight: bold;\n" "}\n" -".fragment {\n" -" font-family: monospace, fixed;\n" -" font-size: 95%;\n" +"\n" +"div.groupText {\n" +" margin-left: 16px;\n" +" font-style: italic;\n" "}\n" -"PRE.fragment {\n" -" border: 1px solid #CCCCCC;\n" -" background-color: #f5f5f5;\n" -" margin-top: 4px;\n" -" margin-bottom: 4px;\n" -" margin-left: 2px;\n" -" margin-right: 8px;\n" -" padding-left: 6px;\n" -" padding-right: 6px;\n" -" padding-top: 4px;\n" -" padding-bottom: 4px;\n" -"}\n" -"DIV.ah { \n" -" background-color: black; \n" -" font-weight: bold; \n" -" color: #ffffff; \n" -" margin-bottom: 3px; \n" -" margin-top: 3px \n" -"}\n" -"\n" -"DIV.groupHeader {\n" -" margin-left: 16px;\n" -" margin-top: 12px;\n" -" margin-bottom: 6px;\n" -" font-weight: bold;\n" -"}\n" -"DIV.groupText { \n" -" margin-left: 16px; \n" -" font-style: italic; \n" -" font-size: 90% \n" -"}\n" -"BODY {\n" +"\n" +"body {\n" " background: white;\n" " color: black;\n" " margin-right: 20px;\n" " margin-left: 20px;\n" "}\n" -"TD.indexkey {\n" +"\n" +"td.indexkey {\n" " background-color: #e8eef2;\n" " font-weight: bold;\n" -" padding-right : 10px;\n" -" padding-top : 2px;\n" -" padding-left : 10px;\n" -" padding-bottom : 2px;\n" -" margin-left : 0px;\n" -" margin-right : 0px;\n" -" margin-top : 2px;\n" -" margin-bottom : 2px;\n" " border: 1px solid #CCCCCC;\n" +" margin: 2px 0px 2px 0;\n" +" padding: 2px 10px;\n" "}\n" -"TD.indexvalue {\n" +"\n" +"td.indexvalue {\n" " background-color: #e8eef2;\n" -" font-style: italic;\n" -" padding-right : 10px;\n" -" padding-top : 2px;\n" -" padding-left : 10px;\n" -" padding-bottom : 2px;\n" -" margin-left : 0px;\n" -" margin-right : 0px;\n" -" margin-top : 2px;\n" -" margin-bottom : 2px;\n" +"// font-style: italic;\n" " border: 1px solid #CCCCCC;\n" +" padding: 2px 10px;\n" +" margin: 2px 0px;\n" "}\n" -"TR.memlist {\n" -" background-color: #f0f0f0; \n" +"\n" +"tr.memlist {\n" +" background-color: #f0f0f0;\n" "}\n" -"P.formulaDsp { \n" -" text-align: center; \n" +"\n" +"p.formulaDsp {\n" +" text-align: center;\n" "}\n" -"IMG.formulaDsp {\n" +"\n" +"img.formulaDsp {\n" +" \n" "}\n" -"IMG.formulaInl { \n" -" vertical-align: middle; \n" +"\n" +"img.formulaInl {\n" +" vertical-align: middle;\n" "}\n" -"SPAN.keyword { color: #008000 }\n" -"SPAN.keywordtype { color: #604020 }\n" -"SPAN.keywordflow { color: #e08000 }\n" -"SPAN.comment { color: #800000 }\n" -"SPAN.preprocessor { color: #806020 }\n" -"SPAN.stringliteral { color: #002080 }\n" -"SPAN.charliteral { color: #008080 }\n" -"SPAN.vhdldigit { color: #ff00ff }\n" -"SPAN.vhdlchar { color: #000000 }\n" -"SPAN.vhdlkeyword { color: #700070 }\n" -"SPAN.vhdllogic { color: #ff0000 }\n" "\n" -".mdescLeft {\n" -" padding: 0px 8px 4px 8px;\n" -" font-size: 80%;\n" -" font-style: italic;\n" -" background-color: #FAFAFA;\n" -" border-top: 1px none #E0E0E0;\n" -" border-right: 1px none #E0E0E0;\n" -" border-bottom: 1px none #E0E0E0;\n" -" border-left: 1px none #E0E0E0;\n" -" margin: 0px;\n" +"/* @group Code Colorization */\n" +"\n" +"span.keyword {\n" +" color: #008000\n" "}\n" -".mdescRight {\n" -" padding: 0px 8px 4px 8px;\n" -" font-size: 80%;\n" -" font-style: italic;\n" -" background-color: #FAFAFA;\n" -" border-top: 1px none #E0E0E0;\n" -" border-right: 1px none #E0E0E0;\n" -" border-bottom: 1px none #E0E0E0;\n" -" border-left: 1px none #E0E0E0;\n" -" margin: 0px;\n" +"\n" +"span.keywordtype {\n" +" color: #604020\n" "}\n" -".memItemLeft {\n" -" padding: 1px 0px 0px 8px;\n" -" margin: 4px;\n" -" border-top-width: 1px;\n" -" border-right-width: 1px;\n" -" border-bottom-width: 1px;\n" -" border-left-width: 1px;\n" -" border-top-color: #E0E0E0;\n" -" border-right-color: #E0E0E0;\n" -" border-bottom-color: #E0E0E0;\n" -" border-left-color: #E0E0E0;\n" -" border-top-style: solid;\n" -" border-right-style: none;\n" -" border-bottom-style: none;\n" -" border-left-style: none;\n" -" background-color: #FAFAFA;\n" -" font-size: 80%;\n" +"\n" +"span.keywordflow {\n" +" color: #e08000\n" "}\n" -".memItemRight {\n" -" padding: 1px 8px 0px 8px;\n" -" margin: 4px;\n" -" border-top-width: 1px;\n" -" border-right-width: 1px;\n" -" border-bottom-width: 1px;\n" -" border-left-width: 1px;\n" -" border-top-color: #E0E0E0;\n" -" border-right-color: #E0E0E0;\n" -" border-bottom-color: #E0E0E0;\n" -" border-left-color: #E0E0E0;\n" -" border-top-style: solid;\n" -" border-right-style: none;\n" -" border-bottom-style: none;\n" -" border-left-style: none;\n" -" background-color: #FAFAFA;\n" -" font-size: 80%;\n" +"\n" +"span.comment {\n" +" color: #800000\n" "}\n" -".memTemplItemLeft {\n" -" padding: 1px 0px 0px 8px;\n" -" margin: 4px;\n" -" border-top-width: 1px;\n" -" border-right-width: 1px;\n" -" border-bottom-width: 1px;\n" -" border-left-width: 1px;\n" -" border-top-color: #E0E0E0;\n" -" border-right-color: #E0E0E0;\n" -" border-bottom-color: #E0E0E0;\n" -" border-left-color: #E0E0E0;\n" -" border-top-style: none;\n" -" border-right-style: none;\n" -" border-bottom-style: none;\n" -" border-left-style: none;\n" -" background-color: #FAFAFA;\n" -" font-size: 80%;\n" +"\n" +"span.preprocessor {\n" +" color: #806020\n" "}\n" -".memTemplItemRight {\n" -" padding: 1px 8px 0px 8px;\n" -" margin: 4px;\n" -" border-top-width: 1px;\n" -" border-right-width: 1px;\n" -" border-bottom-width: 1px;\n" -" border-left-width: 1px;\n" -" border-top-color: #E0E0E0;\n" -" border-right-color: #E0E0E0;\n" -" border-bottom-color: #E0E0E0;\n" -" border-left-color: #E0E0E0;\n" -" border-top-style: none;\n" -" border-right-style: none;\n" -" border-bottom-style: none;\n" -" border-left-style: none;\n" -" background-color: #FAFAFA;\n" -" font-size: 80%;\n" +"\n" +"span.stringliteral {\n" +" color: #002080\n" "}\n" -".memTemplParams {\n" -" padding: 1px 0px 0px 8px;\n" -" margin: 4px;\n" -" border-top-width: 1px;\n" -" border-right-width: 1px;\n" -" border-bottom-width: 1px;\n" -" border-left-width: 1px;\n" -" border-top-color: #E0E0E0;\n" -" border-right-color: #E0E0E0;\n" -" border-bottom-color: #E0E0E0;\n" -" border-left-color: #E0E0E0;\n" -" border-top-style: solid;\n" -" border-right-style: none;\n" -" border-bottom-style: none;\n" -" border-left-style: none;\n" -" color: #606060;\n" -" background-color: #FAFAFA;\n" -" font-size: 80%;\n" +"\n" +"span.charliteral {\n" +" color: #008080\n" +"}\n" +"\n" +"span.vhdldigit { \n" +" color: #ff00ff \n" +"}\n" +"\n" +"span.vhdlchar { \n" +" color: #000000 \n" +"}\n" +"\n" +"span.vhdlkeyword { \n" +" color: #700070 \n" "}\n" -".search { \n" +"\n" +"span.vhdllogic { \n" +" color: #ff0000 \n" +"}\n" +"\n" +"/* @end */\n" +"\n" +".search {\n" " color: #003399;\n" " font-weight: bold;\n" "}\n" -"FORM.search {\n" +"\n" +"form.search {\n" " margin-bottom: 0px;\n" " margin-top: 0px;\n" "}\n" -"INPUT.search { \n" +"\n" +"input.search {\n" " font-size: 75%;\n" " color: #000080;\n" " font-weight: normal;\n" " background-color: #e8eef2;\n" "}\n" -"TD.tiny { \n" +"\n" +"td.tiny {\n" " font-size: 75%;\n" "}\n" -"a {\n" -" color: #1A41A8;\n" -"}\n" -"a:visited {\n" -" color: #2A3798;\n" -"}\n" -".dirtab { \n" +"\n" +".dirtab {\n" " padding: 4px;\n" " border-collapse: collapse;\n" " border: 1px solid #84b0c7;\n" "}\n" -"TH.dirtab { \n" +"\n" +"th.dirtab {\n" " background: #e8eef2;\n" " font-weight: bold;\n" "}\n" -"HR { \n" -" height: 1px;\n" +"\n" +"hr {\n" +" height: 0;\n" +" border: none;\n" +" border-top: 1px solid #666;\n" +"}\n" +"\n" +"/* @group Member Descriptions */\n" +"\n" +".mdescLeft, .mdescRight,\n" +".memItemLeft, .memItemRight,\n" +".memTemplItemLeft, .memTemplItemRight, .memTemplParams {\n" +" background-color: #FAFAFA;\n" " border: none;\n" -" border-top: 1px solid black;\n" +" margin: 4px;\n" +" padding: 1px 0 0 8px;\n" +"}\n" +"\n" +".mdescLeft, .mdescRight {\n" +" padding: 0px 8px 4px 8px;\n" +" color: #555;\n" +"}\n" +"\n" +".memItemLeft, .memItemRight, .memTemplParams {\n" +" border-top: 1px solid #ccc;\n" "}\n" "\n" -"/* Style for detailed member documentation */\n" +".memTemplParams {\n" +" color: #606060;\n" +"}\n" +"\n" +"/* @end */\n" +"\n" +"/* @group Member Details */\n" +"\n" +"/* Styles for detailed member documentation */\n" +"\n" ".memtemplate {\n" " font-size: 80%;\n" " color: #606060;\n" " font-weight: normal;\n" " margin-left: 3px;\n" -"} \n" -".memnav { \n" +"}\n" +"\n" +".memnav {\n" " background-color: #e8eef2;\n" " border: 1px solid #84b0c7;\n" " text-align: center;\n" @@ -365,109 +289,154 @@ " margin-right: 15px;\n" " padding: 2px;\n" "}\n" +"\n" ".memitem {\n" -" padding: 4px;\n" -" background-color: #eef3f5;\n" -" border-width: 1px;\n" -" border-style: solid;\n" -" border-color: #dedeee;\n" -" -moz-border-radius: 8px 8px 8px 8px;\n" +" padding: 0;\n" "}\n" +"\n" ".memname {\n" " white-space: nowrap;\n" " font-weight: bold;\n" "}\n" -".memdoc{\n" -" padding-left: 10px;\n" +"\n" +".memproto, .memdoc {\n" +" border: 1px solid #84b0c7; \n" "}\n" +"\n" ".memproto {\n" +" padding: 0;\n" " background-color: #d5e1e8;\n" -" width: 100%;\n" -" border-width: 1px;\n" -" border-style: solid;\n" -" border-color: #84b0c7;\n" " font-weight: bold;\n" -" -moz-border-radius: 8px 8px 8px 8px;\n" +" -webkit-border-top-left-radius: 8px;\n" +" -webkit-border-top-right-radius: 8px;\n" +" -moz-border-radius-topleft: 8px;\n" +" -moz-border-radius-topright: 8px;\n" +"}\n" +"\n" +".memdoc {\n" +" padding: 2px 5px;\n" +" background-color: #eef3f5;\n" +" border-top-width: 0;\n" +" -webkit-border-bottom-left-radius: 8px;\n" +" -webkit-border-bottom-right-radius: 8px;\n" +" -moz-border-radius-bottomleft: 8px;\n" +" -moz-border-radius-bottomright: 8px;\n" +"}\n" +"\n" +".memdoc p, .memdoc dl, .memdoc ul {\n" +" margin: 6px 0;\n" "}\n" +"\n" ".paramkey {\n" " text-align: right;\n" "}\n" +"\n" ".paramtype {\n" " white-space: nowrap;\n" "}\n" +"\n" ".paramname {\n" " color: #602020;\n" -" font-style: italic;\n" " white-space: nowrap;\n" "}\n" -"/* End Styling for detailed member documentation */\n" +".paramname em {\n" +" font-style: normal;\n" +"}\n" +"\n" +"/* @end */\n" +"\n" +"/* @group Directory (tree) */\n" "\n" "/* for the tree view */\n" +"\n" ".ftvtree {\n" " font-family: sans-serif;\n" -" margin:0.5em;\n" +" margin: 0.5em;\n" "}\n" +"\n" "/* these are for tree view when used as main index */\n" -".directory { \n" -" font-size: 9pt; \n" -" font-weight: bold; \n" +"\n" +".directory {\n" +" font-size: 9pt;\n" +" font-weight: bold;\n" "}\n" -".directory h3 { \n" -" margin: 0px; \n" -" margin-top: 1em; \n" -" font-size: 11pt; \n" +"\n" +".directory h3 {\n" +" margin: 0px;\n" +" margin-top: 1em;\n" +" font-size: 11pt;\n" "}\n" "\n" -"/* The following two styles can be used to replace the root node title */\n" -"/* with an image of your choice. Simply uncomment the next two styles, */\n" -"/* specify the name of your image and be sure to set \'height\' to the */\n" -"/* proper pixel height of your image. */\n" +"/*\n" +"The following two styles can be used to replace the root node title\n" +"with an image of your choice. Simply uncomment the next two styles,\n" +"specify the name of your image and be sure to set 'height' to the\n" +"proper pixel height of your image.\n" +"*/\n" "\n" -"/* .directory h3.swap { */\n" -"/* height: 61px; */\n" -"/* background-repeat: no-repeat; */\n" -"/* background-image: url(\"yourimage.gif\"); */\n" -"/* } */\n" -"/* .directory h3.swap span { */\n" -"/* display: none; */\n" -"/* } */\n" +"/*\n" +".directory h3.swap {\n" +" height: 61px;\n" +" background-repeat: no-repeat;\n" +" background-image: url(\"yourimage.gif\");\n" +"}\n" +".directory h3.swap span {\n" +" display: none;\n" +"}\n" +"*/\n" "\n" -".directory > h3 { \n" -" margin-top: 0; \n" +".directory > h3 {\n" +" margin-top: 0;\n" "}\n" -".directory p { \n" -" margin: 0px; \n" -" white-space: nowrap; \n" +"\n" +".directory p {\n" +" margin: 0px;\n" +" white-space: nowrap;\n" "}\n" -".directory div { \n" -" display: none; \n" -" margin: 0px; \n" +"\n" +".directory div {\n" +" display: none;\n" +" margin: 0px;\n" "}\n" -".directory img { \n" -" vertical-align: -30%; \n" +"\n" +".directory img {\n" +" vertical-align: -30%;\n" "}\n" +"\n" "/* these are for tree view when not used as main index */\n" -".directory-alt { \n" -" font-size: 100%; \n" -" font-weight: bold; \n" +"\n" +".dir