diff options
author | Dimitri van Heesch <dimitri@stack.nl> | 2003-06-25 18:00:24 (GMT) |
---|---|---|
committer | Dimitri van Heesch <dimitri@stack.nl> | 2003-06-25 18:00:24 (GMT) |
commit | 17c14fb5230cfc532577c32df1d10223534392d8 (patch) | |
tree | d1ce681120f6cf7c6aed4ba77feceafcc66cc853 /src | |
parent | 80108293f1f4808c02d28d2d1620563437433a56 (diff) | |
download | Doxygen-17c14fb5230cfc532577c32df1d10223534392d8.zip Doxygen-17c14fb5230cfc532577c32df1d10223534392d8.tar.gz Doxygen-17c14fb5230cfc532577c32df1d10223534392d8.tar.bz2 |
Release-1.3.2-20030625
Diffstat (limited to 'src')
-rw-r--r-- | src/code.l | 2 | ||||
-rw-r--r-- | src/config.l | 2 | ||||
-rw-r--r-- | src/defargs.l | 5 | ||||
-rw-r--r-- | src/docparser.cpp | 33 | ||||
-rw-r--r-- | src/doctokenizer.l | 1 | ||||
-rw-r--r-- | src/dot.cpp | 10 | ||||
-rw-r--r-- | src/doxygen.cpp | 18 | ||||
-rw-r--r-- | src/groupdef.cpp | 6 | ||||
-rw-r--r-- | src/index.cpp | 14 | ||||
-rw-r--r-- | src/outputlist.cpp | 3 | ||||
-rw-r--r-- | src/printdocvisitor.h | 2 | ||||
-rw-r--r-- | src/scanner.l | 26 | ||||
-rw-r--r-- | src/translator_sr.h | 108 | ||||
-rw-r--r-- | src/util.cpp | 36 | ||||
-rw-r--r-- | src/util.h | 3 |
15 files changed, 171 insertions, 98 deletions
@@ -626,7 +626,7 @@ static void addDocCrossReference(MemberDef *src,MemberDef *dst) { dst->addSourceReferencedBy(src); } - if (Config_getBool("REFERENCES_RELATION") && + if ((Config_getBool("REFERENCES_RELATION") || Config_getBool("CALL_GRAPH")) && (src->isFunction() || src->isSlot()) ) { diff --git a/src/config.l b/src/config.l index 8a57707..4c2a523 100644 --- a/src/config.l +++ b/src/config.l @@ -2473,7 +2473,7 @@ void Config::create() cb = addBool( "UML_LOOK", "If the UML_LOOK tag is set to YES doxygen will generate inheritance and \n" - "colloborations diagrams in a style similiar to the OMG's Unified Modeling \n" + "collaboration diagrams in a style similiar to the OMG's Unified Modeling \n" "Language. \n", FALSE ); diff --git a/src/defargs.l b/src/defargs.l index b1f2134..035406c 100644 --- a/src/defargs.l +++ b/src/defargs.l @@ -325,6 +325,11 @@ ID [a-z_A-Z][a-z_A-Z0-9]* } <ReadFuncArgType,ReadFuncArgPtr>{ID} { QCString name=yytext; //resolveDefines(yytext); + if (YY_START==ReadFuncArgType && g_curArgArray=="[]") // Java style array + { + g_curArgTypeName+=" []"; + g_curArgArray.resize(0); + } //printf("resolveName `%s'->`%s'\n",yytext,name.data()); g_curArgTypeName+=name; } diff --git a/src/docparser.cpp b/src/docparser.cpp index 7d26e04..abf930a 100644 --- a/src/docparser.cpp +++ b/src/docparser.cpp @@ -1923,6 +1923,7 @@ void DocImage::parse() g_nodeStack.push(this); DBG(("DocImage::parse() start\n")); + // parse title doctokenizerYYsetStateTitle(); int tok; while ((tok=doctokenizerYYlex())) @@ -1946,26 +1947,24 @@ void DocImage::parse() } } } - if (!m_children.isEmpty()) + // parse size attributes + tok=doctokenizerYYlex(); + while (tok==TK_WORD) // there are values following the title { - tok=doctokenizerYYlex(); - while (tok==TK_WORD) // there are values following the title + if (g_token->name=="width") { - if (g_token->name=="width") - { - m_width=g_token->chars; - } - else if (g_token->name=="height") - { - m_height=g_token->chars; - } - else - { - warn_doc_error(g_fileName,doctokenizerYYlineno,"Warning: Unknown option %s after image title", - g_token->name.data()); - } - tok=doctokenizerYYlex(); + m_width=g_token->chars; + } + else if (g_token->name=="height") + { + m_height=g_token->chars; } + else + { + warn_doc_error(g_fileName,doctokenizerYYlineno,"Warning: Unknown option %s after image title", + g_token->name.data()); + } + tok=doctokenizerYYlex(); } doctokenizerYYsetStatePara(); diff --git a/src/doctokenizer.l b/src/doctokenizer.l index b86a1dd..d558631 100644 --- a/src/doctokenizer.l +++ b/src/doctokenizer.l @@ -791,6 +791,7 @@ LABELID [a-z_A-Z][a-z_A-Z0-9\-]* g_secLabel = g_secLabel.stripWhiteSpace(); BEGIN(St_SecTitle); } +<St_SecTitle>[^\n]+ | <St_SecTitle>[^\n]*\n { g_secTitle = yytext; g_secTitle = g_secTitle.stripWhiteSpace(); diff --git a/src/dot.cpp b/src/dot.cpp index f9bd520..9b3161d 100644 --- a/src/dot.cpp +++ b/src/dot.cpp @@ -1313,7 +1313,7 @@ void writeDotGraph(DotNode *root, ) { // generate the graph description for dot - //printf("writeDotGraph(%s,%d)\n",baseName.data(),backArrows); + //printf("writeDotGraph(%s,%d,lrRank=%d)\n",baseName.data(),backArrows,lrRank); QFile f; f.setName(baseName+".dot"); if (f.open(IO_WriteOnly)) @@ -1415,8 +1415,12 @@ static void findMaximalDotGraph(DotNode *root, } //printf("lastFit=%d\n",lastFit); - bool hasLRRank = (lrRank || (minDistance==1 && width>Config_getInt("MAX_DOT_GRAPH_WIDTH"))) && - !Config_getBool("UML_LOOK"); + bool hasLRRank = (lrRank || + (minDistance==1 && + width>Config_getInt("MAX_DOT_GRAPH_WIDTH") && + !Config_getBool("UML_LOOK") + ) + ); writeDotGraph(root, gt, diff --git a/src/doxygen.cpp b/src/doxygen.cpp index 6901325..d8630a7 100644 --- a/src/doxygen.cpp +++ b/src/doxygen.cpp @@ -2277,7 +2277,9 @@ static void buildFunctionList(Entry *root) // merge ingroup specifiers if (md->getGroupDef()==0 && root->groups->first()) { - addMemberToGroups(root,md); + // if we do addMemberToGroups here an undocumented declaration may prevent + // the documented implementation below from being added + //addMemberToGroups(root,md); GroupDef *gd=Doxygen::groupSDict[root->groups->first()->groupname.data()]; md->setGroupDef(gd, root->groups->first()->pri, root->fileName, root->startLine, !root->doc.isEmpty()); } @@ -3982,12 +3984,12 @@ static bool findGlobalMember(Entry *root, const char *, const char *decl) { - QCString n=name; - if (n.isEmpty()) return FALSE; - if (n.find("::")!=-1) return FALSE; // skip undefined class members Debug::print(Debug::FindMembers,0, "2. findGlobalMember(namespace=%s,name=%s,tempArg=%s,decl=%s)\n", namespaceName.data(),name,tempArg,decl); + QCString n=name; + if (n.isEmpty()) return FALSE; + if (n.find("::")!=-1) return FALSE; // skip undefined class members MemberName *mn=Doxygen::functionNameSDict[n+tempArg]; // look in function dictionary if (mn==0) { @@ -4286,7 +4288,7 @@ static void findMember(Entry *root, removeRedundantWhiteSpace(scopeName),FALSE); // split scope into a namespace and a class part - extractNamespaceName(scopeName,className,namespaceName); + extractNamespaceName(scopeName,className,namespaceName,TRUE); //printf("scopeName=`%s' className=`%s' namespaceName=`%s'\n", // scopeName.data(),className.data(),namespaceName.data()); @@ -4906,15 +4908,15 @@ static void findMember(Entry *root, } else // unrelated not overloaded member found { - if (className.isEmpty() && - !findGlobalMember(root,namespaceName,funcName,funcTempList,funcArgs,funcDecl)) + bool globMem = findGlobalMember(root,namespaceName,funcName,funcTempList,funcArgs,funcDecl); + if (className.isEmpty() && !globMem) { warn(root->fileName,root->startLine, "Warning: class for member `%s' cannot " "be found.", funcName.data() ); } - else if (!className.isEmpty()) + else if (!className.isEmpty() && !globMem) { warn(root->fileName,root->startLine, "Warning: member `%s' of class `%s' cannot be found", diff --git a/src/groupdef.cpp b/src/groupdef.cpp index 38a9392..b6b6401 100644 --- a/src/groupdef.cpp +++ b/src/groupdef.cpp @@ -748,6 +748,7 @@ void addMemberToGroups(Entry *root,MemberDef *md) if (moveit) { + //printf("removeMember\n"); mgd->removeMember(md); insertit = TRUE; } @@ -755,11 +756,12 @@ void addMemberToGroups(Entry *root,MemberDef *md) if (insertit) { - //printf("insertMember\n"); + //printf("insertMember found at %s line %d\n",md->getDefFileName().data(),md->getDefLine()); bool success = fgd->insertMember(md); if (success) { - md->setGroupDef(fgd,pri,root->fileName,root->startLine,root->doc.length() != 0); + //printf("insertMember successful\n"); + md->setGroupDef(fgd,pri,root->fileName,root->startLine,!root->doc.isEmpty()); ClassDef *cd = md->getClassDefOfAnonymousType(); if (cd) cd->setGroupDefForAllMembers(fgd,pri,root->fileName,root->startLine,root->doc.length() != 0); } diff --git a/src/index.cpp b/src/index.cpp index d24f2fe..3a1ee3e 100644 --- a/src/index.cpp +++ b/src/index.cpp @@ -214,7 +214,7 @@ QCString abbreviate(const char *s,const char *name) static void startQuickIndexItem(OutputList &ol,const char *s,const char *l, bool hl,bool compact,bool &first) { - if (!first) ol.writeString(" | "); + if (!first && compact) ol.writeString(" | "); first=FALSE; if (!compact) ol.writeString("<li>"); QCString *dest; @@ -281,7 +281,6 @@ void writeQuickLinks(OutputList &ol,bool compact,HighlightedItem hli,bool ext=FA ol.startItemList(); } - if (!compact) ol.writeListItem(); if (Config_getBool("GENERATE_TREEVIEW")) { startQuickIndexItem(ol,extLink,"main"+Doxygen::htmlFileExtension, @@ -297,7 +296,6 @@ void writeQuickLinks(OutputList &ol,bool compact,HighlightedItem hli,bool ext=FA if (documentedGroups>0) { - if (!compact) ol.writeListItem(); startQuickIndexItem(ol,extLink,"modules"+Doxygen::htmlFileExtension, hli==HLI_Modules,compact,first); ol.parseText(fixSpaces(theTranslator->trModules())); @@ -305,7 +303,6 @@ void writeQuickLinks(OutputList &ol,bool compact,HighlightedItem hli,bool ext=FA } if (documentedNamespaces>0) { - if (!compact) ol.writeListItem(); startQuickIndexItem(ol,extLink,"namespaces"+Doxygen::htmlFileExtension, hli==HLI_Namespaces,compact,first); if (Config_getBool("OPTIMIZE_OUTPUT_JAVA")) @@ -320,7 +317,6 @@ void writeQuickLinks(OutputList &ol,bool compact,HighlightedItem hli,bool ext=FA } if (hierarchyClasses>0) { - if (!compact) ol.writeListItem(); startQuickIndexItem(ol,extLink,"hierarchy"+Doxygen::htmlFileExtension, hli==HLI_Hierarchy,compact,first); ol.parseText(fixSpaces(theTranslator->trClassHierarchy())); @@ -330,7 +326,6 @@ void writeQuickLinks(OutputList &ol,bool compact,HighlightedItem hli,bool ext=FA { if (Config_getBool("ALPHABETICAL_INDEX")) { - if (!compact) ol.writeListItem(); startQuickIndexItem(ol,extLink,"classes"+Doxygen::htmlFileExtension, hli==HLI_Classes,compact,first); ol.parseText(fixSpaces(theTranslator->trAlphabeticalList())); @@ -344,7 +339,6 @@ void writeQuickLinks(OutputList &ol,bool compact,HighlightedItem hli,bool ext=FA } if (documentedHtmlFiles>0) { - if (!compact) ol.writeListItem(); startQuickIndexItem(ol,extLink,"files"+Doxygen::htmlFileExtension, hli==HLI_Files,compact,first); ol.parseText(fixSpaces(theTranslator->trFileList())); @@ -352,7 +346,6 @@ void writeQuickLinks(OutputList &ol,bool compact,HighlightedItem hli,bool ext=FA } if (documentedNamespaceMembers[NMHL_All]>0) { - if (!compact) ol.writeListItem(); startQuickIndexItem(ol,extLink,"namespacemembers"+Doxygen::htmlFileExtension, hli==HLI_NamespaceMembers,compact,first); ol.parseText(fixSpaces(theTranslator->trNamespaceMembers())); @@ -360,7 +353,6 @@ void writeQuickLinks(OutputList &ol,bool compact,HighlightedItem hli,bool ext=FA } if (documentedClassMembers[CMHL_All]>0) { - if (!compact) ol.writeListItem(); startQuickIndexItem(ol,extLink,"functions"+Doxygen::htmlFileExtension, hli==HLI_Functions,compact,first); ol.parseText(fixSpaces(theTranslator->trCompoundMembers())); @@ -368,7 +360,6 @@ void writeQuickLinks(OutputList &ol,bool compact,HighlightedItem hli,bool ext=FA } if (documentedFileMembers[FMHL_All]>0) { - if (!compact) ol.writeListItem(); startQuickIndexItem(ol,extLink,"globals"+Doxygen::htmlFileExtension, hli==HLI_Globals,compact,first); ol.parseText(fixSpaces(theTranslator->trFileMembers())); @@ -376,7 +367,6 @@ void writeQuickLinks(OutputList &ol,bool compact,HighlightedItem hli,bool ext=FA } if (indexedPages>0) { - if (!compact) ol.writeListItem(); startQuickIndexItem(ol,extLink,"pages"+Doxygen::htmlFileExtension, hli==HLI_Pages,compact,first); ol.parseText(fixSpaces(theTranslator->trRelatedPages())); @@ -384,7 +374,6 @@ void writeQuickLinks(OutputList &ol,bool compact,HighlightedItem hli,bool ext=FA } if (Doxygen::exampleSDict->count()>0) { - if (!compact) ol.writeListItem(); startQuickIndexItem(ol,extLink,"examples"+Doxygen::htmlFileExtension, hli==HLI_Examples,compact,first); ol.parseText(fixSpaces(theTranslator->trExamples())); @@ -392,7 +381,6 @@ void writeQuickLinks(OutputList &ol,bool compact,HighlightedItem hli,bool ext=FA } if (Config_getBool("SEARCHENGINE")) { - if (!compact) ol.writeListItem(); startQuickIndexItem(ol,"_cgi","",hli==HLI_Search,compact,first); ol.parseText(fixSpaces(theTranslator->trSearch())); endQuickIndexItem(ol); diff --git a/src/outputlist.cpp b/src/outputlist.cpp index 2946fe9..e68ef8c 100644 --- a/src/outputlist.cpp +++ b/src/outputlist.cpp @@ -197,6 +197,7 @@ void OutputList::parseDoc(const char *fileName,int startLine, const char *exampleName,SectionDict *sections) { int count=0; + if (docStr.isEmpty()) return; OutputGenerator *og=outputs->first(); while (og) @@ -207,7 +208,7 @@ void OutputList::parseDoc(const char *fileName,int startLine, if (count==0) return; // no output formats enabled. DocNode *root=0; - if (docStr.length()==0 || docStr.at(docStr.length()-1)=='\n') + if (docStr.at(docStr.length()-1)=='\n') { root = validatingParseDoc(fileName,startLine, clName,md,docStr,isExample,exampleName, diff --git a/src/printdocvisitor.h b/src/printdocvisitor.h index dfdaf6f..b06e0a6 100644 --- a/src/printdocvisitor.h +++ b/src/printdocvisitor.h @@ -141,6 +141,7 @@ class PrintDocVisitor : public DocVisitor case DocVerbatim::Verbatim: printf("<verbatim>"); break; case DocVerbatim::HtmlOnly: printf("<htmlonly>"); break; case DocVerbatim::LatexOnly: printf("<latexonly>"); break; + case DocVerbatim::XmlOnly: printf("<xmlonly>"); break; } printf("%s",s->text().data()); switch(s->type()) @@ -149,6 +150,7 @@ class PrintDocVisitor : public DocVisitor case DocVerbatim::Verbatim: printf("</verbatim>"); break; case DocVerbatim::HtmlOnly: printf("</htmlonly>"); break; case DocVerbatim::LatexOnly: printf("</latexonly>"); break; + case DocVerbatim::XmlOnly: printf("</xmlonly>"); break; } } void visit(DocAnchor *a) diff --git a/src/scanner.l b/src/scanner.l index 5c87275..1b40671 100644 --- a/src/scanner.l +++ b/src/scanner.l @@ -150,7 +150,7 @@ static bool insideTryBlock=FALSE; static bool needsSemi; static int depthIf; -static int initializerSharpCount; +//static int initializerSharpCount; static QCString memberGroupRelates; static QCString memberGroupInside; static QCString xrefItemKey; @@ -1609,7 +1609,7 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;] <FindMembers>"=" { current->bodyLine = yyLineNr; lastInitializerContext = YY_START; - initializerSharpCount=0; + //initializerSharpCount=0; BEGIN(ReadInitializer); } /* Read initializer rules */ @@ -1629,15 +1629,18 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;] } <ReadInitializer>[;,] { //printf(">> initializer `%s' <<\n",current->initializer.data()); - if (initializerSharpCount==0) + //if (initializerSharpCount==0) + //{ + if (*yytext==';' || lastInitializerContext!=FindFields) { unput(*yytext); BEGIN(lastInitializerContext); } - else - { - current->initializer+=*yytext; - } + //} + //else + //{ + // current->initializer+=*yytext; + //} } <ReadInitializer>\" { if (insideIDL && insideCppQuote) @@ -1652,6 +1655,10 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;] BEGIN(CopyString); } } + /* +<ReadInitializer>"->" { + current->initializer+=yytext; + } <ReadInitializer>"<<" { current->initializer+=yytext; } @@ -1666,6 +1673,7 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;] initializerSharpCount--; current->initializer+=*yytext; } + */ <ReadInitializer>{CHARLIT} { current->initializer+=yytext; } <ReadInitializer>\n { current->initializer+=*yytext; @@ -1857,7 +1865,7 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;] } <FindFields>"=" { lastInitializerContext = YY_START; - initializerSharpCount=0; + //initializerSharpCount=0; BEGIN(ReadInitializer); } <FindFields>"," { @@ -2117,7 +2125,7 @@ PHPKW ("require"|"require_once"|"include"|"include_once"|"echo")[^a-zA-Z0-9_;] } <MemberSpec>"=" { lastInitializerContext=YY_START; - initializerSharpCount=0; + //initializerSharpCount=0; BEGIN(ReadInitializer); /* BEGIN(MemberSpecSkip); */ } diff --git a/src/translator_sr.h b/src/translator_sr.h index 631da9c..532d54e 100644 --- a/src/translator_sr.h +++ b/src/translator_sr.h @@ -20,8 +20,8 @@ // translation by Dejan D. M. Milosavljevic <dmilos@email.com>;<dmilosx@ptt.yu> -class TranslatorSerbian : public TranslatorAdapter_1_2_17 -{ +class TranslatorSerbian : public TranslatorAdapter_1_3_1 +{ private: QCString decode(const QCString& sInput) { @@ -83,7 +83,7 @@ private: /*! subscript for the related functions. */ virtual QCString trRelatedSubscript() - { return decode( "(To nisu funkcije članice.)" ); } + { return decode( "(To nisu funkcije članice.)" ); } // tj. metode /*! header that is put before the detailed description of files, classes and namespaces. */ virtual QCString trDetailedDescription() @@ -183,7 +183,7 @@ private: /*! This is put above each page as a link to the list of documented files */ virtual QCString trFileList() - { return "Spisak fajlova"; } + { return "Spisak datoteka"; } /*! This is put above each page as a link to the list of all verbatim headers */ virtual QCString trHeaderFiles() @@ -207,11 +207,11 @@ private: { if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) { - return decode("Članovi fajla"); + return decode("Članovi datoteke"); } else { - return decode("Članovi fajla"); + return decode("Članovi datoteke"); } } @@ -229,14 +229,15 @@ private: /*! This is an introduction to the class hierarchy. */ virtual QCString trClassHierarchyDescription() - { return decode( "Stablo nasleđivanja je složeno ""približno po abecedi:" ); } + { return decode( "Stablo nasleđivanja je složeno " + "približno po abecedi:" ); } /*! This is an introduction to the list with all files. */ virtual QCString trFileListDescription(bool extractAll) { QCString result="Spisak svih "; if (!extractAll) result+="dokumetovanih "; - result+="fajlova, sa kratkim opisom:"; + result+="datoteka, sa kratkim opisom:"; return decode( result ); } @@ -287,7 +288,7 @@ private: { if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) { - result+="strukture/uniije koje pripadaju:"; + result+="strukture/unije koje pripadaju:"; } else { @@ -315,7 +316,7 @@ private: result+=" sa linkovima na "; if (extractAll) - result+="fajlove u kojima se nalaze:"; + result+="datoteke u kojima se nalaze:"; else result+=" dokumentaciju:"; return decode( result ); @@ -381,7 +382,7 @@ private: * list of all files. */ virtual QCString trFileIndex() - { return "Indeks fajlova"; } + { return "Indeks datoteka"; } /*! This is used in LaTeX as the title of the chapter containing * the documentation of all groups. @@ -408,7 +409,7 @@ private: * the documentation of all files. */ virtual QCString trFileDocumentation() - { return "Dokumentacija fajla"; } + { return "Dokumentacija datoteke"; } /*! This is used in LaTeX as the title of the chapter containing * the documentation of all examples. @@ -653,7 +654,7 @@ private: /*! used as the title of the HTML page of a file */ virtual QCString trFileReference(const char *fileName) { - QCString result = "Opis fajla "; + QCString result = "Opis datoteke "; result += fileName; return result; } @@ -838,15 +839,15 @@ private: virtual QCString trSources() { - return "Izvorni fajlovi"; + return "Izvorne datoteke"; } virtual QCString trDefinedAtLineInSourceFile() { - return "Definisano u redu @0 fajla @1."; + return "Definisano u redu @0 datoteke @1."; } virtual QCString trDefinedInSourceFile() { - return "Definisano u fajlu @0."; + return "Definisano u datoteci @0."; } ////////////////////////////////////////////////////////////////////////// @@ -855,7 +856,7 @@ private: virtual QCString trDeprecated() { - return "Matoro"; + return "Zastarelo"; } ////////////////////////////////////////////////////////////////////////// @@ -870,7 +871,7 @@ private: /*! this text is put before an include dependency graph */ virtual QCString trInclDepGraph(const char *fName) { - return decode( (QCString)"Graf zavisnosti fajlova za "+fName+":" ); + return decode( (QCString)"Graf zavisnosti datoteka za "+fName+":" ); } /*! header that is put before the list of constructor/destructors. */ virtual QCString trConstructorDocumentation() @@ -935,7 +936,7 @@ private: virtual QCString trNote() { - return "Primedba"; + return "Primedba"; // ili Beleska ili Zapazanje. Primedba zvuci negativno } virtual QCString trPublicTypes() { @@ -1014,8 +1015,8 @@ private: } virtual QCString trInclByDepGraph() { - return decode("Ovaj graf pokazuje koji fajl direktno " - "ili indirektno uključuju ovaj fajl: "); + return decode("Ovaj graf pokazuje koja datoteka direktno " + "ili indirektno uključuju ovu datoteku: "); } virtual QCString trSince() { @@ -1068,7 +1069,7 @@ private: " Used *m_usedClass;\n" "};\n" "\\endcode\n" - "Ako je \\c MAX_DOT_GRAPH_HEIGHT tag u konfiguracionom fajlu " + "Ako je \\c MAX_DOT_GRAPH_HEIGHT tag u konfiguracionoj datoteci " "postavljen na 200 gornje veze će izgledati:" "<p><center><img src=\"graph_legend."+Config_getEnum("DOT_IMAGE_FORMAT")+"\"></center>\n" "<p>\n" @@ -1275,8 +1276,8 @@ private: */ virtual QCString trFile(bool first_capital, bool singular) { - QCString result((first_capital ? "Fajl" : "fajl")); - result+= (singular ? "" : "ovi"); + QCString result((first_capital ? "Datotek" : "Datotek")); + result+= (singular ? "a" : "e"); return result; } @@ -1430,12 +1431,69 @@ private: { return "Dokumentacija događaja"; } +////////////////////////////////////////////////////////////////////////// +// new since 1.3 +////////////////////////////////////////////////////////////////////////// + + /*! Used as a heading for a list of Java class types with package scope. + */ + virtual QCString trPackageTypes() + { + return "Tipovi u Paketu"; + } + /*! Used as a heading for a list of Java class functions with package + * scope. + */ + virtual QCString trPackageMembers() + { + return "Funkcije u paketu"; + } + /*! Used as a heading for a list of static Java class functions with + * package scope. + */ + virtual QCString trStaticPackageMembers() + { + return "Statičke funkcije u paketu"; // Zajednicke funkcije u paketu + } + /*! Used as a heading for a list of Java class variables with package + * scope. + */ + virtual QCString trPackageAttribs() + { + return "Atributi u paketu"; // Clanovi u paketu + } + /*! Used as a heading for a list of static Java class variables with + * package scope. + */ + virtual QCString trStaticPackageAttribs() + { + return "Statički atributi u paketu"; // Zajednicki clanovi u paketu + } + +////////////////////////////////////////////////////////////////////////// +// new since 1.3.1 +////////////////////////////////////////////////////////////////////////// + + /*! Used in the quick index of a class/file/namespace member list page + * to link to the unfiltered list of all members. + */ + virtual QCString trAll() + { + return "Sve"; + } + /*! Put in front of the call graph for a function. */ + virtual QCString trCallGraph() + { + return "Graf pozivanja finkcija:"; + } + }; -#endif // sh - š - shashavo // dj - đ - djordje // ch - č - chasha // cc - ć - cciccifu // zz - ž - zzaba + +#endif diff --git a/src/util.cpp b/src/util.cpp index e43e7c1..b11d2ba 100644 --- a/src/util.cpp +++ b/src/util.cpp @@ -762,7 +762,7 @@ void linkifyText(const TextGeneratorIntf &out,Definition *scope,const char * /*n QCString txtStr=text; QCString scopeName; int strLen = txtStr.length(); - //printf("linkifyText strtxt=%s strlen=%d\n",txtStr.data(),strLen); + //printf("linkifyText scope=%s strtxt=%s strlen=%d\n",scope?scope->name().data():"<none>",txtStr.data(),strLen); int matchLen; int index=0; int newIndex; @@ -822,10 +822,10 @@ void linkifyText(const TextGeneratorIntf &out,Definition *scope,const char * /*n // ); Definition *curScope = scope; // check if `word' is a documented class name - //printf("Searching...\n"); //int scopeOffset=scopeName.length(); do // for each scope (starting with full scope and going to empty scope) { + //printf("Searching in %s...\n",curScope?curScope->name().data():"<global>"); QCString fullName = word; QCString prefix; replaceNamespaceAliases(fullName,fullName.length()); @@ -874,9 +874,9 @@ endloop: (external ? md->isLinkable() : md->isLinkableInProject()) ) { - //printf("Found ref\n"); Definition *d=0; if (cd) d=cd; else if (nd) d=nd; else if (fd) d=fd; else d=gd; + //printf("Found ref scope=%s\n",d?d->name().data():"<global>"); if (d && (external ? d->isLinkable() : d->isLinkableInProject())) { //ol.writeObjectLink(d->getReference(),d->getOutputFileBase(), @@ -2202,6 +2202,7 @@ bool getDefs(const QCString &scName,const QCString &memberName, { namespaceName=mScope.copy(); } + //printf("Trying namespace %s\n",namespaceName.data()); if (!namespaceName.isEmpty() && (fnd=Doxygen::namespaceSDict[namespaceName]) && fnd->isLinkable() @@ -2259,11 +2260,20 @@ bool getDefs(const QCString &scName,const QCString &memberName, return TRUE; } } - else // no scope => global function + if (scopeOffset==0) + { + scopeOffset=-1; + } + else if ((scopeOffset=scopeName.findRev("::",scopeOffset-1))==-1) + { + scopeOffset=0; + } + } while (scopeOffset>=0); + //else // no scope => global function { QList<MemberDef> members; - //printf(" Function with global scope `%s' name `%s' args=`%s'\n",namespaceName.data(),memberName.data(),args); + //printf(" Function with global scope name `%s' args=`%s'\n",memberName.data(),args); MemberListIterator mli(*mn); for (mli.toFirst();(md=mli.current());++mli) { @@ -2329,7 +2339,7 @@ bool getDefs(const QCString &scName,const QCString &memberName, if (currentFile==0) { bool ambig; - currentFile = findFileDef(Doxygen::inputNameDict,namespaceName,ambig); + currentFile = findFileDef(Doxygen::inputNameDict,0/*namespaceName*/,ambig); } MemberDef *bmd = 0; for (md=members.first(); md; md=members.next()) @@ -2352,15 +2362,6 @@ bool getDefs(const QCString &scName,const QCString &memberName, return TRUE; } } - if (scopeOffset==0) - { - scopeOffset=-1; - } - else if ((scopeOffset=scopeName.findRev("::",scopeOffset-1))==-1) - { - scopeOffset=0; - } - } while (scopeOffset>=0); } // no nothing found @@ -3085,7 +3086,8 @@ QCString convertNameToFile(const char *name,bool allowDots) * namespace part (as large as possible) and a classname part. */ void extractNamespaceName(const QCString &scopeName, - QCString &className,QCString &namespaceName) + QCString &className,QCString &namespaceName, + bool allowEmptyClass) { int i,p; QCString clName=scopeName; @@ -3117,7 +3119,7 @@ void extractNamespaceName(const QCString &scopeName, namespaceName.resize(0); done: - if (className.isEmpty() && !namespaceName.isEmpty()) + if (className.isEmpty() && !namespaceName.isEmpty() && !allowEmptyClass) { // class and namespace with the same name, correct to return the class. className=namespaceName.copy(); @@ -155,7 +155,8 @@ bool hasVisibleRoot(BaseClassList *bcl); int minClassDistance(ClassDef *cd,ClassDef *bcd,int level=0); QCString convertNameToFile(const char *name,bool allowDots=FALSE); void extractNamespaceName(const QCString &scopeName, - QCString &className,QCString &namespaceName); + QCString &className,QCString &namespaceName, + bool allowEmptyClass=FALSE); QCString insertTemplateSpecifierInScope(const QCString &scope,const QCString &templ); QCString stripScope(const char *name); int iSystem(const char *command,const char *args,bool isBatchFile=FALSE); |