diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/classdef.cpp | 21 | ||||
-rw-r--r-- | src/code.l | 1 | ||||
-rw-r--r-- | src/commentcnv.l | 16 | ||||
-rw-r--r-- | src/config.l | 10 | ||||
-rw-r--r-- | src/doc.l | 84 | ||||
-rw-r--r-- | src/doxygen.cpp | 36 | ||||
-rw-r--r-- | src/lang_cfg.h | 1 | ||||
-rw-r--r-- | src/language.cpp | 13 | ||||
-rw-r--r-- | src/latexgen.cpp | 159 | ||||
-rw-r--r-- | src/pre.l | 4 | ||||
-rw-r--r-- | src/scanner.l | 208 | ||||
-rw-r--r-- | src/tagreader.cpp | 5 | ||||
-rw-r--r-- | src/translator_jp.h | 85 | ||||
-rw-r--r-- | src/translator_sr.h | 1400 |
14 files changed, 1844 insertions, 199 deletions
diff --git a/src/classdef.cpp b/src/classdef.cpp index f82cbf0..1231e09 100644 --- a/src/classdef.cpp +++ b/src/classdef.cpp @@ -1189,6 +1189,9 @@ void ClassDef::writeDocumentation(OutputList &ol) ol.docify(stripFromPath(path)); } + // for HTML + ol.pushGeneratorState(); + ol.disableAllBut(OutputGenerator::Html); if (fd->generateSourceFile()) { ol.writeObjectLink(0,fd->getSourceFileBase(),0,fd->name()); @@ -1202,6 +1205,24 @@ void ClassDef::writeDocumentation(OutputList &ol) { ol.docify(fd->name()); } + ol.popGeneratorState(); + + // for other output formats + ol.pushGeneratorState(); + ol.disable(OutputGenerator::Html); + if (fd->isLinkable()) + { + ol.writeObjectLink(fd->getReference(),fd->getOutputFileBase(),0, + fd->name()); + } + else + { + ol.docify(fd->name()); + } + + ol.popGeneratorState(); + + } file=m_files.next(); } @@ -1047,6 +1047,7 @@ TYPEKW ("bool"|"char"|"double"|"float"|"int"|"long"|"short"|"signed"|"unsigned" bool ambig; bool found=FALSE; FileDef *fd=0; + //printf("looking for include %s\n",yytext); if ((fd=findFileDef(Doxygen::inputNameDict,yytext,ambig)) && fd->isLinkable()) { diff --git a/src/commentcnv.l b/src/commentcnv.l index de7e8a7..bba1b21 100644 --- a/src/commentcnv.l +++ b/src/commentcnv.l @@ -162,22 +162,22 @@ static int yyread(char *buf,int max_size) copyToOutput(yytext,yyleng); BEGIN(Scan); } -<SComment>^[ \t]*"///"[\/]*\n { +<SComment>^[ \t]*"///"[\/]*/\n { replaceCommentMarker(yytext,yyleng); } -<SComment>^[ \t]*"///"[^\/\n].*/\n { - replaceCommentMarker(yytext,yyleng); - } -<SComment>^[ \t]*"//!".*/\n { /* second line of special comment */ +<SComment>\n[ \t]*"///"[\/]*/\n { replaceCommentMarker(yytext,yyleng); } -<SComment>\n[ \t]*"///"[\/]*\n { +<SComment>^[ \t]*"///"[^\/\n].*/\n { replaceCommentMarker(yytext,yyleng); - } + } <SComment>\n[ \t]*"///"[^\/\n].*/\n { replaceCommentMarker(yytext,yyleng); } -<SComment>\n[ \t]*"//!".*/\n { /* other line of special comment */ +<SComment>^[ \t]*"//!".*/\n { + replaceCommentMarker(yytext,yyleng); + } +<SComment>\n[ \t]*"//!".*/\n { replaceCommentMarker(yytext,yyleng); } <SComment>\n { /* end of special comment */ diff --git a/src/config.l b/src/config.l index ceffb23..ab4a52f 100644 --- a/src/config.l +++ b/src/config.l @@ -1248,9 +1248,9 @@ void Config::create() "information to generate all constant output in the proper language. \n" "The default language is English, other supported languages are: \n" "Brazilian, Chinese, Chinese-Traditional, Croatian, Czech, Danish, Dutch, \n" - "Finnish, French, German, Greek, Hungarian, Italian, Japanese, Korean, \n" - "Norwegian, Polish, Portuguese, Romanian, Russian, Slovak, Slovene, \n" - "Spanish, Swedish and Ukrainian.\n", + "Finnish, French, German, Greek, Hungarian, Italian, Japanese, Japanese-en \n" + "(Japanese with english messages), Korean, Norwegian, Polish, Portuguese, \n" + "Romanian, Russian, Serbian, Slovak, Slovene, Spanish, Swedish and Ukrainian.\n", "English" ); #ifdef LANG_BR @@ -1295,6 +1295,7 @@ void Config::create() #endif #ifdef LANG_JP ce->addValue("Japanese"); + ce->addValue("Japanese-en"); #endif #ifdef LANG_KR ce->addValue("Korean"); @@ -1314,6 +1315,9 @@ void Config::create() #ifdef LANG_RU ce->addValue("Russian"); #endif +#ifdef LANG_SR + ce->addValue("Serbian"); +#endif #ifdef LANG_SK ce->addValue("Slovak"); #endif @@ -966,6 +966,13 @@ static void checkArgName(const QCString &name,bool isParam) /* ----------------------------------------------------------------- */ +/*! Looks for a documentation block with name commandName in the current + * context (copyDocScope). The resulting documentation string is + * put in pDoc, the definition in which the documentation was found is + * put in pDef. + * @retval TRUE if name was found. + * @retval FALSE if name was not found. + */ bool findDocsForMemberOrCompound(const char *commandName, QCString *pDoc, Definition **pDef) @@ -976,53 +983,40 @@ bool findDocsForMemberOrCompound(const char *commandName, int l=cmdArg.length(); if (l==0) return FALSE; + int funcStart=cmdArg.find('('); + if (funcStart==-1) funcStart=l; + //int lastScopeStart=cmdArg.findRev("::",funcStart); + //int lastScopeEnd = lastScopeStart==-1 ? 0 : lastScopeStart+2; + //QCString scope=cmdArg.left(QMAX(lastScopeStart,0)); + //QCString name=cmdArg.mid(lastScopeEnd,funcStart-lastScopeEnd); + QCString name=cmdArg.left(funcStart); + QCString args=cmdArg.right(l-funcStart); + + // try if the link is to a member + MemberDef *md=0; + ClassDef *cd=0; + FileDef *fd=0; + NamespaceDef *nd=0; + GroupDef *gd=0; + PageInfo *pi=0; + bool found = getDefs(copyDocScope,name,args,md,cd,fd,nd,gd,FALSE,0,TRUE); + if (found && md) + { + *pDoc=md->documentation(); + *pDef=md; + return TRUE; + } + + int scopeOffset=copyDocScope.length(); do // for each scope { - int funcStart=cmdArg.find('('); - if (funcStart==-1) funcStart=l; - int lastScopeStart=cmdArg.findRev("::",funcStart); - int lastScopeEnd = lastScopeStart==-1 ? 0 : lastScopeStart+2; - QCString scope=cmdArg.left(QMAX(lastScopeStart,0)); - QCString name=cmdArg.mid(lastScopeEnd,funcStart-lastScopeEnd); - QCString args=cmdArg.right(l-funcStart); - - if (scope.isEmpty()) - { - if (scopeOffset>0) - { - scope=copyDocScope.left(scopeOffset); - } - } - else - { - if (scopeOffset>0) - { - scope.prepend(copyDocScope.left(scopeOffset)+"::"); - } - } - //printf("findDocsForMemberOrCompound: scope=`%s' name=`%s' arg=`%s'\n",scope.data(),name.data(),args.data()); - - // try if the link is to a member - MemberDef *md=0; - ClassDef *cd=0; - FileDef *fd=0; - NamespaceDef *nd=0; - GroupDef *gd=0; - PageInfo *pi=0; - bool found = getDefs(scope,name,args,md,cd,fd,nd,gd,FALSE,0,TRUE); - if (found && md) - { - *pDoc=md->documentation(); - *pDef=md; - return TRUE; - } - QCString fullName=cmdArg; if (scopeOffset>0) { fullName.prepend(copyDocScope.left(scopeOffset)+"::"); } + //printf("Trying fullName=`%s'\n",fullName.data()); // try class, namespace, group, page, file reference cd = Doxygen::classSDict[fullName]; @@ -1071,7 +1065,7 @@ bool findDocsForMemberOrCompound(const char *commandName, scopeOffset = copyDocScope.findRev("::",scopeOffset-1); if (scopeOffset==-1) scopeOffset=0; } - } while (scopeOffset>0); + } while (scopeOffset>=0); return FALSE; @@ -1108,8 +1102,8 @@ FILE ({FILESCHAR}*{FILEECHAR}+("."{FILESCHAR}*{FILEECHAR}+)*)|("\""[^\n\"]+ ID [a-z_A-Z][a-z_A-Z0-9]* SCOPENAME (({ID}?{BN}*"::"{BN}*)*)((~{BN}*)?{ID}) SCOPEMASK {ID}?(("::"|"#")?(~)?{ID})+ -URLCHAR [a-z_A-Z0-9\!\~\:\;\'\$\?\@\&\%\#\.\-\+\/\=\(\)] -URLMASK ([a-z_A-Z][^\>\"\n]*{URLCHAR})|({URLCHAR}+) +URLCHAR [a-z_A-Z0-9\!\~\:\;\'\$\?\@\&\%\#\.\-\+\/\=] +URLMASK (([a-z_A-Z][^\>\"\n]*{URLCHAR})|({URLCHAR}+))("("{URLCHAR}*")")? NONTERM [\{\}\[\]\`\~\@\|\-\+\#\$\/\\\!\%\^\&\*()a-z_A-Z<>0-9\x80-\xff] WORD ({NONTERM}+([^\n\t ]*{NONTERM}+)?)|("\""[^\n\"]*"\"") ATTR ({B}+[^>\n]*)? @@ -2983,9 +2977,13 @@ void resolveCopyDocCommands(const char *scope,QCString &docString) void parseDoc(OutputDocInterface &od,const char *fileName,int startLine, const char *clName,MemberDef *md,const QCString &docStr) { + strcpy(yyFileName,fileName); + yyLineNr = startLine; + QCString docString=docStr; resolveCopyDocCommands(clName,docString); + yyLineNr = startLine; //printf("parseDoc(file=`%s',line=%d)\n",fileName,startLine); initParser(); initParseCodeContext(); @@ -2995,8 +2993,6 @@ void parseDoc(OutputDocInterface &od,const char *fileName,int startLine, hasParamCommand = FALSE; paramsFound.setAutoDelete(FALSE); paramsFound.clear(); - strcpy(yyFileName,fileName); - yyLineNr = startLine; parseDocument(od,docString); if (md && hasParamCommand && Config_getBool("WARN_IF_UNDOCUMENTED")) diff --git a/src/doxygen.cpp b/src/doxygen.cpp index 20a7b57..0322193 100644 --- a/src/doxygen.cpp +++ b/src/doxygen.cpp @@ -5754,15 +5754,21 @@ static void resolveUserReferences() si->fileName=si->definition->getOutputFileBase().copy(); } } - // hack: the items of a todo/test list are all fragments from different files, - // so the resulting section's all have the wrong file name (not from the - // todo/test list, but from the file in which they are defined). We correct this - // here by looking at the generated section labels! + // hack: the items of a todo/test/bug list are all fragments from + // different files, so the resulting section's all have the wrong file + // name (not from the todo/test/bug list, but from the file in which they + // are defined). We correct this here by looking at the generated section + // labels! if (si->label.left(5)=="_todo" || si->label.left(5)=="_test") { si->fileName=si->label.mid(1,4); // extract "todo" or "test" si->generated=TRUE; } + else if (si->label.left(4)=="_bug") + { + si->fileName="bug"; + si->generated=TRUE; + } } } @@ -6774,11 +6780,11 @@ void readConfiguration(int argc, char **argv) exit(1); } - QCString outputLanguage=Config_getEnum("OUTPUT_LANGUAGE"); - if (!setTranslator(outputLanguage)) - { - err("Error: Output language %s not supported! Using English instead.\n", outputLanguage.data()); - } + QCString outputLanguage=Config_getEnum("OUTPUT_LANGUAGE"); + if (!setTranslator(outputLanguage)) + { + err("Error: Output language %s not supported! Using English instead.\n", outputLanguage.data()); + } QFile f; if (openOutputFile(argv[optind+1],f)) @@ -6820,11 +6826,11 @@ void readConfiguration(int argc, char **argv) exit(1); } - QCString outputLanguage=Config_getEnum("OUTPUT_LANGUAGE"); - if (!setTranslator(outputLanguage)) - { - err("Error: Output language %s not supported! Using English instead.\n", outputLanguage.data()); - } + QCString outputLanguage=Config_getEnum("OUTPUT_LANGUAGE"); + if (!setTranslator(outputLanguage)) + { + err("Error: Output language %s not supported! Using English instead.\n", outputLanguage.data()); + } QFile f; if (openOutputFile(argv[optind+1],f)) @@ -7158,7 +7164,7 @@ void parseInput() **************************************************************************/ Entry *root=new Entry; - msg("Reading tag files\n"); + msg("Reading and parsing tag files\n"); QStrList &tagFileList = Config_getList("TAGFILES"); s=tagFileList.first(); diff --git a/src/lang_cfg.h b/src/lang_cfg.h index 8c54688..fe373e3 100644 --- a/src/lang_cfg.h +++ b/src/lang_cfg.h @@ -23,3 +23,4 @@ #define LANG_UA #define LANG_GR #define LANG_TW +#define LANG_SR diff --git a/src/language.cpp b/src/language.cpp index 7c9494a..5711b07 100644 --- a/src/language.cpp +++ b/src/language.cpp @@ -97,6 +97,9 @@ #ifdef LANG_GR #include "translator_gr.h" #endif +#ifdef LANG_SR +#include "translator_sr.h" +#endif //#ifdef LANG_JS //#include "translator_js.h" //#endif @@ -154,6 +157,10 @@ bool setTranslator(const char *langName) { theTranslator=new TranslatorJapanese; } + else if (L_EQUAL("japanese-en")) + { + theTranslator=new TranslatorJapaneseEn; + } #endif #ifdef LANG_ES else if (L_EQUAL("spanish")) @@ -263,6 +270,12 @@ bool setTranslator(const char *langName) theTranslator=new TranslatorGreek; } #endif +#ifdef LANG_SR + else if (L_EQUAL("serbian")) + { + theTranslator=new TranslatorSerbian; + } +#endif // else if (L_EQUAL("japanese-sjis")) // { // theTranslator=new TranslatorJapaneseSjis; diff --git a/src/latexgen.cpp b/src/latexgen.cpp index 58e6044..2508b98 100644 --- a/src/latexgen.cpp +++ b/src/latexgen.cpp @@ -152,64 +152,72 @@ void LatexGenerator::init() QCString mkidx_command = Config_getString("MAKEINDEX_CMD_NAME"); // end insertion by KONNO Akihisa <konno@researchers.jp> 2002-03-05 QTextStream t(&file); - t << "all: refman.dvi" << endl - << endl - << "ps: refman.ps" << endl - << endl - << "pdf: refman.pdf" << endl - << endl - << "ps_2on1: refman_2on1.ps" << endl - << endl - << "pdf_2on1: refman_2on1.pdf" << endl - << endl - << "refman.ps: refman.dvi" << endl - << "\tdvips -o refman.ps refman.dvi" << endl - << endl; - if (Config_getBool("USE_PDFLATEX")) // use pdflatex instead of latex - { - t << "refman.pdf: refman.tex" << endl; - t << "\tpdflatex refman.tex" << endl; - t << "\tmakeindex refman.idx" << endl; - t << "\tpdflatex refman.tex" << endl << endl; - } - else // otherwise use ps2pdf: not as nice :( - { - t << "refman.pdf: refman.ps" << endl; + if (!Config_getBool("USE_PDFLATEX")) // use plain old latex + { + t << "all: refman.dvi" << endl + << endl + << "ps: refman.ps" << endl + << endl + << "pdf: refman.pdf" << endl + << endl + << "ps_2on1: refman_2on1.ps" << endl + << endl + << "pdf_2on1: refman_2on1.pdf" << endl + << endl + << "refman.ps: refman.dvi" << endl + << "\tdvips -o refman.ps refman.dvi" << endl + << endl; + t << "refman.pdf: refman.ps" << endl; #if defined(_MSC_VER) - // ps2pdf.bat does not work properly from a makefile using GNU make! - t << "\tgswin32c -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite " - "-sOutputFile=refman.pdf -c save pop -f refman.ps" << endl << endl; + // ps2pdf.bat does not work properly from a makefile using GNU make! + t << "\tgswin32c -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite " + "-sOutputFile=refman.pdf -c save pop -f refman.ps" << endl << endl; #else - t << "\tps2pdf refman.ps refman.pdf" << endl << endl; + t << "\tps2pdf refman.ps refman.pdf" << endl << endl; #endif - } - - t << "refman_2on1.ps: refman.ps" << endl - << "\tpsnup -2 refman.ps >refman_2on1.ps" << endl - << endl - << "refman_2on1.pdf: refman_2on1.ps" << endl + t << "refman.dvi: refman.tex doxygen.sty" << endl + << "\techo \"Running latex...\"" << endl + << "\t" << latex_command << " refman.tex" << endl + << "\techo \"Running makeindex...\"" << endl + << "\t" << mkidx_command << " refman.idx" << endl + << "\techo \"Rerunning latex....\"" << endl + << "\t" << latex_command << " refman.tex" << endl + << "\tlatex_count=5 ; \\" << endl + << "\twhile egrep -s 'Rerun (LaTeX|to get cross-references right)' refman.log && [ $$latex_count -gt 0 ] ;\\" << endl + << "\t do \\" << endl + << "\t echo \"Rerunning latex....\" ;\\" << endl + << "\t " << latex_command << " refman.tex ;\\" << endl + << "\t latex_count=`expr $$latex_count - 1` ;\\" << endl + << "\t done" << endl << endl + << "refman_2on1.ps: refman.ps" << endl + << "\tpsnup -2 refman.ps >refman_2on1.ps" << endl + << endl + << "refman_2on1.pdf: refman_2on1.ps" << endl #if defined(_MSC_VER) - // ps2pdf.bat does not work properly from a makefile using GNU make! - << "\tgswin32c -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite " - "-sOutputFile=refman_2on1.pdf -c save pop -f refman_2on1.ps" << endl + // ps2pdf.bat does not work properly from a makefile using GNU make! + << "\tgswin32c -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite " + "-sOutputFile=refman_2on1.pdf -c save pop -f refman_2on1.ps" << endl #else - << "\tps2pdf refman_2on1.ps refman_2on1.pdf" << endl + << "\tps2pdf refman_2on1.ps refman_2on1.pdf" << endl; #endif - << endl - << "refman.dvi: refman.tex doxygen.sty" << endl - << "\techo \"Running latex...\"" << endl - << "\t" << latex_command << " refman.tex" << endl - << "\techo \"Running makeindex...\"" << endl - << "\t" << mkidx_command << " refman.idx" << endl - << "\techo \"Rerunning latex....\"" << endl - << "\t" << latex_command << " refman.tex" << endl - << "\tlatex_count=5 ; \\" << endl - << "\twhile egrep -s 'Rerun (LaTeX|to get cross-references right)' refman.log && [ $$latex_count -gt 0 ] ;\\" << endl - << "\t do \\" << endl - << "\t echo \"Rerunning latex....\" ;\\" << endl - << "\t " << latex_command << " refman.tex ;\\" << endl - << "\t latex_count=`expr $$latex_count - 1` ;\\" << endl - << "\t done" << endl << endl + } + else // use pdflatex for higher quality output + { + t << "all: refman.pdf" << endl << endl; + t << "refman.pdf: refman.tex" << endl; + t << "\tpdflatex refman.tex" << endl; + t << "\tmakeindex refman.idx" << endl; + t << "\tpdflatex refman.tex" << endl << endl + << "\tlatex_count=5 ; \\" << endl + << "\twhile egrep -s 'Rerun (LaTeX|to get cross-references right)' refman.log && [ $$latex_count -gt 0 ] ;\\" << endl + << "\t do \\" << endl + << "\t echo \"Rerunning latex....\" ;\\" << endl + << "\t pdflatex refman.tex ;\\" << endl + << "\t latex_count=`expr $$latex_count - 1` ;\\" << endl + << "\t done" << endl << endl; + } + + t << endl << "clean:" << endl << "\trm -f *.ps *.dvi *.aux *.toc *.idx *.ind *.ilg *.log *.out" << endl; } @@ -1033,7 +1041,7 @@ void LatexGenerator::endTitleHead(const char *fileName,const char *name) { t << "\\label{" << fileName << "}\\index{" << name << "@{"; - docify(name); + escapeMakeIndexChars(this,t,name); t << "}}" << endl; } if (Config_getBool("PDF_HYPERLINKS") && fileName) @@ -1183,7 +1191,7 @@ void LatexGenerator::addIndexItem(const char *s1,const char *s2) if (s2) { t << "!" << escapeLabelName(s2) << "@{"; - docify(s2); + escapeMakeIndexChars(this,t,s2); t << "}"; } t << "}"; @@ -1389,7 +1397,6 @@ void LatexGenerator::docify(const char *str) { static bool isCzech = theTranslator->idLanguage()=="czech"; static bool isJapanese = theTranslator->idLanguage()=="japanese"; - static bool isJapaneseSjis = theTranslator->idLanguage()=="japanese-sjis"; static bool isKorean = theTranslator->idLanguage()=="korean"; static bool isRussian = theTranslator->idLanguage()=="russian"; static bool isUkrainian = theTranslator->idLanguage()=="ukrainian"; @@ -1404,7 +1411,27 @@ void LatexGenerator::docify(const char *str) unsigned char pc='\0'; while (*p) { + static bool MultiByte = FALSE; c=*p++; + + if( isJapanese) + { + if (MultiByte) + { + t << (char)c; + MultiByte = FALSE; + pc = c; + continue; + } + if (c>=0x80) + { + MultiByte = TRUE; + t << (char)c; + pc = c; + continue; + } + } + if (insidePre) { switch(c) @@ -1462,7 +1489,7 @@ void LatexGenerator::docify(const char *str) default: // Some languages uses wide characters - if (isJapanese || isJapaneseSjis || isKorean || isChinese) + if (isJapanese || isKorean || isChinese) { if (c>=128) { @@ -1600,6 +1627,8 @@ void LatexGenerator::docify(const char *str) void LatexGenerator::codify(const char *str) { + static bool isJapanese = theTranslator->idLanguage()=="japanese"; + if (str) { const char *p=str; @@ -1608,7 +1637,25 @@ void LatexGenerator::codify(const char *str) int &tabSize = Config_getInt("TAB_SIZE"); while (*p) { + static bool MultiByte = FALSE; c=*p++; + + if( isJapanese ) + { + if ( MultiByte ) + { + t << (char)c; + MultiByte = FALSE; + continue; + } + if ( c<0 ) // char in range [0x80..0xff] + { + t << (char)c; + MultiByte = TRUE; + continue; + } + } + switch(c) { case 0x0c: break; // remove ^L @@ -105,6 +105,7 @@ static void setFileName(const char *name) bool ambig; g_yyFileName=name; g_yyFileDef=findFileDef(Doxygen::inputNameDict,g_yyFileName,ambig); + if (g_yyFileDef && g_yyFileDef->isReference()) g_yyFileDef=0; } static void incrLevel() @@ -164,6 +165,7 @@ static Define *isDefined(const char *name) static FILE *checkAndOpenFile(const QCString &absName) { FILE *f = 0; + //printf("checkAndOpenFile(%s)\n",absName.data()); QFileInfo fi(absName); if (fi.exists() && fi.isFile()) { @@ -942,6 +944,7 @@ static void readIncludeFile(const QCString &inc) //printf("Searching for `%s'\n",incFileName.data()); if ((f=findFile(incFileName,localInclude))) // see if the include file can be found { + //printf("Found include file!\n"); if (Debug::isFlagSet(Debug::Preprocessor)) { for (i=0;i<g_includeStack.count();i++) msg(" "); @@ -983,6 +986,7 @@ static void readIncludeFile(const QCString &inc) { bool ambig; FileDef *fd = findFileDef(Doxygen::inputNameDict,incFileName,ambig); + //printf("findFileDef(%s)=%p\n",incFileName.data(),fd); // add include dependency to the file in which the #include was found oldFileDef->addIncludeDependency(fd,incFileName,localInclude); // add included by dependency diff --git a/src/scanner.l b/src/scanner.l index eced109..93663c1 100644 --- a/src/scanner.l +++ b/src/scanner.l @@ -123,8 +123,11 @@ static QCString aliasName; static QCString baseName; static QCString* specName; static QCString formulaText; +static bool useOverrideCommands = FALSE; static bool insideIDL = FALSE; static bool insideJava = FALSE; +static bool insidePHP = FALSE; +static bool insidePHPCode = FALSE; static bool insideCppQuote = FALSE; static int argRoundCount; @@ -320,8 +323,11 @@ static QCString addFormula() static bool nameIsOperator(QCString &name) { - return name.right(8)=="operator" && - (name.length()==8 || !isId(name.at(name.length()-9))); + int i=name.find("operator"); + if (i==-1) return FALSE; + if (i==0 && !isId(name.at(8))) return TRUE; // case operator ::X + if (i>0 && !isId(name.at(i-1)) && !isId(name.at(i+8))) return TRUE; // case X::operator + return FALSE; // case TEXToperatorTEXT } static void checkFormula() @@ -379,6 +385,11 @@ static void setContext() QCString fileName = yyFileName; insideIDL = fileName.right(4)==".idl"; insideJava = fileName.right(5)==".java"; + insidePHP = fileName.right(4)==".php"; + if ( insidePHP ) + { + useOverrideCommands = TRUE; + } //printf("setContext(%s) insideIDL=%d\n",yyFileName,insideIDL); } @@ -471,6 +482,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'")) %x NextSemi %x BitFields %x FindMembers +%x FindMembersPHP %x FindMemberName %x FindFields %x FindFieldArg @@ -614,8 +626,15 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'")) current_root->addSubEntry(current); current = new Entry; } - BEGIN( FindMembers ); - } + if ( insidePHP ) + { + BEGIN( FindMembersPHP ); + } + else + { + BEGIN( FindMembers ); + } + } <NextSemi>"{" { curlyCount=0; needsSemi = TRUE; @@ -664,6 +683,17 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'")) unput(*yytext); BEGIN( FindMembers ); } +<FindMembersPHP>"<?"("php"?) { // PHP code start + insidePHPCode = TRUE; + BEGIN( FindMembers ); + } +<FindMembersPHP>. { // Non-PHP code text, ignore + } +<FindMembers>"?>" { // PHP code end + insidePHPCode = FALSE; + BEGIN( FindMembersPHP ); + } + <FindMembers>{B}*("properties"|"__property"){BN}*":"{BN}* { // IDL or Borland C++ builder property current->mtype = mtype = Property; current->protection = protection = Public ; @@ -1131,8 +1161,12 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'")) current->name+=*yytext; // *currentTemplateSpec+=*yytext; } -<FindMembers,FindMemberName>{SCOPENAME} { +<FindMembers,FindMemberName>{SCOPENAME} { lineCount(); +// if ( insidePHP && strcmp(yytext,"define")==0) +// { +// BEGIN(DefinePHP); +// } if (insideIDL && yyleng==9 && strcmp(yytext,"cpp_quote")==0) { BEGIN(CppQuote); @@ -1153,6 +1187,10 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'")) insideTryBlock=FALSE; BEGIN(TryFunctionBlock); } +// else if ( insidePHP && strcmp(yytext,"function")==0 ) +// { +// BEGIN( +// } else { if (YY_START==FindMembers) @@ -1179,10 +1217,14 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'")) current->name += yytext; } QCString tmp=yytext; - if (nameIsOperator(tmp)) + if (nameIsOperator(tmp)) + { BEGIN( Operator ); + } else - BEGIN(FindMembers); + { + BEGIN(FindMembers); + } } } <FindMembers>"." { @@ -1565,6 +1607,10 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'")) { current->bodyLine = yyLineNr; } + if ( insidePHP && current->type.left(3) == "var" ) + { + current->type = current->type.mid(3); + } current->type=current->type.simplifyWhiteSpace(); current->args=current->args.simplifyWhiteSpace(); current->name=current->name.stripWhiteSpace(); @@ -2244,7 +2290,18 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'")) BEGIN(SkipCPP); } */ -<FuncQual>[{:;,] { unput(*yytext); BEGIN( Function ); } +<FuncQual>[{:;,] { + if ( strcmp(yytext,";")==0 && insidePHP && current->type.left(8) != "function" ) + { + current->reset(); + initEntry(); + BEGIN( FindMembers ); + } + else + { + unput(*yytext); BEGIN( Function ); + } + } <FuncQual>{BN}*"const"{BN}* { lineCount() ; current->args += " const "; @@ -2353,7 +2410,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'")) //printf("Scanner.l: found in class function: `%s' `%s' `%s'\n", // current->type.data(),current->name.data(),current->args.data()); current->section = Entry::FUNCTION_SEC ; - current->proto = *yytext==';'; + current->proto = *yytext==';'; } } else // a global function prototype or function variable @@ -2369,36 +2426,46 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'")) else { //printf("Scanner.l: found prototype\n"); - current->section = Entry::FUNCTION_SEC; + current->section = Entry::FUNCTION_SEC; current->proto = TRUE; } } //printf("Adding entry `%s'\n",current->name.data()); - previous = current; - current_root->addSubEntry(current); - current = new Entry ; - initEntry(); - lastCurlyContext = FindMembers; - if ( *yytext == ',' ) - { - current->type = previous->type.data(); - } - if ( *yytext == '{' ) + if ( insidePHP && current->type.left(8) != "function" ) { - if (current_root->section & Entry::COMPOUND_MASK) - previous->memSpec = previous->memSpec | Entry::Inline; - //addToBody(yytext); - curlyCount=0; - BEGIN( SkipCurly ) ; + initEntry(); } else { - if (previous->section!=Entry::VARIABLE_SEC) - previous->bodyLine=-1; // a function/member declaration - BEGIN( FindMembers ) ; + if ( insidePHP && current->type.left(8) == "function" ) + { + current->type = current->type.mid(8); + } + previous = current; + current_root->addSubEntry(current); + current = new Entry ; + initEntry(); + lastCurlyContext = FindMembers; + if ( *yytext == ',' ) + { + current->type = previous->type.data(); + } + if ( *yytext == '{' ) + { + if ( !insidePHP && (current_root->section & Entry::COMPOUND_MASK) ) + previous->memSpec = previous->memSpec | Entry::Inline; + //addToBody(yytext); + curlyCount=0; + BEGIN( SkipCurly ) ; + } + else + { + if (previous->section!=Entry::VARIABLE_SEC) + previous->bodyLine=-1; // a function/member declaration + BEGIN( FindMembers ) ; + } } - } - + } <SkipInits>"{" { //addToBody(yytext); //lastCurlyContext = FindMembers; @@ -2592,6 +2659,14 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'")) baseName.resize(0); BEGIN( BasesProt ) ; } + else if (insidePHP && (strcmp(yytext,"extends")==0)) + { + current->type.resize(0); + baseProt=Public; + baseVirt=Normal; + baseName.resize(0); + BEGIN( BasesProt ) ; + } else { //if (isTypedef) @@ -2618,9 +2693,9 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'")) } <ClassVar>":" { current->type.resize(0); - if (current->section == Entry::INTERFACE_SEC || current->section == Entry::STRUCT_SEC) + if (current->section == Entry::INTERFACE_SEC || current->section == Entry::STRUCT_SEC || insidePHP) baseProt=Public; - else + else baseProt=Private; baseVirt=Normal; baseName.resize(0); @@ -2715,7 +2790,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'")) current->extends->append( new BaseInfo(baseName,baseProt,baseVirt) ); - if (current->section == Entry::INTERFACE_SEC || insideJava) + if (current->section == Entry::INTERFACE_SEC || insideJava || insidePHP) baseProt=Public; else baseProt=Private; @@ -4126,22 +4201,61 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'")) current->doc+=yytext; } <Doc,ClassDoc,PageDoc,ExampleDoc,AfterDoc,CopyArgComment>{CMD}[a-z_A-Z][a-z_A-Z0-9]* { - QCString *pValue=Doxygen::aliasDict[yytext+1]; - if (pValue) - { - int i,l=pValue->length(); - for (i=l-1;i>=0;i--) + bool handled=FALSE; + if ( useOverrideCommands) + { + if ( strcmp(yytext+1,"static")==0 ) + { + current->stat = TRUE; handled = TRUE; + } + else if ( strcmp(yytext+1,"pure")==0 ) + { + current->virt = Pure; handled = TRUE; + } + else if ( strcmp(yytext+1,"private")==0 ) + { + current->protection = Private; handled = TRUE; + } + else if ( strcmp(yytext+1,"privatesection")==0 ) + { + current->protection = protection = Private; handled = TRUE; + } + else if ( strcmp(yytext+1,"protected")==0 ) + { + current->protection = Protected; handled = TRUE; + } + else if ( strcmp(yytext+1,"protectedsection")==0 ) + { + current->protection = protection = Protected ; handled = TRUE; + } + else if ( strcmp(yytext+1,"public")==0 ) + { + current->protection = Public; handled = TRUE; + } + else if ( strcmp(yytext+1,"publicsection")==0 ) + { + current->protection = protection = Public; handled = TRUE; + } + } + if (!handled) + { + QCString *pValue=Doxygen::aliasDict[yytext+1]; + if (pValue) { - unput(pValue->at(i)); + int i,l=pValue->length(); + for (i=l-1;i>=0;i--) + { + unput(pValue->at(i)); + } } - } - else - { - if (YY_START==CopyArgComment) - fullArgString+=yytext; else - current->doc+=yytext; - } + { + if (YY_START==CopyArgComment) + fullArgString+=yytext; + else + current->doc+=yytext; + } + } } <JavaDoc,LineDoc,ClassDocBrief,AfterDocBrief,AfterDocLine>"\\"[a-z_A-Z][a-z_A-Z0-9]*[\\] { // directory type of text current->brief+=yytext; @@ -4307,7 +4421,7 @@ static void parseCompounds(Entry *rt) // set default protection based on the compound type if( ce->section==Entry::CLASS_SEC ) // class { - if (ce->fileName.right(5)==".java") + if (ce->fileName.right(5)==".java" || ce->fileName.right(4)==".php") current->protection = protection = Public ; // Actually this should be package scope! else current->protection = protection = Private ; diff --git a/src/tagreader.cpp b/src/tagreader.cpp index acbcb0c..6934966 100644 --- a/src/tagreader.cpp +++ b/src/tagreader.cpp @@ -1159,15 +1159,19 @@ void TagFileParser::addIncludes() TagFileInfo *tfi = m_tagFileFiles.first(); while (tfi) { + //printf("tag file tagName=%s path=%s name=%s\n",m_tagName.data(),tfi->path.data(),tfi->name.data()); FileName *fn = Doxygen::inputNameDict->find(tfi->name); if (fn) { + //printf("found\n"); FileNameIterator fni(*fn); FileDef *fd; for (;(fd=fni.current());++fni) { + //printf("input file path=%s name=%s\n",fd->getPath().data(),fd->name().data()); if (fd->getPath()==QCString(m_tagName+":"+tfi->path)) { + //printf("found\n"); QListIterator<TagIncludeInfo> mii(tfi->includes); TagIncludeInfo *ii; for (;(ii=mii.current());++mii) @@ -1213,3 +1217,4 @@ void parseTagFile(Entry *root,const char *fullName,const char *tagName) handler.addIncludes(); } + diff --git a/src/translator_jp.h b/src/translator_jp.h index 2e995a5..30ac856 100644 --- a/src/translator_jp.h +++ b/src/translator_jp.h @@ -29,6 +29,38 @@ #ifndef TRANSLATOR_JP_H #define TRANSLATOR_JP_H +class TranslatorJapaneseEn : public TranslatorEnglish +{ + public: + virtual QCString idLanguage() + { return "japanese"; } + virtual QCString latexLanguageSupportCommand() + { + return ""; + } + /*! returns the name of the package that is included by LaTeX */ + virtual QCString idLanguageCharset() + { +#ifdef _WIN32 + return "Shift_JIS"; +#else + return "euc-jp"; +#endif + } + virtual QCString trRTFansicp() + { + return "932"; + } + + /*! Used as ansicpg for RTF fcharset + * \see trRTFansicp() for a table of possible values. + */ + virtual QCString trRTFCharSet() + { + return "128"; + } +}; + class TranslatorJapanese : public Translator { private: @@ -64,7 +96,7 @@ class TranslatorJapanese : public Translator /*! subscript for the related functions. */ virtual QCString trRelatedSubscript() - { return decode("ĄĘ¤ł¤ě¤é¤ĎĽáĽóĽĐ´Řżô¤Ç¤Ę¤¤¤ł¤Č¤ËĂí°ŐĄË"); } + { return decode("ĄĘ¤ł¤ě¤é¤ĎĽáĽ˝ĽĂĽÉ¤Ç¤Ę¤¤¤ł¤Č¤ËĂí°ŐĄË"); } /*! header that is put before the detailed description of files, classes and namespaces. */ virtual QCString trDetailedDescription() @@ -72,15 +104,15 @@ class TranslatorJapanese : public Translator /*! header that is put before the list of typedefs. */ virtual QCString trMemberTypedefDocumentation() - { return decode("Typedef ĽáĽóĽĐ¤Î˛ňŔâ"); } + { return decode("Typedef ¤Î˛ňŔâ"); } /*! header that is put before the list of enumerations. */ virtual QCString trMemberEnumerationDocumentation() - { return decode("Enum ĽáĽóĽĐ¤Î˛ňŔâ"); } + { return decode("Enum ¤Î˛ňŔâ"); } /*! header that is put before the list of member functions. */ virtual QCString trMemberFunctionDocumentation() - { return decode("´ŘżôĽáĽóĽĐ¤Î˛ňŔâ"); } + { return decode("ĽáĽ˝ĽĂĽÉ¤Î˛ňŔâ"); } /*! header that is put before the list of member attributes. */ virtual QCString trMemberDataDocumentation() @@ -91,7 +123,7 @@ class TranslatorJapanese : public Translator } else { - return decode("ĽáĽóĽĐ¤Î˛ňŔâ"); + return decode("ĘŃżô¤Î˛ňŔâ"); } } @@ -258,7 +290,7 @@ class TranslatorJapanese : public Translator QCString result=decode("¤ł¤ě¤Ď"); if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) { - result+=decode("´ŘżôĄ˘ĘŃżôĄ˘ĽŢĽŻĽíĄ˘ÎóľóˇżĄ˘ˇżÄęľÁ¤Î"); + result+=decode("´ŘżôĄ˘ĘŃżôĄ˘ĽŢĽŻĽíĄ˘EnumĄ˘Typedef ¤Î"); } else { @@ -389,13 +421,13 @@ class TranslatorJapanese : public Translator * list of typedefs */ virtual QCString trTypedefs() - { return decode("ˇżÄęľÁ"); } + { return decode("Typedef"); } /*! This is used in the documentation of a file as a header before the * list of enumerations */ virtual QCString trEnumerations() - { return decode("Îóľóˇż"); } + { return decode("Enum"); } /*! This is used in the documentation of a file as a header before the * list of (global) functions @@ -413,7 +445,7 @@ class TranslatorJapanese : public Translator * list of (global) variables */ virtual QCString trEnumerationValues() - { return decode("ÎóľóĂÍ"); } + { return decode("Enum ĂÍ"); } /*! This is used in the documentation of a file before the list of * documentation blocks for defines */ @@ -430,19 +462,19 @@ class TranslatorJapanese : public Translator * of documentation blocks for typedefs */ virtual QCString trTypedefDocumentation() - { return decode("ˇżÄęľÁ¤Î˛ňŔâ"); } + { return decode("Typedef ¤Î˛ňŔâ"); } /*! This is used in the documentation of a file/namespace before the list * of documentation blocks for enumeration types */ virtual QCString trEnumerationTypeDocumentation() - { return decode("Îóľóˇż¤Î˛ňŔâ"); } + { return decode("Enum ¤Î˛ňŔâ"); } /*! This is used in the documentation of a file/namespace before the list * of documentation blocks for enumeration values */ virtual QCString trEnumerationValueDocumentation() - { return decode("ÎóľóĂͤβňŔâ"); } + { return decode("Enum ĂͤβňŔâ"); } /*! This is used in the documentation of a file/namespace before the list * of documentation blocks for functions @@ -609,25 +641,25 @@ class TranslatorJapanese : public Translator /* these are for the member sections of a class, struct or union */ virtual QCString trPublicMembers() - { return decode("Public ĽáĽóĽĐ"); } + { return decode("Public ĽáĽ˝ĽĂĽÉ"); } virtual QCString trPublicSlots() { return decode("Public ĽšĽíĽĂĽČ"); } virtual QCString trSignals() { return decode("ĽˇĽ°ĽĘĽë"); } virtual QCString trStaticPublicMembers() - { return decode("Static Public ĽáĽóĽĐ"); } + { return decode("Static Public ĽáĽ˝ĽĂĽÉ"); } virtual QCString trProtectedMembers() - { return decode("Protected ĽáĽóĽĐ"); } + { return decode("Protected ĽáĽ˝ĽĂĽÉ"); } virtual QCString trProtectedSlots() { return decode("Protected ĽšĽíĽĂĽČ"); } virtual QCString trStaticProtectedMembers() - { return decode("Static Protected ĽáĽóĽĐ"); } + { return decode("Static Protected ĽáĽ˝ĽĂĽÉ"); } virtual QCString trPrivateMembers() - { return decode("Private ĽáĽóĽĐ"); } + { return decode("Private ĽáĽ˝ĽĂĽÉ"); } virtual QCString trPrivateSlots() { return decode("Private ĽšĽíĽĂĽČ"); } virtual QCString trStaticPrivateMembers() - { return decode("Static Private ĽáĽóĽĐ"); } + { return decode("Static Private ĽáĽ˝ĽĂĽÉ"); } /*! this function is used to produce a comma-separated list of items. * use generateMarker(i) to indicate where item i should be put. @@ -880,22 +912,22 @@ class TranslatorJapanese : public Translator } virtual QCString trPublicTypes() { - return decode("¸řłŤˇż"); + return decode("Public ˇż"); } virtual QCString trPublicAttribs() { if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) { - return decode("ĽÇĄźĽżĽŐĽŁĄźĽëĽÉ"); + return decode("ĘŃżô"); } else { - return decode("Public °Ŕ"); + return decode("Public ĘŃżô"); } } virtual QCString trStaticPublicAttribs() { - return decode("Static Public °Ŕ"); + return decode("Static Public ĘŃżô"); } virtual QCString trProtectedTypes() { @@ -903,11 +935,11 @@ class TranslatorJapanese : public Translator } virtual QCString trProtectedAttribs() { - return decode("Protected °Ŕ"); + return decode("Protected ĘŃżô"); } virtual QCString trStaticProtectedAttribs() { - return decode("Static Protected °Ŕ"); + return decode("Static Protected ĘŃżô"); } virtual QCString trPrivateTypes() { @@ -915,11 +947,11 @@ class TranslatorJapanese : public Translator } virtual QCString trPrivateAttribs() { - return decode("Private °Ŕ"); + return decode("Private ĘŃżô"); } virtual QCString trStaticPrivateAttribs() { - return decode("Static Private °Ŕ"); + return decode("Static Private ĘŃżô"); } ////////////////////////////////////////////////////////////////////////// @@ -1334,4 +1366,5 @@ class TranslatorJapanese : public Translator } }; + #endif diff --git a/src/translator_sr.h b/src/translator_sr.h new file mode 100644 index 0000000..aa5502b --- /dev/null +++ b/src/translator_sr.h @@ -0,0 +1,1400 @@ +/****************************************************************************** + * + * + * + * Copyright (C) 1997-2002 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_SR_H +#define TRANSLATOR_SR_H + +// translation by Dejan D. M. Milosavljevic <dmilos@email.com>;<dmilosx@ptt.yu> + +class TranslatorSerbian : public Translator +{ + QCString decode(const QCString& sInput) + { +#ifdef _WIN32 + return ISO88592ToWin1250(sInput); +#else + return sInput; +#endif + } + + + public: + + // --- Language control methods ------------------- + + /*! Used for identification of the language. The identification + * should not be translated. It should be replaced by the name + * of the language in English using lower-case characters only + * (e.g. "czech", "japanese", "russian", etc.). It should be equal to + * the identification used in language.cpp. + */ + virtual QCString idLanguage() + { return "serbian"; } + + /*! Used to get the LaTeX command(s) for the language support. + * This method should return string with commands that switch + * LaTeX to the desired language. For example + * <pre>"\\usepackage[german]{babel}\n" + * </pre> + * or + * <pre>"\\usepackage{polski}\n" + * "\\usepackage[latin2]{inputenc}\n" + * "\\usepackage[T1]{fontenc}\n" + * </pre> + * + * The English LaTeX does not use such commands. Because of this + * the empty string is returned in this implementation. + */ + virtual QCString latexLanguageSupportCommand() + { + return ""; + } + + /*! return the language charset. This will be used for the HTML output */ + virtual QCString idLanguageCharset() + { +#ifdef _WIN32 + { return "windows-1250"; } +#else + { return "iso-8859-2"; } +#endif + } + + // --- Language translation methods ------------------- + + /*! used in the compound documentation before a list of related functions. */ + virtual QCString trRelatedFunctions() + { return "Povezane funkcije"; } + + /*! subscript for the related functions. */ + virtual QCString trRelatedSubscript() + { return decode( "(To nisu funkcije članice.)" ); } + + /*! header that is put before the detailed description of files, classes and namespaces. */ + virtual QCString trDetailedDescription() + { return decode( "Detaljno objašnjenje" ); } + + /*! header that is put before the list of typedefs. */ + virtual QCString trMemberTypedefDocumentation() + { return decode( "Dokumentacija typedef članova" ); } + + /*! header that is put before the list of enumerations. */ + virtual QCString trMemberEnumerationDocumentation() + { return decode( "Dokumentacija enum članova" ); } + + /*! header that is put before the list of member functions. */ + virtual QCString trMemberFunctionDocumentation() + { return "Dokumentacija funkcija članica"; } + + /*! header that is put before the list of member attributes. */ + virtual QCString trMemberDataDocumentation() + { + if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) + { + return "Dokumentacija članova"; + } + else + { + return "Documentacija javnoh članova"; + } + } + + /*! this is the text of a link put after brief descriptions. */ + virtual QCString trMore() + { return "Još..."; } + + /*! put in the class documentation */ + virtual QCString trListOfAllMembers() + { return "Spisak svih članova."; } + + /*! used as the title of the "list of all members" page of a class */ + virtual QCString trMemberList() + { return "Spisak članova"; } + + /*! this is the first part of a sentence that is followed by a class name */ + virtual QCString trThisIsTheListOfAllMembers() + { return "Ovo je spisak svih članova "; } + + /*! this is the remainder of the sentence after the class name */ + virtual QCString trIncludingInheritedMembers() + { return ", uključujući nasleđene članove."; } + + /*! this is put at the author sections at the bottom of man pages. + * parameter s is name of the project name. + */ + virtual QCString trGeneratedAutomatically(const char *s) + { QCString result="Napravljeno automatski Doxygen-om"; + if (s) result+=(QCString)" za "+s; + result+=" od izvornog koda."; + return result; + } + + /*! put after an enum name in the list of all members */ + virtual QCString trEnumName() + { return "ime enum-a "; } + + /*! put after an enum value in the list of all members */ + virtual QCString trEnumValue() + { return "vrednost enum-a"; } + + /*! put after an undocumented member in the list of all members */ + virtual QCString trDefinedIn() + { return "definisano u"; } + + // 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). + */ + virtual QCString trModules() + { return "Moduli"; } + + /*! This is put above each page as a link to the class hierarchy */ + virtual QCString trClassHierarchy() + { return "Stablo klasa"; } + + /*! This is put above each page as a link to the list of annotated classes */ + virtual QCString trCompoundList() + { + if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) + { + return "Sve strukture"; + } + else + { + return "Sve klase"; + } + } + + /*! This is put above each page as a link to the list of documented files */ + virtual QCString trFileList() + { return "Spisak fajlova"; } + + /*! This is put above each page as a link to the list of all verbatim headers */ + virtual QCString trHeaderFiles() + { return "Zaglavlja"; } + + /*! This is put above each page as a link to all members of compounds. */ + virtual QCString trCompoundMembers() + { + if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) + { + return "Svi članovi struktura"; + } + else + { + return "Svi članovi klasa"; + } + } + + /*! This is put above each page as a link to all members of files. */ + virtual QCString trFileMembers() + { + if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) + { + return "Globalni"; + } + else + { + return "Lokalni"; + } + } + + /*! This is put above each page as a link to all related pages. */ + virtual QCString trRelatedPages() + { return "Stranice povezane s ovom"; } + + /*! This is put above each page as a link to all examples. */ + virtual QCString trExamples() + { return "Primeri"; } + + /*! This is put above each page as a link to the search engine. */ + virtual QCString trSearch() + { return "Traži"; } + + /*! This is an introduction to the class hierarchy. */ + virtual QCString trClassHierarchyDescription() + { return "Stablo nasleđivanja je složeno ""približno po abecedi:"; } + + /*! This is an introduction to the list with all files. */ + virtual QCString trFileListDescription(bool extractAll) + { + QCString result="Spisak svih "; + if (!extractAll) result+="dokumetovanih "; + result+="fajlova, sa kratkim opisom:"; + return result; + } + + /*! This is an introduction to the annotated compound list. */ + virtual QCString trCompoundListDescription() + { + + if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) + { + return "Spisak struktura sa kratkim opisom:"; + } + else + { + return "Spisak klasa, struktura, unija i interjfejsa sa kratkim opisom:"; + + } + } + + /*! This is an introduction to the page with all class members. */ + virtual QCString trCompoundMembersDescription(bool extractAll) + { + QCString result="Spisak svih "; + if (!extractAll) + { + result+="dokumentovanih "; + } + if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) + { + result+="članova struktura ili unija"; + } + else + { + result+="članova klasa"; + } + result+=" sa linkovima na "; + if (extractAll) + { + if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) + { + result+="dokumentaciju članova struktura/unija:"; + } + else + { + result+="dokumentaciju svakog člana klase:"; + } + } + else + { + if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) + { + result+="strukture/uniije koje pripadaju:"; + } + else + { + result+="klase koje pripadaju:"; + } + } + return result; + } + + /*! This is an introduction to the page with all file members. */ + virtual QCString trFileMembersDescription(bool extractAll) + { + QCString result="Spisak svih "; + if (!extractAll) result+="dokumentovanih "; + + if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) + { + result+="funkcija, promenjiva, makro zamena, enum-a, i typedef-va"; + } + else + { + result+="članova"; + } + + result+=" sa linkovima na "; + + if (extractAll) + result+="fajlove u kojima se nalaze:"; + else + result+=" dokumentaciju:"; + return decode( result ); + } + + /*! This is an introduction to the page with the list of all header files. */ + virtual QCString trHeaderFilesDescription() + { return decode( "Zaglavlja koje izgrađuju API:" ); } + + /*! This is an introduction to the page with the list of all examples */ + virtual QCString trExamplesDescription() + { return "Spisak primera:"; } + + /*! This is an introduction to the page with the list of related pages */ + virtual QCString trRelatedPagesDescription() + { return decode( "Spisak svih slčinih stranica:" ); } + + /*! This is an introduction to the page with the list of class/file groups */ + virtual QCString trModulesDescription() + { return "Spisak svih modula:"; } + + /*! This sentences is used in the annotated class/file lists if no brief + * description is given. + */ + virtual QCString trNoDescriptionAvailable() + { return "Opis nije dostupan"; } + + // index titles (the project name is prepended for these) + + + /*! This is used in HTML as the title of index.html. */ + virtual QCString trDocumentation() + { return "Dokumentacija"; } + + /*! This is used in LaTeX as the title of the chapter with the + * index of all groups. + */ + virtual QCString trModuleIndex() + { return "Index modula"; } + + /*! This is used in LaTeX as the title of the chapter with the + * class hierarchy. + */ + virtual QCString trHierarchicalIndex() + { return "Hijerarhijski sadžraj"; } + + /*! This is used in LaTeX as the title of the chapter with the + * annotated compound index. + */ + virtual QCString trCompoundIndex() + { + if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) + { + return decode( "Glavni sadržaj" ); + } + else + { + return decode( "Glavni sadržaj" ); + } + } + + /*! This is used in LaTeX as the title of the chapter with the + * list of all files. + */ + virtual QCString trFileIndex() + { return "Indeks fajlova"; } + + /*! This is used in LaTeX as the title of the chapter containing + * the documentation of all groups. + */ + virtual QCString trModuleDocumentation() + { return "Dokumentacija modula"; } + + /*! This is used in LaTeX as the title of the chapter containing + * the documentation of all classes, structs and unions. + */ + virtual QCString trClassDocumentation() + { + if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) + { + return "Dokumentacija stuktura"; + } + else + { + return "Dokumentacija klasa"; + } + } + + /*! This is used in LaTeX as the title of the chapter containing + * the documentation of all files. + */ + virtual QCString trFileDocumentation() + { return "Dokumentacija fajla"; } + + /*! This is used in LaTeX as the title of the chapter containing + * the documentation of all examples. + */ + virtual QCString trExampleDocumentation() + { return "Dokumentacija primera"; } + + /*! This is used in LaTeX as the title of the chapter containing + * the documentation of all related pages. + */ + virtual QCString trPageDocumentation() + { return "Dokumentacija stranice"; } + + /*! This is used in LaTeX as the title of the document */ + virtual QCString trReferenceManual() + { return decode("Priručnik"); } + + /*! This is used in the documentation of a file as a header before the + * list of defines + */ + virtual QCString trDefines() + { return "Makro zamene"; } + + /*! This is used in the documentation of a file as a header before the + * list of function prototypes + */ + virtual QCString trFuncProtos() + { return "Deklaracija funkcije"; } + + /*! This is used in the documentation of a file as a header before the + * list of typedefs + */ + virtual QCString trTypedefs() + { return "Typedef-ovi"; } + + /*! This is used in the documentation of a file as a header before the + * list of enumerations + */ + virtual QCString trEnumerations() + { return "Enum-ovi"; } + + /*! This is used in the documentation of a file as a header before the + * list of (global) functions + */ + virtual QCString trFunctions() + { return "Funkcije"; } + + /*! This is used in the documentation of a file as a header before the + * list of (global) variables + */ + virtual QCString trVariables() + { return "Promenjive"; } + + /*! This is used in the documentation of a file as a header before the + * list of (global) variables + */ + virtual QCString trEnumerationValues() + { return "Vrednosti enum-ova"; } + + /*! This is used in the documentation of a file before the list of + * documentation blocks for defines + */ + virtual QCString trDefineDocumentation() + { return "Dokumentacija makro zamene"; } + + /*! This is used in the documentation of a file/namespace before the list + * of documentation blocks for function prototypes + */ + virtual QCString trFunctionPrototypeDocumentation() + { return "Dokumentacija deklaracije funkcije"; } + + /*! This is used in the documentation of a file/namespace before the list + * of documentation blocks for typedefs + */ + virtual QCString trTypedefDocumentation() + { return "Dokumentacija typedef-a"; } + + /*! This is used in the documentation of a file/namespace before the list + * of documentation blocks for enumeration types + */ + virtual QCString trEnumerationTypeDocumentation() + { return "Dokumetacija enum tipa"; } + + /*! This is used in the documentation of a file/namespace before the list + * of documentation blocks for enumeration values + */ + virtual QCString trEnumerationValueDocumentation() + { return "Dokumentacija enum vrednosti"; } + + /*! This is used in the documentation of a file/namespace before the list + * of documentation blocks for functions + */ + virtual QCString trFunctionDocumentation() + { return "Dokumentacija funkcije"; } + + /*! This is used in the documentation of a file/namespace before the list + * of documentation blocks for variables + */ + virtual QCString trVariableDocumentation() + { return "Dokumentacija promenjive"; } + + /*! This is used in the documentation of a file/namespace/group before + * the list of links to documented compounds + */ + virtual QCString trCompounds() + { + if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) + { + return "Strukture"; + } + else + { + return "Klase i strukture"; + } + } + + /*! This is used in the standard footer of each page and indicates when + * the page was generated + */ + virtual QCString trGeneratedAt(const char *date,const char *projName) + { + QCString result=(QCString)"Napravljeno "+date; + if (projName) result+=(QCString)" za "+projName; + result+=(QCString)" od"; + return result; + } + /*! This is part of the sentence used in the standard footer of each page. + */ + virtual QCString trWrittenBy() + { + return "napisao"; + } + + /*! this text is put before a class diagram */ + virtual QCString trClassDiagram(const char *clName) + { + return decode( QCString("Dijagram nasleđivanja za klasu ") + clName+":" ); + } + + /*! this text is generated when the \\internal command is used. */ + virtual QCString trForInternalUseOnly() + { return decode( "Samo za unutrasnju upotrebu." ); } + + /*! this text is generated when the \\reimp command is used. */ + virtual QCString trReimplementedForInternalReasons() + { return decode("Preurađeno zbog internih razloga; Nema uticaja na API." ); } + + /*! this text is generated when the \\warning command is used. */ + virtual QCString trWarning() + { return "Upozorenje"; } + + /*! this text is generated when the \\bug command is used. */ + virtual QCString trBugsAndLimitations() + { return decode("Greške i ograničenja"); } + + /*! this text is generated when the \\version command is used. */ + virtual QCString trVersion() + { return "Verzija"; } + + /*! this text is generated when the \\date command is used. */ + virtual QCString trDate() + { return "Datum"; } + + /*! this text is generated when the \\return command is used. */ + virtual QCString trReturns() + { return decode( "Vraćenene vrednosti" ); } + + /*! this text is generated when the \\sa command is used. */ + virtual QCString trSeeAlso() + { return "Takođe pogledati"; } + + /*! this text is generated when the \\param command is used. */ + virtual QCString trParameters() + { return "Parametri"; } + + /*! this text is generated when the \\exception command is used. */ + virtual QCString trExceptions() + { return "Izuzeci"; } + + /*! this text is used in the title page of a LaTeX document. */ + virtual QCString trGeneratedBy() + { return "Napravio"; } + +////////////////////////////////////////////////////////////////////////// +// new since 0.49-990307 +////////////////////////////////////////////////////////////////////////// + + /*! used as the title of page containing all the index of all namespaces. */ + virtual QCString trNamespaceList() + { return "Spisak prostora imena"; } + + /*! used as an introduction to the namespace list */ + virtual QCString trNamespaceListDescription(bool extractAll) + { + QCString result="Spisak svih "; + if (!extractAll) result+="dokumentovanih "; + result+="prostora imena sa kratkim opisom:"; + return result; + } + + /*! used in the class documentation as a header before the list of all + * friends of a class + */ + virtual QCString trFriends() + { return "Prijatelji"; } + +////////////////////////////////////////////////////////////////////////// +// new since 0.49-990405 +////////////////////////////////////////////////////////////////////////// + + /*! used in the class documentation as a header before the list of all + * related classes + */ + virtual QCString trRelatedFunctionDocumentation() + { return "Dokumentacija prijateljskih funkcija ili klasa"; } + +////////////////////////////////////////////////////////////////////////// +// new since 0.49-990425 +////////////////////////////////////////////////////////////////////////// + + /*! used as the title of the HTML page of a class/struct/union */ + virtual QCString trCompoundReference(const char *clName, + ClassDef::CompoundType compType, + bool isTemplate) + { + QCString result( "Dokumentacija " ); + + switch(compType) + { + case ClassDef::Class: result+="klase "; break; + case ClassDef::Struct: result+="strukture "; break; + case ClassDef::Union: result+="unije "; break; + case ClassDef::Interface: result+="interfejsa "; break; + case ClassDef::Exception: result+="izuzetka "; break; + } + if (isTemplate) result+="švablona "; + + result += clName; + return decode( result ); + } + + /*! used as the title of the HTML page of a file */ + virtual QCString trFileReference(const char *fileName) + { + QCString result=fileName; + result+=" Opis fajla"; + return result; + } + + /*! used as the title of the HTML page of a namespace */ + virtual QCString trNamespaceReference(const char *namespaceName) + { + QCString result=namespaceName; + result+=" Opis prostora imena"; + return result; + } + + virtual QCString trPublicMembers() + { return decode("Javni članovi"); } + virtual QCString trPublicSlots() + { return "Javni slotovi"; } + virtual QCString trSignals() + { return "Signali"; } + virtual QCString trStaticPublicMembers() + { return decode("Zajednički javni članovi"); } + virtual QCString trProtectedMembers() + { return decode("Zastićeni članovi"); } + virtual QCString trProtectedSlots() + { return decode("Zastićeni slotovi"); } + virtual QCString trStaticProtectedMembers() + { return decode("Zajednički zaštićeni članovi"); } + virtual QCString trPrivateMembers() + { return decode("Privani članovi"); } + virtual QCString trPrivateSlots() + { return decode("Privatni slotovi"); } + virtual QCString trStaticPrivateMembers() + { return decode("Zajednički privatni članovi"); } + + /*! this function is used to produce a comma-separated list of items. + * use generateMarker(i) to indicate where item i should be put. + */ + virtual 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+=" i "; + } + } + return result; + } + + /*! used in class documentation to produce a list of base classes, + * if class diagrams are disabled. + */ + virtual QCString trInheritsList(int numEntries) + { + return decode("Nasleđeno od "+trWriteList(numEntries)+"."); + } + + /*! used in class documentation to produce a list of super classes, + * if class diagrams are disabled. + */ + virtual QCString trInheritedByList(int numEntries) + { + return decode( "Nasleđeno u "+trWriteList(numEntries)+"." ); + } + + /*! used in member documentation blocks to produce a list of + * members that are hidden by this one. + */ + virtual QCString trReimplementedFromList(int numEntries) + { + return decode("Preurađeno od "+trWriteList(numEntries)+"." ); + } + + /*! used in member documentation blocks to produce a list of + * all member that overwrite the implementation of this member. + */ + virtual QCString trReimplementedInList(int numEntries) + { + return decode("Preurađeno u "+trWriteList(numEntries)+"." ); + } + + /*! This is put above each page as a link to all members of namespaces. */ + virtual QCString trNamespaceMembers() + { return decode("Članovi prostora imena"); } + + /*! This is an introduction to the page with all namespace members */ + virtual QCString trNamespaceMemberDescription(bool extractAll) + { + QCString result="Spisak svih "; + if (!extractAll) result+="dokumentovanih "; + result+="članova prostora imena sa linkovima na "; + if (extractAll) + result+="dokumentaciju svakog člana prostora imena: "; + else + result+="prostor imena kojima pripadaju: "; + return result; + } + /*! This is used in LaTeX as the title of the chapter with the + * index of all namespaces. + */ + virtual QCString trNamespaceIndex() + { return "Index prostora imena"; } + + /*! This is used in LaTeX as the title of the chapter containing + * the documentation of all namespaces. + */ + virtual QCString trNamespaceDocumentation() + { return "Dokumentacija prostora imena"; } + +////////////////////////////////////////////////////////////////////////// +// new since 0.49-990522 +////////////////////////////////////////////////////////////////////////// + + /*! This is used in the documentation before the list of all + * namespaces in a file. + */ + virtual QCString trNamespaces() + { return "Prostori imena"; } + +////////////////////////////////////////////////////////////////////////// +// 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. + */ + virtual 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)"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+="interfejsa"; break; + case ClassDef::Exception: result+="izuzetka"; break; + } + result+=" je napravljen iz "; + if (single) result+=":"; else result+=":"; + return result; + } + + /*! This is in the (quick) index as a link to the alphabetical compound + * list. + */ + virtual QCString trAlphabeticalList() + { return "Abecedni spisak"; } + +////////////////////////////////////////////////////////////////////////// +// new since 0.49-990901 +////////////////////////////////////////////////////////////////////////// + + /*! This is used as the heading text for the retval command. */ + virtual QCString trReturnValues() + { return "Vraćena vrednost"; } + + /*! This is in the (quick) index as a link to the main page (index.html) + */ + virtual QCString trMainPage() + { return "Glavna strana"; } + + /*! This is used in references to page that are put in the LaTeX + * documentation. It should be an abbreviation of the word page. + */ + virtual QCString trPageAbbreviation() + { return "str."; } + +////////////////////////////////////////////////////////////////////////// +// new since 0.49-991003 +////////////////////////////////////////////////////////////////////////// + + virtual QCString trSources() + { + return "Izvorni fajlovi"; + } + virtual QCString trDefinedAtLineInSourceFile() + { + return "Definisano u redu @0 fajla @1."; + } + virtual QCString trDefinedInSourceFile() + { + return "Definisano u fajlu @0."; + } + +////////////////////////////////////////////////////////////////////////// +// new since 0.49-991205 +////////////////////////////////////////////////////////////////////////// + + virtual QCString trDeprecated() + { + return "Matoro"; + } + +////////////////////////////////////////////////////////////////////////// +// new since 1.0.0 +////////////////////////////////////////////////////////////////////////// + + /*! this text is put before a collaboration diagram */ + virtual QCString trCollaborationDiagram(const char *clName) + { + return decode( (QCString)"Dijagram nasleđenih članova za "+clName+":" ); + } + /*! this text is put before an include dependency graph */ + virtual QCString trInclDepGraph(const char *fName) + { + return decode( (QCString)"Graf zavisnosti fajlova za "+fName+":" ); + } + /*! header that is put before the list of constructor/destructors. */ + virtual QCString trConstructorDocumentation() + { + return "Dokumentacija konstruktora i destruktora"; + } + /*! Used in the file documentation to point to the corresponding sources. */ + virtual QCString trGotoSourceCode() + { + return "Izvorni kod."; + } + /*! Used in the file sources to point to the corresponding documentation. */ + virtual QCString trGotoDocumentation() + { + return "Dokumentacija."; + } + /*! Text for the \\pre command */ + virtual QCString trPrecondition() + { + return "Preduslovi"; + } + /*! Text for the \\post command */ + virtual QCString trPostcondition() + { + return "Postuslovi"; + } + /*! Text for the \\invariant command */ + virtual QCString trInvariant() + { + return "Invarijanta"; + } + /*! Text shown before a multi-line variable/enum initialization */ + virtual QCString trInitialValue() + { + return decode("Početna vriednost:"); + } + /*! Text used the source code in the file index */ + virtual QCString trCode() + { + return "kod"; + } + virtual QCString trGraphicalHierarchy() + { + return decode("Grafičko prikaz stablo klasa"); + } + virtual QCString trGotoGraphicalHierarchy() + { + return decode("Prikaži grafičko stablo klasa"); + } + virtual QCString trGotoTextualHierarchy() + { + return decode( "Prikaži tekstualno stablo klasa" ); + } + virtual QCString trPageIndex() + { + return "Indeks stranice"; + } + +////////////////////////////////////////////////////////////////////////// +// new since 1.1.0 +////////////////////////////////////////////////////////////////////////// + + virtual QCString trNote() + { + return "Primedba"; + } + virtual QCString trPublicTypes() + { + return "Javni tipovi"; + } + virtual QCString trPublicAttribs() + { + if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) + { + return "Član"; + } + else + { + return "Javni član"; + } + } + virtual QCString trStaticPublicAttribs() + { + return decode( "Zajednički javni članovi"); + } + virtual QCString trProtectedTypes() + { + return decode( "Zaštićeni tipovi" ); + } + virtual QCString trProtectedAttribs() + { + return decode( "Zaštićeni članovi" ); + } + virtual QCString trStaticProtectedAttribs() + { + return decode( "Zajednički zaštićeni članovi" ); + } + virtual QCString trPrivateTypes() + { + return "Privatni tipovi"; + } + virtual QCString trPrivateAttribs() + { + return "Privatni članovi"; + } + virtual QCString trStaticPrivateAttribs() + { + return decode("Zajednički privatni članovi"); + } + +////////////////////////////////////////////////////////////////////////// +// new since 1.1.3 +////////////////////////////////////////////////////////////////////////// + + /*! Used as a marker that is put before a \\todo item */ + virtual QCString trTodo() + { + return decode( "Neurađeno" ); + } + /*! Used as the header of the todo list */ + virtual QCString trTodoList() + { + return decode("Spisak neurađenog"); + } + +////////////////////////////////////////////////////////////////////////// +// new since 1.1.4 +////////////////////////////////////////////////////////////////////////// + + virtual QCString trReferencedBy() + { + return decode( "Korišćno od" ); + } + virtual QCString trRemarks() + { + return decode( "Zapažanja" ); + } + virtual QCString trAttention() + { + return decode("Pažnja");; + } + virtual QCString trInclByDepGraph() + { + return decode("Ovaj graf pokazuje koji fajl direktno " + "ili indirektno uključuju ovaj fajl: "); + } + virtual QCString trSince() + { + return "Od"; + } + +////////////////////////////////////////////////////////////////////////// +// new since 1.1.5 +////////////////////////////////////////////////////////////////////////// + + /*! title of the graph legend page */ + virtual QCString trLegendTitle() + { + return decode( "Objasnjenje koriscenih simbola" ); + } + /*! page explaining how the dot graph's should be interpreted + * The %A in the text below are to prevent link to classes called "A". + */ + virtual QCString trLegendDocs() + { + return decode( + "Ova stranica objašnjava kako tumačiti grafikone koje je napravio " + "doxygen.<p>\n" + "Na primer:\n" + "\\code\n" + "/*! Nevidljiva klasa ( nemože stati na graf zbog zadatih ograničenja ) */\n" + "class Invisible { };\n\n" + "/*! Odsečena klasa, neke osnovne klase su sakrivene */\n" + "class Truncated : public Invisible { };\n\n" + "/* Nedokumentovana klasa */\n" + "class Undocumented { };\n\n" + "/*! Javno nasleđena klasa */\n" + "class PublicBase : public Truncated { };\n\n" + "/*! Sablon klasa */\n" + "template<class T> class Templ { };\n\n" + "/*! Zaštićeno nasleđena klasa */\n" + "class ProtectedBase { };\n\n" + "/*! Privatno nasleđena klasa */\n" + "class PrivateBase { };\n\n" + "/*! Klasa koja je korišćena od drugih klasa*/\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" + " public Templ<int>\n" + "{\n" + " private:\n" + " Used *m_usedClass;\n" + "};\n" + "\\endcode\n" + "Ako je \\c MAX_DOT_GRAPH_HEIGHT tag u konfiguracionom fajlu " + "postavljen na 200 gornje veze će izgledati:" + "<p><center><img src=\"graph_legend."+Config_getEnum("DOT_IMAGE_FORMAT")+"\"></center>\n" + "<p>\n" + + "Pravougaonici imaju sledeća značenja:\n" + "<ul>\n" + "<li>Puni crni predstavlja strukturu ili klasu za koju je graf napravljen.\n" + "<li>Sa crnom ivicom predstavlja dokumentovanu strukturu ili klasu.\n" + "<li>Sa sivom icivom predstavlja nedokumentovanu strukturu ili klasu.\n" + "<li>Sa crvenom ivicom predstavlja dokumentovanu strukturu ili klasu\n" + "za koju nije prikazan graf naslijeđivanja/korišćenja. Graf je odsečen " + "ako ne stane unutar određenih granica." + + "Strelice imaju sledeća značenja:\n" + "<ul>\n" + "<li>Tamnoplava strelica označava javno nasleđivanje.\n" + "<li>Tamnozelena strelica označava zaštićeno nasleđivanje.\n" + "<li>Tamnocrvena strelica označava privatno nasleđivanje.\n" + "<li>Ljubičasta isprekidana strelica ako je klasa koristi ili je njen član. " + "Strelica je označena imenom člana.\n" + "<li>Zuta strelica označava vezu između primerka šablona" + " i šablon klase od koje je napravljena. " + "Strelica je označena imenom prarametra šablona.\n" + "</ul>\n" + ); + + } + /*! text for the link to the legend page */ + virtual QCString trLegend() + { + return decode( "Objačnjenje koričćenih simbola" ); + } + +////////////////////////////////////////////////////////////////////////// +// 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 "Spisak testova"; + } + +////////////////////////////////////////////////////////////////////////// +// new since 1.2.1 +////////////////////////////////////////////////////////////////////////// + + /*! Used as a section header for KDE-2 IDL methods */ + virtual QCString trDCOPMethods() + { + return "DCOP metode"; + } + +////////////////////////////////////////////////////////////////////////// +// new since 1.2.2 +////////////////////////////////////////////////////////////////////////// + + /*! Used as a section header for IDL properties */ + virtual QCString trProperties() + { + return "Osobine"; + } + /*! Used as a section header for IDL property documentation */ + virtual QCString trPropertyDocumentation() + { + return "Dokumentacija osobina"; + } + +////////////////////////////////////////////////////////////////////////// +// new since 1.2.4 +////////////////////////////////////////////////////////////////////////// + + /*! Used for Java interfaces in the summary section of Java packages */ + virtual QCString trInterfaces() + { + return "Interfejsi"; + } + /*! Used for Java classes in the summary section of Java packages */ + virtual QCString trClasses() + { + if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) + { + return "Strikture"; + } + else + { + return "Klase"; + } + } + /*! Used as the title of a Java package */ + virtual QCString trPackage(const char *name) + { + return (QCString)"Paket "+name; + } + /*! Title of the package index page */ + virtual QCString trPackageList() + { + return "Spisak paketa"; + } + /*! The description of the package index page */ + virtual QCString trPackageListDescription() + { + return "Paketi s kratkim opisom (ukoliko postoji):"; + } + /*! The link name in the Quick links header for each page */ + virtual QCString trPackages() + { + return "Paketi"; + } + /*! Used as a chapter title for Latex & RTF output */ + virtual QCString trPackageDocumentation() + { + return "Dokumentacija paketa"; + } + /*! Text shown before a multi-line define */ + virtual QCString trDefineValue() + { + return "Vrednost:"; + } + +////////////////////////////////////////////////////////////////////////// +// new since 1.2.5 +////////////////////////////////////////////////////////////////////////// + + /*! Used as a marker that is put before a \\bug item */ + virtual QCString trBug() + { + return decode("Greška");; + } + /*! Used as the header of the bug list */ + virtual QCString trBugList() + { + return decode("Spisak grešaka");; + } + +////////////////////////////////////////////////////////////////////////// +// new since 1.2.6 +////////////////////////////////////////////////////////////////////////// + + /*! Used as ansicpg for RTF file + * + * The following table shows the correlation of Charset name, Charset Value and + * <pre> + * Codepage number: + * Charset Name Charset Value(hex) Codepage number + * ------------------------------------------------------ + * DEFAULT_CHARSET 1 (x01) + * SYMBOL_CHARSET 2 (x02) + * OEM_CHARSET 255 (xFF) + * ANSI_CHARSET 0 (x00) 1252 + * RUSSIAN_CHARSET 204 (xCC) 1251 + * EE_CHARSET 238 (xEE) 1250 + * GREEK_CHARSET 161 (xA1) 1253 + * TURKISH_CHARSET 162 (xA2) 1254 + * BALTIC_CHARSET 186 (xBA) 1257 + * HEBREW_CHARSET 177 (xB1) 1255 + * ARABIC _CHARSET 178 (xB2) 1256 + * SHIFTJIS_CHARSET 128 (x80) 932 + * HANGEUL_CHARSET 129 (x81) 949 + * GB2313_CHARSET 134 (x86) 936 + * CHINESEBIG5_CHARSET 136 (x88) 950 + * </pre> + * + */ + virtual QCString trRTFansicp() + { + return "1252"; + } + + + /*! Used as ansicpg for RTF fcharset + * \see trRTFansicp() for a table of possible values. + */ + virtual QCString trRTFCharSet() + { + return "238"; + } + + /*! Used as header RTF general index */ + virtual QCString trRTFGeneralIndex() + { + return decode("Sadržaj");; + } + + /*! This is used for translation of the word that will possibly + * be followed by a single name or by a list of names + * of the category. + */ + virtual QCString trClass(bool first_capital, bool singular) + { + QCString result((first_capital ? "Klas" : "klas")); + result+= (singular ? "a" : "e"); + return result; + } + + /*! This is used for translation of the word that will possibly + * be followed by a single name or by a list of names + * of the category. + */ + virtual QCString trFile(bool first_capital, bool singular) + { + QCString result((first_capital ? "Fajl" : "fajl")); + result+= (singular ? "" : "ovi"); + return result; + } + + /*! This is used for translation of the word that will possibly + * be followed by a single name or by a list of names + * of the category. + */ + virtual QCString trNamespace(bool first_capital, bool singular) + { + QCString result((first_capital ? "Prostor" : "prostor")); + result += (singular ? "" : "i"); + result += " imena"; + return result; + } + + /*! This is used for translation of the word that will possibly + * be followed by a single name or by a list of names + * of the category. + */ + virtual QCString trGroup(bool first_capital, bool singular) + { + QCString result((first_capital ? "Grup" : "grup")); + result+= (singular ? "a" : "e"); + return result; + } + + /*! This is used for translation of the word that will possibly + * be followed by a single name or by a list of names + * of the category. + */ + virtual QCString trPage(bool first_capital, bool singular) + { + QCString result((first_capital ? "Stran" : "stran")); + result+= (singular ? "a" : "e"); + return result; + } + + /*! This is used for translation of the word that will possibly + * be followed by a single name or by a list of names + * of the category. + */ + virtual QCString trMember(bool first_capital, bool singular) + { + QCString result((first_capital ? "Član" : "član")); + result+= (singular ? "" : "ovi"); + return decode( result ); + } + + /*! This is used for translation of the word that will possibly + * be followed by a single name or by a list of names + * of the category. + */ + virtual QCString trField(bool first_capital, bool singular) + { + QCString result((first_capital ? "Polj" : "polj")); + result+= (singular ? "e" : "a"); + return result; + } + + /*! This is used for translation of the word that will possibly + * be followed by a single name or by a list of names + * of the category. + */ + virtual QCString trGlobal(bool first_capital, bool singular) + { + QCString result((first_capital ? "Global" : "global")); + result+= (singular ? "no" : "ni"); + return result; + } + +////////////////////////////////////////////////////////////////////////// +// new since 1.2.7 +////////////////////////////////////////////////////////////////////////// + + /*! This text is generated when the \\author command is used and + * for the author section in man pages. */ + virtual QCString trAuthor(bool first_capital, bool singular) + { + QCString result((first_capital ? "Autor" : "autor")); + result+= (singular ? "" : "i"); + return result; + } + +////////////////////////////////////////////////////////////////////////// +// new since 1.2.11 +////////////////////////////////////////////////////////////////////////// + + /*! This text is put before the list of members referenced by a member + */ + virtual QCString trReferences() + { + return "Pogledati"; + } + +////////////////////////////////////////////////////////////////////////// +// new since 1.2.13 +////////////////////////////////////////////////////////////////////////// + + /*! used in member documentation blocks to produce a list of + * members that are implemented by this one. + */ + virtual QCString trImplementedFromList(int numEntries) + { + return "Definiše "+trWriteList(numEntries)+"."; + } + + /*! used in member documentation blocks to produce a list of + * all members that implement this abstract member. + */ + virtual QCString trImplementedInList(int numEntries) + { + return "Definisano u "+trWriteList(numEntries)+"."; + } + +}; + +#endif +// sh - š +// dj - đ +// ch - č - chasha +// cc - ć - vicc +// zz - ž |