diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/code.l | 104 | ||||
-rw-r--r-- | src/commentscan.l | 2 | ||||
-rw-r--r-- | src/config.l | 11 | ||||
-rw-r--r-- | src/defargs.h | 2 | ||||
-rw-r--r-- | src/defargs.l | 2 | ||||
-rw-r--r-- | src/docparser.cpp | 9 | ||||
-rw-r--r-- | src/doxygen.cpp | 127 | ||||
-rw-r--r-- | src/language.cpp | 13 | ||||
-rw-r--r-- | src/memberdef.cpp | 21 | ||||
-rw-r--r-- | src/portable.cpp | 4 | ||||
-rw-r--r-- | src/pyscanner.l | 15 | ||||
-rw-r--r-- | src/scanner.l | 22 | ||||
-rw-r--r-- | src/translator_en.h | 3 | ||||
-rw-r--r-- | src/translator_mk.h | 205 | ||||
-rw-r--r-- | src/translator_nl.h | 3 | ||||
-rw-r--r-- | src/translator_sc.h | 1805 | ||||
-rw-r--r-- | src/translator_sr.h | 742 | ||||
-rw-r--r-- | src/util.cpp | 41 | ||||
-rw-r--r-- | src/util.h | 3 | ||||
-rw-r--r-- | src/vhdlscanner.l | 133 |
20 files changed, 2795 insertions, 472 deletions
@@ -1285,69 +1285,71 @@ static void startFontClass(const char *s) static void writeObjCMethodCall(ObjCCallCtx *ctx) { if (ctx==0) return; - if (ctx->methodName.isEmpty()) return; - const char *p = ctx->format.data(); - //printf("writeObjCMethodCall(%s) obj=%s method=%s\n", - // ctx->format.data(),ctx->objectTypeOrName.data(),ctx->methodName.data()); char c; - if (!ctx->objectTypeOrName.isEmpty() && ctx->objectTypeOrName.at(0)!='$') + const char *p = ctx->format.data(); + if (!ctx->methodName.isEmpty()) { - //printf("Looking for object=%s method=%s\n",ctx->objectTypeOrName.data(), - // ctx->methodName.data()); - ClassDef *cd = g_theVarContext.findVariable(ctx->objectTypeOrName); - if (cd==0) // not a local variable + //printf("writeObjCMethodCall(%s) obj=%s method=%s\n", + // ctx->format.data(),ctx->objectTypeOrName.data(),ctx->methodName.data()); + if (!ctx->objectTypeOrName.isEmpty() && ctx->objectTypeOrName.at(0)!='$') { - if (ctx->objectTypeOrName=="self") + //printf("Looking for object=%s method=%s\n",ctx->objectTypeOrName.data(), + // ctx->methodName.data()); + ClassDef *cd = g_theVarContext.findVariable(ctx->objectTypeOrName); + if (cd==0) // not a local variable { - if (g_currentDefinition && - g_currentDefinition->definitionType()==Definition::TypeClass) + if (ctx->objectTypeOrName=="self") { - ctx->objectType = (ClassDef *)g_currentDefinition; + if (g_currentDefinition && + g_currentDefinition->definitionType()==Definition::TypeClass) + { + ctx->objectType = (ClassDef *)g_currentDefinition; + } } - } - else - { - ctx->objectType = getResolvedClass( - g_currentDefinition, - g_sourceFileDef, - ctx->objectTypeOrName, - &ctx->method); - } - //printf(" object is class? %p\n",ctx->objectType); - if (ctx->objectType) // found class - { - ctx->method = ctx->objectType->getMemberByName(ctx->methodName); - //printf(" yes->method=%s\n",ctx->method?ctx->method->name().data():"<none>"); - } - else if (ctx->method==0) // search for class variable with the same name - { - //printf(" no\n"); - //printf("g_currentDefinition=%p\n",g_currentDefinition); - if (g_currentDefinition && - g_currentDefinition->definitionType()==Definition::TypeClass) + else { - ctx->objectVar = ((ClassDef *)g_currentDefinition)->getMemberByName(ctx->objectTypeOrName); - //printf(" ctx->objectVar=%p\n",ctx->objectVar); - if (ctx->objectVar) + ctx->objectType = getResolvedClass( + g_currentDefinition, + g_sourceFileDef, + ctx->objectTypeOrName, + &ctx->method); + } + //printf(" object is class? %p\n",ctx->objectType); + if (ctx->objectType) // found class + { + ctx->method = ctx->objectType->getMemberByName(ctx->methodName); + //printf(" yes->method=%s\n",ctx->method?ctx->method->name().data():"<none>"); + } + else if (ctx->method==0) // search for class variable with the same name + { + //printf(" no\n"); + //printf("g_currentDefinition=%p\n",g_currentDefinition); + if (g_currentDefinition && + g_currentDefinition->definitionType()==Definition::TypeClass) { - ctx->objectType = stripClassName(ctx->objectVar->typeString()); - //printf(" ctx->objectType=%p\n",ctx->objectType); - if (ctx->objectType) + ctx->objectVar = ((ClassDef *)g_currentDefinition)->getMemberByName(ctx->objectTypeOrName); + //printf(" ctx->objectVar=%p\n",ctx->objectVar); + if (ctx->objectVar) { - ctx->method = ctx->objectType->getMemberByName(ctx->methodName); - //printf(" ctx->method=%p\n",ctx->method); + ctx->objectType = stripClassName(ctx->objectVar->typeString()); + //printf(" ctx->objectType=%p\n",ctx->objectType); + if (ctx->objectType) + { + ctx->method = ctx->objectType->getMemberByName(ctx->methodName); + //printf(" ctx->method=%p\n",ctx->method); + } } } } } - } - else // local variable - { - //printf(" object is local variable\n"); - if (cd!=VariableContext::dummyContext) + else // local variable { - ctx->method = cd->getMemberByName(ctx->methodName); - //printf(" class=%p method=%p\n",cd,ctx->method); + //printf(" object is local variable\n"); + if (cd!=VariableContext::dummyContext) + { + ctx->method = cd->getMemberByName(ctx->methodName); + //printf(" class=%p method=%p\n",cd,ctx->method); + } } } } @@ -1653,8 +1655,8 @@ SCOPENAME "$"?(({ID}?{BN}*"::"{BN}*)*)((~{BN}*)?{ID}) TEMPLIST "<"[^\"\}\{\(\)\/\n\>]*">" SCOPETNAME ((({ID}{TEMPLIST}?){BN}*"::"{BN}*)*)((~{BN}*)?{ID}) SCOPEPREFIX ({ID}{TEMPLIST}?{BN}*"::"{BN}*)+ -KEYWORD_OBJC ("@public"|"@private"|"@protected"|"@class"|"@implementation"|"@interface"|"@end"|"@selector"|"@protocol") -KEYWORD ("add"|"asm"|"__assume"|"auto"|"class"|"const"|"delete"|"enum"|"explicit"|"extern"|"false"|"friend"|"gcnew"|"gcroot"|"get"|"inline"|"internal"|"mutable"|"namespace"|"new"|"nullptr"|"override"|"operator"|"pin_ptr"|"private"|"protected"|"public"|"raise"|"register"|"remove"|"self"|"set"|"sizeof"|"static"|"struct"|"__super"|"template"|"generic"|"this"|"true"|"typedef"|"typeid"|"typename"|"union"|"using"|"virtual"|"volatile"|"abstract"|"final"|"import"|"synchronized"|"transient"|KEYWORD_OBJC) +KEYWORD_OBJC ("@public"|"@private"|"@protected"|"@class"|"@implementation"|"@interface"|"@end"|"@selector"|"@protocol"|"@optional"|"@required"|"@throw") +KEYWORD ("add"|"asm"|"__assume"|"auto"|"class"|"const"|"delete"|"enum"|"explicit"|"extern"|"false"|"friend"|"gcnew"|"gcroot"|"get"|"inline"|"internal"|"mutable"|"namespace"|"new"|"nullptr"|"override"|"operator"|"pin_ptr"|"private"|"protected"|"public"|"raise"|"register"|"remove"|"self"|"set"|"sizeof"|"static"|"struct"|"__super"|"template"|"generic"|"this"|"true"|"typedef"|"typeid"|"typename"|"union"|"using"|"virtual"|"volatile"|"abstract"|"final"|"import"|"synchronized"|"transient"|{KEYWORD_OBJC}) FLOWKW ("break"|"case"|"catch"|"continue"|"default"|"do"|"else"|"finally"|"for"|"foreach"|"for each"|"goto"|"if"|"return"|"switch"|"throw"|"throws"|"try"|"while") TYPEKW ("bool"|"char"|"double"|"float"|"int"|"long"|"object"|"short"|"signed"|"unsigned"|"void"|"wchar_t"|"size_t"|"boolean"|"id"|"SEL"|"string") CASTKW ("const_cast"|"dynamic_cast"|"reinterpret_cast"|"static_cast") diff --git a/src/commentscan.l b/src/commentscan.l index 87c9080..cfbc050 100644 --- a/src/commentscan.l +++ b/src/commentscan.l @@ -2486,7 +2486,7 @@ void closeGroup(Entry *e,const char *fileName,int) if (g_memberGroupId!=DOX_NOGROUP) // end of member group { MemberGroupInfo *info=Doxygen::memGrpInfoDict.find(g_memberGroupId); - if (info) // know group + if (info) // known group { info->doc = g_memberGroupDocs; info->docFile = fileName; diff --git a/src/config.l b/src/config.l index 9d49c92..ee1ebab 100644 --- a/src/config.l +++ b/src/config.l @@ -1423,8 +1423,8 @@ void Config::create() "Croatian, Czech, Danish, Dutch, Farsi, Finnish, French, German, Greek, \n" "Hungarian, Italian, Japanese, Japanese-en (Japanese with English messages), \n" "Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian, Polish, \n" - "Portuguese, Romanian, Russian, Serbian, Slovak, Slovene, Spanish, Swedish, \n" - "and Ukrainian.\n", + "Portuguese, Romanian, Russian, Serbian, Serbian-Cyrilic, Slovak, Slovene, \n" + "Spanish, Swedish, and Ukrainian.\n", "English" ); #ifdef LANG_ZA @@ -1512,6 +1512,9 @@ void Config::create() #ifdef LANG_SR ce->addValue("Serbian"); #endif +#ifdef LANG_SC + ce->addValue("Serbian-Cyrilic"); +#endif #ifdef LANG_SK ce->addValue("Slovak"); #endif @@ -2354,7 +2357,9 @@ void Config::create() "HTML output directory. Running make will produce the docset in that \n" "directory and running \"make install\" will install the docset in \n" "~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find \n" - "it at startup.", + "it at startup. \n" + "See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html " + "for more information. \n", FALSE ); cb->addDependency("GENERATE_HTML"); diff --git a/src/defargs.h b/src/defargs.h index cb0f81b..6f23269 100644 --- a/src/defargs.h +++ b/src/defargs.h @@ -23,7 +23,7 @@ class ArgumentList; -extern void stringToArgumentList(const char *argsString,ArgumentList* &argList, +extern void stringToArgumentList(const char *argsString,ArgumentList* argList, QCString *extraTypeChars=0); #endif diff --git a/src/defargs.l b/src/defargs.l index 9fe6372..f44c1f3 100644 --- a/src/defargs.l +++ b/src/defargs.l @@ -426,7 +426,7 @@ ID [a-z_A-Z][a-z_A-Z0-9]* * \param al a reference to resulting argument list pointer. */ -void stringToArgumentList(const char *argsString,ArgumentList* &al,QCString *extraTypeChars) +void stringToArgumentList(const char *argsString,ArgumentList* al,QCString *extraTypeChars) { if (al==0) return; if (argsString==0) return; diff --git a/src/docparser.cpp b/src/docparser.cpp index 279d0e9..a434ac7 100644 --- a/src/docparser.cpp +++ b/src/docparser.cpp @@ -468,6 +468,7 @@ static void detectNoDocumentedParams() LockingPtr<ArgumentList> al = g_memberDef->argumentList(); LockingPtr<ArgumentList> declAl = g_memberDef->declArgumentList(); QString returnType = g_memberDef->typeString(); + bool isPython = getLanguageFromFileName(g_memberDef->getDefFileName())==SrcLangExt_Python; if (!g_memberDef->hasDocumentedParams() && g_hasParamCommand) @@ -489,7 +490,9 @@ static void detectNoDocumentedParams() // see if all parameters have documentation for (ali.toFirst();(a=ali.current()) && allDoc;++ali) { - if (!a->name.isEmpty() && a->type!="void") + if (!a->name.isEmpty() && a->type!="void" && + !(isPython && a->name=="self") + ) { allDoc = !a->docs.isEmpty(); } @@ -503,7 +506,9 @@ static void detectNoDocumentedParams() Argument *a; for (ali.toFirst();(a=ali.current()) && allDoc;++ali) { - if (!a->name.isEmpty() && a->type!="void") + if (!a->name.isEmpty() && a->type!="void" && + !(isPython && a->name=="self") + ) { allDoc = !a->docs.isEmpty(); } diff --git a/src/doxygen.cpp b/src/doxygen.cpp index 3c878b8..c2cd624 100644 --- a/src/doxygen.cpp +++ b/src/doxygen.cpp @@ -2350,28 +2350,8 @@ done: return result; } -//---------------------------------------------------------------------- -// Searches the Entry tree for Variable documentation sections. -// If found they are stored in their class or in the global list. - -static void buildVarList(EntryNav *rootNav) +static void addVariable(EntryNav *rootNav,int isFuncPtr=-1) { - //printf("buildVarList(%s)\n",rootNav->name().data()); - int isFuncPtr=-1; - if (!rootNav->name().isEmpty() && - (rootNav->type().isEmpty() || compoundKeywordDict.find(rootNav->type())==0) && - ( - (rootNav->section()==Entry::VARIABLE_SEC // it's a variable - ) || - (rootNav->section()==Entry::FUNCTION_SEC && // or maybe a function pointer variable - (isFuncPtr=findFunctionPtr(rootNav->type()))!=-1 - ) || - (rootNav->section()==Entry::FUNCTION_SEC && // class variable initialized by constructor - isVarWithConstructor(rootNav) - ) - ) - ) // documented variable - { rootNav->loadEntry(g_storage); Entry *root = rootNav->entry(); @@ -2493,44 +2473,6 @@ static void buildVarList(EntryNav *rootNav) else mtype=MemberDef::Variable; -#if 0 // does not work correctly - //static bool typedefHidesStruct = Config_getBool("TYPEDEF_HIDES_STRUCT"); - if (typedefHidesStruct) // substitute names with typedef'ed names - { - QCString baseType = type; - baseType.stripPrefix("typedef "); - if (baseType.stripPrefix("enum ")) - { - MemberName *mn=Doxygen::functionNameSDict->find(baseType.stripWhiteSpace()); - MemberNameIterator mni(*mn); - MemberDef *md; - for (mni.toFirst();(md=mni.current());++mni) - { - if (md->isEnumerate()) - { - md->setName(name); - md->setDefinition(name); - goto nextMember; - } - } - } - else - { - baseType.stripPrefix("struct "); - baseType.stripPrefix("union "); - { - ClassDef *typedefClass = Doxygen::classSDict->find(baseType); - if (typedefClass) - { - typedefClass->setName(name); - typedefClass->setClassName(name); - goto nextMember; - } - } - } - } -#endif - if (!root->relates.isEmpty()) // related variable { isRelated=TRUE; @@ -2606,9 +2548,61 @@ static void buildVarList(EntryNav *rootNav) //printf("Inserting member in global scope %s!\n",scope.data()); addVariableToFile(rootNav,mtype,scope,name,FALSE,/*0,*/0); } -nextMember: +nextMember: rootNav->releaseEntry(); +} + +//---------------------------------------------------------------------- +// Searches the Entry tree for typedef documentation sections. +// If found they are stored in their class or in the global list. +static void buildTypedefList(EntryNav *rootNav) +{ + //printf("buildVarList(%s)\n",rootNav->name().data()); + if (!rootNav->name().isEmpty() && + rootNav->section()==Entry::VARIABLE_SEC && + rootNav->type().find("typedef ")!=-1 // its a typedef + ) + { + addVariable(rootNav); + } + if (rootNav->children()) + { + EntryNavListIterator eli(*rootNav->children()); + EntryNav *e; + for (;(e=eli.current());++eli) + { + if (e->section()!=Entry::ENUM_SEC) + { + buildTypedefList(e); + } + } + } +} + +//---------------------------------------------------------------------- +// Searches the Entry tree for Variable documentation sections. +// If found they are stored in their class or in the global list. + +static void buildVarList(EntryNav *rootNav) +{ + //printf("buildVarList(%s)\n",rootNav->name().data()); + int isFuncPtr=-1; + if (!rootNav->name().isEmpty() && + (rootNav->type().isEmpty() || compoundKeywordDict.find(rootNav->type())==0) && + ( + (rootNav->section()==Entry::VARIABLE_SEC // it's a variable + ) || + (rootNav->section()==Entry::FUNCTION_SEC && // or maybe a function pointer variable + (isFuncPtr=findFunctionPtr(rootNav->type()))!=-1 + ) || + (rootNav->section()==Entry::FUNCTION_SEC && // class variable initialized by constructor + isVarWithConstructor(rootNav) + ) + ) + ) // documented variable + { + addVariable(rootNav,isFuncPtr); } if (rootNav->children()) { @@ -4110,8 +4104,10 @@ static bool findClassRelation( { baseClassName.prepend(scopeName.left(scopeOffset)+"::"); } - baseClassName=stripTemplateSpecifiersFromScope - (removeRedundantWhiteSpace(baseClassName)); + //QCString stripped; + //baseClassName=stripTemplateSpecifiersFromScope + // (removeRedundantWhiteSpace(baseClassName),TRUE, + // &stripped); MemberDef *baseClassTypeDef=0; QCString templSpec; ClassDef *baseClass=getResolvedClass(explicitGlobalScope ? 0 : cd, @@ -9808,6 +9804,13 @@ void parseInput() msg("Searching for enumerations...\n"); findEnums(rootNav); + // Since buildVarList calls isVarWithConstructor + // and this calls getResolvedClass we need to process + // typedefs first so the relations between classes via typedefs + // are properly resolved. See bug 536385 for an example. + msg("Searching for documented typedefs...\n"); + buildTypedefList(rootNav); + msg("Searching for documented variables...\n"); buildVarList(rootNav); diff --git a/src/language.cpp b/src/language.cpp index aa5de7b..ebe6c84 100644 --- a/src/language.cpp +++ b/src/language.cpp @@ -131,6 +131,9 @@ #ifdef LANG_MK #include "translator_mk.h" #endif +#ifdef LANG_SC +#include "translator_sc.h" +#endif #endif // !ENGLISH_ONLY #define L_EQUAL(a) !stricmp(langName,a) @@ -217,9 +220,7 @@ bool setTranslator(const char *langName) #ifdef LANG_FI else if (L_EQUAL("finnish")) { - //theTranslator=new TranslatorFinnish; - theTranslator=new TranslatorEnglish; - err(obsoleteMsg); + theTranslator=new TranslatorDecoder(new TranslatorFinnish); } #endif #ifdef LANG_RU @@ -330,6 +331,12 @@ bool setTranslator(const char *langName) theTranslator=new TranslatorDecoder(new TranslatorSerbian); } #endif +#ifdef LANG_SC + else if (L_EQUAL("serbian-cyrilic")) + { + theTranslator=new TranslatorSerbian; + } +#endif #ifdef LANG_CA else if (L_EQUAL("catalan")) { diff --git a/src/memberdef.cpp b/src/memberdef.cpp index 2180bb9..824d8e9 100644 --- a/src/memberdef.cpp +++ b/src/memberdef.cpp @@ -1808,7 +1808,7 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol, Specifier lvirt=virtualness(); - if (!isObjCMethod() && + if ((!isObjCMethod() || isOptional() || isRequired()) && (protection()!=Public || lvirt!=Normal || isFriend() || isRelated() || (isInline() && Config_getBool("INLINE_INFO")) || @@ -1855,13 +1855,18 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol, if (isAssign()) sl.append("assign"); else if (isCopy()) sl.append("copy"); else if (isRetain()) sl.append("retain"); - if (protection()==Protected) sl.append("protected"); - else if (protection()==Private) sl.append("private"); - else if (protection()==Package) sl.append("package"); - if (lvirt==Virtual) sl.append("virtual"); - else if (lvirt==Pure) sl.append("pure virtual"); - if (isSignal()) sl.append("signal"); - if (isSlot()) sl.append("slot"); + + if (!isObjCMethod()) + { + if (protection()==Protected) sl.append("protected"); + else if (protection()==Private) sl.append("private"); + else if (protection()==Package) sl.append("package"); + + if (lvirt==Virtual) sl.append("virtual"); + else if (lvirt==Pure) sl.append("pure virtual"); + if (isSignal()) sl.append("signal"); + if (isSlot()) sl.append("slot"); + } } if (m_impl->classDef && m_impl->classDef!=container) sl.append("inherited"); } diff --git a/src/portable.cpp b/src/portable.cpp index 59484b2..7bbe33f 100644 --- a/src/portable.cpp +++ b/src/portable.cpp @@ -382,7 +382,9 @@ size_t portable_iconv (void *cd, const char** inbuf, size_t *inbytesleft, // avoid a compile error, that is were the CASTNEEDED is for. #if ((defined(_LIBICONV_VERSION) && (_LIBICONV_VERSION>=0x0109) && \ !((defined(_OS_MAC_) || defined(Q_OS_MACX) )&& (_LIBICONV_VERSION==0x010B))) \ - || defined(_OS_SOLARIS_)) + || defined(_OS_SOLARIS_) \ + || defined(_OS_NETBSD_) \ + ) #define CASTNEEDED(x) (x) #else #define CASTNEEDED(x) (char **)(x) diff --git a/src/pyscanner.l b/src/pyscanner.l index b70c448..6c832f7 100644 --- a/src/pyscanner.l +++ b/src/pyscanner.l @@ -535,6 +535,16 @@ STARTDOCSYMS ^{B}"##"/[^#] g_packageCommentAllowed = FALSE; BEGIN( Import ); } + ^{B}{IDENTIFIER}/{B}"="{B}"property" { // property + current->section = Entry::VARIABLE_SEC; + current->mtype = Property; + current->name = QCString(yytext).stripWhiteSpace(); + current->fileName = yyFileName; + current->startLine = yyLineNr; + current->bodyLine = yyLineNr; + g_packageCommentAllowed = FALSE; + BEGIN(VariableDec); + } ^{B}{IDENTIFIER}/{B}"="[^=] { // variable g_indent=computeIndent(yytext); current->section = Entry::VARIABLE_SEC; @@ -1129,7 +1139,10 @@ STARTDOCSYMS ^{B}"##"/[^#] BEGIN(TripleString); } "(" { // tuple - current->type = "tuple"; + if (current->mtype!=Property) + { + current->type = "tuple"; + } current->initializer+=*yytext; g_atomStart='('; g_atomEnd=')'; diff --git a/src/scanner.l b/src/scanner.l index e05e38b..4557ac1 100644 --- a/src/scanner.l +++ b/src/scanner.l @@ -1254,10 +1254,12 @@ TYPEDEFPREFIX (("typedef"{BN}+)?)((("volatile"|"const"){BN}+)?) <FindMembers>{B}*"explicit"{BN}+ { current->spec|=Entry::Explicit; lineCount(); } -<FindMembers>{B}*"@required"{BN}+ { current->spec|=Entry::Required; +<FindMembers>{B}*"@required"{BN}+ { // Objective C 2.0 protocol required section + current->spec=(current->spec & ~Entry::Optional) | Entry::Required; lineCount(); } -<FindMembers>{B}*"@optional"{BN}+ { current->spec|=Entry::Optional; +<FindMembers>{B}*"@optional"{BN}+ { // Objective C 2.0 protocol optional section + current->spec=(current->spec & ~Entry::Required) | Entry::Optional; lineCount(); } /* @@ -4064,6 +4066,11 @@ TYPEDEFPREFIX (("typedef"{BN}+)?)((("volatile"|"const"){BN}+)?) current_root->addSubEntry(current); current = new Entry ; initEntry(); + // Objective C 2.0: Required/Optional section + if (previous->spec & (Entry::Optional | Entry::Required)) + { + current->spec |= previous->spec & (Entry::Optional|Entry::Required); + } lastCurlyContext = FindMembers; if ( *yytext == ',' ) { @@ -4754,7 +4761,7 @@ TYPEDEFPREFIX (("typedef"{BN}+)?)((("volatile"|"const"){BN}+)?) <SkipRound>")" { if (--roundCount<=0) BEGIN ( lastSkipRoundContext ); } -<Bases>","|">"|({BN}+"implements"{BN}*) { lineCount(); +<Bases>","|(">"({BN}*"{")?)|({BN}+"implements"{BN}*) { lineCount(); if (insideProtocolList) { baseName+="-p"; @@ -4785,7 +4792,14 @@ TYPEDEFPREFIX (("typedef"{BN}+)?)((("volatile"|"const"){BN}+)?) if (*yytext=='>') { // end of a ObjC protocol list insideProtocolList=FALSE; - unput('{'); // dummy start body + if (yyleng==1) + { + unput('{'); // dummy start body + } + else + { + yyless(1); + } } else { diff --git a/src/translator_en.h b/src/translator_en.h index fda3b22..eeff2b6 100644 --- a/src/translator_en.h +++ b/src/translator_en.h @@ -1042,8 +1042,7 @@ class TranslatorEnglish : public Translator " Used *m_usedClass;\n" "};\n" "\\endcode\n" - "If the \\c MAX_DOT_GRAPH_HEIGHT tag in the configuration file " - "is set to 240 this will result in the following graph:" + "This will result in the following graph:" "<p><center><img alt=\"\" src=\"graph_legend."+Config_getEnum("DOT_IMAGE_FORMAT")+"\"></center>\n" "<p>\n" "The boxes in the above graph have the following meaning:\n" diff --git a/src/translator_mk.h b/src/translator_mk.h index 0500b66..49ab516 100644 --- a/src/translator_mk.h +++ b/src/translator_mk.h @@ -24,12 +24,15 @@ // 2007/12/09 // - Initial translation to Macedonian. // +// 2008/05/22 +// - Translation for 1.5.4. +// // #ifndef TRANSLATOR_MK_H #define TRANSLATOR_MK_H -class TranslatorMacedonian : public TranslatorAdapter_1_4_6 +class TranslatorMacedonian : public Translator { public: @@ -1558,7 +1561,207 @@ class TranslatorMacedonian : public TranslatorAdapter_1_4_6 virtual QCString trEnumerationValueDocumentation() { return "Документија на Набројувања"; } +////////////////////////////////////////////////////////////////////////// +// new since 1.5.4 (mainly for Fortran) +////////////////////////////////////////////////////////////////////////// + + /*! header that is put before the list of member subprograms (Fortran). */ + virtual QCString trMemberFunctionDocumentationFortran() + { return "Документација на функции/процедури членови"; } + + /*! This is put above each page as a link to the list of annotated data types (Fortran). */ + virtual QCString trCompoundListFortran() + { return "Список на Типови"; } + + /*! This is put above each page as a link to all members of compounds (Fortran). */ + virtual QCString trCompoundMembersFortran() + { return "Членови"; } + + /*! This is an introduction to the annotated compound list (Fortran). */ + virtual QCString trCompoundListDescriptionFortran() + { return "Список на типови со кратки описи:"; } + + /*! This is an introduction to the page with all data types (Fortran). */ + virtual QCString trCompoundMembersDescriptionFortran(bool extractAll) + { + QCString result="Список на сите "; + if (!extractAll) + { + result+="документирани "; + } + result+="членови на типови"; + result+=" со врски до "; + if (!extractAll) + { + result+="документацијата за секој член:"; + } + else + { + result+="типовите на кои што припаѓаат:"; + } + return result; + } + + /*! This is used in LaTeX as the title of the chapter with the + * annotated compound index (Fortran). + */ + virtual QCString trCompoundIndexFortran() + { return "Попис на Типови"; } + + /*! This is used in LaTeX as the title of the chapter containing + * the documentation of all data types (Fortran). + */ + virtual QCString trTypeDocumentation() + { return "Документација на Типови"; } + + /*! This is used in the documentation of a file as a header before the + * list of (global) subprograms (Fortran). + */ + virtual QCString trSubprograms() + { return "Функции/Процедури"; } + + /*! This is used in the documentation of a file/namespace before the list + * of documentation blocks for subprograms (Fortran) + */ + virtual QCString trSubprogramDocumentation() + { return "Документација на Функции/Процедури"; } + + /*! This is used in the documentation of a file/namespace/group before + * the list of links to documented compounds (Fortran) + */ + virtual QCString trDataTypes() + { return "Типови"; } + + /*! used as the title of page containing all the index of all modules (Fortran). */ + virtual QCString trModulesList() + { return "Попис на Модули"; } + + /*! used as an introduction to the modules list (Fortran) */ + virtual QCString trModulesListDescription(bool extractAll) + { + QCString result="Список на сите "; + if (!extractAll) result+="документирани "; + result+="модули со кратки описи:"; + return result; + } + /*! used as the title of the HTML page of a module/type (Fortran) */ + virtual QCString trCompoundReferenceFortran(const char *clName, + ClassDef::CompoundType compType, + bool isTemplate) + { + QCString result=(QCString)clName + " - Повикување на"; + switch(compType) + { + case ClassDef::Class: result+=" Класа"; break; + case ClassDef::Struct: result+=" Тип"; break; + case ClassDef::Union: result+=" Унија"; break; + case ClassDef::Interface: result+=" Интерфејс"; break; + case ClassDef::Protocol: result+=" Протокол"; break; + case ClassDef::Category: result+=" Категорија"; break; + case ClassDef::Exception: result+=" Исклучок"; break; + } + if (isTemplate) result+=" Образец"; + return result; + } + /*! used as the title of the HTML page of a module (Fortran) */ + virtual QCString trModuleReference(const char *namespaceName) + { + QCString result=namespaceName; + result+=" - Содржина на Модул"; + return result; + } + + /*! This is put above each page as a link to all members of modules. (Fortran) */ + virtual QCString trModulesMembers() + { return "Членови на Модул"; } + + /*! This is an introduction to the page with all modules members (Fortran) */ + virtual QCString trModulesMemberDescription(bool extractAll) + { + QCString result="Список на сите "; + if (!extractAll) result+="документирани "; + result+="членови на модулот со врски до "; + if (extractAll) + { + result+="документацијата за секој член:"; + } + else + { + result+="модулите на кои што припаѓаат:"; + } + return result; + } + + /*! This is used in LaTeX as the title of the chapter with the + * index of all modules (Fortran). + */ + virtual QCString trModulesIndex() + { return "Попис на Модули"; } + + /*! 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 trModule(bool first_capital, bool singular) + { + QCString result((first_capital ? "Модул" : "модул")); + if (!singular) result+="и"; + return result; + } + /*! This is put at the bottom of a module documentation page and is + * followed by a list of files that were used to generate the page. + */ + virtual QCString trGeneratedFromFilesFortran(ClassDef::CompoundType compType, + bool single) + { // here s is one of " Module", " Struct" or " Union" + // single is true implies a single file + QCString result=(QCString)"Документацијата за "; + switch(compType) + { + case ClassDef::Class: result+="оваа класа"; break; + case ClassDef::Struct: result+="овој тип"; break; + case ClassDef::Union: result+="оваа унија"; break; + case ClassDef::Interface: result+="овој интерфејс"; break; + case ClassDef::Protocol: result+="овој протокол"; break; + case ClassDef::Category: result+="оваа категорија"; break; + case ClassDef::Exception: result+="овој исклучок"; break; + } + result+=" беше создадена од "; + if (single) result+="следнава датотека:"; else result+="следниве датотеки:"; + 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 trType(bool first_capital, bool singular) + { + QCString result((first_capital ? "Тип" : "тип")); + if (!singular) result+="ови"; + 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 trSubprogram(bool first_capital, bool singular) + { + QCString result((first_capital ? "Потпрограм" : "потпрограм")); + if (singular){ + result+="а"; + }else{ + result+="и"; + } + + return result; + } + + /*! C# Type Constraint list */ + virtual QCString trTypeConstraints() + { + return "Ограничувања на Тип"; + } }; #endif diff --git a/src/translator_nl.h b/src/translator_nl.h index 672926a..d7b61f7 100644 --- a/src/translator_nl.h +++ b/src/translator_nl.h @@ -674,8 +674,7 @@ class TranslatorDutch : public Translator " Used *m_usedClass;\n" "};\n" "\\endcode\n" - "Als de \\c MAX_DOT_GRAPH_HEIGHT tag in the configuratie file " - "op 200 gezet is, zal het bestaande voorbeeld resulteren in de volgende graaf:" + "Dit voorbeeld zal resulteren in de volgende graaf:" "<p><center><img src=\"graph_legend."+Config_getEnum("DOT_IMAGE_FORMAT")+"\"></center>\n" "<p>\n" "De rechthoeken in the bovenstaande graaf hebben de volgende betekenis:\n" diff --git a/src/translator_sc.h b/src/translator_sc.h new file mode 100644 index 0000000..1439e82 --- /dev/null +++ b/src/translator_sc.h @@ -0,0 +1,1805 @@ +/****************************************************************************** + * + * + * + * Copyright (C) 1997-2008 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_SC_H +#define TRANSLATOR_SC_H + +/*! + When defining a translator class for the new language, follow + the description in the documentation. One of the steps says + that you should copy the translator_en.h (this) file to your + translator_xx.h new file. Your new language should use the + Translator class as the base class. This means that you need to + implement exactly the same (pure virtual) methods as the + TranslatorEnglish does. Because of this, it is a good idea to + start with the copy of TranslatorEnglish and replace the strings + one by one. + + It is not necessary to include "translator.h" or + "translator_adapter.h" here. The files are included in the + language.cpp correctly. Not including any of the mentioned + files frees the maintainer from thinking about whether the + first, the second, or both files should be included or not, and + why. This holds namely for localized translators because their + base class is changed occasionaly to adapter classes when the + Translator class changes the interface, or back to the + Translator class (by the local maintainer) when the localized + translator is made up-to-date again. +*/ +class TranslatorSerbianCyrilic : public Translator +{ + 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 "serbiancyr"; } + + /*! 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() + { + return "utf-8"; + } + + // --- Language translation methods ------------------- + + /*! used in the compound documentation before a list of related functions. */ + virtual QCString trRelatedFunctions() + { return "Повезане функције"; } + + /*! subscript for the related functions. */ + virtual QCString trRelatedSubscript() + { return "(Напомињемо да ово нису функције чланице.)"; } + + /*! header that is put before the detailed description of files, classes and namespaces. */ + virtual QCString trDetailedDescription() + { return "Опширније"; } + + /*! header that is put before the list of typedefs. */ + virtual QCString trMemberTypedefDocumentation() + { return "Документација дефиниције типа"; } + + /*! header that is put before the list of enumerations. */ + virtual QCString trMemberEnumerationDocumentation() + { return "Документација члана набрајања"; } + + /*! header that is put before the list of member functions. */ + virtual QCString trMemberFunctionDocumentation() + { return "Документација функције чланице"; } + + /*! header that is put before the list of member attributes. */ + virtual QCString trMemberDataDocumentation() + { + if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) + { + return "Документација поља"; + } + else + { + return "Документација атрибута"; + } + } + + /*! this is the text of a link put after brief descriptions. */ + virtual QCString trMore() + { return "Још..."; } + + /*! put in the class documentation */ + virtual QCString trListOfAllMembers() + { return "Списак свих чланова."; } + + /*! used as the title of the "list of all members" page of a class */ + virtual QCString trMemberList() + { return "Списак чланова"; } + + /*! this is the first part of a sentence that is followed by a class name */ + virtual QCString trThisIsTheListOfAllMembers() + { return "Ово је списак свих чланова од "; } + + /*! this is the remainder of the sentence after the class name */ + virtual QCString trIncludingInheritedMembers() + { return ", укључујући све наслеђене чланове."; } + + /*! 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="Аутоматски направљено помоћу Doxygen-а"; + if (s) result+=(QCString)" за "+s; + result+=" из изворног кода."; + return result; + } + + /*! put after an enum name in the list of all members */ + virtual QCString trEnumName() + { return "назив набрајања"; } + + /*! put after an enum value in the list of all members */ + virtual QCString trEnumValue() + { return "вредност набрајања"; } + + /*! put after an undocumented member in the list of all members */ + virtual QCString trDefinedIn() + { return "дефинисано у"; } + + // 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 "Модули"; } + + /*! This is put above each page as a link to the class hierarchy */ + virtual QCString trClassHierarchy() + { return "Хијерархија класа"; } + + /*! 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 "Структуре"; + } + else + { + return "Списак класа"; + } + } + + /*! This is put above each page as a link to the list of documented files */ + virtual QCString trFileList() + { return "Списак датотека"; } + + /*! 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 "Поља"; + } + else + { + return "Чланови класе"; + } + } + + /*! 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 "Глобално"; + } + else + { + return "Чланови датотеке"; + } + } + + /*! This is put above each page as a link to all related pages. */ + virtual QCString trRelatedPages() + { return "Повезане странице"; } + + /*! This is put above each page as a link to all examples. */ + virtual QCString trExamples() + { return "Примери"; } + + /*! This is put above each page as a link to the search engine. */ + virtual QCString trSearch() + { return "Тражи"; } + + /*! This is an introduction to the class hierarchy. */ + virtual QCString trClassHierarchyDescription() + { return "Овај списак наслеђивања је уређен " + "скоро по абецеди:"; + } + + /*! This is an introduction to the list with all files. */ + virtual QCString trFileListDescription(bool extractAll) + { + QCString result="Овде је списак свих "; + if (!extractAll) result+="документованих "; + result+="датотека са кратким описима:"; + return result; + } + + /*! This is an introduction to the annotated compound list. */ + virtual QCString trCompoundListDescription() + { + + if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) + { + return "Овде су структуре са кратким описима:"; + } + else + { + return "Овде су класе, структуре, " + "уније и интерфејси са кратким описима:"; + } + } + + /*! This is an introduction to the page with all class members. */ + virtual QCString trCompoundMembersDescription(bool extractAll) + { + QCString result="Овде је списак свих "; + if (!extractAll) + { + result+="документованих "; + } + if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) + { + result+="поља структура и унија"; + } + else + { + result+="чланова класа"; + } + result+=" са везама ка "; + if (!extractAll) + { + if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) + { + result+="документацији структуре/уније за свако поље:"; + } + else + { + result+="документацији класе за сваки члан:"; + } + } + else + { + if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) + { + result+="структури/унији којој припадају:"; + } + else + { + result+="класи којој припадају:"; + } + } + return result; + } + + /*! This is an introduction to the page with all file members. */ + virtual QCString trFileMembersDescription(bool extractAll) + { + QCString result="Овде је списак свих "; + if (!extractAll) result+="документованих "; + + if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) + { + result+="фрункција, променљивих, макро замена, набрајања, и дефиниција типова"; + } + else + { + result+="чланова датотеке"; + } + result+=" са везама ка "; + if (extractAll) + result+="датотекама којима припадају:"; + else + result+="документацији:"; + return result; + } + + /*! This is an introduction to the page with the list of all examples */ + virtual QCString trExamplesDescription() + { return "Овде је списак свих примера:"; } + + /*! This is an introduction to the page with the list of related pages */ + virtual QCString trRelatedPagesDescription() + { return "Овде је списак свих повезаних страница документације:"; } + + /*! This is an introduction to the page with the list of class/file groups */ + virtual QCString trModulesDescription() + { return "Овде је списак свих модула:"; } + + // index titles (the project name is prepended for these) + + /*! This is used in HTML as the title of index.html. */ + virtual QCString trDocumentation() + { return "Документација"; } + + /*! This is used in LaTeX as the title of the chapter with the + * index of all groups. + */ + virtual QCString trModuleIndex() + { return "Индекс модула"; } + + /*! This is used in LaTeX as the title of the chapter with the + * class hierarchy. + */ + virtual QCString trHierarchicalIndex() + { return "Хијерархијски индекс"; } + + /*! 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 "Индекс структура"; + } + else + { + return "Индекс класа"; + } + } + + /*! This is used in LaTeX as the title of the chapter with the + * list of all files. + */ + virtual QCString trFileIndex() + { return "Индекс датотека"; } + + /*! This is used in LaTeX as the title of the chapter containing + * the documentation of all groups. + */ + virtual QCString trModuleDocumentation() + { return "Документација модула"; } + + /*! 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 "Документација структуре"; + } + else + { + return "Документација класе"; + } + } + + /*! This is used in LaTeX as the title of the chapter containing + * the documentation of all files. + */ + virtual QCString trFileDocumentation() + { return "Документација датотеке"; } + + /*! This is used in LaTeX as the title of the chapter containing + * the documentation of all examples. + */ + virtual QCString trExampleDocumentation() + { return "Документација примера"; } + + /*! This is used in LaTeX as the title of the chapter containing + * the documentation of all related pages. + */ + virtual QCString trPageDocumentation() + { return "Документација странице"; } + + /*! This is used in LaTeX as the title of the document */ + virtual QCString trReferenceManual() + { return "Приручник"; } + + /*! This is used in the documentation of a file as a header before the + * list of defines + */ + virtual QCString trDefines() + { return "Дефиниције"; } + + /*! This is used in the documentation of a file as a header before the + * list of function prototypes + */ + virtual QCString trFuncProtos() + { return "Декларације функција"; } + + /*! This is used in the documentation of a file as a header before the + * list of typedefs + */ + virtual QCString trTypedefs() + { return "Дефиниције типова"; } + + /*! This is used in the documentation of a file as a header before the + * list of enumerations + */ + virtual QCString trEnumerations() + { return "Набрајања"; } + + /*! This is used in the documentation of a file as a header before the + * list of (global) functions + */ + virtual QCString trFunctions() + { return "Функције"; } + + /*! This is used in the documentation of a file as a header before the + * list of (global) variables + */ + virtual QCString trVariables() + { return "Променљиве"; } + + /*! This is used in the documentation of a file as a header before the + * list of (global) variables + */ + virtual QCString trEnumerationValues() + { return "Вредности набрајања"; } + + /*! This is used in the documentation of a file before the list of + * documentation blocks for defines + */ + virtual QCString trDefineDocumentation() + { return "Документација дефиниције"; } + + /*! This is used in the documentation of a file/namespace before the list + * of documentation blocks for function prototypes + */ + virtual QCString trFunctionPrototypeDocumentation() + { return "Документација декларације функције"; } + + /*! This is used in the documentation of a file/namespace before the list + * of documentation blocks for typedefs + */ + virtual QCString trTypedefDocumentation() + { return "Документација дефиниције типа"; } + + /*! This is used in the documentation of a file/namespace before the list + * of documentation blocks for enumeration types + */ + virtual QCString trEnumerationTypeDocumentation() + { return "Документација набрајања"; } + + /*! This is used in the documentation of a file/namespace before the list + * of documentation blocks for functions + */ + virtual QCString trFunctionDocumentation() + { return "Документација функције"; } + + /*! This is used in the documentation of a file/namespace before the list + * of documentation blocks for variables + */ + virtual QCString trVariableDocumentation() + { return "Документација променљиве"; } + + /*! 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 "Структуре"; + } + else + { + return "Класе"; + } + } + + /*! 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)"Направљено "+date; + if (projName) result+=(QCString)" за "+projName; + result+=(QCString)" помоћу"; + return result; + } + /*! This is part of the sentence used in the standard footer of each page. + */ + virtual QCString trWrittenBy() + { + return "написао"; + } + + /*! this text is put before a class diagram */ + virtual QCString trClassDiagram(const char *clName) + { + return (QCString)"Дијаграм наслеђивања за "+clName+":"; + } + + /*! this text is generated when the \\internal command is used. */ + virtual QCString trForInternalUseOnly() + { return "Само за унутрашњу употребу."; } + + /*! this text is generated when the \\warning command is used. */ + virtual QCString trWarning() + { return "Упозорење"; } + + /*! this text is generated when the \\version command is used. */ + virtual QCString trVersion() + { return "Верзија"; } + + /*! this text is generated when the \\date command is used. */ + virtual QCString trDate() + { return "Датум"; } + + /*! this text is generated when the \\return command is used. */ + virtual QCString trReturns() + { return "Враћа"; } + + /*! this text is generated when the \\sa command is used. */ + virtual QCString trSeeAlso() + { return "Види"; } + + /*! this text is generated when the \\param command is used. */ + virtual QCString trParameters() + { return "Параметри"; } + + /*! this text is generated when the \\exception command is used. */ + virtual QCString trExceptions() + { return "Изизеци"; } + + /*! this text is used in the title page of a LaTeX document. */ + virtual QCString trGeneratedBy() + { return "Направљено помоћу"; } + +////////////////////////////////////////////////////////////////////////// +// new since 0.49-990307 +////////////////////////////////////////////////////////////////////////// + + /*! used as the title of page containing all the index of all namespaces. */ + virtual QCString trNamespaceList() + { return "Списак простора имена"; } + + /*! used as an introduction to the namespace list */ + virtual QCString trNamespaceListDescription(bool extractAll) + { + QCString result="Овде је списак свих "; + if (!extractAll) result+="документованих "; + result+="простора имена са кратким описима:"; + return result; + } + + /*! used in the class documentation as a header before the list of all + * friends of a class + */ + virtual QCString trFriends() + { return "Пријатељи"; } + +////////////////////////////////////////////////////////////////////////// +// new since 0.49-990405 +////////////////////////////////////////////////////////////////////////// + + /*! used in the class documentation as a header before the list of all + * related classes + */ + virtual QCString trRelatedFunctionDocumentation() + { return "Документација за пријатеље и повезане функције"; } + +////////////////////////////////////////////////////////////////////////// +// 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=(QCString)clName; + if (isTemplate) { + result+=" Шаблон"; + switch(compType) + { + case ClassDef::Class: result+="ска класа"; break; + case ClassDef::Struct: result+="ска структура"; break; + case ClassDef::Union: result+="ска унија"; break; + case ClassDef::Interface: result+="ски интерфејс"; break; + case ClassDef::Protocol: result+="ски протокол"; break; + case ClassDef::Category: result+="ска категорија"; break; + case ClassDef::Exception: result+="ски изузетак"; break; + } + } else { + result+=" Референца"; + switch(compType) + { + case ClassDef::Class: result+=" класе"; break; + case ClassDef::Struct: result+=" структуре"; break; + case ClassDef::Union: result+=" уније"; break; + case ClassDef::Interface: result+=" интерфејса"; break; + case ClassDef::Protocol: result+=" протокола"; break; + case ClassDef::Category: result+=" категорије"; break; + case ClassDef::Exception: result+=" изузетка"; break; + } + } + return result; + } + + /*! used as the title of the HTML page of a file */ + virtual QCString trFileReference(const char *fileName) + { + QCString result=fileName; + result+=" Референца датотеке"; + return result; + } + + /*! used as the title of the HTML page of a namespace */ + virtual QCString trNamespaceReference(const char *namespaceName) + { + QCString result=namespaceName; + result+=" Референца простора имена"; + return result; + } + + virtual QCString trPublicMembers() + { return "Јавне функције чланице"; } + virtual QCString trPublicSlots() + { return "Јавни слотови"; } + virtual QCString trSignals() + { return "Сигнали"; } + virtual QCString trStaticPublicMembers() + { return "Статичке јавне функције чланице"; } + virtual QCString trProtectedMembers() + { return "Заштићене функције чланице"; } + virtual QCString trProtectedSlots() + { return "Заштићени слотови"; } + virtual QCString trStaticProtectedMembers() + { return "Статичке заштићене функције чланице"; } + virtual QCString trPrivateMembers() + { return "Приватне функције чланице"; } + virtual QCString trPrivateSlots() + { return "Приватни слотови"; } + virtual QCString trStaticPrivateMembers() + { return "Статичке приватне функције чланице"; } + + /*! 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+=" и "; + } + } + return result; + } + + /*! used in class documentation to produce a list of base classes, + * if class diagrams are disabled. + */ + virtual QCString trInheritsList(int numEntries) + { + return "Наслеђује "+trWriteList(numEntries)+"."; + } + + /*! used in class documentation to produce a list of super classes, + * if class diagrams are disabled. + */ + virtual QCString trInheritedByList(int numEntries) + { + return "Наслеђују "+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 "Поново имплементирано од "+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 "Поново имплементирано у "+trWriteList(numEntries)+"."; + } + + /*! This is put above each page as a link to all members of namespaces. */ + virtual QCString trNamespaceMembers() + { return "Чланови простора имена"; } + + /*! This is an introduction to the page with all namespace members */ + virtual QCString trNamespaceMemberDescription(bool extractAll) + { + QCString result="Овде је списак свих "; + if (!extractAll) result+="документованих "; + result+="чланова простора имена са везама ка "; + if (extractAll) + result+="документацији простора имена за сваки члан:"; + else + result+="просторима имена којима припадају:"; + return result; + } + /*! This is used in LaTeX as the title of the chapter with the + * index of all namespaces. + */ + virtual QCString trNamespaceIndex() + { return "Индекс простора имена"; } + + /*! This is used in LaTeX as the title of the chapter containing + * the documentation of all namespaces. + */ + virtual QCString trNamespaceDocumentation() + { return "Документација простора имена"; } + +////////////////////////////////////////////////////////////////////////// +// new since 0.49-990522 +////////////////////////////////////////////////////////////////////////// + + /*! This is used in the documentation before the list of all + * namespaces in a file. + */ + virtual QCString trNamespaces() + { return "Простори имена"; } + +////////////////////////////////////////////////////////////////////////// +// 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)"Документација за "; + switch(compType) + { + case ClassDef::Class: result+="ову класу"; break; + case ClassDef::Struct: result+="ову структуру"; break; + case ClassDef::Union: result+="ову унију"; break; + case ClassDef::Interface: result+="овај интерфејс"; break; + case ClassDef::Protocol: result+="овај протокол"; break; + case ClassDef::Category: result+="ову категорију"; break; + case ClassDef::Exception: result+="овај изузетак"; break; + } + result+=" је произведена из"; + 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 "Абецедни списак"; } + +////////////////////////////////////////////////////////////////////////// +// new since 0.49-990901 +////////////////////////////////////////////////////////////////////////// + + /*! This is used as the heading text for the retval command. */ + virtual QCString trReturnValues() + { return "Враћене вредности"; } + + /*! This is in the (quick) index as a link to the main page (index.html) + */ + virtual QCString trMainPage() + { return "Главна страница"; } + + /*! 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 "стр."; } + +////////////////////////////////////////////////////////////////////////// +// new since 0.49-991003 +////////////////////////////////////////////////////////////////////////// + + virtual QCString trDefinedAtLineInSourceFile() + { + return "Дефиниција у линији @0 датотеке @1."; + } + virtual QCString trDefinedInSourceFile() + { + return "Дефиниција у датотеци @0."; + } + +////////////////////////////////////////////////////////////////////////// +// new since 0.49-991205 +////////////////////////////////////////////////////////////////////////// + + virtual QCString trDeprecated() + { + return "Застарело"; + } + +////////////////////////////////////////////////////////////////////////// +// new since 1.0.0 +////////////////////////////////////////////////////////////////////////// + + /*! this text is put before a collaboration diagram */ + virtual QCString trCollaborationDiagram(const char *clName) + { + return (QCString)"Дијаграм сарадње за "+clName+":"; + } + /*! this text is put before an include dependency graph */ + virtual QCString trInclDepGraph(const char *fName) + { + return (QCString)"Дијаграм зависности укључивања за "+fName+":"; + } + /*! header that is put before the list of constructor/destructors. */ + virtual QCString trConstructorDocumentation() + { + return "Документација конструктора и деструктора"; + } + /*! Used in the file documentation to point to the corresponding sources. */ + virtual QCString trGotoSourceCode() + { + return "Иди на изворни код овог фајла."; + } + /*! Used in the file sources to point to the corresponding documentation. */ + virtual QCString trGotoDocumentation() + { + return "Иди на документацију овог фајла."; + } + /*! Text for the \\pre command */ + virtual QCString trPrecondition() + { + return "Услов пре"; + } + /*! Text for the \\post command */ + virtual QCString trPostcondition() + { + return "Услов после"; + } + /*! Text for the \\invariant command */ + virtual QCString trInvariant() + { + return "Инваријанта"; + } + /*! Text shown before a multi-line variable/enum initialization */ + virtual QCString trInitialValue() + { + return "Почетна вредност:"; + } + /*! Text used the source code in the file index */ + virtual QCString trCode() + { + return "код"; + } + virtual QCString trGraphicalHierarchy() + { + return "Графичка хијерархија класа"; + } + virtual QCString trGotoGraphicalHierarchy() + { + return "Иди на графичку хијерархију класа"; + } + virtual QCString trGotoTextualHierarchy() + { + return "Иди на текстуалну хијерархију класа"; + } + virtual QCString trPageIndex() + { + return "Индекс страна"; + } + +////////////////////////////////////////////////////////////////////////// +// new since 1.1.0 +////////////////////////////////////////////////////////////////////////// + + virtual QCString trNote() + { + return "Напомена"; + } + virtual QCString trPublicTypes() + { + return "Јавни типови"; + } + virtual QCString trPublicAttribs() + { + if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) + { + return "Поља"; + } + else + { + return "Јавни атрибути"; + } + } + virtual QCString trStaticPublicAttribs() + { + return "Статички јавни атрибути"; + } + virtual QCString trProtectedTypes() + { + return "Заштићени типови"; + } + virtual QCString trProtectedAttribs() + { + return "Заштићени атрибути"; + } + virtual QCString trStaticProtectedAttribs() + { + return "Статички заштићени атрибути"; + } + virtual QCString trPrivateTypes() + { + return "Приватни типови"; + } + virtual QCString trPrivateAttribs() + { + return "Приватни атрибути"; + } + virtual QCString trStaticPrivateAttribs() + { + return "Статички приватни атрибути"; + } + +////////////////////////////////////////////////////////////////////////// +// new since 1.1.3 +////////////////////////////////////////////////////////////////////////// + + /*! Used as a marker that is put before a \\todo item */ + virtual QCString trTodo() + { + return "Урадити"; + } + /*! Used as the header of the todo list */ + virtual QCString trTodoList() + { + return "Подсетник шта још урадити"; + } + +////////////////////////////////////////////////////////////////////////// +// new since 1.1.4 +////////////////////////////////////////////////////////////////////////// + + virtual QCString trReferencedBy() + { + return "Референцирано од"; + } + virtual QCString trRemarks() + { + return "Напомене"; + } + virtual QCString trAttention() + { + return "Пажња"; + } + virtual QCString trInclByDepGraph() + { + return "Овај граф показује које датотеке директно или " + "или индиректно укључују овај фајл:"; + } + virtual QCString trSince() + { + return "Од"; + } + +////////////////////////////////////////////////////////////////////////// +// new since 1.1.5 +////////////////////////////////////////////////////////////////////////// + + /*! title of the graph legend page */ + virtual QCString trLegendTitle() + { + return "Легенда графова"; + } + /*! 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 + "Ова страница објашњава како тумачити графове који су направљени " + "doxygen-ом.<p>\n" + "Размотримо следећи пример:\n" + "\\code\n" + "/*! Невидљива класа због одсецања */\n" + "class Invisible { };\n\n" + "/*! Одсечена класа, веза наслеђивања је скривена */\n" + "class Truncated : public Invisible { };\n\n" + "/* Класа која није документована doxygen коментарима */\n" + "class Undocumented { };\n\n" + "/*! Класа која је наслеђена јавним наслеђивањем */\n" + "class PublicBase : public Truncated { };\n\n" + "/*! Шаблонска класа */\n" + "template<class T> class Templ { };\n\n" + "/*! Класа која је наслеђена заштићеним наслеђивањем */\n" + "class ProtectedBase { };\n\n" + "/*! Класа која је наслеђена јавним наслеђивањем */\n" + "class PrivateBase { };\n\n" + "/*! Класа коју користи наслеђена класа */\n" + "class Used { };\n\n" + "/*! Надкласа која наслеђује неки број других класа */\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" + "Ако је \\c MAX_DOT_GRAPH_HEIGHT таг у конфигурационој датотеци " + "подешен на 240, то ће резултовати на следећи начин:" + "<p><center><img alt=\"\" src=\"graph_legend."+Config_getEnum("DOT_IMAGE_FORMAT")+"\"></center>\n" + "<p>\n" + "Правоугаоници имају следеће значење:\n" + "<ul>\n" + "<li>%Пуни сиви правоугаоник представља структуру или класу за коју је " + "граф направљен.\n" + "<li>%Правоугаоник са црним оквиром означава документовану структуру или класу.\n" + "<li>%Правоугаоник са сивим оквиром означава недокументовану структуру или класу.\n" + "<li>%Правоугаоник са црвеним оквиром означава документовану структуру или класу за" + "за коју нису све релације наслеђивања/садржавања приказане. %Граф је " + "одсечен ако излази из специфицираних оквира.\n" + "</ul>\n" + "Стрелице имају следећа значења:\n" + "<ul>\n" + "<li>%Тамноплава стрелица се користи да прикаже релацију јавног извођења " + "између двеју класа.\n" + "<li>%Тамнозелена стрелица се користи за заштићено наслеђивање.\n" + "<li>%Тамноцрвена стрелица се користи за приватно наслеђивање.\n" + "<li>%Љубичаста испрекидана стрелица се користи ако класа садржи или користи " + "друга класа. Стрелица је означена променљивом/променљивама " + "кроз које је показивана класа или структура доступна.\n" + "<li>%Жута испрекидана стрелица означава везу између примерка шаблона и " + "и шаблонске класе из које је инстанцирана. Стрелица је означена " + "параметрима примерка шаблона.\n" + "</ul>\n"; + } + /*! text for the link to the legend page */ + virtual QCString trLegend() + { + return "легенда"; + } + +////////////////////////////////////////////////////////////////////////// +// new since 1.2.0 +////////////////////////////////////////////////////////////////////////// + + /*! Used as a marker that is put before a test item */ + virtual QCString trTest() + { + return "Тест"; + } + /*! Used as the header of the test list */ + virtual QCString trTestList() + { + return "Списак тестова"; + } + +////////////////////////////////////////////////////////////////////////// +// new since 1.2.1 +////////////////////////////////////////////////////////////////////////// + + /*! Used as a section header for KDE-2 IDL methods */ + virtual QCString trDCOPMethods() + { + return "DCOP функције чланице"; + } + +////////////////////////////////////////////////////////////////////////// +// new since 1.2.2 +////////////////////////////////////////////////////////////////////////// + + /*! Used as a section header for IDL properties */ + virtual QCString trProperties() + { + return "Своства"; + } + /*! Used as a section header for IDL property documentation */ + virtual QCString trPropertyDocumentation() + { + return "Документација свосјтва"; + } + +////////////////////////////////////////////////////////////////////////// +// new since 1.2.4 +////////////////////////////////////////////////////////////////////////// + + /*! Used for Java classes in the summary section of Java packages */ + virtual QCString trClasses() + { + if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) + { + return "Структуре"; + } + else + { + return "Класе"; + } + } + /*! Used as the title of a Java package */ + virtual QCString trPackage(const char *name) + { + return (QCString)"Пакет "+name; + } + /*! Title of the package index page */ + virtual QCString trPackageList() + { + return "Списак пакета"; + } + /*! The description of the package index page */ + virtual QCString trPackageListDescription() + { + return "Овде су пакети са кратким описима (ако су доступни):"; + } + /*! The link name in the Quick links header for each page */ + virtual QCString trPackages() + { + return "Пакети"; + } + /*! Text shown before a multi-line define */ + virtual QCString trDefineValue() + { + return "Вредност:"; + } + +////////////////////////////////////////////////////////////////////////// +// new since 1.2.5 +////////////////////////////////////////////////////////////////////////// + + /*! Used as a marker that is put before a \\bug item */ + virtual QCString trBug() + { + return "Грешка"; + } + /*! Used as the header of the bug list */ + virtual QCString trBugList() + { + return "Списак грешака"; + } + +////////////////////////////////////////////////////////////////////////// +// 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 "0"; + } + + /*! Used as header RTF general index */ + virtual QCString trRTFGeneralIndex() + { + return "Индекс"; + } + + /*! 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 ? "Клас" : "клас")); + if (!singular) result+="e"; else result+="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 trFile(bool first_capital, bool singular) + { + QCString result((first_capital ? "Датотек" : "датотек")); + if (!singular) result+="e"; else result+="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 trNamespace(bool first_capital, bool singular) + { + QCString result((first_capital ? "Простор" : "простор")); + if (!singular) result+="и имена"; else result+=" имена"; + 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 ? "Груп" : "груп")); + if (!singular) result+="е"; else result+="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 trPage(bool first_capital, bool singular) + { + QCString result((first_capital ? "Страниц" : "страниц")); + if (!singular) result+="е"; else result += "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 trMember(bool first_capital, bool singular) + { + QCString result((first_capital ? "Члан" : "члан")); + if (!singular) result+="ови"; + 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 ? "Глобалн" : "глобалн")); + if (!singular) result+="а"; else result+="о"; + 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 ? "Аутор" : "аутор")); + if (!singular) result+="и"; + return result; + } + +////////////////////////////////////////////////////////////////////////// +// new since 1.2.11 +////////////////////////////////////////////////////////////////////////// + + /*! This text is put before the list of members referenced by a member + */ + virtual QCString trReferences() + { + return "Референце"; + } + +////////////////////////////////////////////////////////////////////////// +// 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 "Имплементира "+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 "Имплементирано у "+trWriteList(numEntries)+"."; + } + +////////////////////////////////////////////////////////////////////////// +// new since 1.2.16 +////////////////////////////////////////////////////////////////////////// + + /*! used in RTF documentation as a heading for the Table + * of Contents. + */ + virtual QCString trRTFTableOfContents() + { + return "Садржај"; + } + +////////////////////////////////////////////////////////////////////////// +// new since 1.2.17 +////////////////////////////////////////////////////////////////////////// + + /*! Used as the header of the list of item that have been + * flagged deprecated + */ + virtual QCString trDeprecatedList() + { + return "Списак застарелог"; + } + +////////////////////////////////////////////////////////////////////////// +// new since 1.2.18 +////////////////////////////////////////////////////////////////////////// + + /*! Used as a header for declaration section of the events found in + * a C# program + */ + virtual QCString trEvents() + { + return "Догађаји"; + } + /*! Header used for the documentation section of a class' events. */ + virtual QCString trEventDocumentation() + { + return "Документација догажаја"; + } + +////////////////////////////////////////////////////////////////////////// +// new since 1.3 +////////////////////////////////////////////////////////////////////////// + + /*! Used as a heading for a list of Java class types with package scope. + */ + virtual QCString trPackageTypes() + { + return "Типови пакета"; + } + /*! Used as a heading for a list of Java class functions with package + * scope. + */ + virtual QCString trPackageMembers() + { + return "Функције пакета"; + } + /*! Used as a heading for a list of static Java class functions with + * package scope. + */ + virtual QCString trStaticPackageMembers() + { + return "Статичке функције пакета"; + } + /*! Used as a heading for a list of Java class variables with package + * scope. + */ + virtual QCString trPackageAttribs() + { + return "Атрибути пакета"; + } + /*! Used as a heading for a list of static Java class variables with + * package scope. + */ + virtual QCString trStaticPackageAttribs() + { + return "Статички атрибути пакета"; + } + +////////////////////////////////////////////////////////////////////////// +// new since 1.3.1 +////////////////////////////////////////////////////////////////////////// + + /*! Used in the quick index of a class/file/namespace member list page + * to link to the unfiltered list of all members. + */ + virtual QCString trAll() + { + return "Све"; + } + /*! Put in front of the call graph for a function. */ + virtual QCString trCallGraph() + { + return "Овде је граф позивања за ову функцију:"; + } + +////////////////////////////////////////////////////////////////////////// +// new since 1.3.3 +////////////////////////////////////////////////////////////////////////// + + /*! When the search engine is enabled this text is put in the header + * of each page before the field where one can enter the text to search + * for. + */ + virtual QCString trSearchForIndex() + { + return "Тражим"; + } + /*! This string is used as the title for the page listing the search + * results. + */ + virtual QCString trSearchResultsTitle() + { + return "Резултати претраге"; + } + /*! This string is put just before listing the search results. The + * text can be different depending on the number of documents found. + * Inside the text you can put the special marker $num to insert + * the number representing the actual number of search results. + * The @a numDocuments parameter can be either 0, 1 or 2, where the + * value 2 represents 2 or more matches. HTML markup is allowed inside + * the returned string. + */ + virtual QCString trSearchResults(int numDocuments) + { + if (numDocuments==0) + { + return "Жао ми је, али нема докумената који одговарају упиту."; + } + else if (numDocuments==1) + { + return "Пронађен <b>1</b> документ који одговара упиту."; + } + else if (numDocuments==2) + { + return "Пронађена <b>а</b> документа која одговарају упиту."; + } + else if (numDocuments==3) + { + return "Пронађена <b>3</b> документа која одговарају упиту."; + } + else if (numDocuments==4) + { + return "Пронађена <b>4</b> документа која одговарају упиту."; + } + else + { + return "Пронађено <b>$num</b> докумената који одговарају упиту. " + "Приказују се прво најбољи поготци."; + } + } + /*! This string is put before the list of matched words, for each search + * result. What follows is the list of words that matched the query. + */ + virtual QCString trSearchMatches() + { + return "Поготци:"; + } + +////////////////////////////////////////////////////////////////////////// +// new since 1.3.8 +////////////////////////////////////////////////////////////////////////// + + /*! This is used in HTML as the title of page with source code for file filename + */ + virtual QCString trSourceFile(QCString& filename) + { + return filename + " Изворна датотека"; + } + +////////////////////////////////////////////////////////////////////////// +// new since 1.3.9 +////////////////////////////////////////////////////////////////////////// + + /*! This is used as the name of the chapter containing the directory + * hierarchy. + */ + virtual QCString trDirIndex() + { return "Хијерархија директоријума"; } + + /*! This is used as the name of the chapter containing the documentation + * of the directories. + */ + virtual QCString trDirDocumentation() + { return "Документација директоријума"; } + + /*! This is used as the title of the directory index and also in the + * Quick links of an HTML page, to link to the directory hierarchy. + */ + virtual QCString trDirectories() + { return "Директоријуми"; } + + /*! This returns a sentences that introduces the directory hierarchy. + * and the fact that it is sorted alphabetically per level + */ + virtual QCString trDirDescription() + { return "Ова хијерархија директоријума је уређена " + "приближно по абецеди:"; + } + + /*! This returns the title of a directory page. The name of the + * directory is passed via \a dirName. + */ + virtual QCString trDirReference(const char *dirName) + { QCString result=dirName; result+=" Референца директоријума"; return result; } + + /*! This returns the word directory with or without starting capital + * (\a first_capital) and in sigular or plural form (\a singular). + */ + virtual QCString trDir(bool first_capital, bool singular) + { + QCString result((first_capital ? "Директоријум" : "директоријум")); + if (singular) result+=""; else result+="и"; + return result; + } + +////////////////////////////////////////////////////////////////////////// +// new since 1.4.1 +////////////////////////////////////////////////////////////////////////// + + /*! This text is added to the documentation when the \\overload command + * is used for a overloaded function. + */ + virtual QCString trOverloadText() + { + return "Ово је преоптерећена функција чланица. " + "Разликује се од наведене само по врсти аргумената кое прихвата"; + } + +////////////////////////////////////////////////////////////////////////// +// new since 1.4.6 +////////////////////////////////////////////////////////////////////////// + + /*! This is used to introduce a caller (or called-by) graph */ + virtual QCString trCallerGraph() + { + return "Ово је граф функција које позивају ову функцију:"; + } + + /*! This is used in the documentation of a file/namespace before the list + * of documentation blocks for enumeration values + */ + virtual QCString trEnumerationValueDocumentation() + { return "Документација вредности набрајања"; } + +////////////////////////////////////////////////////////////////////////// +// new since 1.5.4 (mainly for Fortran) +////////////////////////////////////////////////////////////////////////// + + /*! header that is put before the list of member subprograms (Fortran). */ + virtual QCString trMemberFunctionDocumentationFortran() + { return "Документацијаr функције чланице, односно потпрограма члана"; } + + /*! This is put above each page as a link to the list of annotated data types (Fortran). */ + virtual QCString trCompoundListFortran() + { return "Списак типова података"; } + + /*! This is put above each page as a link to all members of compounds (Fortran). */ + virtual QCString trCompoundMembersFortran() + { return "Поља"; } + + /*! This is an introduction to the annotated compound list (Fortran). */ + virtual QCString trCompoundListDescriptionFortran() + { return "Овде су типови података са кратким описима:"; } + + /*! This is an introduction to the page with all data types (Fortran). */ + virtual QCString trCompoundMembersDescriptionFortran(bool extractAll) + { + QCString result="Овде је списак свих "; + if (!extractAll) + { + result+="документованих "; + } + result+="чланова типова података"; + result+=" са везама ка "; + if (!extractAll) + { + result+="документацији структуре података за сваки члан"; + } + else + { + result+="типовима података којима припадају:"; + } + return result; + } + + /*! This is used in LaTeX as the title of the chapter with the + * annotated compound index (Fortran). + */ + virtual QCString trCompoundIndexFortran() + { return "Индекс типова података"; } + + /*! This is used in LaTeX as the title of the chapter containing + * the documentation of all data types (Fortran). + */ + virtual QCString trTypeDocumentation() + { return "Документација типова података"; } + + /*! This is used in the documentation of a file as a header before the + * list of (global) subprograms (Fortran). + */ + virtual QCString trSubprograms() + { return "Функције/потпрограми"; } + + /*! This is used in the documentation of a file/namespace before the list + * of documentation blocks for subprograms (Fortran) + */ + virtual QCString trSubprogramDocumentation() + { return "Документација функције/потпрограма"; } + + /*! This is used in the documentation of a file/namespace/group before + * the list of links to documented compounds (Fortran) + */ + virtual QCString trDataTypes() + { return "Типови података"; } + + /*! used as the title of page containing all the index of all modules (Fortran). */ + virtual QCString trModulesList() + { return "Списак модула"; } + + /*! used as an introduction to the modules list (Fortran) */ + virtual QCString trModulesListDescription(bool extractAll) + { + QCString result="Овде је списак свих "; + if (!extractAll) result+="документованих "; + result+="модула са кратким описима:"; + return result; + } + + /*! used as the title of the HTML page of a module/type (Fortran) */ + virtual QCString trCompoundReferenceFortran(const char *clName, + ClassDef::CompoundType compType, + bool isTemplate) + { + QCString result=(QCString)clName; + if (isTemplate) result+=" Шаблон"; + result+=" Референца"; + switch(compType) + { + case ClassDef::Class: result+=" модула"; break; + case ClassDef::Struct: result+=" типа"; break; + case ClassDef::Union: result+=" уније"; break; + case ClassDef::Interface: result+=" интерфејса"; break; + case ClassDef::Protocol: result+=" протокола"; break; + case ClassDef::Category: result+=" категорије"; break; + case ClassDef::Exception: result+=" изузетка"; break; + } + return result; + } + /*! used as the title of the HTML page of a module (Fortran) */ + virtual QCString trModuleReference(const char *namespaceName) + { + QCString result=namespaceName; + result+=" Референца модула"; + return result; + } + + /*! This is put above each page as a link to all members of modules. (Fortran) */ + virtual QCString trModulesMembers() + { return "Чланови модула"; } + + /*! This is an introduction to the page with all modules members (Fortran) */ + virtual QCString trModulesMemberDescription(bool extractAll) + { + QCString result="Овде је списак свих "; + if (!extractAll) result+="документованих "; + result+="чланова модула са везама ка "; + if (extractAll) + { + result+="документацији модула за сваки члан:"; + } + else + { + result+="модулима којима припадају:"; + } + return result; + } + + /*! This is used in LaTeX as the title of the chapter with the + * index of all modules (Fortran). + */ + virtual QCString trModulesIndex() + { return "Индекс модула"; } + + /*! 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 trModule(bool first_capital, bool singular) + { + QCString result((first_capital ? "Модул" : "модул")); + if (!singular) result+="и"; + return result; + } + /*! This is put at the bottom of a module documentation page and is + * followed by a list of files that were used to generate the page. + */ + virtual QCString trGeneratedFromFilesFortran(ClassDef::CompoundType compType, + bool single) + { // here s is one of " Module", " Struct" or " Union" + // single is true implies a single file + QCString result=(QCString)"Документација за "; + switch(compType) + { + case ClassDef::Class: result+="овај модул"; break; + case ClassDef::Struct: result+="овај тип"; break; + case ClassDef::Union: result+="ову унију"; break; + case ClassDef::Interface: result+="овај интерфејс"; break; + case ClassDef::Protocol: result+="овај протокол"; break; + case ClassDef::Category: result+="ову категорију"; break; + case ClassDef::Exception: result+="овај изузетак"; break; + } + result+=" је направљен из следећ"; + if (single) result+="е датотеке:"; else result+="их датотека:"; + 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 trType(bool first_capital, bool singular) + { + QCString result((first_capital ? "Тип" : "тип")); + if (!singular) result+="ови"; + 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 trSubprogram(bool first_capital, bool singular) + { + QCString result((first_capital ? "Потпрограм" : "потпрограм")); + if (!singular) result+="и"; + return result; + } + + /*! C# Type Constraint list */ + virtual QCString trTypeConstraints() + { + return "Ограничења типова"; + } + +}; + +#endif diff --git a/src/translator_sr.h b/src/translator_sr.h index 6f559dd..338bedf 100644 --- a/src/translator_sr.h +++ b/src/translator_sr.h @@ -2,7 +2,7 @@ * * * - * Copyright (C) 1997-2008 by Dimitri van Heesch. + * Copyright (C) 1997-2007 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 @@ -14,16 +14,17 @@ * 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>;<office@ddmrm.com> -// // 10x 2 Ivana Miletic for gramatical consutation. +// // 10x 2 Ivana Miletic for grammatical consultation. // UTF-8 patch by Nenad Bulatovic <buletina@gmail.com> +// translation update by Andrija M. Bosnjakovic <andrija@etf.bg.ac.yu> -class TranslatorSerbian : public TranslatorAdapter_1_4_1 +class TranslatorSerbian : public Translator { private: QCString decode(const QCString& sInput) @@ -83,7 +84,9 @@ private: /*! used in the compound documentation before a list of related functions. */ virtual QCString trRelatedFunctions() - { return decode( "Povezane funkcije" ); } + //! Čini se da je ovako manje loše nego "Povezane funkcije", + //! što uopšte ne izgleda dobro jer ta kartica sadrži prijatelje i globalne funkcije + { return decode( "Relevantne funkcije" ); } /*! subscript for the related functions. */ virtual QCString trRelatedSubscript() @@ -91,15 +94,16 @@ private: /*! header that is put before the detailed description of files, classes and namespaces. */ virtual QCString trDetailedDescription() - { return decode( "Opširnije objašnjenje" ); } // detalj je francuska rec. + { return decode( "Opširniji opis" ); } /*! header that is put before the list of typedefs. */ virtual QCString trMemberTypedefDocumentation() - { return decode( "Dokumentacija typedef članova" ); } + { return decode( "Dokumentacija unutrašnjih definicija tipa" ); } /*! header that is put before the list of enumerations. */ virtual QCString trMemberEnumerationDocumentation() - { return decode( "Dokumentacija enum članova" ); } + //! Ovo je u skladu sa "unutrašnja klasa" što se može videti u knjizi. + { return decode( "Dokumentacija unutrašnjih nabrajanja" ); } /*! header that is put before the list of member functions. */ virtual QCString trMemberFunctionDocumentation() @@ -110,11 +114,11 @@ private: { if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) { - return decode( "Dokumentacija članova" ); + return decode( "Dokumentacija polja" ); } else { - return decode( "Dokumentacija javnih članova" ); + return decode( "Dokumentacija atributa" ); } } @@ -142,23 +146,23 @@ private: * 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; + { QCString result="Napravljeno automatski korišćenjem alata Doxygen"; + if( s ) result+=(QCString)" za projekat " + s; result+=" od izvornog koda."; return decode( result ); } /*! put after an enum name in the list of all members */ virtual QCString trEnumName() - { return decode( "ime enum-a " ); } + { return decode( "ime nabrajanja " ); } /*! put after an enum value in the list of all members */ virtual QCString trEnumValue() - { return decode( "vrednost enum-a" ); } + { return decode( "vrednost nabrojane konstante" ); } /*! put after an undocumented member in the list of all members */ virtual QCString trDefinedIn() - { return decode( "definisano u" ); } + { return decode( "definicija u" ); } // quick reference sections @@ -170,18 +174,18 @@ private: /*! This is put above each page as a link to the class hierarchy */ virtual QCString trClassHierarchy() - { return decode( "Stablo klasa" ); } + { return decode( "Hijerarhija 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 decode( "Sve strukture" ); + return decode( "Spisak struktura" ); } else { - return decode( "Sve klase" ); + return decode( "Spisak klasa" ); } } @@ -189,17 +193,13 @@ private: virtual QCString trFileList() { return decode( "Spisak datoteka" ); } - /*! This is put above each page as a link to the list of all verbatim headers */ - virtual QCString trHeaderFiles() - { return decode( "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 decode( "Svi članovi struktura" ); - } + return decode( "Sva polja struktura" ); + } else { return decode( "Svi članovi klasa" ); @@ -221,7 +221,7 @@ private: /*! This is put above each page as a link to all related pages. */ virtual QCString trRelatedPages() - { return decode( "Stranice povezane sa ovom" ); } + { return decode( "Stranice koje imaju veze sa ovom stranicom" ); } /*! This is put above each page as a link to all examples. */ virtual QCString trExamples() @@ -233,15 +233,16 @@ private: /*! This is an introduction to the class hierarchy. */ virtual QCString trClassHierarchyDescription() - { return decode( "Stablo nasleđivanja je složeno " - "približno po abecedi:" ); } + { return decode( "Hijerahija klasa uređena 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+="datoteka, sa kratkim opisom:"; + if (!extractAll) result+="dokumentovanih "; + result+="datoteka, sa kratkim opisima:"; return decode( result ); } @@ -251,12 +252,12 @@ private: if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) { - return decode( "Spisak struktura sa kratkim opisom:" ); + return decode( "Spisak struktura sa kratkim opisima:" ); } else { - return decode( "Spisak klasa, struktura, unija i interfejsa sa kratkim opisom:" ); - + return decode( "Spisak klasa, struktura, " + "unija i interfejsa sa kratkim opisima:" ); } } @@ -270,33 +271,33 @@ private: } if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) { - result+="članova struktura ili unija"; + result+="članova struktura/unija"; } else { result+="članova klasa"; } - result+=" sa linkovima na "; + result+=" sa vezama ka "; if (extractAll) { if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) { - result+="dokumentaciju članova struktura/unija:"; + result+="dokumentaciji svakog polja strukture/unije:"; } else { - result+="dokumentaciju svakog člana klase:"; + result+="dokumentaciji svakog člana klase:"; } } else { if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) { - result+="strukture/unije koje pripadaju:"; + result+="strukturama/unijama kojima pripadaju:"; } else { - result+="klase koje pripadaju:"; + result+="klasama kojima pripadaju:"; } } return decode( result ); @@ -310,48 +311,34 @@ private: if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) { - result+="funkcija, promenjiva, makro zamena, enum-ova, i typedef-ova"; + result+="funkcija, promenljivih, makro zamena, nabrajanja i definicija tipa"; } else { result+="članova"; } - - result+=" sa linkovima na "; - + result+=" sa vezama ka "; if (extractAll) - result+="datoteke u kojima se nalaze:"; + result+="datotekama u kojima se nalaze:"; else - result+=" dokumentaciju:"; - + result+="dokumentaciji:"; 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 decode( "Spisak primera:" ); } + { return decode( "Spisak svih primera:" ); } /*! This is an introduction to the page with the list of related pages */ virtual QCString trRelatedPagesDescription() - { return decode( "Spisak svih sličnih stranica:" ); } + { return decode( "Spisak stranica koje imaju veze sa ovom stranicom:" ); } /*! This is an introduction to the page with the list of class/file groups */ virtual QCString trModulesDescription() { return decode( "Spisak svih modula:" ); } - /*! This sentences is used in the annotated class/file lists if no brief - * description is given. - */ - virtual QCString trNoDescriptionAvailable() - { return decode( "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 decode("Dokumentacija" ); } @@ -360,13 +347,13 @@ private: * index of all groups. */ virtual QCString trModuleIndex() - { return decode( "Index modula" ); } + { return decode( "Indeks modula" ); } /*! This is used in LaTeX as the title of the chapter with the * class hierarchy. */ virtual QCString trHierarchicalIndex() - { return decode( "Hijerarhijski sadžraj" ); } + { return decode( "Hijerarhijski sadržaj" ); } /*! This is used in LaTeX as the title of the chapter with the * annotated compound index. @@ -375,11 +362,11 @@ private: { if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) { - return decode( "Glavni sadržaj" ); + return decode( "Spisak struktura/unija" ); } else { - return decode( "Glavni sadržaj" ); + return decode( "Spisak klasa" ); } } @@ -402,11 +389,11 @@ private: { if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) { - return "Dokumentacija stuktura"; + return decode( "Dokumentacija stuktura/unija" ); } else { - return "Dokumentacija klasa"; + return decode( "Dokumentacija klasa" ); } } @@ -414,19 +401,19 @@ private: * the documentation of all files. */ virtual QCString trFileDocumentation() - { return "Dokumentacija datoteke"; } + { return decode( "Dokumentacija datoteke" ); } /*! This is used in LaTeX as the title of the chapter containing * the documentation of all examples. */ virtual QCString trExampleDocumentation() - { return "Dokumentacija primera"; } + { return decode( "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"; } + { return decode( "Dokumentacija stranice" ); } /*! This is used in LaTeX as the title of the document */ virtual QCString trReferenceManual() @@ -436,85 +423,79 @@ private: * list of defines */ virtual QCString trDefines() - { return "Makro zamene"; } + { return decode( "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"; } + { return decode( "Deklaracije funkcija" ); } /*! This is used in the documentation of a file as a header before the * list of typedefs */ virtual QCString trTypedefs() - { return "Typedef-ovi"; } + { return decode( "Definicije tipa" ); } /*! This is used in the documentation of a file as a header before the * list of enumerations */ virtual QCString trEnumerations() - { return "Enum-ovi"; } + { return decode( "Nabrajanja" ); } /*! This is used in the documentation of a file as a header before the * list of (global) functions */ virtual QCString trFunctions() - { return "Funkcije"; } + { return decode( "Funkcije" ); } /*! This is used in the documentation of a file as a header before the * list of (global) variables */ virtual QCString trVariables() - { return "Promenjive"; } + { return decode( "Promenljive" ); } /*! 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"; } + { return decode( "Vrednosti nabrojanih konstanti" ); } /*! This is used in the documentation of a file before the list of * documentation blocks for defines */ virtual QCString trDefineDocumentation() - { return "Dokumentacija makro zamene"; } + { return decode( "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"; } + { return decode( "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"; } + { return decode( "Dokumentacija definicije tipa" ); } /*! 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-a"; } - - /*! 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"; } + { return decode( "Dokumentacija nabrajanja" ); } /*! This is used in the documentation of a file/namespace before the list * of documentation blocks for functions */ virtual QCString trFunctionDocumentation() - { return "Dokumentacija funkcije"; } + { return decode( "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"; } + { return decode( "Dokumentacija promenljive" ); } /*! This is used in the documentation of a file/namespace/group before * the list of links to documented compounds @@ -523,11 +504,11 @@ private: { if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) { - return "Strukture"; + return decode( "Strukture i unije" ); } else { - return "Klase i strukture"; + return decode( "Klase, strukture i unije" ); } } @@ -536,16 +517,16 @@ private: */ virtual QCString trGeneratedAt(const char *date,const char *projName) { - QCString result=(QCString)"Napravljeno " + date; - if ( projName ) result+=(QCString)" za " + projName; - result+=(QCString)" od"; + QCString result=(QCString)"[" + date + "] Napravljeno automatski "; + if ( projName ) result+=(QCString)" za projekat " + projName; + result+=(QCString)" upotrebom "; return decode( result ); } /*! This is part of the sentence used in the standard footer of each page. */ virtual QCString trWrittenBy() { - return "napisao"; + return decode( "napisao" ); } /*! this text is put before a class diagram */ @@ -558,29 +539,21 @@ private: virtual QCString trForInternalUseOnly() { return decode( "Samo za unutrašnju upotrebu." ); } - /*! this text is generated when the \\reimp command is used. */ - virtual QCString trReimplementedForInternalReasons() - { return decode("Preurađeno zbog unutrašnjih 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" ); } + { return decode( "Upozorenje" ); } /*! this text is generated when the \\version command is used. */ virtual QCString trVersion() - { return "Verzija"; } // inacica + { return decode( "Verzija" ); } /*! this text is generated when the \\date command is used. */ virtual QCString trDate() - { return "Datum"; } + { return decode( "Datum" ); } /*! this text is generated when the \\return command is used. */ virtual QCString trReturns() - { return decode( "Vraćene vrednosti" ); } + { return decode( "Vrednost funkcije" ); } /*! this text is generated when the \\sa command is used. */ virtual QCString trSeeAlso() @@ -588,15 +561,15 @@ private: /*! this text is generated when the \\param command is used. */ virtual QCString trParameters() - { return "Parametri"; } + { return decode( "Parametri" ); } /*! this text is generated when the \\exception command is used. */ virtual QCString trExceptions() - { return "Izuzeci"; } + { return decode( "Izuzeci" ); } /*! this text is used in the title page of a LaTeX document. */ virtual QCString trGeneratedBy() - { return "Napravio"; } + { return decode( "Napravio" ); } ////////////////////////////////////////////////////////////////////////// // new since 0.49-990307 @@ -604,7 +577,7 @@ private: /*! used as the title of page containing all the index of all namespaces. */ virtual QCString trNamespaceList() - { return "Spisak prostora imena"; } + { return decode( "Spisak prostora imena" ); } /*! used as an introduction to the namespace list */ virtual QCString trNamespaceListDescription(bool extractAll) @@ -619,7 +592,7 @@ private: * friends of a class */ virtual QCString trFriends() - { return "Prijatelji"; } + { return decode( "Prijatelji" ); } ////////////////////////////////////////////////////////////////////////// // new since 0.49-990405 @@ -629,7 +602,7 @@ private: * related classes */ virtual QCString trRelatedFunctionDocumentation() - { return decode( "Dokumentacija prijateljskih funkcija ili klasa" ); } + { return decode( "Dokumentacija prijatelja i relevantnih funkcija" ); } ////////////////////////////////////////////////////////////////////////// // new since 0.49-990425 @@ -641,19 +614,17 @@ private: 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::Protocol: result+="protokola "; break; // grcka rec - case ClassDef::Category: result+="kategorije "; break; // + case ClassDef::Protocol: result+="protokola "; break; + case ClassDef::Category: result+="kategorije "; break; case ClassDef::Exception: result+="izuzetka "; break; } if (isTemplate) result += "šablona "; - result += clName; return decode( result ); } @@ -671,15 +642,15 @@ private: { QCString result="Opis prostora imena "; result += namespaceName; - return result; + return decode( result ); } virtual QCString trPublicMembers() { return decode("Javni članovi"); } virtual QCString trPublicSlots() - { return "Javni slotovi"; } + { return decode( "Javni slotovi" ); } virtual QCString trSignals() - { return "Signali"; } + { return decode( "Signali" ); } virtual QCString trStaticPublicMembers() { return decode("Zajednički javni članovi"); } virtual QCString trProtectedMembers() @@ -725,15 +696,15 @@ private: */ virtual QCString trInheritsList(int numEntries) { - return decode("Nasleđeno od "+trWriteList(numEntries)+"."); + return decode("Spisak osnovnih klasa: "+trWriteList(numEntries)+"."); } - /*! used in class documentation to produce a list of super classes, + /*! used in class documentation to produce a list of derived classes, * if class diagrams are disabled. */ virtual QCString trInheritedByList(int numEntries) { - return decode( "Nasleđeno u "+trWriteList(numEntries)+"." ); + return decode( "Spisak izvedenih klasa: "+trWriteList(numEntries)+"." ); } /*! used in member documentation blocks to produce a list of @@ -741,15 +712,15 @@ private: */ virtual QCString trReimplementedFromList(int numEntries) { - return decode("Preurađeno od "+trWriteList(numEntries)+"." ); + return decode("Menja definiciju iz "+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)+"." ); + { //! Ako već ne možemo jednu reč (redefinicija), da uskladimo sa prethodnim i izbacimo upotrebu roda + return decode("Definicija je izmenjena u "+trWriteList(numEntries)+"." ); } /*! This is put above each page as a link to all members of namespaces. */ @@ -761,24 +732,24 @@ private: { QCString result="Spisak svih "; if (!extractAll) result+="dokumentovanih "; - result+="članova prostora imena sa linkovima na "; + result+="članova prostora imena sa vezama prema "; if (extractAll) - result+="dokumentaciju svakog člana prostora imena: "; + result+="dokumentaciji svakog člana prostora imena: "; else - result+="prostor imena kojima pripadaju: "; + result+="prostorima imena kojima pripadaju: "; return decode( 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"; } + { return decode( "Indeks 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"; } + { return decode( "Dokumentacija prostora imena" ); } ////////////////////////////////////////////////////////////////////////// // new since 0.49-990522 @@ -788,7 +759,7 @@ private: * namespaces in a file. */ virtual QCString trNamespaces() - { return "Prostori imena"; } + { return decode( "Prostori imena" ); } ////////////////////////////////////////////////////////////////////////// // new since 0.49-990728 @@ -812,16 +783,16 @@ private: case ClassDef::Category: result+="ove kategorije"; break; case ClassDef::Exception: result+="ovog izuzetka"; break; } - result+=" je napravljena iz "; - if (single) result+=":"; else result+=":"; - return result; + result+=" je napravljena na osnovu "; + if (single) result+="datoteke "; else result+="sledećih datoteka:"; + return decode( result ); } /*! This is in the (quick) index as a link to the alphabetical compound * list. */ virtual QCString trAlphabeticalList() - { return "Abecedni spisak"; } + { return decode( "Abecedni spisak" ); } ////////////////////////////////////////////////////////////////////////// // new since 0.49-990901 @@ -829,34 +800,30 @@ private: /*! This is used as the heading text for the retval command. */ virtual QCString trReturnValues() - { return decode( "Vraćena vrednost" ); } + { return decode( "Karakteristične vrednosti funkcije" ); } /*! This is in the (quick) index as a link to the main page (index.html) */ virtual QCString trMainPage() - { return "Glavna strana"; } + { return decode( "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."; } + { return decode( "str." ); } ////////////////////////////////////////////////////////////////////////// // new since 0.49-991003 ////////////////////////////////////////////////////////////////////////// - virtual QCString trSources() - { - return "Izvorne datoteke"; - } virtual QCString trDefinedAtLineInSourceFile() - { - return "Definisano u redu @0 datoteke @1."; + { //! Izbacujemo rod + return decode( "Definicija je u redu @0 datoteke @1." ); } virtual QCString trDefinedInSourceFile() - { - return "Definisano u datoteci @0."; + { //! Izbacujemo rod + return decode( "Definicija je u datoteci @0." ); } ////////////////////////////////////////////////////////////////////////// @@ -865,7 +832,7 @@ private: virtual QCString trDeprecated() { - return "Zastarelo"; + return decode( "Zastarelo" ); } ////////////////////////////////////////////////////////////////////////// @@ -875,7 +842,7 @@ private: /*! this text is put before a collaboration diagram */ virtual QCString trCollaborationDiagram(const char *clName) { - return decode( (QCString)"Dijagram nasleđenih članova za "+clName+":" ); + return decode( (QCString)"Klasni dijagram za "+clName+":" ); } /*! this text is put before an include dependency graph */ virtual QCString trInclDepGraph(const char *fName) @@ -885,32 +852,32 @@ private: /*! header that is put before the list of constructor/destructors. */ virtual QCString trConstructorDocumentation() { - return "Dokumentacija konstruktora i destruktora"; + return decode( "Dokumentacija konstruktora i destruktora" ); } /*! Used in the file documentation to point to the corresponding sources. */ virtual QCString trGotoSourceCode() { - return "Izvorni kod."; + return decode( "Izvorni kod." ); } /*! Used in the file sources to point to the corresponding documentation. */ virtual QCString trGotoDocumentation() { - return "Dokumentacija."; + return decode( "Dokumentacija." ); } /*! Text for the \\pre command */ virtual QCString trPrecondition() { - return "Preduslovi"; + return decode( "Preduslovi" ); } /*! Text for the \\post command */ virtual QCString trPostcondition() { - return "Postuslovi"; + return decode( "Stanje po izvršenju" ); } /*! Text for the \\invariant command */ virtual QCString trInvariant() { - return "Invarijanta"; + return decode( "Invarijanta" ); } /*! Text shown before a multi-line variable/enum initialization */ virtual QCString trInitialValue() @@ -920,23 +887,23 @@ private: /*! Text used the source code in the file index */ virtual QCString trCode() { - return "kod"; + return decode( "programski kod" ); } virtual QCString trGraphicalHierarchy() { - return decode("Grafički prikaz stabla klasa"); + return decode( "Hijerarhija klasa u obliku grafa" ); } virtual QCString trGotoGraphicalHierarchy() { - return decode("Prikaži stablo klasa u grafičkom obliku"); + return decode( "Prikaz hijerarhije klasa u obliku grafa" ); } virtual QCString trGotoTextualHierarchy() { - return decode( "Prikaži stablo klasa u tekstualnom obliku" ); + return decode( "Prikaz hijerarhije klasa u obliku nazubljenog teksta" ); } virtual QCString trPageIndex() { - return "Indeks stranice"; + return decode( "Indeks stranice" ); } ////////////////////////////////////////////////////////////////////////// @@ -945,17 +912,17 @@ private: virtual QCString trNote() { - return "Primedba"; // ili Beleska ili Zapazanje. Primedba zvuci negativno + return decode( "Beleška" ); } virtual QCString trPublicTypes() { - return "Javni tipovi"; + return decode( "Javni tipovi" ); } virtual QCString trPublicAttribs() { if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) { - return decode( "Članovi" ); + return decode( "Polja" ); } else { @@ -998,12 +965,12 @@ private: /*! Used as a marker that is put before a \\todo item */ virtual QCString trTodo() { - return decode( "Neurađeno" ); + return decode( "Uraditi" ); } /*! Used as the header of the todo list */ virtual QCString trTodoList() { - return decode("Spisak neurađenog"); + return decode("Spisak stvari koje treba uraditi"); } ////////////////////////////////////////////////////////////////////////// @@ -1011,12 +978,12 @@ private: ////////////////////////////////////////////////////////////////////////// virtual QCString trReferencedBy() - { - return decode( "Korišćeno od" ); + { //! Izbegavanje roda. Uskladjivanje sa trReferences + return decode( "Korisnici: " ); } virtual QCString trRemarks() { - return decode( "Zapažanja" ); + return decode( "Napomene" ); } virtual QCString trAttention() { @@ -1024,12 +991,12 @@ private: } virtual QCString trInclByDepGraph() { - return decode("Ovaj graf pokazuje koja datoteka direktno " + return decode("Ovaj graf pokazuje koje datoteke direktno " "ili indirektno uključuju ovu datoteku: "); } virtual QCString trSince() { - return "Od"; + return decode( "Od" ); } ////////////////////////////////////////////////////////////////////////// @@ -1051,23 +1018,23 @@ private: "doxygen.<p>\n" "Na primer:\n" "\\code\n" - "/*! Nevidljiva klasa ( nemoe stati na graf zbog zadatih ogranienja ) */\n" + "/*! Klasa nevidljiva zbog trenutnih ograničenja */\n" "class Invisible { };\n\n" - "/*! Odseena klasa, neke osnovne klase su sakrivene */\n" + "/*! Klasa kojoj se ne vidi način izvođenja */\n" "class Truncated : public Invisible { };\n\n" - "/* Nedokumentovana klasa */\n" + "/* Klasa bez doxygen komentara */\n" "class Undocumented { };\n\n" - "/*! Javno nasleena klasa */\n" + "/*! Klasa izvedena iz osnovne klase javnim izvođenjem */\n" "class PublicBase : public Truncated { };\n\n" - "/*! Sablon klasa */\n" + "/*! Šablonska klasa */\n" "template<class T> class Templ { };\n\n" - "/*! Zatieno nasleena klasa */\n" + "/*! Klasa izvedena iz osnovne klase zaštićenim izvođenjem */\n" "class ProtectedBase { };\n\n" - "/*! Privatno nasleena klasa */\n" + "/*! Klasa izvedena iz osnovne klase privatnim izvođenjem */\n" "class PrivateBase { };\n\n" - "/*! Klasa koja je koriena od drugih klasa*/\n" + "/*! Klasa korišćena u nekoj/nekim od drugih klasa */\n" "class Used { };\n\n" - "/*! Nadklasa koja nasleuje/koristi ostale */\n" + "/*! Klasa izvedena iz više osnovnih klasa */\n" "class Inherited : public PublicBase,\n" " protected ProtectedBase,\n" " private PrivateBase,\n" @@ -1079,32 +1046,31 @@ private: "};\n" "\\endcode\n" "Ako je \\c MAX_DOT_GRAPH_HEIGHT tag u konfiguracionoj datoteci " - "postavljen na 200 gornje veze će izgledati:" + "postavljen na \\c 200 graf izvođenja će izgledati ovako:" "<p><center><img src=\"graph_legend."+Config_getEnum("DOT_IMAGE_FORMAT")+"\"></center>\n" + "Graf će biti odsečen ako ne stane unutar zadatih granica.\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>Puni sivi predstavlja strukturu ili klasu za koju je graf napravljen.\n" "<li>Sa crnom ivicom predstavlja dokumentovanu strukturu ili klasu.\n" - "<li>Sa sivom ivicom predstavlja nedokumentovanu strukturu ili klasu.\n" + "<li>Sa sivom ivicom predstavlja strukturu ili klasu bez doxygen komentara.\n" "<li>Sa crvenom ivicom predstavlja dokumentovanu strukturu ili klasu\n" - "za koju nije prikazan graf nasleđivanja/korišćenja. Graf je odsečen " - "ako ne stane unutar određenih granica." - "</ul>" + "za koju nisu prikazani svi relevantni grafovi.\n" + "</ul>" "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 parametra šablona.\n" + "<li>Tamnoplava strelica označava javno izvođenje.\n" + "<li>Tamnozelena strelica označava zaštićeno izvođenje.\n" + "<li>Tamnocrvena strelica označava privatno izvođenje.\n" + "<li>Ljubičasta isprekidana strelica označava da je klasa sadržana " + "ili korišćena u drugoj klasi. Strelica je označena imenom atributa " + "preko koga se pristupa klasi/strukturi na koju pokazuje.\n" + "<li>Žuta isprekidana strelica označava vezu između primerka šablona i" + " šablona klase od kojeg je primerak napravljen. " + "Strelica je označena stvarnim argumentima šablona.\n" "</ul>\n" ); - } /*! text for the link to the legend page */ virtual QCString trLegend() @@ -1119,12 +1085,12 @@ private: /*! Used as a marker that is put before a test item */ virtual QCString trTest() { - return "Test"; + return decode( "Test" ); } /*! Used as the header of the test list */ virtual QCString trTestList() { - return "Spisak testova"; + return decode( "Spisak testova" ); } ////////////////////////////////////////////////////////////////////////// @@ -1134,7 +1100,7 @@ private: /*! Used as a section header for KDE-2 IDL methods */ virtual QCString trDCOPMethods() { - return "DCOP metode"; + return decode( "DCOP metode" ); } ////////////////////////////////////////////////////////////////////////// @@ -1156,21 +1122,16 @@ private: // new since 1.2.4 ////////////////////////////////////////////////////////////////////////// - /*! Used for Java interfaces in the summary section of Java packages */ - virtual QCString trInterfaces() - { - return "Interfejsi"; // Radna okruzenja. Ali to je dve reci. - } /*! Used for Java classes in the summary section of Java packages */ virtual QCString trClasses() { if (Config_getBool("OPTIMIZE_OUTPUT_FOR_C")) { - return "Strukture"; + return decode( "Strukture i unije" ); } else { - return "Klase"; + return decode( "Klase" ); } } /*! Used as the title of a Java package */ @@ -1181,27 +1142,22 @@ private: /*! Title of the package index page */ virtual QCString trPackageList() { - return "Spisak paketa"; + return decode( "Spisak paketa" ); } /*! The description of the package index page */ virtual QCString trPackageListDescription() { - return "Paketi s kratkim opisom (ukoliko postoji):"; + return decode( "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"; + return decode( "Paketi" ); } /*! Text shown before a multi-line define */ virtual QCString trDefineValue() { - return "Vrednost:"; + return decode( "Vrednost:" ); } ////////////////////////////////////////////////////////////////////////// @@ -1276,7 +1232,7 @@ private: { QCString result( (first_capital ? "Klas" : "klas") ); result+= (singular ? "a" : "e"); - return result; + return decode( result ); } /*! This is used for translation of the word that will possibly @@ -1285,9 +1241,9 @@ private: */ virtual QCString trFile(bool first_capital, bool singular) { - QCString result((first_capital ? "Datotek" : "Datotek")); + QCString result((first_capital ? "Datotek" : "datotek")); result+= (singular ? "a" : "e"); - return result; + return decode( result ); } /*! This is used for translation of the word that will possibly @@ -1297,9 +1253,9 @@ private: virtual QCString trNamespace(bool first_capital, bool singular) { QCString result((first_capital ? "Prostor" : "prostor")); - result += (singular ? "" : "i"); + result += (singular ? "" : "i"); result += " imena"; - return result; + return decode( result ); } /*! This is used for translation of the word that will possibly @@ -1310,7 +1266,7 @@ private: { QCString result((first_capital ? "Grup" : "grup")); result+= (singular ? "a" : "e"); - return result; + return decode( result ); } /*! This is used for translation of the word that will possibly @@ -1321,7 +1277,7 @@ private: { QCString result((first_capital ? "Stran" : "stran")); result+= (singular ? "a" : "e"); - return result; + return decode( result ); } /*! This is used for translation of the word that will possibly @@ -1339,22 +1295,11 @@ private: * 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; + QCString result((first_capital ? "Globalni " : "globalni ")); + result+= (singular ? "podatak" : "podaci"); + return decode( result ); } ////////////////////////////////////////////////////////////////////////// @@ -1389,16 +1334,16 @@ private: * members that are implemented by this one. */ virtual QCString trImplementedFromList(int numEntries) - { - return decode( "Definiše "+trWriteList(numEntries)+"." ); + { //! "Definiše" je previše kratko, ispada sa de definišu same apstraktne klase + return decode( "Definiše apstraktnu funkciju deklarisanu u "+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 decode( "Definisano u " + trWriteList(numEntries) + "." ); + { //! Izbegavanje roda + return decode( "Definicija u " + trWriteList(numEntries) + "." ); } ////////////////////////////////////////////////////////////////////////// @@ -1422,8 +1367,9 @@ private: */ virtual QCString trDeprecatedList() { - return decode( "Spisak zastarelih funkcija članica" ); + return decode( "Spisak zastarelih stvari" ); } + ////////////////////////////////////////////////////////////////////////// // new since 1.2.18 ////////////////////////////////////////////////////////////////////////// @@ -1440,6 +1386,7 @@ private: { return decode( "Dokumentacija događaja" ); } + ////////////////////////////////////////////////////////////////////////// // new since 1.3 ////////////////////////////////////////////////////////////////////////// @@ -1448,7 +1395,7 @@ private: */ virtual QCString trPackageTypes() { - return decode( "Tipovi u Paketu" ); + return decode( "Tipovi u paketu" ); } /*! Used as a heading for a list of Java class functions with package * scope. @@ -1493,7 +1440,7 @@ private: /*! Put in front of the call graph for a function. */ virtual QCString trCallGraph() { - return decode( "Graf pozivanja funkcija:" ); + return decode( "Graf poziva iz ove funkcije:" ); } ////////////////////////////////////////////////////////////////////////// @@ -1527,22 +1474,17 @@ private: { if (numDocuments==0) { - return decode("Nema dokumenta koji odgovaraju vašem upitu"); + return decode("Nema dokumenata koji odgovaraju Vašem upitu."); } else if (numDocuments==1) - { // 10x 2 Ivana Miletic 4 gramatical consutation. - return decode("Nađen je <b>1</b> dokument koji odgovara vašem upitu."); - } - else if (numDocuments<5) - { // 10x 2 Ivana Miletic 4 gramatical consutation. - return decode("Nađena su <b>$num</b> dokumenta koji odgovaraju vašem upitu." - "Najbolji su prikazani prvi."); - } - else - { // 10x 2 Ivana Miletic 4 gramatical consutation. - return decode("Nađeno je <b>$num</b> dokumenata koji odgovaraju vašem upitu." + { return decode("Nađen je <b>1</b> dokument koji odgovara vašem upitu."); } + else if (numDocuments<5) + { return decode("Nađena su <b>$num</b> dokumenta koji odgovaraju vašem upitu." + "Najbolji su prikazani prvi."); } + else + { return decode("Nađeno je <b>$num</b> dokumenata koji odgovaraju vašem upitu." "Najbolji su prikazani prvi."); - } + } } /*! This string is put before the list of matched words, for each search * result. What follows is the list of words that matched the query. @@ -1571,7 +1513,7 @@ private: * hierarchy. */ virtual QCString trDirIndex() - { return decode( "Stablo direktorijuma" ); } + { return decode( "Hijerarhija direktorijuma" ); } /*! This is used as the name of the chapter containing the documentation * of the directories. @@ -1583,13 +1525,14 @@ private: * Quick links of a HTML page, to link to the directory hierarchy. */ virtual QCString trDirectories() - { return decode( "direktorijumi" ); } + { return decode( "Direktorijumi" ); } /*! This returns a sentences that introduces the directory hierarchy. * and the fact that it is sorted alphabetically per level */ virtual QCString trDirDescription() - { return decode( "Stablo direktorijuma slozeno približno po abecednom redu" ); + { return decode( "Hijerarhija direktorijuma uređena približno " + "po abecedi:" ); } /*! This returns the title of a directory page. The name of the @@ -1608,13 +1551,288 @@ private: return decode( result ); } - -}; +////////////////////////////////////////////////////////////////////////// +// new since 1.4.1 +////////////////////////////////////////////////////////////////////////// + + /*! This text is added to the documentation when the \\overload command + * is used for a overloaded function. + */ + virtual QCString trOverloadText() + { + return decode ( "Ovo je funkcija prekopljenog imena, razlikuje se " + "od gore navedene samo po argumentima koje prihvata." ); + } -// sh - - shashavo (,) -// dj - - djordje -// ch - , - chasha -// cc - - cciccifu -// zz - - zzaba +////////////////////////////////////////////////////////////////////////// +// new since 1.4.6 +////////////////////////////////////////////////////////////////////////// + + /*! This is used to introduce a caller (or called-by) graph */ + virtual QCString trCallerGraph() + { //! Možda je bolje "Graf pozivalaca ove funkcije" + return decode( "Graf funkcija koje pozivaju ovu funkciju:" ); + } + + /*! This is used in the documentation of a file/namespace before the list + * of documentation blocks for enumeration values + */ + virtual QCString trEnumerationValueDocumentation() + { return decode( "Dokumentacija enum vrednosti" ); } + +////////////////////////////////////////////////////////////////////////// +// new since 1.5.4 (mainly for Fortran) +////////////////////////////////////////////////////////////////////////// + + /*! header that is put before the list of member subprograms (Fortran). */ + virtual QCString trMemberFunctionDocumentationFortran() + { return "Dokumentacija funkcija i procedura"; } + + /*! This is put above each page as a link to the list of annotated data types (Fortran). */ + /*! @todo Koji je prevod za Compound u Fortran kontekstu */ + virtual QCString trCompoundListFortran() + { return "Složeni tipovi podataka"; } + + /*! This is put above each page as a link to all members of compounds (Fortran). */ + virtual QCString trCompoundMembersFortran() + { return "Polja u složenim tipovima podataka"; } + + /*! This is an introduction to the annotated compound list (Fortran). */ + virtual QCString trCompoundListDescriptionFortran() + { return "Spisak složenih tipova podataka sa kratkim opisima:"; } + + /*! This is an introduction to the page with all data types (Fortran). */ + virtual QCString trCompoundMembersDescriptionFortran(bool extractAll) + { + QCString result=" Spisak svih "; + if (!extractAll) + { + result+="dokumentovanih "; + } + result+="polja složenih tipova podataka"; + result+=" sa vezama ka "; + if (!extractAll) + { + result+="dokumentaciji strukture podataka za svakog člana"; + } + else + { + result+="složenim tipovima podataka kojima pripadaju:"; + } + return result; + } + + /*! This is used in LaTeX as the title of the chapter with the + * annotated compound index (Fortran). + */ + virtual QCString trCompoundIndexFortran() + { return "Sadržaj složenog tipa podataka"; } + + /*! This is used in LaTeX as the title of the chapter containing + * the documentation of all data types (Fortran). + */ + virtual QCString trTypeDocumentation() + { return "Dokumentacija tipova podataka"; } + + /*! This is used in the documentation of a file as a header before the + * list of (global) subprograms (Fortran). + */ + virtual QCString trSubprograms() + { return "Funkcije i procedure"; } + + /*! This is used in the documentation of a file/namespace before the list + * of documentation blocks for subprograms (Fortran) + */ + virtual QCString trSubprogramDocumentation() + { return "Dokumentacija funkcija i procedura"; } + + /*! This is used in the documentation of a file/namespace/group before + * the list of links to documented compounds (Fortran) + */ + virtual QCString trDataTypes() + { return "Složeni tipovi podataka"; } + + /*! used as the title of page containing all the index of all modules (Fortran). */ + virtual QCString trModulesList() + { return "Spisak modula"; } + + /*! used as an introduction to the modules list (Fortran) */ + virtual QCString trModulesListDescription(bool extractAll) + { + QCString result="Spisak svih "; + if (!extractAll) result+="dokumentovanih "; + result+="modula sa kratkim opisima:"; + return result; + } + + /*! used as the title of the HTML page of a module/type (Fortran) */ + virtual QCString trCompoundReferenceFortran(const char *clName, + ClassDef::CompoundType compType, + bool isTemplate) + { + QCString result=(QCString)clName; + switch(compType) + { + case ClassDef::Class: result+=" Modul"; break; + case ClassDef::Struct: result+=" Tip"; break; + case ClassDef::Union: result+=" Unija"; break; + case ClassDef::Interface: result+=" Interfejs"; break; + case ClassDef::Protocol: result+=" Protokol"; break; + case ClassDef::Category: result+=" Kategorija"; break; + case ClassDef::Exception: result+=" Izuzetak"; break; + } + result+=" - sažet pregled"; + if (isTemplate) result+=" šablona"; + return result; + } + /*! used as the title of the HTML page of a module (Fortran) */ + virtual QCString trModuleReference(const char *namespaceName) + { + QCString result=namespaceName; + result+=" - sažet pregled modula"; + return result; + } + + /*! This is put above each page as a link to all members of modules. (Fortran) */ + virtual QCString trModulesMembers() + { return "Članovi modula"; } + + /*! This is an introduction to the page with all modules members (Fortran) */ + virtual QCString trModulesMemberDescription(bool extractAll) + { + QCString result="Spisak svih "; + if (!extractAll) result+="dokumentovanih "; + result+="članova modula sa vezama ka "; + if (extractAll) + { + result+="dokumentaciji za svakog člana modula:"; + } + else + { + result+="modulima kojima pripadaju:"; + } + return result; + } + + /*! This is used in LaTeX as the title of the chapter with the + * index of all modules (Fortran). + */ + virtual QCString trModulesIndex() + { return "Spisak modula"; } + + /*! 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 trModule(bool first_capital, bool singular) + { + QCString result((first_capital ? "Modul" : "modul")); + if (!singular) result+="i"; + return result; + } + /*! This is put at the bottom of a module documentation page and is + * followed by a list of files that were used to generate the page. + */ + virtual QCString trGeneratedFromFilesFortran(ClassDef::CompoundType compType, + bool single) + { // here s is one of " Module", " Struct" or " Union" + // single is true implies a single file + QCString result=(QCString)"Dokumentacija za ovaj "; + switch(compType) + { + case ClassDef::Class: result+="modul"; break; + case ClassDef::Struct: result+="tip"; break; + case ClassDef::Union: result+="uniju"; break; + case ClassDef::Interface: result+="interfejs"; break; + case ClassDef::Protocol: result+="protokol"; break; + case ClassDef::Category: result+="kategoriju"; break; + case ClassDef::Exception: result+="izuzetak"; break; + } + result+=" napravljena je automatski od sledeć"; + if (single) result+="e datoteke:"; else result+="ih datoteka:"; + 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 trType(bool first_capital, bool singular) + { + QCString result((first_capital ? "Tip" : "tip")); + if (!singular) result+="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 trSubprogram(bool first_capital, bool singular) + { + QCString result((first_capital ? "Procedura" : "procedura")); + if (!singular) result = (first_capital ? "Procedure" : "procedure"); + return result; + } + + /*! C# Type Constraint list */ + virtual QCString trTypeConstraints() + { + return "Ograničenja tipova"; + } + +////////////////////////////////////////////////////////////////////////// +// following methods have no corresponding entry in translator_en.h +////////////////////////////////////////////////////////////////////////// + +// /*! This is put above each page as a link to the list of all verbatim headers */ +// virtual QCString trHeaderFiles() +// { return decode( "Zaglavlja" ); } +// +// /*! This is an introduction to the page with the list of all header files. */ +// virtual QCString trHeaderFilesDescription() +// { return decode( "Zaglavlja koje izgraduju API:" ); } +// +// /*! This sentences is used in the annotated class/file lists if no brief +// * description is given. +// */ +// virtual QCString trNoDescriptionAvailable() +// { return decode( "Opis nije dostupan" ); } +// +// /*! this text is generated when the \\reimp command is used. */ +// virtual QCString trReimplementedForInternalReasons() +// { return decode("Preuradeno zbog unutrasnjih razloga; Nema uticaja na API." ); } +// +// /*! this text is generated when the \\bug command is used. */ +// virtual QCString trBugsAndLimitations() +// { return decode( "Greske i ogranicenja" ); } +// +// virtual QCString trSources() +// { +// return decode("Izvorne datoteke" ); +// } +// +// /*! Used for Java interfaces in the summary section of Java packages */ +// virtual QCString trInterfaces() +// { +// return decode( "Interfejsi" ); //!< Radna okruzenja. Ali to je dve reci. +// } +// +// /*! Used as a chapter title for Latex & RTF output */ +// virtual QCString trPackageDocumentation() +// { +// return decode( "Dokumentacija paketa" ); +// } +// +// /*! 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 decode( result ); +// } + +}; #endif diff --git a/src/util.cpp b/src/util.cpp index 113105e..976e423 100644 --- a/src/util.cpp +++ b/src/util.cpp @@ -488,7 +488,8 @@ int isAccessibleFromWithExpScope(Definition *scope,FileDef *fileScope,Definition */ ClassDef *newResolveTypedef(FileDef *fileScope,MemberDef *md, MemberDef **pMemType,QCString *pTemplSpec, - QCString *pResolvedType) + QCString *pResolvedType, + ArgumentList *actTemplParams) { //printf("newResolveTypedef(md=%p,cachedVal=%p)\n",md,md->getCachedTypedefVal()); bool isCached = md->isTypedefValCached(); // value already cached @@ -509,7 +510,13 @@ ClassDef *newResolveTypedef(FileDef *fileScope,MemberDef *md, g_resolvedTypedefs.insert(qname,md); // put on the trace list + ClassDef *typeClass = md->getClassDef(); QCString type = md->typeString(); // get the "value" of the typedef + if (typeClass && typeClass->isTemplate() && actTemplParams->count()>0) + { + type = substituteTemplateArgumentsInString(type, + typeClass->templateArguments(),actTemplParams); + } QCString typedefValue = type; int tl=type.length(); int ip=tl-1; // remove * and & at the end @@ -947,7 +954,7 @@ int isAccessibleFromWithExpScope(Definition *scope,FileDef *fileScope, if (newScope) // explicitScope is inside scope => newScope is the result { Definition *itemScope = item->getOuterScope(); - //printf(" scope traversal successful %s<->%s!\n",item->getOuterScope()->name().data(),newScope->name().data()); + //printf(" scope traversal successful %s<->%s!\n",itemScope->name().data(),newScope->name().data()); //if (newScope && newScope->definitionType()==Definition::TypeClass) //{ // ClassDef *cd = (ClassDef *)newScope; @@ -975,7 +982,7 @@ int isAccessibleFromWithExpScope(Definition *scope,FileDef *fileScope, //printf("scope(%s) is base class of newScope(%s)\n", // scope->name().data(),newScope->name().data()); } - else + else { int i=-1; if (newScope->definitionType()==Definition::TypeNamespace) @@ -1027,13 +1034,13 @@ int isAccessibleFromWithExpScope(Definition *scope,FileDef *fileScope, i = isAccessibleFromWithExpScope(scope->getOuterScope(),fileScope, item,explicitScopePart); } - //printf("> result=%d\n",i); + //printf(" | result=%d\n",i); result = (i==-1) ? -1 : i+2; } } else // failed to resolve explicitScope { - //printf("failed to resolve: scope=%s\n",scope->name().data()); + //printf(" failed to resolve: scope=%s\n",scope->name().data()); if (scope->definitionType()==Definition::TypeNamespace) { NamespaceDef *nscope = (NamespaceDef*)scope; @@ -1083,6 +1090,7 @@ static void getResolvedSymbol(Definition *scope, FileDef *fileScope, Definition *d, const QCString &explicitScopePart, + ArgumentList *actTemplParams, int &minDistance, ClassDef *&bestMatch, MemberDef *&bestTypedef, @@ -1103,7 +1111,7 @@ static void getResolvedSymbol(Definition *scope, g_visitedNamespaces.clear(); // test accessibility of definition within scope. int distance = isAccessibleFromWithExpScope(scope,fileScope,d,explicitScopePart); - //printf(" distance %s (%p) is %d\n",d->name().data(),d,distance); + //printf(" %s; distance %s (%p) is %d\n",scope->name().data(),d->name().data(),d,distance); if (distance!=-1) // definition is accessible { // see if we are dealing with a class or a typedef @@ -1173,7 +1181,7 @@ static void getResolvedSymbol(Definition *scope, QCString type; minDistance=distance; MemberDef *enumType = 0; - ClassDef *cd = newResolveTypedef(fileScope,md,&enumType,&spec,&type); + ClassDef *cd = newResolveTypedef(fileScope,md,&enumType,&spec,&type,actTemplParams); if (cd) // type resolves to a class { //printf(" bestTypeDef=%p spec=%s type=%s\n",md,spec.data(),type.data()); @@ -1248,8 +1256,17 @@ ClassDef *getResolvedClassRec(Definition *scope, ) { //printf("[getResolvedClassRec(%s,%s)\n",scope?scope->name().data():"<global>",n); - QCString name=n; + QCString name; QCString explicitScopePart; + QCString strippedTemplateParams; + name=stripTemplateSpecifiersFromScope + (removeRedundantWhiteSpace(n),TRUE, + &strippedTemplateParams); + ArgumentList actTemplParams; + if (!strippedTemplateParams.isEmpty()) // template part that was stripped + { + stringToArgumentList(strippedTemplateParams,&actTemplParams); + } int qualifierIndex = computeQualifiedIndex(name); //printf("name=%s qualifierIndex=%d\n",name.data(),qualifierIndex); @@ -1354,7 +1371,7 @@ ClassDef *getResolvedClassRec(Definition *scope, int count=0; for (dli.toFirst();(d=dli.current());++dli,++count) // foreach definition { - getResolvedSymbol(scope,fileScope,d,explicitScopePart, + getResolvedSymbol(scope,fileScope,d,explicitScopePart,&actTemplParams, minDistance,bestMatch,bestTypedef,bestTemplSpec, bestResolvedType); } @@ -1363,7 +1380,7 @@ ClassDef *getResolvedClassRec(Definition *scope, { //printf(" name is unique\n"); Definition *d = (Definition *)di; - getResolvedSymbol(scope,fileScope,d,explicitScopePart, + getResolvedSymbol(scope,fileScope,d,explicitScopePart,&actTemplParams, minDistance,bestMatch,bestTypedef,bestTemplSpec, bestResolvedType); } @@ -3127,9 +3144,10 @@ static QCString getCanonicalTypeForIdentifier( { result = mType->qualifiedName(); } - else + else // fallback { resolvedType = resolveTypeDef(d,word); + //printf("typedef [%s]->[%s]\n",word.data(),resolvedType.data()); if (resolvedType.isEmpty()) // not known as a typedef either { result = word; @@ -5476,6 +5494,7 @@ QCString stripTemplateSpecifiersFromScope(const QCString &fullName, } else if (pLastScopeStripped) { + //printf(" last stripped scope '%s'\n",fullName.mid(i,e-i).data()); *pLastScopeStripped=fullName.mid(i,e-i); } p=e; @@ -330,7 +330,8 @@ bool checkIfTypedef(Definition *scope,FileDef *fileScope,const char *n); ClassDef *newResolveTypedef(FileDef *fileScope,MemberDef *md, MemberDef **pMemType=0,QCString *pTemplSpec=0, - QCString *pResolvedType=0); + QCString *pResolvedType=0, + ArgumentList *actTemplParams=0); QCString parseCommentAsText(const QString &doc,const QCString &fileName,int lineNr); diff --git a/src/vhdlscanner.l b/src/vhdlscanner.l index e11d0b4..0eeb426 100644 --- a/src/vhdlscanner.l +++ b/src/vhdlscanner.l @@ -234,8 +234,8 @@ void addSignals(const char* str,int line, Entry *e,const char *comment=0) VhdlDocGen::getSigName(ql,str,bufio); int count = ql.count(); - QCString brief = current->brief; - QCString doc = current->doc; + QCString brief = current->brief; + QCString doc = current->doc; Entry *tmpEntry = current; current = new Entry; initEntry(current); @@ -257,55 +257,67 @@ void addSignals(const char* str,int line, Entry *e,const char *comment=0) current->brief.resize(0); current->doc.resize(0); - for (int k=1;k<count;k++) + if (genPort!=3) // not a unit { - //printf("adding '%s' '%s'\n",ql.at(0)->data(),ql.at(k)->data()); - Entry *pTemp=new Entry; - initEntry(pTemp); - pTemp->startLine = line; - pTemp->bodyLine = line; - pTemp->name = ql.at(k)->data(); - pTemp->section = Entry::VARIABLE_SEC; - pTemp->brief = brief; - pTemp->doc = doc; - QCString stSpec = ql.at(0)->data(); - if (genPort==1) - { - pTemp->spec = VhdlDocGen::PORT; - stSpec.stripPrefix(bufio.data()); - stSpec=stSpec.stripWhiteSpace(); - pTemp->args = stSpec; - pTemp->type = bufio; - } - else if (genPort==2) // found record - { - pTemp->spec = VhdlDocGen::RECORD; - pTemp->type = stSpec; - pTemp->name.prepend(VhdlDocGen::getRecordNumber()); - } - else + for (int k=1;k<count;k++) { - pTemp->spec = VhdlDocGen::GENERIC; - pTemp->type = stSpec; - } - addSubEntry(e,pTemp); - }// for - - /* found a unit */ - if (genPort==3) + //printf("adding '%s' '%s'\n",ql.at(0)->data(),ql.at(k)->data()); + Entry *pTemp=new Entry; + initEntry(pTemp); + pTemp->startLine = line; + pTemp->bodyLine = line; + pTemp->name = ql.at(k)->data(); + pTemp->section = Entry::VARIABLE_SEC; + pTemp->brief = brief; + pTemp->doc = doc; + pTemp->mGrpId = current->mGrpId; // copy member group id + QCString stSpec = ql.at(0)->data(); + if (genPort==1) // found port + { + pTemp->spec = VhdlDocGen::PORT; + stSpec.stripPrefix(bufio.data()); + stSpec=stSpec.stripWhiteSpace(); + pTemp->args = stSpec; + pTemp->type = bufio; + addSubEntry(e,pTemp); + } + else if (genPort==2) // found record + { + pTemp->spec = VhdlDocGen::RECORD; + pTemp->type = stSpec; + pTemp->name.prepend(VhdlDocGen::getRecordNumber()); + delete current; + current = new Entry(*pTemp); // make a deep copy of pTemp + newEntry(); // add it to lastCompound and make a new current + delete pTemp; + } + else + { + pTemp->spec = VhdlDocGen::GENERIC; + pTemp->type = stSpec; + addSubEntry(e,pTemp); + } + }// for + } + else // found a unit { Entry *pTemp=new Entry; initEntry(pTemp); QCString tt(str); QStringList ql=QStringList::split("=",tt,FALSE); - pTemp->spec=VhdlDocGen::UNITS; - pTemp->section=Entry::VARIABLE_SEC; - pTemp->startLine=line; - pTemp->bodyLine=line; - pTemp->type=(QCString)ql[1]; - pTemp->name=(QCString)ql[0].stripWhiteSpace(); + pTemp->spec = VhdlDocGen::UNITS; + pTemp->section = Entry::VARIABLE_SEC; + pTemp->startLine = line; + pTemp->bodyLine = line; + pTemp->brief = brief; // adds brief description to the unit member + pTemp->doc = doc; // adds doc to the unit member + pTemp->type = ql[1]; + pTemp->name = ql[0].stripWhiteSpace(); pTemp->name.prepend(VhdlDocGen::getRecordNumber()); - addSubEntry(e,pTemp); + delete current; + current = new Entry(*pTemp); // make a deep copy + newEntry(); // add it to lastCompound + delete pTemp; } } @@ -561,8 +573,11 @@ ENDFUNC {B}*"end"{BR}+"function"{BR}+{FUNCNAME}{BR}*[;] FUNCIMPURE "impure"|"pure" FUNCPROC ^{B}*{FUNCIMPURE}*{BR}*("function"|"procedure"){B}* ARCHITECTURE ("architecture"){BR}+{NAME}{BR}*("of") -POST "postponed" -PROCESS ({BR}*{FUNCNAME}{B}*[:]{BR}*{POST}{BR}("process"){BR}*{PROTO})|("process"){BR}*("("){BR}*{PROTO}|[^a-zA-Z]("process"){CR}|[^a-zA-Z]("process"){BR}+("is") + /* Removed due to bug 538239 + POST "postponed" + PROCESS ({BR}*{FUNCNAME}{B}*[:]{BR}*({POST}{BR}+)?("process"){BR}*{PROTO})|("process"){BR}*("("){BR}*{PROTO}|[^a-zA-Z]("process"){CR}|[^a-zA-Z]("process"){BR}+("is") + */ +PROCESS ({B}*{FUNCNAME}{B}*:{BR}*)?({B}*("postponed"){BR}+)?{B}*("process"){BR}*{PROTO} ENDPROCESS ("end"){BR}*("process") LIBUSE ^{B}*("use"|"library"){BR}+ @@ -614,6 +629,7 @@ ALLID [^;()\t ] //addSubEntry(current,pEntry); current->startLine=yyLineNr; current->bodyLine=yyLineNr; + newEntry(); // adds the unit to the lastCompound genPort=3; BEGIN(ParseRecord); } @@ -915,9 +931,7 @@ ALLID [^;()\t ] current->section=Entry::VARIABLE_SEC; current->spec=VhdlDocGen::RECORD; addText(vhdlscanYYtext,vhdlscanYYleng); - addSubEntry(current_root,current); - current = new Entry; - initEntry(current); + newEntry(); // adds the record to the last compound BEGIN(ParseRecord); } @@ -932,10 +946,18 @@ ALLID [^;()\t ] BEGIN(Start); } -<ParseRecord>[a-z_][^\n;]* { // parse record body +<ParseRecord>[a-z_A-Z0-9][^\n;]*";"({B}*{COMMENT})* { // parse record body lineCount(); + QCString comment; QCString zz(vhdlscanYYtext); - addSignals(zz.data(),yyLineNr,current); + if (zz.contains("--!")) + { + QStringList ql=QStringList::split("--!",zz,FALSE); + comment = ql[1]; + zz = ql[0]; + } + initEntry(current); + addSignals(zz,yyLineNr,current,comment); addText(vhdlscanYYtext,vhdlscanYYleng); BEGIN(ParseRecord); } @@ -1094,10 +1116,11 @@ ALLID [^;()\t ] current->section=Entry::VARIABLE_SEC; current->type+=qcs.data(); - if ((current->spec==VhdlDocGen::SIGNAL || + if ((current->spec==VhdlDocGen::SIGNAL || current->spec==VhdlDocGen::CONSTANT || - current->spec==VhdlDocGen::TYPE || - current->spec==VhdlDocGen::SUBTYPE + current->spec==VhdlDocGen::TYPE || + current->spec==VhdlDocGen::SUBTYPE || + current->spec==VhdlDocGen::SHAREDVARIABLE ) && qcs.stripPrefix(",")) { @@ -1105,7 +1128,8 @@ ALLID [^;()\t ] ql.setAutoDelete(TRUE); QCString buffer; if (current->spec==VhdlDocGen::SUBTYPE || - current->spec==VhdlDocGen::TYPE) + current->spec==VhdlDocGen::TYPE + ) { VhdlDocGen::getSigTypeName(ql,qcs.data(),buffer); } @@ -1316,7 +1340,6 @@ ALLID [^;()\t ] { //printf("no ; or --: pos=%d semi=%d\n",pos,semi); } - int diff=openCount-closeCount; if (diff<0) { |