diff options
author | Dimitri van Heesch <dimitri@stack.nl> | 2000-08-29 16:55:26 (GMT) |
---|---|---|
committer | Dimitri van Heesch <dimitri@stack.nl> | 2000-08-29 16:55:26 (GMT) |
commit | 7a048b942ae75eae857fb7f7466926b5749799c0 (patch) | |
tree | 6cbbe764d1beb5389d2e9247c672b7af04684260 /src | |
parent | 5ce25000172e185e0ca5b9f20538f80cbbfe0b0e (diff) | |
download | Doxygen-7a048b942ae75eae857fb7f7466926b5749799c0.zip Doxygen-7a048b942ae75eae857fb7f7466926b5749799c0.tar.gz Doxygen-7a048b942ae75eae857fb7f7466926b5749799c0.tar.bz2 |
Release-1.2.1-20000829
Diffstat (limited to 'src')
-rw-r--r-- | src/classdef.cpp | 8 | ||||
-rw-r--r-- | src/code.l | 34 | ||||
-rw-r--r-- | src/config.h | 3 | ||||
-rw-r--r-- | src/config.l | 43 | ||||
-rw-r--r-- | src/diagram.cpp | 4 | ||||
-rw-r--r-- | src/diagram.h | 2 | ||||
-rw-r--r-- | src/doc.l | 90 | ||||
-rw-r--r-- | src/dot.cpp | 114 | ||||
-rw-r--r-- | src/dot.h | 5 | ||||
-rw-r--r-- | src/doxygen.cpp | 160 | ||||
-rw-r--r-- | src/doxygen.h | 1 | ||||
-rw-r--r-- | src/doxygen.pro.in | 2 | ||||
-rw-r--r-- | src/htmlgen.cpp | 2 | ||||
-rw-r--r-- | src/language.cpp | 5 | ||||
-rw-r--r-- | src/latexgen.h | 2 | ||||
-rw-r--r-- | src/memberdef.cpp | 9 | ||||
-rw-r--r-- | src/rtfgen.cpp | 12 | ||||
-rw-r--r-- | src/translator_hr.h | 559 | ||||
-rw-r--r-- | src/translator_hu.h | 987 | ||||
-rw-r--r-- | src/translator_it.h | 141 | ||||
-rw-r--r-- | src/translator_pl.h | 88 | ||||
-rw-r--r-- | src/util.cpp | 55 |
22 files changed, 1920 insertions, 406 deletions
diff --git a/src/classdef.cpp b/src/classdef.cpp index be5f1c2..84e047d 100644 --- a/src/classdef.cpp +++ b/src/classdef.cpp @@ -1200,9 +1200,11 @@ void ClassDef::writeMemberList(OutputList &ol) ol.writeString(")"); memberWritten=TRUE; } - if ((protect!=Public || md->isStatic() || virt!=Normal || - md->isFriend() || md->isRelated() || - md->getMemberSpecifiers()!=0 + if ((protect!=Public || virt!=Normal || + md->isFriend() || md->isRelated() || md->isExplicit() || + md->isMutable() || (md->isInline() && Config::inlineInfoFlag) || + md->isSignal() || md->isSlot() || + md->isStatic() ) && memberWritten) { @@ -447,7 +447,9 @@ static bool getLink(const char *className, { md->addSourceReference(g_currentMemberDef); } - //printf("d->getOutputBase()=`%s' name=`%s'\n",d->getOutputFileBase().data(),md->name().data()); + //printf("d->getOutputBase()=`%s' name=`%s' member name=`%s'\n",d->getOutputFileBase().data(),d->name().data(),md->name().data()); + //printf("g_classVar=`%s' type=`%s'\n",g_classVar ? g_classVar->name().data() : "none",md->typeString()); + writeMultiLineCodeLink(result,d->getReference(),d->getOutputFileBase(), md->anchor(),text ? text : memberName); return TRUE; @@ -559,8 +561,36 @@ static void generateMemberLink(OutputList &ol,const char *varName, ClassDef *vcd = getResolvedClass(g_classScope); if (vcd && vcd->isLinkable()) { - //printf("Found class for variable `%s'\n",varName); + //printf("Found class %s for variable `%s'\n",g_classScope.data(),varName); MemberName *vmn=memberNameDict[varName]; + if (vmn==0) + { + int vi; + QCString vn=varName; + QCString scope; + if ((vi=vn.findRev("::"))!=-1) // explicit scope A::b(), probably static member + { + ClassDef *jcd = getClass(vn.left(vi)); + vn=vn.right(vn.length()-vi-2); + vmn=memberNameDict[vn]; + //printf("Trying name `%s' scope=%s\n",vn.data(),scope.data()); + MemberNameIterator vmni(*vmn); + MemberDef *vmd; + for (;(vmd=vmni.current());++vmni) + { + if ((vmd->isVariable() || vmd->isFunction()) && + vmd->getClassDef()==jcd) + { + //printf("Found variable type=%s\n",vmd->typeString()); + ClassDef *mcd=stripClassName(vmd->typeString()); + if (mcd && mcd->isLinkable()) + { + if (generateClassMemberLink(ol,mcd,memName)) return; + } + } + } + } + } if (vmn) { //printf("There is a variable with name `%s'\n",varName); diff --git a/src/config.h b/src/config.h index 81e6a4e..7160451 100644 --- a/src/config.h +++ b/src/config.h @@ -1,4 +1,4 @@ -/* This file was generated by configgen on Sat Aug 12 16:16:35 2000 +/* This file was generated by configgen on Fri Aug 25 21:22:11 2000 * from config_templ.h * * DO NOT EDIT! @@ -68,6 +68,7 @@ struct Config static QStrList sectionFilterList; // list of section filters that are enabled static bool generateTodoList; // do we want a todo list? static bool generateTestList; // do we want a test list? + static QStrList aliasList; // list of aliases static bool quietFlag; // generate progress messages flag static bool warningFlag; // generate warnings flag static bool warningUndocFlag; // generate undocumented warnings diff --git a/src/config.l b/src/config.l index 75a4223..1965934 100644 --- a/src/config.l +++ b/src/config.l @@ -1,4 +1,4 @@ -/* This file was generated by configgen on Sun Aug 13 14:05:26 2000 +/* This file was generated by configgen on Fri Aug 25 21:22:11 2000 * from config_templ.l * * DO NOT EDIT! @@ -105,6 +105,7 @@ int Config::tabSize = 8; QStrList Config::sectionFilterList; bool Config::generateTodoList = TRUE; bool Config::generateTestList = TRUE; +QStrList Config::aliasList; bool Config::quietFlag = FALSE; bool Config::warningFlag = TRUE; bool Config::warningUndocFlag = TRUE; @@ -361,6 +362,8 @@ static void readIncludeFile(const char *incName) <Start>"ENABLED_SECTIONS"[ \t]*"+=" { BEGIN(GetStrList); l=&Config::sectionFilterList; elemStr=""; } <Start>"GENERATE_TODOLIST"[ \t]*"=" { BEGIN(GetBool); b=&Config::generateTodoList; } <Start>"GENERATE_TESTLIST"[ \t]*"=" { BEGIN(GetBool); b=&Config::generateTestList; } +<Start>"ALIASES"[ \t]*"=" { BEGIN(GetStrList); l=&Config::aliasList; l->clear(); elemStr=""; } +<Start>"ALIASES"[ \t]*"+=" { BEGIN(GetStrList); l=&Config::aliasList; elemStr=""; } <Start>"QUIET"[ \t]*"=" { BEGIN(GetBool); b=&Config::quietFlag; } <Start>"WARNINGS"[ \t]*"=" { BEGIN(GetBool); b=&Config::warningFlag; } <Start>"WARN_IF_UNDOCUMENTED"[ \t]*"=" { BEGIN(GetBool); b=&Config::warningUndocFlag; } @@ -595,6 +598,14 @@ void dumpConfig() } printf("generateTodoList=`%d'\n",Config::generateTodoList); printf("generateTestList=`%d'\n",Config::generateTestList); + { + char *is=Config::aliasList.first(); + while (is) + { + printf("aliasList=`%s'\n",is); + is=Config::aliasList.next(); + } + } printf("# configuration options related to warning and progress messages\n"); printf("quietFlag=`%d'\n",Config::quietFlag); printf("warningFlag=`%d'\n",Config::warningFlag); @@ -817,6 +828,7 @@ void Config::init() Config::sectionFilterList.clear(); Config::generateTodoList = TRUE; Config::generateTestList = TRUE; + Config::aliasList.clear(); Config::quietFlag = FALSE; Config::warningFlag = TRUE; Config::warningUndocFlag = TRUE; @@ -1310,6 +1322,20 @@ void writeTemplateConfig(QFile *f,bool sl) if (!sl) { t << "\n"; + t << "# This tag can be used to specify a number of aliases that acts \n"; + t << "# as commands in the documentation. An alias has the form \"\\name=value\". \n"; + t << "# For example adding \"sideeffect=\\par Side Effects:\\n\" will allow you to \n"; + t << "# put the command \\sideeffect (or @sideeffect) in the documentation, which \n"; + t << "# will result in a user defined paragraph with heading \"Side Effects:\". \n"; + t << "# Predefined commands cannot be overwritten using aliases. \n"; + t << "\n"; + } + t << "ALIASES = "; + writeStringList(t,Config::aliasList); + t << "\n"; + if (!sl) + { + t << "\n"; } t << "#---------------------------------------------------------------------------\n"; t << "# configuration options related to warning and progress messages\n"; @@ -2374,6 +2400,7 @@ void substituteEnvironmentVars() substEnvVarsInString( Config::outputLanguage ); substEnvVarsInStrList( Config::stripFromPath ); substEnvVarsInStrList( Config::sectionFilterList ); + substEnvVarsInStrList( Config::aliasList ); substEnvVarsInString( Config::warnFormat ); substEnvVarsInStrList( Config::inputSources ); substEnvVarsInStrList( Config::filePatternList ); @@ -2635,6 +2662,20 @@ void checkConfig() #endif s=Config::includePath.next(); } + + // check aliases + s=Config::aliasList.first(); + while (s) + { + QRegExp re("[a-z_A-Z][a-z_A-Z0-9]*[ \t]*="); + QCString alias=s; + alias=alias.stripWhiteSpace(); + if (alias.find(re)!=0) + { + err("Illegal alias format `%s'. Use \"name=value\"\n",alias.data()); + } + s=Config::aliasList.next(); + } // check dot path if (!Config::dotPath.isEmpty()) diff --git a/src/diagram.cpp b/src/diagram.cpp index 2173f16..4808565 100644 --- a/src/diagram.cpp +++ b/src/diagram.cpp @@ -1246,8 +1246,8 @@ void ClassDiagram::writeFigure(QTextStream &output,const char *path, } -void ClassDiagram::writeImageMap(QTextStream &t,const char *path, - const char *fileName, bool generateMap) +void ClassDiagram::writeImage(QTextStream &t,const char *path, + const char *fileName, bool generateMap) { uint baseRows=base->computeRows(); uint superRows=super->computeRows(); diff --git a/src/diagram.h b/src/diagram.h index 74495b8..4338772 100644 --- a/src/diagram.h +++ b/src/diagram.h @@ -123,7 +123,7 @@ class ClassDiagram ~ClassDiagram(); void writeFigure(QTextStream &t,const char *path, const char *file); - void writeImageMap(QTextStream &t,const char *path, + void writeImage(QTextStream &t,const char *path, const char *file,bool generateMap=TRUE); private: TreeDiagram *base; @@ -90,6 +90,7 @@ static bool inAttentionBlock; static bool inParBlock; static QCString sectionRef; static bool insideVerbatim = FALSE; +static bool insidePre = FALSE; static int depthIf; //static int currentListIndentLevel; static QStack<char> currentListIndent; @@ -486,10 +487,15 @@ static void addListItemMarker(const char *marker,int dashPos,bool enumerated) int indent=0; for (i=0;i<dashPos;i++) { + //printf("Parsed[%d]=%d\n",i,marker[i]); if (marker[i]=='\t') { indent+=Config::tabSize - (indent%Config::tabSize); } + else if (marker[i]=='\n') + { + indent=0; + } else { indent++; @@ -599,6 +605,7 @@ static QCString findAndCopyImage(const char *fileName,ImageTypes type) QCString result; bool ambig; FileDef *fd; + //printf("Search for %s\n",fileName); if ((fd=findFileDef(imageNameDict,fileName,ambig))) { QFile inImage(QString(fd->absFilePath().data())); @@ -944,7 +951,7 @@ DOCPARAM ([a-z_A-Z0-9:\<\>\=\.\-]+)|("\"".*"\"") } <DocScan>{CMD}"endlink"/[^a-z_A-Z0-9] { warn(yyFileName,yyLineNr, "Warning: \\endlink without \\link " - "in documentation." + "in documentation of this entity." ); } <DocScan>{CMD}"addindex"{B}+ { @@ -1460,10 +1467,10 @@ DOCPARAM ([a-z_A-Z0-9:\<\>\=\.\-]+)|("\"".*"\"") outDoc->writeObjectLink(0,internalRefFile,internalRefAnchor,text); BEGIN(DocScan); } -<DocScan>{CMD}"ref" { +<DocScan>{CMD}"ref"/{BN} { BEGIN(DocRefName); } -<DocScan>{CMD}"refitem" { +<DocScan>{CMD}"refitem"/{BN} { BEGIN(DocRefItem); } <DocScan>{CMD}"if"/{BN} { @@ -1476,7 +1483,7 @@ DOCPARAM ([a-z_A-Z0-9:\<\>\=\.\-]+)|("\"".*"\"") { warn(yyFileName,yyLineNr, "Warning: documentation block contains \\endif without " - "matching \\if found in documentation." + "matching \\if found in documentation of this entity." ); } else @@ -1515,7 +1522,7 @@ DOCPARAM ([a-z_A-Z0-9:\<\>\=\.\-]+)|("\"".*"\"") } else if (!generateLink(*outDoc,className,yytext,TRUE,0)) { - warn(yyFileName,yyLineNr,"Warning: reference to unknown section %s!",yytext); + warn(yyFileName,yyLineNr,"Warning: reference to unknown section %s in the documentation of this entity!",yytext); //outDoc->writeBoldString(" unknown reference! "); } BEGIN(DocScan); @@ -1548,7 +1555,7 @@ DOCPARAM ([a-z_A-Z0-9:\<\>\=\.\-]+)|("\"".*"\"") } else if (!generateLink(*outDoc,className,sectionRef,TRUE,text)) { - warn(yyFileName,yyLineNr,"Warning: reference to unknown section %s!",sectionRef.data()); + warn(yyFileName,yyLineNr,"Warning: reference to unknown section %s in the documentation of this entity!",sectionRef.data()); outDoc->writeBoldString(" unknown reference! "); } BEGIN(DocScan); @@ -1566,7 +1573,7 @@ DOCPARAM ([a-z_A-Z0-9:\<\>\=\.\-]+)|("\"".*"\"") } else { - warn(yyFileName,yyLineNr,"Warning: reference to unknown section %s!",sectionRef.data()); + warn(yyFileName,yyLineNr,"Warning: reference to unknown section %s in the documentation of this entity!",sectionRef.data()); outDoc->writeBoldString(" unknown reference! "); } BEGIN(DocScan); @@ -1623,10 +1630,10 @@ DOCPARAM ([a-z_A-Z0-9:\<\>\=\.\-]+)|("\"".*"\"") BEGIN(DocScan); } <DocImage>[a-z_A-Z0-9\.\-]+ { - warn(yyFileName,yyLineNr,"Warning: %s is an unsupported output format for \\image",yytext); + warn(yyFileName,yyLineNr,"Warning: %s is an unsupported output format for \\image in the documentation of the entity",yytext); } <DocImage,DocHtmlImageName,DocLatexImageName>\n { - warn(yyFileName,yyLineNr,"Warning: invalid \\image command found!"); + warn(yyFileName,yyLineNr,"Warning: invalid \\image command found in the documentation of this entity!"); outDoc->enableAll(); BEGIN(DocScan); } @@ -1637,7 +1644,7 @@ DOCPARAM ([a-z_A-Z0-9:\<\>\=\.\-]+)|("\"".*"\"") } <DocScan>{CMD}"endcode"/[^a-z_A-Z0-9] { warn(yyFileName,yyLineNr,"Warning: \\endcode without \\code " - "in the documentation."); + "in the documentation of this entity."); } <DocScan,DocRefName>{ID}"<"[^>\ \t\n]*">"("::"{ID})+"("?[a-z_A-Z0-9,:\<\> \t\*\&]*")"? { @@ -1775,8 +1782,18 @@ DOCPARAM ([a-z_A-Z0-9:\<\>\=\.\-]+)|("\"".*"\"") /*restoreOutputListState();*/ outDoc->popGeneratorState(); } -<DocScan>"<"{PRE}{ATTR}">" { outDoc->startPreFragment(); } -<DocScan>"</"{PRE}{ATTR}">" { outDoc->endPreFragment(); } +<DocScan>"<"{PRE}{ATTR}">" { + if (insidePre) + { + warn(yyFileName,yyLineNr,"Warning in the documentation of this entity:\nNested <pre> found in the documentation of this entity!"); + } + outDoc->startPreFragment(); + insidePre=TRUE; + } +<DocScan>"</"{PRE}{ATTR}">" { + outDoc->endPreFragment(); + insidePre=FALSE; + } <DocScan>"<"{SUB}{ATTR}">" { outDoc->startSubscript(); } <DocScan>"</"{SUB}{ATTR}">" { outDoc->endSubscript(); } <DocScan>"<"{SUP}{ATTR}">" { outDoc->startSuperscript(); } @@ -1792,13 +1809,13 @@ DOCPARAM ([a-z_A-Z0-9:\<\>\=\.\-]+)|("\"".*"\"") if (currentListIndent.isEmpty()) { warn(yyFileName,yyLineNr, - "Warning: more </ol> tags than <ol> tags in the documentation." + "Warning in the documentation of this entity:\nMore </ol> tags than <ol> tags in the documentation of this entity." ); } else if (currentListIndent.top()!="O") { warn(yyFileName,yyLineNr, - "Warning: </ol> tag does not end a <ol> tag in the documentation." + "Warning in the documentation of this entity:\nThe </ol> tag does not end a <ol> tag." ); } else @@ -1814,13 +1831,13 @@ DOCPARAM ([a-z_A-Z0-9:\<\>\=\.\-]+)|("\"".*"\"") if (currentListIndent.isEmpty()) { warn(yyFileName,yyLineNr, - "Warning: more </ul> tags than <ul> tags in the documentation." + "Warning in the documentation of this entity:\nMore </ul> tags than <ul> tags." ); } else if (currentListIndent.top()!="U") { warn(yyFileName,yyLineNr, - "Warning: </ul> tag does not end a <ul> tag in the documentation." + "Warning in the documentation of this entity:\nThe </ul> tag does not end a <ul> tag." ); } else @@ -1834,7 +1851,7 @@ DOCPARAM ([a-z_A-Z0-9:\<\>\=\.\-]+)|("\"".*"\"") currentListIndent.top()=="D") { warn(yyFileName,yyLineNr, - "Warning: The <li> tag can only be used inside a <ul> ... </ul> or a <ol> ... </ol> block." + "Warning in the documentation of this entity:\nThe <li> tag can only be used inside a <ul> ... </ul> or a <ol> ... </ol> block." ); } else @@ -1855,13 +1872,13 @@ DOCPARAM ([a-z_A-Z0-9:\<\>\=\.\-]+)|("\"".*"\"") if (currentListIndent.isEmpty()) { warn(yyFileName,yyLineNr, - "Warning: more </dl> tags than <dl> tags in the documentation." + "Warning in the documentation of this entity:\nMore </dl> tags than <dl> tags in the documentation." ); } else if (currentListIndent.top()!="D") { warn(yyFileName,yyLineNr, - "Warning: </dl> tag does not end a <dl> tag in the documentation." + "Warning in the documentation of this entity:\nThe </dl> tag does not end a <dl> tag in the documentation." ); } else @@ -1875,7 +1892,7 @@ DOCPARAM ([a-z_A-Z0-9:\<\>\=\.\-]+)|("\"".*"\"") currentListIndent.top()!="D") { warn(yyFileName,yyLineNr, - "Warning: The <dt> tag can only be used inside a <dl> ... </dl> block." + "Warning in the documentation of this entity:\nThe <dt> tag can only be used inside a <dl> ... </dl> block." ); } else @@ -1889,7 +1906,7 @@ DOCPARAM ([a-z_A-Z0-9:\<\>\=\.\-]+)|("\"".*"\"") currentListIndent.top()!="D") { warn(yyFileName,yyLineNr, - "Warning: The <dd> tag can only be used inside a <dl> ... </dl> block." + "Warning in the documentation of this entity:\nThe <dd> tag can only be used inside a <dl> ... </dl> block." ); } else @@ -1935,7 +1952,7 @@ DOCPARAM ([a-z_A-Z0-9:\<\>\=\.\-]+)|("\"".*"\"") <DocScan>{CMD}("\\"|"@"|"<"|">"|"&"|"$"|"#"|"%") { outDoc->docify(&yytext[1]); } -<DocScan>"%"[a-zA-Z_0-9\-]+ { +<DocScan,DocEmphasis,DocBold,DocCode>"%"[a-zA-Z_0-9\-]+ { outDoc->docify(yytext+1); } <DocEmphasis>[a-z_A-Z][a-z_A-Z:0-9<>&\-=^%~!\[\]()|\*/]*"("[a-z_A-Z0-9,:\<\> \t\*\&]*")" { @@ -2012,7 +2029,7 @@ DOCPARAM ([a-z_A-Z0-9:\<\>\=\.\-]+)|("\"".*"\"") outDoc->newParagraph(); } if (inBlock()) endBlock(); - addListItemMarker(strrchr(yytext,'\n')+1,dashPos,isEnumerated); + addListItemMarker(yytext,dashPos+1,isEnumerated); } <DocScan>({B}*"\n"){2,}{B}* { // new paragraph if (insideArgumentList) @@ -2034,7 +2051,32 @@ DOCPARAM ([a-z_A-Z0-9:\<\>\=\.\-]+)|("\"".*"\"") outDoc->writeChar(' '); } <DocScan>\n?{B}* { - outDoc->writeChar(' '); + if (insidePre) + { + outDoc->docify(yytext); + } + else + { + outDoc->writeChar(' '); + } + } +<DocScan>"\\"[a-z_A-Z][a-z_A-Z0-9]*[\\] { // directory type of text + outDoc->docify(yytext); + } +<DocScan>{CMD}[a-z_A-Z][a-z_A-Z0-9]* { + QCString *pValue=aliasDict[yytext+1]; + if (pValue) + { + int i,l=pValue->length(); + for (i=l-1;i>=0;i--) + { + unput(pValue->at(i)); + } + } + else + { + warn(yyFileName,yyLineNr,"Warning in the documentation of this entity:\nUnknown command `%s' found.",yytext); + } } <DocCode,DocEmphasis,DocBold,DocScan,Text>[a-z_A-Z0-9]+ { outDoc->docify(yytext); diff --git a/src/dot.cpp b/src/dot.cpp index ccf991f..d81d09d 100644 --- a/src/dot.cpp +++ b/src/dot.cpp @@ -1043,13 +1043,27 @@ static void findMaximalDotGraph(DotNode *root, QCString DotClassGraph::diskName() const { - return m_diskName + "_coll_graph"; + QString result=m_diskName.copy(); + switch (m_graphType) + { + case Implementation: + result+="_coll_graph"; + break; + case Interface: + result+="_intf_graph"; + break; + case Inheritance: + result+="_inherit_graph"; + break; + } + return result; } void DotClassGraph::writeGraph(QTextStream &out, GraphOutputFormat format, const char *path, - bool isTBRank) + bool isTBRank, + bool generateImageMap) { QDir d(path); // store the original directory @@ -1094,34 +1108,37 @@ void DotClassGraph::writeGraph(QTextStream &out, QDir::setCurrent(oldDir); return; } - // run dot again to create an image map - dotCmd.sprintf("%sdot -Timap \"%s.dot\" -o \"%s.map\"", - Config::dotPath.data(),baseName.data(),baseName.data()); - if (iSystem(dotCmd)!=0) + if (generateImageMap) { - err("Error: Problems running dot. Check your installation!\n"); - QDir::setCurrent(oldDir); - return; - } - out << "<p><center><img src=\"" << baseName << ".gif\" border=\"0\" usemap=\"#" + // run dot again to create an image map + dotCmd.sprintf("%sdot -Timap \"%s.dot\" -o \"%s.map\"", + Config::dotPath.data(),baseName.data(),baseName.data()); + if (iSystem(dotCmd)!=0) + { + err("Error: Problems running dot. Check your installation!\n"); + QDir::setCurrent(oldDir); + return; + } + out << "<p><center><img src=\"" << baseName << ".gif\" border=\"0\" usemap=\"#" << m_startNode->m_label << "_" << mapName << "\" alt=\""; - switch (m_graphType) - { - case Implementation: - out << "Collaboration graph"; - break; - case Interface: - out << "Interface dependency graph"; - break; - case Inheritance: - out << "Inheritance graph"; - break; + switch (m_graphType) + { + case Implementation: + out << "Collaboration graph"; + break; + case Interface: + out << "Interface dependency graph"; + break; + case Inheritance: + out << "Inheritance graph"; + break; + } + out << "\"></center>" << endl; + out << "<map name=\"" << m_startNode->m_label << "_" << mapName << "\">" << endl; + convertMapFile(out,baseName+".map"); + out << "</map>" << endl; + thisDir.remove(baseName+".map"); } - out << "\"></center>" << endl; - out << "<map name=\"" << m_startNode->m_label << "_" << mapName << "\">" << endl; - convertMapFile(out,baseName+".map"); - out << "</map><p>" << endl; - thisDir.remove(baseName+".map"); } else if (format==EPS) // run dot to create a .eps image { @@ -1251,12 +1268,16 @@ DotInclDepGraph::~DotInclDepGraph() QCString DotInclDepGraph::diskName() const { - return m_diskName + "_incldep"; + QCString result=m_diskName.copy(); + if (m_inverse) result+="_dep"; + result+="_incl"; + return result; } void DotInclDepGraph::writeGraph(QTextStream &out, GraphOutputFormat format, - const char *path + const char *path, + bool generateImageMap ) { QDir d(path); @@ -1292,25 +1313,28 @@ void DotInclDepGraph::writeGraph(QTextStream &out, return; } - // run dot again to create an image map - dotCmd.sprintf("%sdot -Timap \"%s.dot\" -o \"%s.map\"", - Config::dotPath.data(),baseName.data(),baseName.data()); - if (iSystem(dotCmd)!=0) + if (generateImageMap) { - err("Problems running dot. Check your installation!\n"); - QDir::setCurrent(oldDir); - return; - } + // run dot again to create an image map + dotCmd.sprintf("%sdot -Timap \"%s.dot\" -o \"%s.map\"", + Config::dotPath.data(),baseName.data(),baseName.data()); + if (iSystem(dotCmd)!=0) + { + err("Problems running dot. Check your installation!\n"); + QDir::setCurrent(oldDir); + return; + } - out << "<p><center><img src=\"" << baseName << ".gif\" border=\"0\" usemap=\"#" + out << "<p><center><img src=\"" << baseName << ".gif\" border=\"0\" usemap=\"#" << mapName << "_map\" alt=\""; - if (m_inverse) out << "Included by dependency graph"; else out << "Include dependency graph"; - out << "\">"; - out << "</center>" << endl; - out << "<map name=\"" << mapName << "_map\">" << endl; - convertMapFile(out,baseName+".map"); - out << "</map><p>" << endl; - thisDir.remove(baseName+".map"); + if (m_inverse) out << "Included by dependency graph"; else out << "Include dependency graph"; + out << "\">"; + out << "</center>" << endl; + out << "<map name=\"" << mapName << "_map\">" << endl; + convertMapFile(out,baseName+".map"); + out << "</map>" << endl; + thisDir.remove(baseName+".map"); + } } else if (format==EPS) { @@ -120,7 +120,7 @@ class DotClassGraph ~DotClassGraph(); bool isTrivial() const; void writeGraph(QTextStream &t,GraphOutputFormat f,const char *path, - bool TBRank=TRUE); + bool TBRank=TRUE,bool imageMap=TRUE); QCString diskName() const; private: @@ -141,7 +141,8 @@ class DotInclDepGraph public: DotInclDepGraph(FileDef *fd,bool inverse=FALSE); ~DotInclDepGraph(); - void writeGraph(QTextStream &t, GraphOutputFormat f,const char *path); + void writeGraph(QTextStream &t, GraphOutputFormat f,const char *path, + bool writeImageMap=TRUE); bool isTrivial() const; QCString diskName() const; diff --git a/src/doxygen.cpp b/src/doxygen.cpp index c18ba20..981d7d6 100644 --- a/src/doxygen.cpp +++ b/src/doxygen.cpp @@ -81,9 +81,10 @@ ClassDict classDict(1009); // all documented classes NamespaceDict namespaceDict(257); // all documented namespaces MemberNameDict memberNameDict(10007); // all class member names MemberNameDict functionNameDict(10007); // all functions -//StringDict substituteDict(1009); // class name substitutes +//StringDict substituteDict(1009); // class name substitutes SectionDict sectionDict(257); // all page sections StringDict excludeNameDict(1009); // sections +StringDict aliasDict(257); // aliases FileNameDict *inputNameDict; // sections FileNameDict *includeNameDict; // include names FileNameDict *exampleNameDict; // examples @@ -1081,8 +1082,9 @@ static MemberDef *addVariableToClass( MemberName *mn=memberNameDict[name]; if (mn) { - MemberDef *md=mn->first(); - while (md) + MemberNameIterator mni(*mn); + MemberDef *md; + for (mni.toFirst();(md=mni.current());++mni) { if (md->getClassDef()==cd && root->type==md->typeString()) // member already in the scope @@ -1090,7 +1092,6 @@ static MemberDef *addVariableToClass( addMemberDocs(root,md,def,0,FALSE); return md; } - md=mn->next(); } } // new member variable, typedef or enum value @@ -1212,8 +1213,9 @@ static MemberDef *addVariableToFile( MemberName *mn=functionNameDict[name]; if (mn) { - MemberDef *md=mn->first(); - while (md) + MemberNameIterator mni(*mn); + MemberDef *md; + for (mni.toFirst();(md=mni.current());++mni) { QCString nscope=removeAnnonymousScopes(scope); NamespaceDef *nd=0; @@ -1228,7 +1230,6 @@ static MemberDef *addVariableToFile( md->setRefItems(root->todoId,root->testId); return md; } - md=mn->next(); } } // new global variable, enum value or typedef @@ -1690,8 +1691,9 @@ static void buildMemberList(Entry *root) if ((mn=functionNameDict[rname])) { //printf("--> function %s already found!\n",rname.data()); - MemberDef *md=mn->first(); - while (md && !found) + MemberNameIterator mni(*mn); + MemberDef *md; + for (mni.toFirst();((md=mni.current()) && !found);++mni) { NamespaceDef *nd = md->getNamespaceDef(); NamespaceDef *rnd = 0; @@ -1709,7 +1711,7 @@ static void buildMemberList(Entry *root) ) { // see if we need to create a new member - found=nsName==rnsName && // members are in the same namespace + found=nsName==rnsName || // members are in the same namespace ((fd!=0 && // no external reference fd->absFilePath()==root->fileName // prototype in the same file ) || @@ -1735,7 +1737,6 @@ static void buildMemberList(Entry *root) } md->addSectionsToDefinition(root->anchors); } - md=mn->next(); } } if (!found) /* global function is unique with respect to the file */ @@ -2680,9 +2681,10 @@ static bool findUnrelatedFunction(Entry *root, { Debug::print(Debug::FindMembers,0,"3. Found function scope\n"); //int count=0; - MemberDef *md=mn->first(); + MemberNameIterator mni(*mn); + MemberDef *md; bool found=FALSE; - while (md) + for (mni.toFirst();(md=mni.current()) && !found;++mni) { bool ambig; NamespaceDef *nd=md->getNamespaceDef(); @@ -2716,7 +2718,6 @@ static bool findUnrelatedFunction(Entry *root, found=TRUE; } } - md=mn->next(); } if (!found) // no match { @@ -2727,11 +2728,9 @@ static bool findUnrelatedFunction(Entry *root, if (mn->count()>0) { warn_cont("Possible candidates:\n"); - md=mn->first(); - while (md) + for (mni.toFirst();(md=mni.current());++mni) { warn_cont(" %s\n",md->declaration()); - md=mn->next(); } } } @@ -3185,7 +3184,6 @@ static void findMember(Entry *root,QCString funcDecl,QCString related,bool overl if (!className.isEmpty()) // class name is valid { int count=0; - //MemberDef *md=mn->first(); // for each member with that name MemberNameIterator mni(*mn); MemberDef *md; for (mni.toFirst();(md=mni.current());++mni) @@ -3328,37 +3326,22 @@ static void findMember(Entry *root,QCString funcDecl,QCString related,bool overl int candidates=0; if (mn->count()>0) { - md=mn->first(); - while (md) + for (mni.toFirst();(md=mni.current());++mni) { ClassDef *cd=md->getClassDef(); if (cd!=0 && cd->name()==className) candidates++; - md=mn->next(); } } if (candidates>0) { warn_cont("Possible candidates:\n"); - md=mn->first(); - while (md) + for (mni.toFirst();(md=mni.current());++mni) { ClassDef *cd=md->getClassDef(); if (cd!=0 && cd->name()==className) { - warn_cont(" %s",md->declaration()); -#if 0 - if (cd->name().at(0)!='@') - { - warn_cont(" in class %s",cd->name().data()); - } - if (!md->getDefFileName().isEmpty() && md->getDefLine()!=-1) - { - warn_cont(" defined at line %d of file %s",md->getDefLine(),md->getDefFileName().data()); - } -#endif - warn_cont("\n"); + warn_cont(" %s\n",md->declaration()); } - md=mn->next(); } } } @@ -3368,18 +3351,18 @@ static void findMember(Entry *root,QCString funcDecl,QCString related,bool overl // for unique overloaded member we allow the class to be // omitted, this is to be Qt compatable. Using this should // however be avoided, because it is error prone - MemberDef *md=mn->first(); + MemberNameIterator mni(*mn); + MemberDef *md=mni.toFirst(); ASSERT(md); ClassDef *cd=md->getClassDef(); ASSERT(cd); QCString className=cd->name().copy(); - md=mn->next(); + ++mni; bool unique=TRUE; - while (md) + for (;(md=mni.current());++mni) { ClassDef *cd=md->getClassDef(); if (className!=cd->name()) unique=FALSE; - md=mn->next(); } if (unique) { @@ -3812,8 +3795,12 @@ static void findEnums(Entry *root) if (!e->name.isEmpty() && (fmn=(*mnd)[e->name])) // get list of members with the same name as the field { - MemberDef *fmd=fmn->first(); - while (fmd) // search for the scope with the right name + MemberNameIterator fmni(*fmn); + MemberDef *fmd; + for (fmni.toFirst(); + (fmd=fmni.current()) && fmd->isEnumValue(); + ++fmni + ) // search for the scope with the right name { if (nd && !nd->name().isEmpty() && nd->name().at(0)!='@') { @@ -3842,7 +3829,6 @@ static void findEnums(Entry *root) fmd->setEnumScope(md); // cross ref with enum name } } - fmd=fmn->next(); } } } @@ -3900,8 +3886,9 @@ static void findEnumDocumentation(Entry *root) MemberName *mn=memberNameDict[name]; if (mn) { - MemberDef *md=mn->first(); - while (md && !found) + MemberNameIterator mni(*mn); + MemberDef *md; + for (mni.toFirst();(md=mni.current()) && !found;++mni) { ClassDef *cd=md->getClassDef(); if (cd && cd->name()==className) @@ -3927,7 +3914,6 @@ static void findEnumDocumentation(Entry *root) md->addSectionsToDefinition(root->anchors); found=TRUE; } - md=mn->next(); } } else @@ -3939,7 +3925,7 @@ static void findEnumDocumentation(Entry *root) { MemberDef *md; MemberName *mn=functionNameDict[name]; - if (mn && (md=mn->first())) + if (mn && (md=mn->getFirst())) { md->setDocumentation(root->doc); md->setBriefDescription(root->brief); @@ -3981,16 +3967,16 @@ static void findDEV(const MemberNameList &mnl) { if (md->isEnumerate()) // member is an enum { - QList<MemberDef> *fmdl = md->enumFieldList(); + MemberList *fmdl = md->enumFieldList(); int documentedEnumValues=0; if (fmdl) // enum has values { - MemberDef *fmd=fmdl->first(); + MemberListIterator fmni(*fmdl); + MemberDef *fmd; // for each enum value - while (fmd) + for (fmni.toFirst();(fmd=fmni.current());++fmni) { if (fmd->isLinkableInProject()) documentedEnumValues++; - fmd=fmdl->next(); } } // at least one enum value is documented @@ -4016,19 +4002,20 @@ static void findDocumentedEnumValues() static void computeMemberRelations() { - MemberName *mn=memberNameList.first(); - while (mn) // for each member name + MemberNameListIterator mnli(memberNameList); + MemberName *mn; + for ( ; (mn=mnli.current()) ; ++mnli ) // for each member name { MemberNameIterator mdi(*mn); - for ( ; mdi.current() ; ++mdi) // for each member with a specific arg list + MemberDef *md; + for ( ; (md=mdi.current()) ; ++mdi ) // for each member with a specific arg list { - MemberDef *md=mdi.current(); MemberNameIterator bmdi(*mn); - for ( ; bmdi.current() ; ++bmdi) // for each other member with that signature + MemberDef *bmd; + for ( ; (bmd=bmdi.current()) ; ++bmdi ) // for each other member with that signature { - MemberDef *bmd=bmdi.current(); ClassDef *bmcd = bmd->getClassDef(); - ClassDef *mcd = md->getClassDef(); + ClassDef *mcd = md->getClassDef(); //printf("Check relation between `%s'::`%s' and `%s'::`%s'\n", // mcd->name().data(),md->name().data(), // bmcd->name().data(),bmd->name().data() @@ -4060,7 +4047,6 @@ static void computeMemberRelations() } } } - mn=memberNameList.next(); } } @@ -4108,11 +4094,13 @@ static void generateFileSources() if (inputNameList.count()>0) { - FileName *fn=inputNameList.first(); - while (fn) + FileNameListIterator fnli(inputNameList); + FileName *fn; + for (;(fn=fnli.current());++fnli) { - FileDef *fd=fn->first(); - while (fd) + FileNameIterator fni(*fn); + FileDef *fd; + for (;(fd=fni.current());++fni) { bool src = !fd->isReference() && (fd->generateSource() || Config::sourceBrowseFlag); @@ -4121,9 +4109,7 @@ static void generateFileSources() msg("Generating code for file %s...\n",fd->name().data()); fd->writeSource(*outputList); } - fd=fn->next(); } - fn=inputNameList.next(); } } } @@ -4136,11 +4122,13 @@ static void generateFileDocs() if (inputNameList.count()>0) { - FileName *fn=inputNameList.first(); - while (fn) + FileNameListIterator fnli(inputNameList); + FileName *fn; + for (fnli.toFirst();(fn=fnli.current());++fnli) { - FileDef *fd=fn->first(); - while (fd) + FileNameIterator fni(*fn); + FileDef *fd; + for (fni.toFirst();(fd=fni.current());++fni) { bool doc = fd->isLinkableInProject(); if (doc) @@ -4149,9 +4137,7 @@ static void generateFileDocs() fd->writeDocumentation(*outputList); } - fd=fn->next(); } - fn=inputNameList.next(); } } } @@ -5728,6 +5714,38 @@ int main(int argc,char **argv) } s=Config::expandAsDefinedList.next(); } + + // add aliases to a dictionary + aliasDict.setAutoDelete(TRUE); + s=Config::aliasList.first(); + while (s) + { + if (aliasDict[s]==0) + { + QCString alias=s; + int i=alias.find('='); + if (i>0) + { + QCString name=alias.left(i).stripWhiteSpace(); + QCString value=alias.right(alias.length()-i-1); + value=substitute(value,"\\n","\n"); + //printf("Alias: found name=`%s' value=`%s'\n",name.data(),value.data()); + if (!name.isEmpty()) + { + QCString *dn=aliasDict[name]; + if (dn==0) // insert new alias + { + aliasDict.insert(name,new QCString(value)); + } + else // overwrite previous alias + { + *dn=value; + } + } + } + } + s=Config::aliasList.next(); + } BufStr input(inputSize+1); // Add one byte extra for \0 termination diff --git a/src/doxygen.h b/src/doxygen.h index 6229ac5..7b41698 100644 --- a/src/doxygen.h +++ b/src/doxygen.h @@ -99,6 +99,7 @@ extern FormulaList formulaList; extern FormulaDict formulaDict; extern FormulaDict formulaNameDict; extern StringDict tagDestinationDict; +extern StringDict aliasDict; extern QIntDict<QCString> memberHeaderDict; // dictionary of the member groups heading extern QIntDict<QCString> memberDocDict; // dictionary of the member groups heading extern QDict<void> expandAsDefinedDict; diff --git a/src/doxygen.pro.in b/src/doxygen.pro.in index 417dea8..6de8edd 100644 --- a/src/doxygen.pro.in +++ b/src/doxygen.pro.in @@ -26,7 +26,7 @@ HEADERS = doxygen.h scanner.h doc.h classdef.h classlist.h memberdef.h \ translator_nl.h translator_se.h translator_cz.h translator_fr.h \ translator_it.h formula.h debug.h membergroup.h htmlhelp.h \ translator_ru.h translator_pl.h dot.h rtfgen.h xml.h xml_dtd.h \ - reflist.h page.h sortdict.h + reflist.h page.h sortdict.h translator_hu.h SOURCES = doxygen.cpp scanner.cpp doc.cpp classdef.cpp classlist.cpp \ memberdef.cpp membername.cpp index.cpp memberlist.cpp \ entry.cpp logos.cpp instdox.cpp message.cpp code.cpp \ diff --git a/src/htmlgen.cpp b/src/htmlgen.cpp index 4667631..e8cdc15 100644 --- a/src/htmlgen.cpp +++ b/src/htmlgen.cpp @@ -577,7 +577,7 @@ void HtmlGenerator::endClassDiagram(ClassDiagram &d, << " border=\"0\"></center>" << endl << "<map name=\"" << name << "_map\">" << endl; - d.writeImageMap(t,dir,fileName); + d.writeImage(t,dir,fileName); } void HtmlGenerator::startColorFont(uchar red,uchar green,uchar blue) diff --git a/src/language.cpp b/src/language.cpp index 186edae..31928a4 100644 --- a/src/language.cpp +++ b/src/language.cpp @@ -31,6 +31,7 @@ #include "translator_hr.h" #include "translator_pl.h" #include "translator_pt.h" +#include "translator_hu.h" #endif #define L_EQUAL(a) !stricmp(langName,a) @@ -100,6 +101,10 @@ bool setTranslator(const char *langName) { theTranslator=new TranslatorPortuguese; } + else if (L_EQUAL("hungarian")) + { + theTranslator=new TranslatorHungarian; + } #endif else // use the default language (i.e. english) { diff --git a/src/latexgen.h b/src/latexgen.h index b102f76..8a3a341 100644 --- a/src/latexgen.h +++ b/src/latexgen.h @@ -108,7 +108,7 @@ class LatexGenerator : public OutputGenerator void writeRuler() { t << endl << endl; /*t << "\\vspace{0.4cm}\\hrule\\vspace{0.2cm}" << endl; */ } void writeAnchor(const char *fileName,const char *name); - void startCodeFragment() { t << "\\small\\begin{verbatim}"; } + void startCodeFragment() { t << "\\footnotesize\\begin{verbatim}"; } void endCodeFragment() { t << "\\end{verbatim}\\normalsize " << endl; } void startPreFragment() { t << "\\small\\begin{alltt}"; } void endPreFragment() { t << "\\end{alltt}\\normalsize " << endl; } diff --git a/src/memberdef.cpp b/src/memberdef.cpp index 266c45c..80c5ce6 100644 --- a/src/memberdef.cpp +++ b/src/memberdef.cpp @@ -972,10 +972,11 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol, rmd = rmd->reimplements(); } - if (isStatic() || protection()!=Public || - lvirt!=Normal || isSignal() || isFriend() || - isRelated() || isSlot() || - getMemberSpecifiers()!=0 + if (protection()!=Public || lvirt!=Normal || + isFriend() || isRelated() || isExplicit() || + isMutable() || (isInline() && Config::inlineInfoFlag) || + isSignal() || isSlot() || + isStatic() ) { // write the member specifier list diff --git a/src/rtfgen.cpp b/src/rtfgen.cpp index 8fef647..cb35eeb 100644 --- a/src/rtfgen.cpp +++ b/src/rtfgen.cpp @@ -1737,7 +1737,7 @@ void RTFGenerator::endClassDiagram(ClassDiagram &d, newParagraph(); // create a gif file - d.writeImageMap(t,dir,fileName,FALSE); + d.writeImage(t,dir,fileName,FALSE); // display the file t << "{" << endl; @@ -2160,11 +2160,8 @@ void RTFGenerator::startDotGraph() void RTFGenerator::endDotGraph(DotClassGraph &g) { newParagraph(); - DBG_RTF(t <<"{\\comment This would be an image map..." << endl) - g.writeGraph(t,GIF,Config::rtfOutputDir); - - t << "}" << endl; + g.writeGraph(t,GIF,Config::rtfOutputDir,TRUE,FALSE); // display the file t << "{" << endl; @@ -2182,11 +2179,8 @@ void RTFGenerator::startInclDepGraph() void RTFGenerator::endInclDepGraph(DotInclDepGraph &g) { newParagraph(); - DBG_RTF(t <<"{\\comment This would be an image map..." << endl) - g.writeGraph(t,GIF,Config::rtfOutputDir); - - t << "}" << endl; + g.writeGraph(t,GIF,Config::rtfOutputDir,FALSE); //QCString diskName = g.diskName(); diff --git a/src/translator_hr.h b/src/translator_hr.h index 593b7ca..8b619e3 100644 --- a/src/translator_hr.h +++ b/src/translator_hr.h @@ -13,10 +13,16 @@ * Documents produced by Doxygen are derivative works derived from the * input used in their production; they are not affected by this license. * - */ - +*/ // translation by Boris Bralo <boris.bralo@zg.tel.hr> - +// Updates: +// -------- +// 2000/08/20 +// - Better handling of ISO-8859-2/ WIN 1250 stuff based on (actualy stolen from :-)) Czech translations +// implemented by Petr Prikryl (prikrylp@skil.cz). +// As opposed to Czech translation this one assumes that Doxygen strings are written in Linux ( it's true, +// I don't have QT pro licence ) , and uses ISOToWin function when built in WIN32 +// #ifndef TRANSLATOR_HR_H #define TRANSLATOR_HR_H @@ -24,249 +30,333 @@ class TranslatorCroatian : public Translator { + private: + /*! to avoid macro redefinition from translator_cz.h */ + /* Speed loss is actualy less than in Czech version due to + fewer QCString copying. + */ + inline QCString& decode(const QCString& sInput) + { +#ifdef _WIN32 + return ISOToWin(sInput); +#else + return const_cast<QCString&>(sInput); +#endif + } + /*! returns the string converted from windows-1250 to iso-8859-2 */ + QCString WinToISO(const QCString& sInput) + { + // The conversion table for characters >127 + // + static const char WinToISOTab[] = { + '\x80', '\x81', '\x82', '\x83', '\x84', '\x85', '\x86', '\x87', + '\x88', '\x89', '\xA9', '\x8B', '\xA6', '\xAB', '\xAE', '\xAC', + '\x90', '\x91', '\x92', '\x93', '\x94', '\x2E', '\x96', '\x97', + '\x98', '\x99', '\xB9', '\x9B', '\xB6', '\xBB', '\xBE', '\xBC', + '\xA0', '\x20', '\x20', '\xA3', '\xA4', '\xA1', '\xA6', '\xA7', + '\x22', '\xA9', '\xAA', '\x3C', '\xAC', '\x2D', '\xAE', '\xAF', + '\x2E', '\x2B', '\x20', '\xB3', '\x27', '\x75', '\xB6', '\xB7', + '\x20', '\xB1', '\xBA', '\x3E', '\xA5', '\x22', '\xB5', '\xBF', + '\xC0', '\xC1', '\xC2', '\xC3', '\xC4', '\xC5', '\xC6', '\xC7', + '\xC8', '\xC9', '\xCA', '\xCB', '\xCC', '\xCD', '\xCE', '\xCF', + '\xD0', '\xD1', '\xD2', '\xD3', '\xD4', '\xD5', '\xD6', '\xD7', + '\xD8', '\xD9', '\xDA', '\xDB', '\xDC', '\xDD', '\xDE', '\xDF', + '\xE0', '\xE1', '\xE2', '\xE3', '\xE4', '\xE5', '\xE6', '\xE7', + '\xE8', '\xE9', '\xEA', '\xEB', '\xEC', '\xED', '\xEE', '\xEF', + '\xF0', '\xF1', '\xF2', '\xF3', '\xF4', '\xF5', '\xF6', '\x2D', + '\xF8', '\xF9', '\xFA', '\xFB', '\xFC', '\xFD', '\xFE', '\xFF', + '\0' + }; + + QCString result; + int len = sInput.length(); + + for (int i = 0; i < len; ++i) + { + unsigned int c = sInput[i]; + result += (c > 127) ? WinToISOTab[c & 0x7F] : c; + } + return result; + } + + /*! returns the string converted from iso-8859-2 to windows-1250 */ + QCString ISOToWin(const QCString& sInput) + { + // The conversion table for characters >127 + // + static const char ISOToWinTab[] = { + '\x80', '\x81', '\x82', '\x83', '\x84', '\x85', '\x86', '\x87', + '\x88', '\x89', '\x8A', '\x8B', '\x8C', '\x8D', '\x8E', '\x8F', + '\x90', '\x91', '\x92', '\x93', '\x94', '\x95', '\x96', '\x97', + '\x98', '\x99', '\x9A', '\x9B', '\x9C', '\x9D', '\x9E', '\x9F', + '\xA0', '\xA5', '\xA2', '\xA3', '\xA4', '\xBC', '\x8C', '\xA7', + '\xA8', '\x8A', '\xAA', '\x8D', '\x8F', '\xAD', '\x8E', '\xAF', + '\xB0', '\xB9', '\xB2', '\xB3', '\xB4', '\xBE', '\x9C', '\xB7', + '\xB8', '\x9A', '\xBA', '\x9D', '\x9F', '\xBD', '\x9E', '\xBF', + '\xC0', '\xC1', '\xC2', '\xC3', '\xC4', '\xC5', '\xC6', '\xC7', + '\xC8', '\xC9', '\xCA', '\xCB', '\xCC', '\xCD', '\xCE', '\xCF', + '\xD0', '\xD1', '\xD2', '\xD3', '\xD4', '\xD5', '\xD6', '\xD7', + '\xD8', '\xD9', '\xDA', '\xDB', '\xDC', '\xDD', '\xDE', '\xDF', + '\xE0', '\xE1', '\xE2', '\xE3', '\xE4', '\xE5', '\xE6', '\xE7', + '\xE8', '\xE9', '\xEA', '\xEB', '\xEC', '\xED', '\xEE', '\xEF', + '\xF0', '\xF1', '\xF2', '\xF3', '\xF4', '\xF5', '\xF6', '\xF7', + '\xF8', '\xF9', '\xFA', '\xFB', '\xFC', '\xFD', '\xFE', '\xFF', + '\0' + }; + QCString result; + int len = sInput.length(); + + for (int i = 0; i < len; ++i) + { + unsigned int c = sInput[i]; + result += (c > 127) ? ISOToWinTab[c & 0x7F] : c; + } + return result; + } public: QCString idLanguage() { return "croatian"; } - QCString latexBabelPackage() - { return "croatian"; } QCString idLanguageCharset() - { #ifdef _WIN32 - return "windows-1250"; + { return "windows-1250"; } #else - return "iso-8859-2"; + { return "iso-8859-2"; } #endif - } + QCString latexBabelPackage() + { return "croatian"; } QCString trRelatedFunctions() - { return "Povezane funkcije"; } + { return decode("Povezane funkcije"); } QCString trRelatedSubscript() - { return "(To nisu member funkcije.)"; } + { return decode("(To nisu member funkcije.)"); } QCString trDetailedDescription() - { return "Detaljno objaąnjenje"; } + { return decode("Detaljno objaąnjenje"); } QCString trMemberTypedefDocumentation() - { return "Dokumentacija <code> typedef </code> članova"; } + { return decode("Dokumentacija typedef članova"); } QCString trMemberEnumerationDocumentation() - { return "Dokumentacija <code> enum </code> članova"; } + { return decode("Dokumentacija enum članova"); } QCString trEnumerationValueDocumentation() - { return "Dokumentacija <code> enum </code> vrijednosti"; } + { return decode("Dokumentacija enum vrijednosti"); } QCString trMemberFunctionDocumentation() - { return "Dokumentacija funkcija"; } + { return decode("Dokumentacija funkcija"); } QCString trMemberDataDocumentation() - { return "Documentacija varijabli"; } + { return decode("Documentacija varijabli"); } QCString trGeneratedFrom(const char *s,bool single) { - QCString result=(QCString)"Dokumentacija za "+s+ - "je generirana iz "; - if (single) result+="datoteke :"; else result+="slijedećih datoteka:"; + QCString result= decode("Dokumentacija za ")+s+ + decode("je generirana iz "); + if (single) + result+= decode("datoteke :"); + else + result+= decode("slijedećih datoteka:"); return result; } QCString trMore() - { return "Opąirnije..."; } + { return decode("Opąirnije..."); } QCString trListOfAllMembers() - { return "Popis svih članova."; } + { return decode("Popis svih članova."); } QCString trMemberList() - { return "Popis članova."; } + { return decode("Popis članova."); } QCString trThisIsTheListOfAllMembers() - { return "Ovo je popis svih članova"; } + { return decode("Ovo je popis svih članova"); } QCString trIncludingInheritedMembers() - { return ", uključujući naslijeđene članove."; } + { return decode(", uključujući naslijeđene članove."); } QCString trGeneratedAutomatically(const char *s) - { QCString result="generirano automatski Doxygen-om"; - if (s) result+=(QCString)" za "+s; - result+=" iz programskog koda."; + { QCString result=decode("generirano automatski Doxygen-om"); + if (s) result+=(QCString)decode(" za ")+s; + result+=decode(" iz programskog koda."); return result; } QCString trEnumName() - { return "enum ime"; } + { return decode("enum ime"); } QCString trEnumValue() - { return "enum vrijednost"; } + { return decode("enum vrijednost"); } QCString trDefinedIn() - { return "definirano u"; } + { return decode("definirano u"); } QCString trVerbatimText(const char *f) - { return (QCString)"Ovo je citirani tekst iz include datoteke "+f+"."; } + { return (QCString)decode("Ovo je citirani tekst iz include datoteke ")+f+"."; } QCString trModules() - { return "Moduli"; } + { return decode("Moduli"); } QCString trClassHierarchy() - { return "Stablo klasa"; } + { return decode("Stablo klasa"); } QCString trCompoundList() - { return "Sve klase"; } + { return decode("Sve klase"); } QCString trFileList() - { return "Popis datoteka"; } + { return decode("Popis datoteka"); } QCString trHeaderFiles() - { return "Header datoteke"; } + { return decode("Header datoteke"); } QCString trCompoundMembers() - { return "Svi članovi"; } + { return decode("Svi članovi"); } QCString trFileMembers() - { return "Članovi(memberi) u datoteci"; } + { return decode("Članovi(memberi) u datoteci"); } QCString trRelatedPages() - { return "Povezane stranice"; } + { return decode("Povezane stranice"); } QCString trExamples() - { return "Primjeri"; } + { return decode("Primjeri"); } QCString trSearch() - { return "Traľi"; } + { return decode("Traľi"); } QCString trClassHierarchyDescription() - { return "Stablo naslijeđivanja je posloľeno " - "pribliľno po abecedi:"; + { return decode("Stablo naslijeđivanja je posloľeno " + "pribliľno po abecedi:"); } QCString trFileListDescription(bool extractAll) { - QCString result="Popis svih "; - if (!extractAll) result+="dokumentiranih "; - result+="datoteka, s kratkim opisom:"; + QCString result=decode("Popis svih "); + if (!extractAll) result+=decode("dokumentiranih "); + result+=decode("datoteka, s kratkim opisom:"); return result; } QCString trCompoundListDescription() - { return "Popis svih klasa, unija i struktura " - "s kratkim opisom :"; + { return decode("Popis svih klasa, unija i struktura " + "s kratkim opisom :"); } QCString trCompoundMembersDescription(bool extractAll) { - QCString result="Popis svih "; - if (!extractAll) result+="dokumentiranih "; - result+="članova klasa s linkovima na "; - if (extractAll) result+="dokumentaciju svakog člana:"; - else result+="dokumentaciju klase :"; + QCString result=decode("Popis svih "); + if (!extractAll) result+=decode("dokumentiranih "); + result+=decode("članova klasa s linkovima na "); + if (extractAll) result+=decode("dokumentaciju svakog člana:"); + else result+=decode("dokumentaciju klase :"); return result; } QCString trFileMembersDescription(bool extractAll) { - QCString result="Popis svih "; - if (!extractAll) result+="dokumentiranih "; - result+="članova s linkovima na "; - if (extractAll) result+="dokumentaciju datoteke u kojima se nalaze:"; - else result+="datoteke u kojima se nalaze:"; + QCString result=decode("Popis svih "); + if (!extractAll) result+=decode("dokumentiranih "); + result+=decode("članova s linkovima na "); + if (extractAll) result+=decode("dokumentaciju datoteke u kojima se nalaze:"); + else result+=decode("datoteke u kojima se nalaze:"); return result; } QCString trHeaderFilesDescription() - { return "Popis header datoteka koje čine API :"; } + { return decode("Popis header datoteka koje čine API :"); } QCString trExamplesDescription() - { return "Popis primjera :"; } + { return decode("Popis primjera :"); } QCString trRelatedPagesDescription() - { return "Popis povezanih stranica:"; } + { return decode("Popis povezanih stranica:"); } QCString trModulesDescription() - { return "Popis svih modula:"; } + { return decode("Popis svih modula:"); } QCString trNoDescriptionAvailable() - { return "Opis nije dostupan"; } + { return decode("Opis nije dostupan"); } QCString trDocumentation() - { return "Dokumentacija"; } + { return decode("Dokumentacija"); } QCString trModuleIndex() - { return "Indeks modula"; } + { return decode("Indeks modula"); } QCString trHierarchicalIndex() - { return "Hijerarhijski indeks"; } + { return decode("Hijerarhijski indeks"); } QCString trCompoundIndex() - { return "Skupni indeks"; } + { return decode("Skupni indeks"); } QCString trFileIndex() - { return "Indeks datoteka"; } + { return decode("Indeks datoteka"); } QCString trModuleDocumentation() - { return "Dokumentacija modula"; } + { return decode("Dokumentacija modula"); } QCString trClassDocumentation() - { return "Dokumentacija klasa"; } + { return decode("Dokumentacija klasa"); } QCString trFileDocumentation() - { return "Dokumentacija datoteka"; } + { return decode("Dokumentacija datoteka"); } QCString trExampleDocumentation() - { return "Dokumentacija primjera"; } + { return decode("Dokumentacija primjera"); } QCString trPageDocumentation() - { return "Dokumentacija za povezane stranice"; } + { return decode("Dokumentacija za povezane stranice"); } QCString trReferenceManual() - { return "Priručnik"; } + { return decode("Priručnik"); } QCString trDefines() - { return "Define-ovi"; } + { return decode("Define-ovi"); } QCString trFuncProtos() - { return "Prototipi funkcija"; } + { return decode("Prototipi funkcija"); } QCString trTypedefs() - { return "Typedef-ovi"; } + { return decode("Typedef-ovi"); } QCString trEnumerations() - { return "Enumeracije"; } + { return decode("Enumeracije"); } QCString trFunctions() - { return "Funkcije"; } + { return decode("Funkcije"); } QCString trVariables() - { return "Varijable"; } + { return decode("Varijable"); } QCString trEnumerationValues() - { return "Vrijednosti enum-ova"; } + { return decode("Vrijednosti enum-ova"); } QCString trAuthor() - { return "autor"; } + { return decode("autor"); } QCString trDefineDocumentation() - { return "Dokumentacija define-a"; } + { return decode("Dokumentacija define-a"); } QCString trFunctionPrototypeDocumentation() - { return "Dokumentacija prototipa funkcije"; } + { return decode("Dokumentacija prototipa funkcije"); } QCString trTypedefDocumentation() - { return "Dokumentacija typedef-a"; } + { return decode("Dokumentacija typedef-a"); } QCString trEnumerationTypeDocumentation() - { return "Dokumentacija enum tipa"; } + { return decode("Dokumentacija enum tipa"); } QCString trFunctionDocumentation() - { return "Dokumentacije funkcijs"; } + { return decode("Dokumentacije funkcijs"); } QCString trVariableDocumentation() - { return "Dokumentacija varijable"; } + { return decode("Dokumentacija varijable"); } QCString trCompounds() - { return "Strukture"; } + { return decode("Strukture"); } QCString trFiles() - { return "Datoteke"; } + { return decode("Datoteke"); } QCString trGeneratedAt(const char *date,const char *projName) { - QCString result=(QCString)"Generirano "+date; - if (projName) result+=(QCString)" projekt: "+projName; - result+=(QCString)" generator: "; + QCString result=(QCString)decode("Generirano ")+date; + if (projName) result+=(QCString)decode(" projekt: ")+projName; + result+=(QCString)decode(" generator: "); return result; } QCString trWrittenBy() { - return "napisao "; + return decode("napisao "); } QCString trClassDiagram(const char *clName) { - return (QCString)"Dijagram klasa za "+clName; + return decode("Dijagram klasa za ")+clName; } QCString trForInternalUseOnly() - { return "Isključivo za internu uporabu."; } + { return decode("Isključivo za internu uporabu."); } QCString trReimplementedForInternalReasons() - { return "Reimplementirano zbog internih razloga; " - "Nema utjecaja na API."; + { return decode("Reimplementirano zbog internih razloga; " + "Nema utjecaja na API."); } QCString trWarning() - { return "Upozorenje"; } + { return decode("Upozorenje"); } QCString trBugsAndLimitations() - { return "Greąke i ograničenja"; } + { return decode("Greąke i ograničenja"); } QCString trVersion() - { return "Verzija"; } + { return decode("Verzija"); } QCString trDate() - { return "Datum"; } + { return decode("Datum"); } QCString trAuthors() - { return "Autor(i)"; } + { return decode("Autor(i)"); } QCString trReturns() - { return "Povratne vrijednosti"; } + { return decode("Povratne vrijednosti"); } QCString trSeeAlso() - { return "Vidi također"; } + { return decode("Vidi također"); } QCString trParameters() - { return "Parametri"; } + { return decode("Parametri"); } QCString trExceptions() - { return "Iznimke"; } + { return decode("Iznimke"); } QCString trGeneratedBy() - { return "Generirao"; } + { return decode("Generirao"); } ////////////////////////////////////////////////////////////////////////// // new since 0.49-990307 ////////////////////////////////////////////////////////////////////////// QCString trNamespaceList() - { return "Popis namespace-ova"; } + { return decode("Popis namespace-ova"); } QCString trNamespaceListDescription(bool extractAll) { - QCString result="Popis svih "; - if (!extractAll) result+="dokumentiranih "; - result+="namespace-ova s kratkim opisom:"; + QCString result=decode("Popis svih "); + if (!extractAll) result+=decode("dokumentiranih "); + result+=decode("namespace-ova s kratkim opisom:"); return result; } QCString trFriends() - { return "Friend-ovi "; } + { return decode("Friend-ovi "); } ////////////////////////////////////////////////////////////////////////// // new since 0.49-990405 ////////////////////////////////////////////////////////////////////////// QCString trRelatedFunctionDocumentation() - { return "Dokumentacija povezanih funkcija"; } + { return decode("Dokumentacija povezanih funkcija"); } ////////////////////////////////////////////////////////////////////////// // new since 0.49-990425 @@ -277,14 +367,14 @@ class TranslatorCroatian : public Translator bool /*isTemplate*/) // used as the title of the HTML page of a class/struct/union { - QCString result="Opis "; + QCString result=decode("Opis "); switch(compType) { - case ClassDef::Class: result+=" klase "; break; - case ClassDef::Struct: result+=" strukture "; break; - case ClassDef::Union: result+=" unije "; break; - case ClassDef::Interface: result+=" sučelja (interface) "; break; - case ClassDef::Exception: result+=" iznimke (exception) "; break; + case ClassDef::Class: result+=decode(" klase "); break; + case ClassDef::Struct: result+=decode(" strukture "); break; + case ClassDef::Union: result+=decode(" unije "); break; + case ClassDef::Interface: result+=decode(" sučelja (interface) "); break; + case ClassDef::Exception: result+=decode(" iznimke (exception) "); break; } result += (QCString)clName; @@ -293,14 +383,14 @@ class TranslatorCroatian : public Translator QCString trFileReference(const char *fileName) // used as the title of the HTML page of a file { - QCString result="Opis datoteke "; + QCString result=decode("Opis datoteke "); result+=fileName; return result; } QCString trNamespaceReference(const char *namespaceName) // used as the title of the HTML page of a namespace { - QCString result ="Opis namespace-a "; + QCString result =decode("Opis namespace-a "); result+=namespaceName; return result; @@ -308,25 +398,25 @@ class TranslatorCroatian : public Translator // these are for the member sections of a class, struct or union QCString trPublicMembers() - { return "Public članovi"; } + { return decode("Public članovi"); } QCString trPublicSlots() - { return "Public slotovi"; } + { return decode("Public slotovi"); } QCString trSignals() - { return "Signali"; } + { return decode("Signali"); } QCString trStaticPublicMembers() - { return "Static public članovi"; } + { return decode("Static public članovi"); } QCString trProtectedMembers() - { return "Protected članovi"; } + { return decode("Protected članovi"); } QCString trProtectedSlots() - { return "Protected slotovi"; } + { return decode("Protected slotovi"); } QCString trStaticProtectedMembers() - { return "Static protected članovi"; } + { return decode("Static protected članovi"); } QCString trPrivateMembers() - { return "Private članovi"; } + { return decode("Private članovi"); } QCString trPrivateSlots() - { return "Private slotovi"; } + { return decode("Private slotovi"); } QCString trStaticPrivateMembers() - { return "Static private članovi"; } + { return decode("Static private članovi"); } // end of member sections QCString trWriteList(int numEntries) @@ -357,50 +447,50 @@ class TranslatorCroatian : public Translator // used in class documentation to produce a list of base classes, // if class diagrams are disabled. { - return "Naslijeđuje od "+trWriteList(numEntries)+"."; + return decode("Naslijeđuje od "+trWriteList(numEntries)+"."); } QCString trInheritedByList(int numEntries) // used in class documentation to produce a list of super classes, // if class diagrams are disabled. { - return "Naslijeđena u "+trWriteList(numEntries)+"."; + return decode("Naslijeđena u "+trWriteList(numEntries)+"."); } QCString trReimplementedFromList(int numEntries) // used in member documentation blocks to produce a list of // members that are hidden by this one. { - return "Reimplementirano od "+trWriteList(numEntries)+"."; + return decode("Reimplementirano od "+trWriteList(numEntries)+"."); } QCString trReimplementedInList(int numEntries) { // used in member documentation blocks to produce a list of // all member that overwrite the implementation of this member. - return "Reimplementacija u "+trWriteList(numEntries)+"."; + return decode("Reimplementacija u "+trWriteList(numEntries)+"."); } QCString trNamespaceMembers() // This is put above each page as a link to all members of namespaces. - { return "Namespace članovi"; } + { return decode("Namespace članovi"); } QCString trNamespaceMemberDescription(bool extractAll) // This is an introduction to the page with all namespace members { - QCString result="Lista svih "; - if (!extractAll) result+="dokumentiranih "; - result+="namespace članova s linkovima na "; + QCString result=decode("Lista svih "); + if (!extractAll) result+=decode("dokumentiranih "); + result+=decode("namespace članova s linkovima na "); if (extractAll) - result+="namespace dokumentaciju svakog člana:"; + result+=decode("namespace dokumentaciju svakog člana:"); else - result+="namespace kojima pripadaju:"; + result+=decode("namespace kojima pripadaju:"); return result; } QCString trNamespaceIndex() // This is used in LaTeX as the title of the chapter with the // index of all namespaces. - { return "Indeks namespace-a"; } + { return decode("Indeks namespace-a"); } QCString trNamespaceDocumentation() // This is used in LaTeX as the title of the chapter containing // the documentation of all namespaces. - { return "Dokumentacija namespace-a"; } + { return decode("Dokumentacija namespace-a"); } ////////////////////////////////////////////////////////////////////////// // new since 0.49-990728 @@ -413,16 +503,16 @@ class TranslatorCroatian : public Translator bool single) { // here s is one of " Class", " Struct" or " Union" // single is true implies a single file - QCString result=(QCString)"Dokumentacija ove "; + QCString result=(QCString)decode("Dokumentacija ove "); switch(compType) { - case ClassDef::Class: result+="klase"; break; - case ClassDef::Struct: result+="strukture"; break; - case ClassDef::Union: result+="unije"; break; - case ClassDef::Interface: result+="sučelja (interface)"; break; - case ClassDef::Exception: result+="iznimke (exception)"; break; + case ClassDef::Class: result+=decode("klase"); break; + case ClassDef::Struct: result+=decode("strukture"); break; + case ClassDef::Union: result+=decode("unije"); break; + case ClassDef::Interface: result+=decode("sučelja (interface)"); break; + case ClassDef::Exception: result+=decode("iznimke (exception)"); break; } - result+=" je generirana iz datotek"; + result+=decode(" je generirana iz datotek"); if (single) result+="e :"; else result+="a :"; return result; } @@ -431,7 +521,7 @@ class TranslatorCroatian : public Translator * list. */ QCString trAlphabeticalList() - { return "Abecedni popis"; } + { return decode("Abecedni popis"); } ////////////////////////////////////////////////////////////////////////// // new since 0.49-990901 @@ -439,18 +529,18 @@ class TranslatorCroatian : public Translator /*! This is used as the heading text for the retval command. */ QCString trReturnValues() - { return "Povratna vrijednost"; } + { return decode("Povratna vrijednost"); } /*! This is in the (quick) index as a link to the main page (index.html) */ QCString trMainPage() - { return "Glavna stranica"; } + { return decode("Glavna stranica"); } /*! This is used in references to page that are put in the LaTeX * documentation. It should be an abbreviation of the word page. */ QCString trPageAbbreviation() - { return "str."; } + { return decode("str."); } ////////////////////////////////////////////////////////////////////////// // new since 0.49-991106 @@ -458,15 +548,15 @@ class TranslatorCroatian : public Translator QCString trSources() { - return "Izvorne datoteke"; + return decode("Izvorne datoteke"); } QCString trDefinedAtLineInSourceFile() { - return "Definirano u liniji @0 datoteke @1."; + return decode("Definirano u liniji @0 datoteke @1."); } QCString trDefinedInSourceFile() { - return "Definirano u datoteci @0."; + return decode("Definirano u datoteci @0."); } ////////////////////////////////////////////////////////////////////////// @@ -475,7 +565,7 @@ class TranslatorCroatian : public Translator QCString trDeprecated() { - return "Zastarjelo"; + return decode("Zastarjelo"); } ////////////////////////////////////////////////////////////////////////// @@ -485,68 +575,68 @@ class TranslatorCroatian : public Translator /*! this text is put before a collaboration diagram */ QCString trCollaborationDiagram(const char *clName) { - return (QCString)"Kolaboracijski dijagram za "+clName+":"; + return decode( (QCString)"Kolaboracijski dijagram za "+clName+ ":"); } /*! this text is put before an include dependency graph */ QCString trInclDepGraph(const char *fName) { - return (QCString)"Graf include međuovisnosti za "+fName+":"; + return decode((QCString)"Graf include međuovisnosti za "+fName+":"); } /*! header that is put before the list of constructor/destructors. */ QCString trConstructorDocumentation() { - return "Dokumentacija konstruktora i destruktora "; + return decode("Dokumentacija konstruktora i destruktora "); } /*! Used in the file documentation to point to the corresponding sources. */ QCString trGotoSourceCode() { - return "Izvorni kod"; + return decode("Izvorni kod"); } /*! Used in the file sources to point to the corresponding documentation. */ QCString trGotoDocumentation() { - return "Dokumenacija za ovu datoteku."; + return decode("Dokumenacija za ovu datoteku."); } /*! Text for the \pre command */ QCString trPrecondition() { - return "Preduvjeti"; + return decode("Preduvjeti"); } /*! Text for the \post command */ QCString trPostcondition() { - return "Postuvjeti"; + return decode("Postuvjeti"); } /*! Text for the \invariant command */ QCString trInvariant() { - return "Invarijanta"; + return decode("Invarijanta"); } /*! Text shown before a multi-line variable/enum initialization */ QCString trInitialValue() { - return "Početna vrijednost:"; + return decode("Početna vrijednost:"); } /*! Text used the source code in the file index */ QCString trCode() { - return "kod"; + return decode("kod"); } QCString trGraphicalHierarchy() { - return "Grafičko stablo klasa"; + return decode("Grafičko stablo klasa"); } QCString trGotoGraphicalHierarchy() { - return "Grafičko stablo klasa"; + return decode("Grafičko stablo klasa"); } QCString trGotoTextualHierarchy() { - return "Tekstualno stablo klasa"; + return decode("Tekstualno stablo klasa"); } QCString trPageIndex() { - return "Indeks stranice"; + return decode("Indeks stranice"); } ////////////////////////////////////////////////////////////////////////// @@ -555,43 +645,43 @@ class TranslatorCroatian : public Translator QCString trNote() { - return "Primjedba"; + return decode("Primjedba"); } QCString trPublicTypes() { - return "Public tipovi"; + return decode("Public tipovi"); } QCString trPublicAttribs() { - return "Public atributi"; + return decode("Public atributi"); } QCString trStaticPublicAttribs() { - return "Static public atributi"; + return decode("Static public atributi"); } QCString trProtectedTypes() { - return "Protected tipovi"; + return decode("Protected tipovi"); } QCString trProtectedAttribs() { - return "Protected atributi"; + return decode("Protected atributi"); } QCString trStaticProtectedAttribs() { - return "Static protected atributi"; + return decode("Static protected atributi"); } QCString trPrivateTypes() { - return "Private tipovi"; + return decode("Private tipovi"); } QCString trPrivateAttribs() { - return "Private atributi"; + return decode("Private atributi"); } QCString trStaticPrivateAttribs() { - return "Static private atributi"; + return decode("Static private atributi"); } ////////////////////////////////////////////////////////////////////////// // new since 1.1.3 @@ -600,12 +690,12 @@ class TranslatorCroatian : public Translator /*! Used as a marker that is put before a todo item */ virtual QCString trTodo() { - return "Za uraditi"; + return decode("Za uraditi"); } /*! Used as the header of the todo list */ virtual QCString trTodoList() { - return "Ostalo za uraditi"; + return decode("Ostalo za uraditi"); } ////////////////////////////////////////////////////////////////////////// @@ -614,31 +704,108 @@ class TranslatorCroatian : public Translator virtual QCString trReferencedBy() { - return "Referencirano od"; + return decode("Referencirano od"); } virtual QCString trRemarks() { - return "Napomene"; + return decode("Napomene"); } virtual QCString trAttention() { -#ifdef _WIN32 - return "Pa?nja"; -#else - return "Paľnja"; -#endif + return decode("Paľnja"); } virtual QCString trInclByDepGraph() { - return "Ovaj graf pokazuje koje datoteke izravno " - "ili neizravno uključuju ovu datoteku:"; + return decode("Ovaj graf pokazuje koje datoteke izravno " + "ili neizravno uključuju ovu datoteku:"); } virtual QCString trSince() { - return "Od"; + return decode("Od"); } +////////////////////////////////////////////////////////////////////////// +// new since 1.1.5 +////////////////////////////////////////////////////////////////////////// + /*! title of the graph legend page */ + virtual QCString trLegendTitle() + { + return decode("Legenda"); + } + /*! page explaining how the dot graph's should be interpreted */ + virtual QCString trLegendDocs() + { + return + decode( "Ova stranica objaąnjava kako interpretirati grafikone koje je generirao " + "doxygen.<p>\n" + "Na primjer:\n" + "\\code\n" + "/*! Nevidljiva klasa (neće stati na graf date visine) */\n" + "class Invisible { };\n\n" + "/*! Odrezana klasa, inheritance je skriven (klase se vidi na grafu, ali ne i sve bazne klase) */\n" + "class Truncated : public Invisible { };\n\n" + "/* Nedokumentirana klasa */\n" + "class Undocumented { };\n\n" + "/*! Klasa koja je naslijeđena public */\n" + "class PublicBase : public Truncated { };\n\n" + "/*! Klasa koje je naslijeđena protected */\n" + "class ProtectedBase { };\n\n" + "/*! Klasa koje je naslijeđena private */\n" + "class PrivateBase { };\n\n" + "/*! Klasa koja se koristi agregacijom */\n" + "class Used { };\n\n" + "/*! Super klasa koja naslijeđuje/koristi ostale */\n" + "class Inherited : public PublicBase,\n" + " protected ProtectedBase,\n" + " private PrivateBase,\n" + " public Undocumented\n" + "{\n" + " private:\n" + " Used *m_usedClass;\n" + "};\n" + "\\endcode\n" + "Ako je \\c MAX_DOT_GRAPH_HEIGHT tag u konfiguracijskoj datoteci " + "postavljen na 200 gornje veze će rezultirati grafikonom:" + "<p><center><img src=\"graph_legend.gif\"></center>\n" + "<p>\n" + "Pravokutnici imaju slijedeće značenje:\n" + "<ul>\n" + "<li>Puni crni predstavlja klasu za koji je generiran graf.\n" + "<li>Pravokutnik s crnim rubom predstavlja dokumentiranu klasu.\n" + "<li>Pravokutnik s sivim rubom predstavlja nedokumentiranu klasu.\n" + "<li>Pravokutnik s crvenim rubom predstavlja dokumentiranu klasu\n" + "Za koju nije prikazan graf naslijeđivanja. Graf je odrezan " + "ako ne stane unutar određenih granica." + "</ul>\n" + "Strelice imaju slijedeće značenje:\n" + "<ul>\n" + "<li>Tamnoplava strelica označava public naslijeđivanje.\n" + "<li>Tamnozelena strelica označava protected naslijeđivanje.\n" + "<li>Tamnocrvena strelica označava private naslijeđivanje.\n" + "<li>Ljubičasta isprekidana strelica se koristi za agregate vezu. " + "Strelica je označena imenom varijable.\n" + "</ul>\n"); + } + /*! text for the link to the legend page */ + virtual QCString trLegend() + { + return decode("legenda"); + } +////////////////////////////////////////////////////////////////////////// +// new since 1.2.0 +////////////////////////////////////////////////////////////////////////// + + /*! Used as a marker that is put before a test item */ + virtual QCString trTest() + { + return "Test"; + } + /*! Used as the header of the test list */ + virtual QCString trTestList() + { + return "Test lista"; + } }; #endif diff --git a/src/translator_hu.h b/src/translator_hu.h new file mode 100644 index 0000000..7140242 --- /dev/null +++ b/src/translator_hu.h @@ -0,0 +1,987 @@ +/****************************************************************************** + * + * + * + * Copyright (C) 1997-2000 by Dimitri van Heesch. + * + * Permission to use, copy, modify, and distribute this software and its + * documentation under the terms of the GNU General Public License is hereby + * granted. No representations are made about the suitability of this software + * for any purpose. It is provided "as is" without express or implied warranty. + * See the GNU General Public License for more details. + * + * Documents produced by Doxygen are derivative works derived from the + * input used in their production; they are not affected by this license. + * + */ + +#ifndef TRANSLATOR_HU_H +#define TRANSLATOR_HU_H + +#include "translator.h" + +class TranslatorHungarian : public Translator +{ + public: + + // --- Language contol methods ------------------- + QCString idLanguage() + { return "hungarian"; } + /*! Used to get the command(s) for the language support. This method + * was designed for languages which do not prefer babel package. + * If this methods returns empty string, then the latexBabelPackage() + * method is used to generate the command for using the babel package. + */ + QCString latexLanguageSupportCommand() + { + return ""; + } + /*! returns the name of the package that is included by LaTeX */ + QCString latexBabelPackage() + { return ""; } + + /*! return the language charset. This will be used for the HTML output */ + QCString idLanguageCharset() + { + return "iso-8859-2"; + } + + // --- Language translation methods ------------------- + + /*! used in the compound documentation before a list of related functions. */ + QCString trRelatedFunctions() + { return "Kapcsolódó függvények"; } + + /*! subscript for the related functions. */ + QCString trRelatedSubscript() + { return "(Figyelem! Ezek a függvények nem tagjai az osztálynak!)"; } + + /*! header that is put before the detailed description of files, classes and namespaces. */ + QCString trDetailedDescription() + { return "Részletes leírás"; } + + /*! header that is put before the list of typedefs. */ + QCString trMemberTypedefDocumentation() + { return "Osztálytag típusdefiníciók dokumentációja"; } + + /*! header that is put before the list of enumerations. */ + QCString trMemberEnumerationDocumentation() + { return "Osztálytag enumerációk dokumentációja"; } + + /*! header that is put before the list of member functions. */ + QCString trMemberFunctionDocumentation() + { return "Osztálytag függvények (metódusok) dokumentációja"; } + + /*! header that is put before the list of member attributes. */ + QCString trMemberDataDocumentation() + { return "Osztálytag adatok dokumentációja"; } + + /*! this is the text of a link put after brief descriptions. */ + QCString trMore() + { return "Részletek..."; } + + /*! put in the class documentation */ + QCString trListOfAllMembers() + { return "Osztálytagok listája."; } + + /*! used as the title of the "list of all members" page of a class */ + QCString trMemberList() + { return "Osztálytagok listája"; } + + /*! this is the first part of a sentence that is followed by a class name */ + QCString trThisIsTheListOfAllMembers() + { return "A(z) "; } + + /*! this is the remainder of the sentence after the class name */ + QCString trIncludingInheritedMembers() + { return " osztály tagjainak teljes listája, az örökölt tagokkal együtt."; } + + /*! this is put at the author sections at the bottom of man pages. + * parameter s is name of the project name. + */ + QCString trGeneratedAutomatically(const char *s) + { QCString result="Ezt a dokumentációt a Doxygen készítette"; + if (s) result+=(QCString)" a(z) "+s+(QCString)" projekthez"; + result+=" a forráskódból."; + return result; + } + + /*! put after an enum name in the list of all members */ + QCString trEnumName() + { return "enumeráció neve"; } + + /*! put after an enum value in the list of all members */ + QCString trEnumValue() + { return "enumeráció értéke"; } + + /*! put after an undocumented member in the list of all members */ + QCString trDefinedIn() + { return "definiálva itt:"; } + + /*! put as in introduction in the verbatim header file of a class. + * parameter f is the name of the include file. + */ + QCString trVerbatimText(const char *f) + { return (QCString)"Ez a(z) "+f+" definíciós fájl pontos tartalma."; } + + // quick reference sections + + /*! This is put above each page as a link to the list of all groups of + * compounds or files (see the \group command). + */ + QCString trModules() + { return "Modulok"; } + + /*! This is put above each page as a link to the class hierarchy */ + QCString trClassHierarchy() + { return "Osztályhierarchia"; } + + /*! This is put above each page as a link to the list of annotated classes */ + QCString trCompoundList() + { return "Összetevők listája"; } + + /*! This is put above each page as a link to the list of documented files */ + QCString trFileList() + { return "Fájlok listája"; } + + /*! This is put above each page as a link to the list of all verbatim headers */ + QCString trHeaderFiles() + { return "Definíciós fájlok"; } + + /*! This is put above each page as a link to all members of compounds. */ + QCString trCompoundMembers() + { return "Osztályok összetevői"; } + + /*! This is put above each page as a link to all members of files. */ + QCString trFileMembers() + { return "Fájlok elemei"; } + + /*! This is put above each page as a link to all related pages. */ + QCString trRelatedPages() + { return "Kapcsolódó lapok"; } + + /*! This is put above each page as a link to all examples. */ + QCString trExamples() + { return "Példák"; } + + /*! This is put above each page as a link to the search engine. */ + QCString trSearch() + { return "Keresés"; } + + /*! This is an introduction to the class hierarchy. */ + QCString trClassHierarchyDescription() + { return "Ez a leszármaztatási lista hozzávetőleg, " + "de nem szigorúan véve, ábécé sorrendbe rendezett:"; + } + + /*! This is an introduction to the list with all files. */ + QCString trFileListDescription(bool extractAll) + { + QCString result="Ez az összes "; + if (!extractAll) result+="doumentált "; + result+="fájl listája rövid leírásokkal:"; + return result; + } + + /*! This is an introduction to the annotated compound list. */ + QCString trCompoundListDescription() + { return "Ez az osztályok, struktúrák, uniók és interfészek " + "listája rövid leírásokkal:"; + } + + /*! This is an introduction to the page with all class members. */ + QCString trCompoundMembersDescription(bool extractAll) + { + QCString result="Ez az összes "; + if (!extractAll) result+="dokumentált "; + result+="osztály összetevő listája "; + if (extractAll) + result+="hivatkozással a hozzájuk tartózó osztály dokumentációra:"; + else + result+="az őket tartalmazó osztály megjelölésével:"; + return result; + } + + /*! This is an introduction to the page with all file members. */ + QCString trFileMembersDescription(bool extractAll) + { + QCString result="Ez az összes "; + if (!extractAll) result+="dokumentált "; + result+="fájl elem listája "; + if (extractAll) + result+="hivatkozással a hozzájuk tartózó fájl dokumentációra:"; + else + result+="az őket tartalmazó fájl megjelölésével:"; + return result; + } + + /*! This is an introduction to the page with the list of all header files. */ + QCString trHeaderFilesDescription() + { return "Ezek a Programozói Interfészt (API) alkotó definíciós fájlok:"; } + + /*! This is an introduction to the page with the list of all examples */ + QCString trExamplesDescription() + { return "Ez a példák listája:"; } + + /*! This is an introduction to the page with the list of related pages */ + QCString trRelatedPagesDescription() + { return "Ez a kapcsolódó dokumentációk listája:"; } + + /*! This is an introduction to the page with the list of class/file groups */ + QCString trModulesDescription() + { return "Ez a modulok listája:"; } + + /*! This sentences is used in the annotated class/file lists if no brief + * description is given. + */ + QCString trNoDescriptionAvailable() + { return "Nincs hozzá leírás"; } + + // index titles (the project name is prepended for these) + + + /*! This is used in HTML as the title of index.html. */ + QCString trDocumentation() + { return "Dokumentáció"; } + + /*! This is used in LaTeX as the title of the chapter with the + * index of all groups. + */ + QCString trModuleIndex() + { return "Modul index"; } + + /*! This is used in LaTeX as the title of the chapter with the + * class hierarchy. + */ + QCString trHierarchicalIndex() + { return "Hierarchikus index"; } + + /*! This is used in LaTeX as the title of the chapter with the + * annotated compound index. + */ + QCString trCompoundIndex() + { return "Összetevők indexe"; } + + /*! This is used in LaTeX as the title of the chapter with the + * list of all files. + */ + QCString trFileIndex() + { return "Fájl index"; } + + /*! This is used in LaTeX as the title of the chapter containing + * the documentation of all groups. + */ + QCString trModuleDocumentation() + { return "Modul documentáció"; } + + /*! This is used in LaTeX as the title of the chapter containing + * the documentation of all classes, structs and unions. + */ + QCString trClassDocumentation() + { return "Osztály documentatáció"; } + + /*! This is used in LaTeX as the title of the chapter containing + * the documentation of all files. + */ + QCString trFileDocumentation() + { return "Fájl documentatáció"; } + + /*! This is used in LaTeX as the title of the chapter containing + * the documentation of all examples. + */ + QCString trExampleDocumentation() + { return "Példák documentatációja"; } + + /*! This is used in LaTeX as the title of the chapter containing + * the documentation of all related pages. + */ + QCString trPageDocumentation() + { return "Kapcsolódó lapok documentációja"; } + + /*! This is used in LaTeX as the title of the document */ + QCString trReferenceManual() + { return "Referencia kézikönyv"; } + + /*! This is used in the documentation of a file as a header before the + * list of defines + */ + QCString trDefines() + { return "Definíciók"; } + + /*! This is used in the documentation of a file as a header before the + * list of function prototypes + */ + QCString trFuncProtos() + { return "Függvény prototípusok"; } + + /*! This is used in the documentation of a file as a header before the + * list of typedefs + */ + QCString trTypedefs() + { return "Típusdefiníciók"; } + + /*! This is used in the documentation of a file as a header before the + * list of enumerations + */ + QCString trEnumerations() + { return "Enumerációk"; } + + /*! This is used in the documentation of a file as a header before the + * list of (global) functions + */ + QCString trFunctions() + { return "Függvények"; } + + /*! This is used in the documentation of a file as a header before the + * list of (global) variables + */ + QCString trVariables() + { return "Változók"; } + + /*! This is used in the documentation of a file as a header before the + * list of (global) variables + */ + QCString trEnumerationValues() + { return "Enumeráció értékek"; } + + /*! This is used in man pages as the author section. */ + QCString trAuthor() + { return "Szerző"; } + + /*! This is used in the documentation of a file before the list of + * documentation blocks for defines + */ + QCString trDefineDocumentation() + { return "Definíciók dokumentációja"; } + + /*! This is used in the documentation of a file/namespace before the list + * of documentation blocks for function prototypes + */ + QCString trFunctionPrototypeDocumentation() + { return "Függvény prototípusok documentációja"; } + + /*! This is used in the documentation of a file/namespace before the list + * of documentation blocks for typedefs + */ + QCString trTypedefDocumentation() + { return "Típusdefiníciók documentációja"; } + + /*! This is used in the documentation of a file/namespace before the list + * of documentation blocks for enumeration types + */ + QCString trEnumerationTypeDocumentation() + { return "Enumerációk documentációja"; } + + /*! This is used in the documentation of a file/namespace before the list + * of documentation blocks for enumeration values + */ + QCString trEnumerationValueDocumentation() + { return "Enumeráció értékek documentációja"; } + + /*! This is used in the documentation of a file/namespace before the list + * of documentation blocks for functions + */ + QCString trFunctionDocumentation() + { return "Függvények dokumentációja"; } + + /*! This is used in the documentation of a file/namespace before the list + * of documentation blocks for variables + */ + QCString trVariableDocumentation() + { return "Változók documentációja"; } + + /*! This is used in the documentation of a file/namespace/group before + * the list of links to documented compounds + */ + QCString trCompounds() + { return "Összetevők"; } + + /*! This is used in the documentation of a group before the list of + * links to documented files + */ + QCString trFiles() + { return "Fájlok"; } + + /*! This is used in the standard footer of each page and indicates when + * the page was generated + */ + QCString trGeneratedAt(const char *date,const char *projName) + { + QCString result=(QCString)""; + if (projName) result+=(QCString)"Projekt: "+projName; + result+=(QCString)" Készült: "+date+" Készítette: "; + return result; + } + /*! This is part of the sentence used in the standard footer of each page. + */ + QCString trWrittenBy() + { + return " melyet írt "; + } + + /*! this text is put before a class diagram */ + QCString trClassDiagram(const char *clName) + { + return clName+(QCString)" osztály származtatási diagramja"; + } + + /*! this text is generated when the \internal command is used. */ + QCString trForInternalUseOnly() + { return "CSAK BELSŐ HASZNÁLATRA!"; } + + /*! this text is generated when the \reimp command is used. */ + QCString trReimplementedForInternalReasons() + { return "Belső okok miatt újraimplementálva, az API-t nem érinti."; } + + /*! this text is generated when the \warning command is used. */ + QCString trWarning() + { return "Figyelmeztetés"; } + + /*! this text is generated when the \bug command is used. */ + QCString trBugsAndLimitations() + { return "Hibák és korlátozások"; } + + /*! this text is generated when the \version command is used. */ + QCString trVersion() + { return "Verzió"; } + + /*! this text is generated when the \date command is used. */ + QCString trDate() + { return "Dátum"; } + + /*! this text is generated when the \author command is used. */ + QCString trAuthors() + { return "Szerző(k)"; } + + /*! this text is generated when the \return command is used. */ + QCString trReturns() + { return "Visszaadott érték"; } + + /*! this text is generated when the \sa command is used. */ + QCString trSeeAlso() + { return "Lásd még"; } + + /*! this text is generated when the \param command is used. */ + QCString trParameters() + { return "Paraméterek"; } + + /*! this text is generated when the \exception command is used. */ + QCString trExceptions() + { return "Kivételek"; } + + /*! this text is used in the title page of a LaTeX document. */ + QCString trGeneratedBy() + { return "Készítette"; } + + // new since 0.49-990307 + + /*! used as the title of page containing all the index of all namespaces. */ + QCString trNamespaceList() + { return "Névtér lista"; } + + /*! used as an introduction to the namespace list */ + QCString trNamespaceListDescription(bool extractAll) + { + QCString result="Ez az összes "; + if (!extractAll) result+="dokumentált "; + result+="névtér listája rövid leírásokkal:"; + return result; + } + + /*! used in the class documentation as a header before the list of all + * friends of a class + */ + QCString trFriends() + { return "Barátok"; } + +////////////////////////////////////////////////////////////////////////// +// new since 0.49-990405 +////////////////////////////////////////////////////////////////////////// + + /*! used in the class documentation as a header before the list of all + * related classes + */ + QCString trRelatedFunctionDocumentation() + { return "Barát és kapcsolódó függvények dokumentációja"; } + +////////////////////////////////////////////////////////////////////////// +// new since 0.49-990425 +////////////////////////////////////////////////////////////////////////// + + /*! used as the title of the HTML page of a class/struct/union */ + QCString trCompoundReference(const char *clName, + ClassDef::CompoundType compType, + bool isTemplate) + { + QCString result=(QCString)clName; + switch(compType) + { + case ClassDef::Class: result+=" osztály"; break; + case ClassDef::Struct: result+=" struktúra"; break; + case ClassDef::Union: result+=" unió"; break; + case ClassDef::Interface: result+=" interfész"; break; + case ClassDef::Exception: result+=" kivétel"; break; + } + if (isTemplate) result+=" sablon"; + result+=" referencia"; + return result; + } + + /*! used as the title of the HTML page of a file */ + QCString trFileReference(const char *fileName) + { + QCString result=fileName; + result+=" fájl referencia"; + return result; + } + + /*! used as the title of the HTML page of a namespace */ + QCString trNamespaceReference(const char *namespaceName) + { + QCString result=namespaceName; + result+=" névtér reference"; + return result; + } + + /*! \mgroup Class sections + * these are for the member sections of a class, struct or union + */ + QCString trPublicMembers() + { return "Publikus metódusok"; } + QCString trPublicSlots() + { return "Publikus adatok"; } + QCString trSignals() + { return "Szignálok"; } + QCString trStaticPublicMembers() + { return "Statikus publikus metódusok"; } + QCString trProtectedMembers() + { return "Védett metódusok"; } + QCString trProtectedSlots() + { return "Védett adatok"; } + QCString trStaticProtectedMembers() + { return "Statikus védett metódusok"; } + QCString trPrivateMembers() + { return "Privát metódusok"; } + QCString trPrivateSlots() + { return "Privát adatok"; } + QCString trStaticPrivateMembers() + { return "Statikus privát metódusok"; } + /*! \endmgroup */ + + /*! this function is used to produce a comma-separated list of items. + * use generateMarker(i) to indicate where item i should be put. + */ + QCString trWriteList(int numEntries) + { + QCString result; + int i; + // the inherits list contain `numEntries' classes + for (i=0;i<numEntries;i++) + { + // use generateMarker to generate placeholders for the class links! + result+=generateMarker(i); // generate marker for entry i in the list + // (order is left to right) + + if (i!=numEntries-1) // not the last entry, so we need a separator + { + if (i<numEntries-2) // not the fore last entry + result+=", "; + else // the fore last entry + result+=" és "; + } + } + return result; + } + + /*! used in class documentation to produce a list of base classes, + * if class diagrams are disabled. + */ + QCString trInheritsList(int numEntries) + { + return "Szülők osztályok: "+trWriteList(numEntries)+"."; + } + + /*! used in class documentation to produce a list of super classes, + * if class diagrams are disabled. + */ + QCString trInheritedByList(int numEntries) + { + return "Származtatott osztályok: "+trWriteList(numEntries)+"."; + } + + /*! used in member documentation blocks to produce a list of + * members that are hidden by this one. + */ + QCString trReimplementedFromList(int numEntries) + { + return "Újra implementálva ebből az osztályból: "+trWriteList(numEntries)+"."; + } + + /*! used in member documentation blocks to produce a list of + * all member that overwrite the implementation of this member. + */ + QCString trReimplementedInList(int numEntries) + { + return "Újra implementálva ebben az osztályban: "+trWriteList(numEntries)+"."; + } + + /*! This is put above each page as a link to all members of namespaces. */ + QCString trNamespaceMembers() + { return "Névtér tagjai"; } + + /*! This is an introduction to the page with all namespace members */ + QCString trNamespaceMemberDescription(bool extractAll) + { + QCString result="Ez az összes "; + if (!extractAll) result+="dokumentált "; + result+="névtér tagjainak listája "; + if (extractAll) + result+="a hozzájuk tartozó dokumentációra való hivatkozással:"; + else + result+="az öket tartalmazó névtérrel:"; + return result; + } + /*! This is used in LaTeX as the title of the chapter with the + * index of all namespaces. + */ + QCString trNamespaceIndex() + { return "Névtér index"; } + + /*! This is used in LaTeX as the title of the chapter containing + * the documentation of all namespaces. + */ + QCString trNamespaceDocumentation() + { return "Névtér documentáció"; } + +////////////////////////////////////////////////////////////////////////// +// new since 0.49-990522 +////////////////////////////////////////////////////////////////////////// + + /*! This is used in the documentation before the list of all + * namespaces in a file. + */ + QCString trNamespaces() + { return "Névterek"; } + +////////////////////////////////////////////////////////////////////////// +// new since 0.49-990728 +////////////////////////////////////////////////////////////////////////// + + /*! This is put at the bottom of a class documentation page and is + * followed by a list of files that were used to generate the page. + */ + QCString trGeneratedFromFiles(ClassDef::CompoundType compType, + bool single) + { // here s is one of " Class", " Struct" or " Union" + // single is true implies a single file + QCString result=(QCString)"Ez a dokumentáció "; + switch(compType) + { + case ClassDef::Class: result+="az osztályról"; break; + case ClassDef::Struct: result+="a struktúráról"; break; + case ClassDef::Union: result+="az unióról"; break; + case ClassDef::Interface: result+="az interfészről"; break; + case ClassDef::Exception: result+="a kivételről"; break; + } + result+=" a következő fájl"; + if (!single) result+="ok"; + result+=" alapján készült:"; + return result; + } + + /*! This is in the (quick) index as a link to the alphabetical compound + * list. + */ + QCString trAlphabeticalList() + { return "Ábécé rendes lista"; } + +////////////////////////////////////////////////////////////////////////// +// new since 0.49-990901 +////////////////////////////////////////////////////////////////////////// + + /*! This is used as the heading text for the retval command. */ + QCString trReturnValues() + { return "Visszaadott értékek"; } + + /*! This is in the (quick) index as a link to the main page (index.html) + */ + QCString trMainPage() + { return "Kezdő lap"; } + + /*! This is used in references to page that are put in the LaTeX + * documentation. It should be an abbreviation of the word page. + */ + QCString trPageAbbreviation() + { return "o."; } + +////////////////////////////////////////////////////////////////////////// +// new since 0.49-991003 +////////////////////////////////////////////////////////////////////////// + + QCString trSources() + { + return "Források"; + } + QCString trDefinedAtLineInSourceFile() + { + return "Definíció a(z) @1 fájl @0. sorában."; + } + QCString trDefinedInSourceFile() + { + return "Definíció a(z) @0 fájlban."; + } + +////////////////////////////////////////////////////////////////////////// +// new since 0.49-991205 +////////////////////////////////////////////////////////////////////////// + + QCString trDeprecated() + { + return "Ellenjavallt"; + } + +////////////////////////////////////////////////////////////////////////// +// new since 1.0.0 +////////////////////////////////////////////////////////////////////////// + + /*! this text is put before a collaboration diagram */ + QCString trCollaborationDiagram(const char *clName) + { + return (QCString)"Együttműködési diagram "+clName+" osztályhoz:"; + } + /*! this text is put before an include dependency graph */ + QCString trInclDepGraph(const char *fName) + { + return (QCString)"Definíciós fájl függési ábra "+fName+" fájlhoz:"; + } + /*! header that is put before the list of constructor/destructors. */ + QCString trConstructorDocumentation() + { + return "Konstruktor és destruktor dokumentáció"; + } + /*! Used in the file documentation to point to the corresponding sources. */ + QCString trGotoSourceCode() + { + return "Ugrás a fájl forrásához."; + } + /*! Used in the file sources to point to the corresponding documentation. */ + QCString trGotoDocumentation() + { + return "Ugrás a fájl dokumentációjához."; + } + /*! Text for the \pre command */ + QCString trPrecondition() + { + return "Előfeltétel"; + } + /*! Text for the \post command */ + QCString trPostcondition() + { + return "Utófeltétel"; + } + /*! Text for the \invariant command */ + QCString trInvariant() + { + return "Invariáns"; + } + /*! Text shown before a multi-line variable/enum initialization */ + QCString trInitialValue() + { + return "Kezdő érték:"; + } + /*! Text used the source code in the file index */ + QCString trCode() + { + return "forráskód"; + } + QCString trGraphicalHierarchy() + { + return "Osztály-hierarchia grafikon"; + } + QCString trGotoGraphicalHierarchy() + { + return "Ugrás az osztály-hierarchia grafikonhoz"; + } + QCString trGotoTextualHierarchy() + { + return "Ugrás az osztály-hierarchia leíráshoz"; + } + QCString trPageIndex() + { + return "Oldal index"; + } + +////////////////////////////////////////////////////////////////////////// +// new since 1.1.0 +////////////////////////////////////////////////////////////////////////// + + QCString trNote() + { + return "Megjegyzés"; + } + QCString trPublicTypes() + { + return "Publikus típusok"; + } + QCString trPublicAttribs() + { + return "Publikus attribútumok"; + } + QCString trStaticPublicAttribs() + { + return "Statikus publikus attribútumok"; + } + QCString trProtectedTypes() + { + return "Védett típusok"; + } + QCString trProtectedAttribs() + { + return "Védett attribútumok"; + } + QCString trStaticProtectedAttribs() + { + return "Statikus védett attribútumok"; + } + QCString trPrivateTypes() + { + return "Privát típusok"; + } + QCString trPrivateAttribs() + { + return "Privát attribútumok"; + } + QCString trStaticPrivateAttribs() + { + return "Statikus privát attribútumok"; + } + +////////////////////////////////////////////////////////////////////////// +// new since 1.1.3 +////////////////////////////////////////////////////////////////////////// + + /*! Used as a marker that is put before a todo item */ + QCString trTodo() + { + return "Tennivaló"; + } + /*! Used as the header of the todo list */ + QCString trTodoList() + { + return "Tennivalók listája"; + } + +////////////////////////////////////////////////////////////////////////// +// new since 1.1.4 +////////////////////////////////////////////////////////////////////////// + + QCString trReferencedBy() + { + return "hivatkozás innen:"; + } + QCString trRemarks() + { + return "Megjegyzések"; + } + QCString trAttention() + { + return "Figyelem"; + } + QCString trInclByDepGraph() + { + return "Ez az ábra azt mutatja, hogy mely fájlok ágyazzák be " + "közvetve vagy közvetlenül ezt a fájlt:"; + } + QCString trSince() + { + return "Először bevezetve"; + } + +////////////////////////////////////////////////////////////////////////// +// new since 1.1.5 +////////////////////////////////////////////////////////////////////////// + + /*! title of the graph legend page */ + QCString trLegendTitle() + { + return "Jelmagyarázat"; + } + /*! page explaining how the dot graph's should be interpreted */ + QCString trLegendDocs() + { + return + "Hogyan értelmezzük a DopxyGen által készített ábrákat?<p>\n" + "Vegyük a következő példát:\n" + "\\code\n" + "/*! Nem látható osztály, nem fér ki, vágásra kerül */\n" + "class Invisible { };\n\n" + "/*! Származtatás rejtett */\n" + "class Truncated : public Invisible { };\n\n" + "/* Nem dokumentált osztály */\n" + "class Undocumented { };\n\n" + "/*! Publikus származtatásal levezetett osztály */\n" + "class PublicBase : public Truncated { };\n\n" + "/*! Védett származtatásal levezetett osztály */\n" + "class ProtectedBase { };\n\n" + "/*! Privát származtatásal levezetett osztály */\n" + "class PrivateBase { };\n\n" + "/*! Osztály, melyet a származtatott osztály használ */\n" + "class Used { };\n\n" + "/*! Osztály, mely több másiknak leszármazottja */\n" + "class Inherited : public PublicBase,\n" + " protected ProtectedBase,\n" + " private PrivateBase,\n" + " public Undocumented\n" + "{\n" + " private:\n" + " Used *m_usedClass;\n" + "};\n" + "\\endcode\n" + "Ha a konfigurációs fájl \\c MAX_DOT_GRAPH_HEIGHT elemének értékét " + "200-ra állítjuk, az eredmény a következő ábra lesz:" + "<p><center><img src=\"graph_legend.gif\"></center>\n" + "<p>\n" + "Az ábrán levő dobozok jelentése:\n" + "<ul>\n" + "<li>Kitöltött fekete doboz jelzi azt az osztályt vagy struktúrát," + "amelyről az ábra szól.\n" + "<li>Fekete keret jelszi a dokumentált osztályokat vagy struktúrákat.\n" + "<li>Szürke keret jelzi a nem dokumentált osztályokat vagy struktúrákat.\n" + "<li>Piros keret jelzi azokat az osztályokat vagy struktúrákat, amelyeknél vágás miatt nem látható " + "az összes leszármaztatási kapcsolat. Egy ábra vágásra kerül, ha nem fér bele " + "a megadott tartományba." + "</ul>\n" + "A nyilak jelentése:\n" + "<ul>\n" + "<li>Sötétkék nyíl jelzi a publikus származtatást.\n" + "<li>Sötétzöld nyíl jelzi a védett származtatást.\n" + "<li>Sötétvörös nyíl jelzi a privát származtatást.\n" + "<li>Lila szaggatott nyíl jelzi, ha az osztály egy másikat használ vagy tartalmaz. " + "A nyíl felirata jelzi a változók nevét, amelyeken keresztül a másik osztály kapcsolódik.\n" + "</ul>\n"; + + } + /*! text for the link to the legend page */ + QCString trLegend() + { + return "Jelmagyarázat"; + } + +////////////////////////////////////////////////////////////////////////// +// new since 1.2.0 +////////////////////////////////////////////////////////////////////////// + + /*! Used as a marker that is put before a test item */ + QCString trTest() + { + return "Teszt"; + } + /*! Used as the header of the test list */ + QCString trTestList() + { + return "Teszt lista"; + } + +}; + +#endif diff --git a/src/translator_it.h b/src/translator_it.h index 23e7ce1..71fe2bb 100644 --- a/src/translator_it.h +++ b/src/translator_it.h @@ -1,12 +1,11 @@ /****************************************************************************** * - * - * * Copyright (C) 1997-2000 by Dimitri van Heesch. * * Initial Italian Translation by Ahmed Aldo Faisal * Revised and completed by Alessandro Falappa (June 1999) * Updates: + * 2000/08: translated new items used since version 1.1.3, 1.1.4, 1.1.5 and 1.2.0 * 2000/03: translated new items used since version 1.0 and 1.1.0 * 1999/19: entirely rewritten the translation to correct small variations due * to feature additions and to conform to the layout of the latest @@ -179,8 +178,7 @@ class TranslatorItalian : public Translator /*! This is an introduction to the annotated compound list. */ QCString trCompoundListDescription() - { return "Queste sono le classi, structs, " - "unions e interfacce con una loro breve descrizione:"; + { return "Queste sono le classi, structs, unions e interfacce con una loro breve descrizione:"; } /*! This is an introduction to the page with all class members. */ @@ -427,7 +425,7 @@ class TranslatorItalian : public Translator /*! this text is generated when the \warning command is used. */ QCString trWarning() - { return "Attenzione"; } + { return "Avvertimento"; } /*! this text is generated when the \bug command is used. */ QCString trBugsAndLimitations() @@ -728,7 +726,7 @@ class TranslatorItalian : public Translator } ////////////////////////////////////////////////////////////////////////// -// new since 1.0.0 +// new since 0.49-991205 ////////////////////////////////////////////////////////////////////////// QCString trDeprecated() @@ -737,7 +735,7 @@ class TranslatorItalian : public Translator } ////////////////////////////////////////////////////////////////////////// -// new since 1.1.0 +// new since 1.0.0 ////////////////////////////////////////////////////////////////////////// /*! this text is put before a collaboration diagram */ @@ -753,7 +751,7 @@ class TranslatorItalian : public Translator /*! header that is put before the list of constructor/destructors. */ QCString trConstructorDocumentation() { - return "Documentazione dei costruttori e dei distruttori"; + return "Documentazione dei costruttori e dei distruttori"; } /*! Used in the file documentation to point to the corresponding sources. */ QCString trGotoSourceCode() @@ -806,11 +804,15 @@ class TranslatorItalian : public Translator { return "Indice delle pagine"; } + +////////////////////////////////////////////////////////////////////////// +// new since 1.1.0 +////////////////////////////////////////////////////////////////////////// + QCString trNote() { return "Nota"; } - QCString trPublicTypes() { return "Tipi pubblici"; @@ -847,6 +849,127 @@ class TranslatorItalian : public Translator { return "Attributi privati statici"; } + +////////////////////////////////////////////////////////////////////////// +// new since 1.1.3 +////////////////////////////////////////////////////////////////////////// + + /*! Used as a marker that is put before a todo item */ + virtual QCString trTodo() + { + return "Da Fare"; + } + /*! Used as the header of the todo list */ + virtual QCString trTodoList() + { + return "Lista di cose da fare"; + } + +////////////////////////////////////////////////////////////////////////// +// new since 1.1.4 +////////////////////////////////////////////////////////////////////////// + + virtual QCString trReferencedBy() + { + return "Referenziato da"; + } + virtual QCString trRemarks() + { + return "Osservazioni"; + } + virtual QCString trAttention() + { + return "Attenzione"; + } + virtual QCString trInclByDepGraph() + { + return "Queato grafo mostra quali files includono direttamente o indirettamente questo file:"; + } + virtual QCString trSince() + { + return "A partire da"; + } + +////////////////////////////////////////////////////////////////////////// +// new since 1.1.5 +////////////////////////////////////////////////////////////////////////// + + /*! title of the graph legend page */ + virtual QCString trLegendTitle() + { + return "Legenda del grafo"; + } + /*! page explaining how the dot graph's should be interpreted */ + virtual QCString trLegendDocs() + { + return + "Questa pagina spiega come interpretare i grafi generati da doxygen.<p>\n" + "Considerate l'esempio seguente:\n" + "\\code\n" + "/*! Invisible class because of truncation */\n" + "class Invisible { };\n\n" + "/*! Truncated class, inheritance relation is hidden */\n" + "class Truncated : public Invisible { };\n\n" + "/* Class not documented with doxygen comments */\n" + "class Undocumented { };\n\n" + "/*! Class that is inherited using public inheritance */\n" + "class PublicBase : public Truncated { };\n\n" + "/*! Class that is inherited using protected inheritance */\n" + "class ProtectedBase { };\n\n" + "/*! Class that is inherited using private inheritance */\n" + "class PrivateBase { };\n\n" + "/*! Class that is used by the Inherited class */\n" + "class Used { };\n\n" + "/*! Super class that inherits a number of other classes */\n" + "class Inherited : public PublicBase,\n" + " protected ProtectedBase,\n" + " private PrivateBase,\n" + " public Undocumented\n" + "{\n" + " private:\n" + " Used *m_usedClass;\n" + "};\n" + "\\endcode\n" + "Se il tag \\c MAX_DOT_GRAPH_HEIGHT nel file di configurazione " + "č impostato a 200 verrŕ prodotto il grafo seguente:" + "<p><center><img src=\"graph_legend.gif\"></center>\n" + "<p>\n" + "I riquadri nel grafo qui sopra hanno il seguente significato:\n" + "<ul>\n" + "<li>Il riquadro nero pieno rappresenta la struct o la classe per la quale il grafo č stato generato.\n" + "<li>Un riquadro con un bordo nero denota una struct o una classe documentata.\n" + "<li>Un riquadro con un bordo grigio indica una struct o una classe non documentata.\n" + "<li>Un riquadro con un bordo rosso indica una struct o una classe per la quale non sono mostrate tutte le relazioni di ereditarietŕ/contenimento (un grafo viene troncato se non rientra nei limiti prestabiliti)." + "</ul>\n" + "Le frecce hanno il seguente significato:\n" + "<ul>\n" + "<li>Una freccia blu scuro indica una relazione di ereditarietŕ pubblica tra due classi.\n" + "<li>Una freccia verde indica un'ereditarietŕ protetta.\n" + "<li>Una freccia rossa indica un'ereditarietŕ privata.\n" + "<li>Una freccia viola tratteggiata indica che una classe č contenuta o usata da un'altra classe." + " La freccia viene etichettata con la o le variabili attraverso cui la struct o la classe puntata dalla freccia č accessibile.\n" + "</ul>\n"; + } + /*! text for the link to the legend page */ + virtual QCString trLegend() + { + return "legenda"; + } + +////////////////////////////////////////////////////////////////////////// +// new since 1.2.0 +////////////////////////////////////////////////////////////////////////// + + /*! Used as a marker that is put before a test item */ + virtual QCString trTest() + { + return "Test"; + } + /*! Used as the header of the test list */ + virtual QCString trTestList() + { + return "Lista dei test"; + } }; #endif diff --git a/src/translator_pl.h b/src/translator_pl.h index 13978fa..ce9b532 100644 --- a/src/translator_pl.h +++ b/src/translator_pl.h @@ -897,6 +897,94 @@ class TranslatorPolish : public Translator { return "Od"; } + +////////////////////////////////////////////////////////////////////////// +// new since 1.1.5 +////////////////////////////////////////////////////////////////////////// + + /*! title of the graph legend page */ + QCString trLegendTitle() + { + return "Legenda Wykresu"; + } + /*! page explaining how the dot graph's should be interpreted */ + QCString trLegendDocs() + { + return + "Ta strona wyja¶nia jak interpretować wykresy, które s± wygenerowane " + "przez doxygen.<p>\n" + "Rozważ następuj±cy przykład:\n" + "\\code\n" + "/*! Klasa Niewidzialna z powodu okrojenia */\n" + "class Niewidzialna { };\n\n" + "/*! Klasa Okrojona, relacja dziedziczenia jest ukryta */\n" + "class Okrojona : public Niewidzialna { };\n\n" + "/* Klasa nie udokumentowana komentarzami doxygen */\n" + "class Nieudokumentowana { };\n\n" + "/*! Klasa, która jest dziedziczona publicznie */\n" + "class PublicznaBaza : public Okrojona { };\n\n" + "/*! Klasa, która jest dziedziczona przy użyciu dziedziczenia chronionego */\n" + "class ChronionaBaza { };\n\n" + "/*! Klasa, która jest dziedziczona prywatnie */\n" + "class PrywatnaBaza { };\n\n" + "/*! Klasa, która jest użyta przez klasę Dziedziczona */\n" + "class Uzyta { };\n\n" + "/*! Superklasa, która dziedziczy kilka innych klas */\n" + "class Dziedziczona : public PublicznaBaza,\n" + " protected ChronionaBaza,\n" + " private PrywatnaBaza,\n" + " public Nieudokumentowana\n" + "{\n" + " private:\n" + " Uzyta *m_usedClass;\n" + "};\n" + "\\endcode\n" + "Je¶li znacznik \\c MAX_DOT_GRAPH_HEIGHT w pliku konfiguracji " + "jest ustawiony na 200, odniesie to rezultat w następuj±cym wykresie:" + "<p><center><img src=\"graph_legend.gif\"></center>\n" + "<p>\n" + "Pudełka w powyższym wykresie maj± następuj±ce znaczenie:\n" + "<ul>\n" + "<li>Wypełnione czarne pudełko reprezentuje strukturę lub klasę dla " + "której został wygenerowany wykres.\n" + "<li>Pudełko z czarn± obwolut± oznacza udokumentowan± strukturę lub klasę.\n" + "<li>Pudełko z szar± obwolut± oznacza nieudokumentowan± strukturę lub klasę.\n" + "<li>Pudełko z czerwon± obwolut± oznacza udokumentowan± strukturę lub klasę dla\n" + "której nie s± pokazane wszystkie relacje dziedziczenia/zawierania. Wykres jest " + "okrojony, je¶li nie mie¶ci się w okre¶lonych brzegach." + "</ul>\n" + "Strzałki maj± następuj±ce znaczenie:\n" + "<ul>\n" + "<li>Ciemno niebieska strzałka jest używana do wizualizacji relacji " + "dziedziczenia publicznego pomiędzy dwiema klasami.\n" + "<li>Ciemno zielona strzałka jest używana dla dziedziczenia chronionego.\n" + "<li>Ciemno czerwona strzałka jest używana dla dziedziczenia prywatnego.\n" + "<li>Fioletowa przerywana strzałka jest używana je¶li klasa jest zawarta " + "lub użyta przez inn± klasę. Strzałka jest podpisana zmienn±(ymi) " + "przez które wskazywana klasa lub struktura jest dostępna. \n" + "</ul>\n"; + } + /*! text for the link to the legend page */ + QCString trLegend() + { + return "legenda"; + } + +////////////////////////////////////////////////////////////////////////// +// new since 1.2.0 +////////////////////////////////////////////////////////////////////////// + + /*! Used as a marker that is put before a test item */ + QCString trTest() + { + return "Test"; + } + /*! Used as the header of the test list */ + QCString trTestList() + { + return "Lista Testu"; + } + }; #endif diff --git a/src/util.cpp b/src/util.cpp index 3d9972b..61770bc 100644 --- a/src/util.cpp +++ b/src/util.cpp @@ -871,8 +871,9 @@ void endFile(OutputList &ol,bool external) void setAnchors(char id,MemberList *ml,int groupId) { int count=0; - MemberDef *md=ml->first(); - while (md) + MemberListIterator mli(*ml); + MemberDef *md; + for (;(md=mli.current());++mli) { QCString anchor; if (groupId==-1) @@ -881,7 +882,6 @@ void setAnchors(char id,MemberList *ml,int groupId) anchor.sprintf("%c%d_%d",id,groupId,count++); //printf("Member %s anchor %s\n",md->name(),anchor.data()); md->setAnchor(anchor); - md=ml->next(); } } @@ -1605,7 +1605,8 @@ bool getDefs(const QCString &scName,const QCString &memberName, ) { //printf(" Found fcd=%p\n",fcd); - MemberDef *mmd=mn->first(); + MemberListIterator mmli(*mn); + MemberDef *mmd; int mdist=maxInheritanceDepth; ArgumentList *argList=0; if (args) @@ -1613,7 +1614,7 @@ bool getDefs(const QCString &scName,const QCString &memberName, argList=new ArgumentList; stringToArgumentList(args,argList); } - while (mmd) + for (mmli.toFirst();(mmd=mmli.current());++mmli) { if (mmd->isLinkable()) { @@ -1631,7 +1632,6 @@ bool getDefs(const QCString &scName,const QCString &memberName, } } } - mmd=mn->next(); } if (argList) { @@ -1641,8 +1641,7 @@ bool getDefs(const QCString &scName,const QCString &memberName, // no exact match found, but if args="()" an arbitrary member will do { //printf(" >Searching for arbitrary member\n"); - mmd=mn->first(); - while (mmd) + for (mmli.toFirst();(mmd=mmli.current());++mmli) { if (//(mmd->protection()!=Private || Config::extractPrivateFlag) && //( @@ -1664,7 +1663,6 @@ bool getDefs(const QCString &scName,const QCString &memberName, md=mmd; } } - mmd=mn->next(); } } //printf(" >Succes=%d\n",mdist<maxInheritanceDepth); @@ -1711,15 +1709,13 @@ bool getDefs(const QCString &scName,const QCString &memberName, { //printf("Function inside existing namespace `%s'\n",namespaceName.data()); bool found=FALSE; - MemberDef *mmd=mn->first(); - while (mmd && !found) + MemberListIterator mmli(*mn); + MemberDef *mmd; + for (mmli.toFirst();((mmd=mmli.current()) && !found);++mmli) { //printf("mmd->getNamespaceDef()=%p fnd=%p\n", // mmd->getNamespaceDef(),fnd); - if (mmd->getNamespaceDef()==fnd && - //(mmd->isReference() || mmd->hasDocumentation()) - mmd->isLinkable() - ) + if (mmd->getNamespaceDef()==fnd && mmd->isLinkable()) { // namespace is found bool match=TRUE; ArgumentList *argList=0; @@ -1740,25 +1736,19 @@ bool getDefs(const QCString &scName,const QCString &memberName, delete argList; argList=0; } } - mmd=mn->next(); } if (!found && !strcmp(args,"()")) // no exact match found, but if args="()" an arbitrary // member will do { - MemberDef *mmd=mn->first(); - while (mmd && !found) + for (mmli.toFirst();((mmd=mmli.current()) && !found);++mmli) { - if (mmd->getNamespaceDef()==fnd && - //(mmd->isReference() || mmd->hasDocumentation()) - mmd->isLinkable() - ) + if (mmd->getNamespaceDef()==fnd && mmd->isLinkable()) { nd=fnd; md=mmd; found=TRUE; } - mmd=mn->next(); } } if (found) return TRUE; @@ -1766,8 +1756,8 @@ bool getDefs(const QCString &scName,const QCString &memberName, else // no scope => global function { //printf("Function with global scope `%s' args=`%s'\n",namespaceName.data(),args); - md=mn->first(); - while (md) + MemberListIterator mli(*mn); + for (mli.toFirst();(md=mli.current());++mli) { if (md->isLinkable()) { @@ -1798,7 +1788,6 @@ bool getDefs(const QCString &scName,const QCString &memberName, } } } - md=mn->next(); } if (!strcmp(args,"()")) { @@ -2256,21 +2245,21 @@ FileDef *findFileDef(const FileNameDict *fnDict,const char *n,bool &ambig) { if (fn->count()==1) { - return fn->first(); + return fn->getFirst(); } else // file name alone is ambigious { int count=0; - FileDef *fd=fn->first(); + FileNameIterator fni(*fn); + FileDef *fd; FileDef *lastMatch=0; - while (fd) + for (fni.toFirst();(fd=fni.current());++fni) { if (path.isEmpty() || fd->getPath().right(path.length())==path) { count++; lastMatch=fd; } - fd=fn->next(); } ambig=(count>1); return lastMatch; @@ -2295,14 +2284,14 @@ QCString showFileDefMatches(const FileNameDict *fnDict,const char *n) FileName *fn; if ((fn=(*fnDict)[name])) { - FileDef *fd=fn->first(); - while (fd) + FileNameIterator fni(*fn); + FileDef *fd; + for (fni.toFirst();(fd=fni.current());++fni) { if (path.isEmpty() || fd->getPath().right(path.length())==path) { result+=" "+fd->absFilePath()+"\n"; } - fd=fn->next(); } } return result; |