diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/classdef.cpp | 1 | ||||
-rw-r--r-- | src/config.l | 4 | ||||
-rw-r--r-- | src/dirdef.cpp | 27 | ||||
-rw-r--r-- | src/docparser.cpp | 6 | ||||
-rw-r--r-- | src/docparser.h | 2 | ||||
-rw-r--r-- | src/doctokenizer.l | 5 | ||||
-rw-r--r-- | src/dot.cpp | 14 | ||||
-rw-r--r-- | src/doxygen.cpp | 2 | ||||
-rw-r--r-- | src/ftvhelp.cpp | 2 | ||||
-rw-r--r-- | src/latexgen.cpp | 4 | ||||
-rw-r--r-- | src/message.cpp | 26 | ||||
-rw-r--r-- | src/pre.l | 100 | ||||
-rw-r--r-- | src/pycode.l | 4 | ||||
-rw-r--r-- | src/pyscanner.l | 159 | ||||
-rw-r--r-- | src/scanner.l | 32 | ||||
-rw-r--r-- | src/searchindex.cpp | 5 | ||||
-rw-r--r-- | src/translator_si.h | 384 | ||||
-rw-r--r-- | src/util.cpp | 19 | ||||
-rw-r--r-- | src/util.h | 2 |
19 files changed, 603 insertions, 195 deletions
diff --git a/src/classdef.cpp b/src/classdef.cpp index 7c27ebf..214da47 100644 --- a/src/classdef.cpp +++ b/src/classdef.cpp @@ -93,6 +93,7 @@ ClassDef::ClassDef( m_isAbstract = FALSE; m_isStatic = FALSE; m_isObjC = FALSE; + m_isTemplArg = FALSE; m_membersMerged = FALSE; m_categoryOf = 0; QCString ns; diff --git a/src/config.l b/src/config.l index bc09280..d4e64e6 100644 --- a/src/config.l +++ b/src/config.l @@ -1115,6 +1115,7 @@ void Config::check() filePatternList.append("*.m"); filePatternList.append("*.mm"); filePatternList.append("*.dox"); + filePatternList.append("*.py"); #if !defined(_WIN32) // unix => case sensitive match => also include useful uppercase versions filePatternList.append("*.C"); @@ -1130,6 +1131,7 @@ void Config::check() filePatternList.append("*.PHP3"); filePatternList.append("*.M"); filePatternList.append("*.MM"); + filePatternList.append("*.PY"); #endif } @@ -1821,7 +1823,7 @@ void Config::create() "and *.h) to filter out the source-files in the directories. If left \n" "blank the following patterns are tested: \n" "*.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx \n" - "*.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm\n" + "*.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py\n" ); cb = addBool( "RECURSIVE", diff --git a/src/dirdef.cpp b/src/dirdef.cpp index 2ca264f..0e9a898 100644 --- a/src/dirdef.cpp +++ b/src/dirdef.cpp @@ -66,10 +66,33 @@ void DirDef::addFile(FileDef *fd) fd->setDirDef(this); } +static QCString escapeDirName(const QCString &anchor) +{ + QCString result; + int l = anchor.length(),i; + for (i=0;i<l;i++) + { + char c = anchor.at(i); + if ((c>='a' && c<='z') || (c>='A' && c<='Z') || (c>='0' && c<='9')) + { + result+=c; + } + else + { + static char hexStr[]="0123456789ABCDEF"; + char escChar[]={ '_', 0, 0, 0 }; + escChar[1]=hexStr[c>>4]; + escChar[2]=hexStr[c&0xf]; + result+=escChar; + } + } + return result; +} + QCString DirDef::getOutputFileBase() const { - //return "dir_"+convertNameToFile(name()); - return QCString().sprintf("dir_%06d",m_dirCount); + return "dir_"+escapeDirName(name()); + //return QCString().sprintf("dir_%06d",m_dirCount); } void DirDef::writeDetailedDocumentation(OutputList &ol) diff --git a/src/docparser.cpp b/src/docparser.cpp index a88ca05..02fb086 100644 --- a/src/docparser.cpp +++ b/src/docparser.cpp @@ -5736,3 +5736,9 @@ void initDocParser() Doxygen::searchIndex = 0; } } + +void finializeDocParser() +{ + delete Doxygen::searchIndex; +} + diff --git a/src/docparser.h b/src/docparser.h index 8befd6a..0c74d5d 100644 --- a/src/docparser.h +++ b/src/docparser.h @@ -38,6 +38,8 @@ class SectionDict; /*! Initialize the documentation parser */ void initDocParser(); +/*! Cleanup the documentation parser */ +void finializeDocParser(); /*! Main entry point for the documentation parser. * @param fileName File in which the documentation block is found (or the diff --git a/src/doctokenizer.l b/src/doctokenizer.l index 34f82a2..86889dc 100644 --- a/src/doctokenizer.l +++ b/src/doctokenizer.l @@ -522,6 +522,11 @@ REFWORD ("#"|"::")?({ID}("."|"#"|"::"|"-"))*({ID}(":")?){FUNCARG}? */ goto find_rule; } +<St_Para,St_Text>"operator"/{BLANK}*"<"[a-zA-Z_0-9]+">" { // Special case: word "operator" followed by a HTML command + // avoid interpretation as "operator <" + g_token->name = yytext; + return TK_WORD; + } /*******************************************************/ diff --git a/src/dot.cpp b/src/dot.cpp index c501a39..a304788 100644 --- a/src/dot.cpp +++ b/src/dot.cpp @@ -199,7 +199,7 @@ static bool convertMapFile(QTextStream &t,const char *mapName, return TRUE; } -static QArray<int> * s_newNumber = new QArray<int>(); +static QArray<int> s_newNumber; static int s_max_newNumber=0; inline int reNumberNode(int number, bool doReNumbering) @@ -210,7 +210,7 @@ inline int reNumberNode(int number, bool doReNumbering) } else { - int s = s_newNumber->size(); + int s = s_newNumber.size(); if (number>=s) { int ns=0; @@ -219,17 +219,17 @@ inline int reNumberNode(int number, bool doReNumbering) { ns = number * 3 / 2 + 5; } - s_newNumber->resize(ns); + s_newNumber.resize(ns); for (int i=s;i<ns;i++) // clear new part of the array { - s_newNumber->at(i)=0; + s_newNumber.at(i)=0; } } - int i = s_newNumber->at(number); + int i = s_newNumber.at(number); if (i == 0) // not yet mapped { i = ++s_max_newNumber; // start from 1 - s_newNumber->at(number) = i; + s_newNumber.at(number) = i; } return i; } @@ -238,7 +238,7 @@ inline int reNumberNode(int number, bool doReNumbering) static void resetReNumbering() { s_max_newNumber=0; - s_newNumber->resize(s_max_newNumber); + s_newNumber.resize(s_max_newNumber); } static bool readBoundingBoxDot(const char *fileName,int *width,int *height) diff --git a/src/doxygen.cpp b/src/doxygen.cpp index 1f064bd..c92aa51 100644 --- a/src/doxygen.cpp +++ b/src/doxygen.cpp @@ -3306,6 +3306,7 @@ static void findUsedClassesForClass(Entry *root, usedCd = new ClassDef( masterCd->getDefFileName(),masterCd->getDefLine(), usedName,ClassDef::Class); + //printf("making %s a template argument!!!\n",usedCd->name().data()); usedCd->makeTemplateArgument(); Doxygen::hiddenClasses.append(usedName,usedCd); } @@ -8932,5 +8933,6 @@ void generateOutput() ); } cleanUpDoxygen(); + finializeDocParser(); } diff --git a/src/ftvhelp.cpp b/src/ftvhelp.cpp index 49c9c20..851108e 100644 --- a/src/ftvhelp.cpp +++ b/src/ftvhelp.cpp @@ -369,6 +369,8 @@ void FTVHelp::initialize() void FTVHelp::finalize() { generateTreeView(); + delete m_theInstance; + m_theInstance=0; } /*! Increase the level of the contents hierarchy. diff --git a/src/latexgen.cpp b/src/latexgen.cpp index 7d5b79a..396ebbe 100644 --- a/src/latexgen.cpp +++ b/src/latexgen.cpp @@ -133,7 +133,7 @@ void LatexGenerator::init() QTextStream t(&file); if (!Config_getBool("USE_PDFLATEX")) // use plain old latex { - t << "all clean: refman.dvi" << endl + t << "all: clean refman.dvi" << endl << endl << "ps: refman.ps" << endl << endl @@ -182,7 +182,7 @@ void LatexGenerator::init() } else // use pdflatex for higher quality output { - t << "all clean: refman.pdf" << endl << endl; + t << "all: clean refman.pdf" << endl << endl; t << "refman.pdf: refman.tex" << endl; t << "\tpdflatex refman.tex" << endl; t << "\tmakeindex refman.idx" << endl; diff --git a/src/message.cpp b/src/message.cpp index a946877..1ff261c 100644 --- a/src/message.cpp +++ b/src/message.cpp @@ -135,30 +135,22 @@ static void do_warn(const char *tag, const char *file, int line, const char *fmt substitute( substitute( substitute( - substitute( - outputFormat, - "$file",fileSubst + substitute( + substitute( + outputFormat, + "$file",fileSubst + ), + "$text",textSubst ), - "$text",textSubst + "$line",lineSubst ), - "$line",lineSubst + "$version",versionSubst ), - "$version",versionSubst + "%","%%" )+'\n'; // print resulting message fprintf(warnFile,msgText); -// switch(warnFormatOrder) -// { -// case 1: fprintf(warnFile,outputFormat,file,line,text); break; -// case 2: fprintf(warnFile,outputFormat,text,line,file); break; -// case 3: fprintf(warnFile,outputFormat,line,text,file); break; -// case 4: fprintf(warnFile,outputFormat,file,text,line); break; -// case 5: fprintf(warnFile,outputFormat,text,file,line); break; -// case 6: fprintf(warnFile,outputFormat,line,file,text); break; -// default: -// printf("Error: warning format has not been initialized!\n"); -// } } void warn(const char *file,int line,const char *fmt, ...) @@ -891,35 +891,65 @@ QCString removeMarkers(const char *s) { while ((c=*p)) { - if (c=='@') // replace @@ with @ + switch(c) { - if (*(p+1)=='@') - { - result+=c; - } - p+=2; - } - else if (c=='/') // skip C comments - { - result+=c; - char pc=c; - c=*++p; - if (c=='*') // start of C comment - { - while (*p && !(pc=='*' && c=='/')) // search end of comment + case '@': // replace @@ with @ + { + if (*(p+1)=='@') + { + result+=c; + } + p+=2; + } + break; + case '/': // skip C comments { result+=c; - pc=c; + char pc=c; c=*++p; + if (c=='*') // start of C comment + { + while (*p && !(pc=='*' && c=='/')) // search end of comment + { + result+=c; + pc=c; + c=*++p; + } + result+=c; + p++; + } } - result+=c; - p++; - } - } - else - { - result+=c; - p++; + break; + case '"': // skip string literals + { + result+=c; + char pc=c; + c=*++p; + while (*p && (c!='"' || pc=='\\')) // no end quote + { + result+=c; + c=*++p; + } + } + break; + case '\'': // skip char literals + { + result+=c; + char pc=c; + c=*++p; + while (*p && (c!='\'' || pc=='\\')) // no end quote + { + result+=c; + c=*++p; + } + } + break; + default: + { + result+=c; + p++; + } + break; } } } @@ -1807,12 +1837,19 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'")) outputChar('/');outputChar('*'); //g_commentCount++; } -<SkipCComment>[\\@][\\@]("verbatim"|"latexonly"|"htmlonly"|"xmlonly"|"rtfonly"|"manonly"|"dot"|"code"){BN}+ { +<SkipCComment>[\\@][\\@]("verbatim"|"latexonly"|"htmlonly"|"xmlonly"|"rtfonly"|"manonly"|"dot"|"code"|"f{"|"f$"|"f["){BN}+ { outputArray(yytext,yyleng); } <SkipCComment>[\\@]("verbatim"|"latexonly"|"htmlonly"|"xmlonly"|"rtfonly"|"manonly"|"dot"|"code"){BN}+ { outputArray(yytext,yyleng); - g_blockName=QCString(&yytext[1]).stripWhiteSpace(); + if (yytext[1]=='f') + { + g_blockName="f"; + } + else + { + g_blockName=QCString(&yytext[1]).stripWhiteSpace(); + } BEGIN(SkipVerbatim); } <SkipCComment,SkipCPPComment>[\\@]"cond"[ \t]+ { // conditional section @@ -1835,13 +1872,20 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'")) outputArray(yytext,yyleng); endCondSection(); } -<SkipVerbatim>[\\@]("endverbatim"|"endlatexonly"|"endhtmlonly"|"endxmlonly"|"endrtfonly"|"endmanonly"|"enddot"|"endcode") { /* end of verbatim block */ +<SkipVerbatim>[\\@]("endverbatim"|"endlatexonly"|"endhtmlonly"|"endxmlonly"|"endrtfonly"|"endmanonly"|"enddot"|"endcode"|"f$"|"f]"|"f}") { /* end of verbatim block */ outputArray(yytext,yyleng); - if (&yytext[4]==g_blockName) + if (yytext[1]=='f' && g_blockName=="f") + { + BEGIN(SkipCComment); + } + else if (&yytext[4]==g_blockName) { BEGIN(SkipCComment); } } +<SkipVerbatim>"*/"|"/*" { + outputArray(yytext,yyleng); + } <SkipCComment,SkipVerbatim>[^*\\@\x06\n\/]+ { outputArray(yytext,yyleng); } diff --git a/src/pycode.l b/src/pycode.l index 21179ab..5ab3090 100644 --- a/src/pycode.l +++ b/src/pycode.l @@ -304,9 +304,10 @@ static ClassDef *stripClassName(const char *s) QCString type = s; QCString className; QCString templSpec; - while (extractClassNameFromType(type,pos,className,templSpec)) + while (extractClassNameFromType(type,pos,className,templSpec)!=-1) { QCString clName=className+templSpec; + ClassDef *cd=0; if (!g_classScope.isEmpty()) { @@ -316,7 +317,6 @@ static ClassDef *stripClassName(const char *s) { cd=getResolvedClass(g_currentDefinition,g_sourceFileDef,clName); } - //printf("stripClass trying `%s' = %p\n",clName.data(),cd); if (cd) { return cd; diff --git a/src/pyscanner.l b/src/pyscanner.l index 8d34cc4..0bcab03 100644 --- a/src/pyscanner.l +++ b/src/pyscanner.l @@ -86,7 +86,7 @@ static bool docBlockSpecial; static bool g_doubleQuote; static bool g_specialBlock; -static bool g_expectModuleDocs; +//static bool g_expectModuleDocs; static int g_stringContext; static QCString * g_copyString; static int g_indent = 0; @@ -99,10 +99,12 @@ static char g_atomStart; static char g_atomEnd; static int g_atomCount; -static bool g_insideConstructor; +//static bool g_insideConstructor; static QCString g_moduleScope; +static QCString g_packageName; +static bool g_hideClassDocs; //----------------------------------------------------------------------------- @@ -312,7 +314,7 @@ static void endOfDef() bodyEntry->endBodyLine = yyLineNr; bodyEntry = 0; newEntry(); - g_insideConstructor = FALSE; + //g_insideConstructor = FALSE; } static inline void addToString(const char *s) @@ -453,6 +455,11 @@ STARTDOCSYMS ^{B}"##"/[^#] %x DoubleQuoteString %x TripleString + /* import */ +%x FromMod +%x FromModItem +%x Import + %% /* ------------ Function recognition rules -------------- */ @@ -462,7 +469,7 @@ STARTDOCSYMS ^{B}"##"/[^#] ^{B}"def"{BB} | "def"{BB} { // start of a function/method definition g_indent=computeIndent(yytext); - g_expectModuleDocs = FALSE; + //g_expectModuleDocs = FALSE; current->fileName = yyFileName; current->startLine = yyLineNr; current->bodyLine = yyLineNr; @@ -482,7 +489,7 @@ STARTDOCSYMS ^{B}"##"/[^#] ^{B}"class"{BB} | "class"{BB} { // start of a class definition g_indent=computeIndent(yytext); - g_expectModuleDocs = FALSE; + //g_expectModuleDocs = FALSE; current->section = Entry::CLASS_SEC; current->argList->clear(); current->type += "class" ; @@ -491,7 +498,15 @@ STARTDOCSYMS ^{B}"##"/[^#] BEGIN( ClassDec ) ; } + ^{B}"from"{BB} | + "from"{BB} { // start of an from import + BEGIN( FromMod ); + } + ^{B}"import"{BB} | + "import"{BB} { // start of an import statement + BEGIN( Import ); + } ^{B}{IDENTIFIER}/{B}"="[^=] { // variable g_indent=computeIndent(yytext); current->section = Entry::VARIABLE_SEC; @@ -545,6 +560,83 @@ STARTDOCSYMS ^{B}"##"/[^#] } } +<FromMod>{ + {IDENTIFIER}({B}"."{B}{IDENTIFIER})* { // from package import + g_packageName=yytext; + } + "import"{B} { + BEGIN(FromModItem); + } + \n { + yyLineNr++; + BEGIN(Search); + } + {B} { + } + . { + unput(*yytext); + BEGIN(Search); + } +} + +<FromModItem>{ + "*" { // import all + QCString item=g_packageName+"."+yytext; + current->name=removeRedundantWhiteSpace(substitute(item,".","::")); + current->fileName = yyFileName; + //printf("Adding using directive: found:%s:%d name=%s\n",yyFileName.data(),yyLineNr,current->name.data()); + current->section=Entry::USINGDIR_SEC; + current_root->addSubEntry(current); + current = new Entry ; + initEntry(); + BEGIN(Search); + } + {IDENTIFIER} { + QCString item=g_packageName+"."+yytext; + current->name=removeRedundantWhiteSpace(substitute(item,".","::")); + current->fileName = yyFileName; + //printf("Adding using declaration: found:%s:%d name=%s\n",yyFileName.data(),yyLineNr,current->name.data()); + current->section=Entry::USINGDECL_SEC; + current_root->addSubEntry(current); + current = new Entry ; + initEntry(); + BEGIN(Search); + } + \n { + yyLineNr++; + BEGIN(Search); + } + {B} { + } + . { + unput(*yytext); + BEGIN(Search); + } +} + +<Import>{ + {IDENTIFIER}({B}"."{B}{IDENTIFIER})* { + current->name=removeRedundantWhiteSpace(substitute(yytext,".","::")); + current->fileName = yyFileName; + //printf("Adding using declaration: found:%s:%d name=%s\n",yyFileName.data(),yyLineNr,current->name.data()); + current->section=Entry::USINGDECL_SEC; + current_root->addSubEntry(current); + current = new Entry ; + initEntry(); + BEGIN(Search); + } + \n { + yyLineNr++; + BEGIN(Search); + } + {B} { + } + . { + unput(*yytext); + BEGIN(Search); + } +} + <SearchMemVars>{ "self."{IDENTIFIER}/{B}"=" { //printf("Found member variable %s\n",&yytext[5]); @@ -634,9 +726,8 @@ STARTDOCSYMS ^{B}"##"/[^#] endOfDef(); yyterminate(); } - ^{BB}\n { // skip empty line + ^{BB}/\n { // skip empty line current->program+=yytext; - yyLineNr++; } ^{BB} { // something at indent >0 current->program+=yytext; @@ -707,14 +798,14 @@ STARTDOCSYMS ^{B}"##"/[^#] } current->name = yytext; current->name = current->name.stripWhiteSpace(); - if (!current->name.isEmpty() && current->name.at(0)=='_') - { - current->protection = Private; - } + //if (!current->name.isEmpty() && current->name.at(0)=='_') + //{ + // current->protection = Private; + //} //if ((current_root->section&Entry::SCOPE_MASK) && // current->name=="__init__") // constructor //{ - g_insideConstructor = TRUE; + // g_insideConstructor = TRUE; // g_constructorEntry = current; // newEntry(); //} @@ -766,11 +857,12 @@ STARTDOCSYMS ^{B}"##"/[^#] \n/{IDENTIFIER}{BB} { // new def at indent 0 yyLineNr++; endOfDef(); + g_hideClassDocs = FALSE; + YY_CURRENT_BUFFER->yy_at_bol=TRUE; BEGIN(Search); } - ^{BB}\n { // skip empty line + ^{BB}/\n { // skip empty line current->program+=yytext; - yyLineNr++; } <<EOF>> { endOfDef(); @@ -786,6 +878,7 @@ STARTDOCSYMS ^{B}"##"/[^#] g_indent=g_curIndent; // make sure the next rule matches ^... YY_CURRENT_BUFFER->yy_at_bol=TRUE; + g_hideClassDocs = FALSE; BEGIN(Search); } else @@ -823,13 +916,13 @@ STARTDOCSYMS ^{B}"##"/[^#] current->program+=*yytext; } {TRIDOUBLEQUOTE} { // start of a comment block - current->program+=yytext; + if (!g_hideClassDocs) current->program+=yytext; initTriDoubleQuoteBlock(); BEGIN(TripleComment); } {TRISINGLEQUOTE} { // start of a comment block - current->program+=yytext; + if (!g_hideClassDocs) current->program+=yytext; initTriSingleQuoteBlock(); BEGIN(TripleComment); } @@ -902,6 +995,7 @@ STARTDOCSYMS ^{B}"##"/[^#] bodyEntry = current; //fprintf(stderr,"setting indent %d\n",g_curIndent); //printf("current->program=[%s]\n",current->program.data()); + g_hideClassDocs = TRUE; BEGIN( ClassBody ); } @@ -1051,7 +1145,7 @@ STARTDOCSYMS ^{B}"##"/[^#] // printf("Expected module block %d special=%d\n",g_expectModuleDocs,g_specialBlock); if (g_doubleQuote==(yytext[0]=='"')) { - if (g_specialBlock || g_expectModuleDocs) + if (g_specialBlock /*|| g_expectModuleDocs*/) { QCString actualDoc=docBlock; if (!docBlockSpecial) // legacy unformatted docstring @@ -1059,19 +1153,20 @@ STARTDOCSYMS ^{B}"##"/[^#] actualDoc.prepend("\\verbatim "); actualDoc.append("\\endverbatim "); } - if (g_expectModuleDocs) - { - actualDoc.prepend("\\namespace "+g_moduleScope+"\\_linebr "); - } + //if (g_expectModuleDocs) + //{ + // actualDoc.prepend("\\namespace "+g_moduleScope+"\\_linebr "); + //} handleCommentBlock(actualDoc, FALSE); } - g_expectModuleDocs=FALSE; - if (docBlockContext==ClassBody || + //g_expectModuleDocs=FALSE; + if ((docBlockContext==ClassBody && !g_hideClassDocs) || docBlockContext==FunctionBody) { current->program+=docBlock; current->program+=yytext; } + g_hideClassDocs=FALSE; BEGIN(docBlockContext); } else @@ -1120,11 +1215,11 @@ STARTDOCSYMS ^{B}"##"/[^#] docBlock+=yytext; } \n { // new line that ends the comment - if (g_expectModuleDocs) - { - docBlock.prepend("\\namespace "+g_moduleScope+"\\_linebr "); - } - g_expectModuleDocs=FALSE; + //if (g_expectModuleDocs) + //{ + // docBlock.prepend("\\namespace "+g_moduleScope+"\\_linebr "); + //} + //g_expectModuleDocs=FALSE; handleCommentBlock(docBlock, docBrief); yyLineNr++; BEGIN(docBlockContext); @@ -1293,9 +1388,9 @@ static void parseMain(const char *fileName,const char *fileBuf,Entry *rt) gstat = FALSE; virt = Normal; current_root = rt; - g_expectModuleDocs = TRUE; + //g_expectModuleDocs = TRUE; g_specialBlock = FALSE; - g_insideConstructor = FALSE; + //g_insideConstructor = FALSE; inputFile.setName(fileName); @@ -1357,9 +1452,9 @@ static void parsePrototype(const QCString &text) { //printf("**** parsePrototype(%s) begin\n",text.data()); - g_expectModuleDocs = FALSE; + //g_expectModuleDocs = FALSE; g_specialBlock = FALSE; - g_insideConstructor = FALSE; + //g_insideConstructor = FALSE; const char *orgInputString; int orgInputPosition; diff --git a/src/scanner.l b/src/scanner.l index 0da3eaa..3a2bddc 100644 --- a/src/scanner.l +++ b/src/scanner.l @@ -4044,20 +4044,23 @@ IDLATTR ("["[^\]]*"]"){BN}* <DocBlock>("@@"|"\\\\"){ID}/[^a-z_A-Z0-9] { // escaped command docBlock+=yytext; } -<DocBlock>{CMD}("verbatim"|"latexonly"|"htmlonly"|"xmlonly"|"manonly"|"dot"|"code"|"f$"|"f["|"f{")/[^a-z_A-Z0-9] { // verbatim command (which could contain nested comments!) +<DocBlock>{CMD}("f$"|"f["|"f{") { docBlock+=yytext; - if (yytext[2]=='[') - { - docBlockName="f]"; - } - else if (yytext[2]=='}') + docBlockName=&yytext[1]; + if (docBlockName.at(1)=='{') { - docBlockName="f}"; + docBlockName.at(1)='}'; } - else - { - docBlockName=&yytext[1]; - } + BEGIN(DocCopyBlock); + } +<DocBlock>"<"{PRE}">" { + docBlock+=yytext; + docBlockName="<pre>"; + BEGIN(DocCopyBlock); + } +<DocBlock>{CMD}("verbatim"|"latexonly"|"htmlonly"|"xmlonly"|"manonly"|"dot"|"code")/[^a-z_A-Z0-9] { // verbatim command (which could contain nested comments!) + docBlock+=yytext; + docBlockName=&yytext[1]; BEGIN(DocCopyBlock); } <DocBlock>[^@*\/\\\n]+ { // any character that isn't special @@ -4073,6 +4076,13 @@ IDLATTR ("["[^\]]*"]"){BN}* /* ---- Copy verbatim sections ------ */ +<DocCopyBlock>"</"{PRE}">" { // end of a <pre> block + docBlock+=yytext; + if (docBlockName=="<pre>") + { + BEGIN(DocBlock); + } + } <DocCopyBlock>[\\@]("endverbatim"|"endlatexonly"|"endhtmlonly"|"endxmlonly"|"enddot"|"endcode"|"f$"|"f]"|"f}")/[^a-z_A-Z0-9] { // end of verbatim block docBlock+=yytext; if (yytext[1]=='f') // end of formula diff --git a/src/searchindex.cpp b/src/searchindex.cpp index 400702b..0a9e9c5 100644 --- a/src/searchindex.cpp +++ b/src/searchindex.cpp @@ -64,6 +64,7 @@ SearchIndex::SearchIndex() : m_words(328829), m_index(numIndexEntries), m_urlInd int i; m_words.setAutoDelete(TRUE); m_urls.setAutoDelete(TRUE); + m_index.setAutoDelete(TRUE); for (i=0;i<numIndexEntries;i++) m_index.insert(i,new QList<IndexWord>); } @@ -279,7 +280,7 @@ void SearchIndex::write(const char *fileName) } } - delete urlOffsets; - delete wordStatOffsets; + delete[] urlOffsets; + delete[] wordStatOffsets; } diff --git a/src/translator_si.h b/src/translator_si.h index 96af0df..f9ec604 100644 --- a/src/translator_si.h +++ b/src/translator_si.h @@ -21,8 +21,12 @@ #define TRANSLATOR_SI_H -class TranslatorSlovene : public TranslatorAdapter_1_2_16 +class TranslatorSlovene : public Translator +//public TranslatorAdapter_1_2_16 { + protected: + friend class TranslatorAdapterBase; + virtual ~TranslatorSlovene() {} public: QCString idLanguage() { return "slovene"; } @@ -50,11 +54,11 @@ class TranslatorSlovene : public TranslatorAdapter_1_2_16 QCString trDetailedDescription() { return "Podroben opis"; } QCString trMemberTypedefDocumentation() - { return "Opis uporabniško definiranih tipov"; } + { return "Opis uporabniško definiranih tipov"; } QCString trMemberEnumerationDocumentation() - { return "Opis komponent naštevnih tipov"; } - QCString trEnumerationValueDocumentation() - { return "Opis vrednosti naštevnih tipov (enum) "; } + { return "Opis komponent naštevnih tipov"; } +/* QCString trEnumerationValueDocumentation() */ +/* { return "Opis vrednosti naštevnih tipov (enum) "; } */ QCString trMemberFunctionDocumentation() { return "Opis metod"; } QCString trMemberDataDocumentation() @@ -68,7 +72,7 @@ class TranslatorSlovene : public TranslatorAdapter_1_2_16 QCString trThisIsTheListOfAllMembers() { return "Seznam metod razreda "; } QCString trIncludingInheritedMembers() - { return ", vključujoč dedovane metode in atribute."; } + { return ", vkljuèujoè dedovane metode in atribute."; } QCString trGeneratedAutomatically(const char *s) { QCString result="zgenerirano z Doxygen-om"; if (s) result+=(QCString)" za "+s; @@ -76,9 +80,9 @@ class TranslatorSlovene : public TranslatorAdapter_1_2_16 return result; } QCString trEnumName() - { return "naštevno ime"; } + { return "naštevno ime"; } QCString trEnumValue() - { return "naštevna vrednost"; } + { return "naštevna vrednost"; } QCString trDefinedIn() { return "definirano v"; } QCString trModules() @@ -89,8 +93,8 @@ class TranslatorSlovene : public TranslatorAdapter_1_2_16 { return "kratek opis razredov"; } QCString trFileList() { return "seznam datotek"; } - QCString trHeaderFiles() - { return "'Header' datoteka"; } +/* QCString trHeaderFiles() */ +/* { return "'Header' datoteka"; } */ QCString trCompoundMembers() { return "metode in atributi"; } QCString trFileMembers() @@ -100,9 +104,9 @@ class TranslatorSlovene : public TranslatorAdapter_1_2_16 QCString trExamples() { return "Primeri"; } QCString trSearch() - { return "Išči"; } + { return "Išèi"; } QCString trClassHierarchyDescription() - { return "Hierarhično drevo je (okvirno) sortirano po abecedi. "; + { return "Hierarhièno drevo je (okvirno) sortirano po abecedi. "; } QCString trFileListDescription(bool extractAll) { @@ -112,7 +116,7 @@ class TranslatorSlovene : public TranslatorAdapter_1_2_16 return result; } QCString trCompoundListDescription() - { return "Seznam razredov, množic in struktur " + { return "Seznam razredov, množic in struktur " "s kratkim opisom :"; } QCString trCompoundMembersDescription(bool extractAll) @@ -133,23 +137,23 @@ class TranslatorSlovene : public TranslatorAdapter_1_2_16 else result+="s povezavami na datoteke v katerih se nahajajo:"; return result; } - QCString trHeaderFilesDescription() - { return "Seznam header datotek, ki tvorijo aplikacijski vmesnik (API) :"; } +/* QCString trHeaderFilesDescription() */ +/* { return "Seznam header datotek, ki tvorijo aplikacijski vmesnik (API) :"; } */ QCString trExamplesDescription() { return "Seznam primerov :"; } QCString trRelatedPagesDescription() { return "Seznam strani z dodatnimi opisi:"; } QCString trModulesDescription() { return "Seznam modulov:"; } - QCString trNoDescriptionAvailable() - { return "Opis ni dostopen"; } +/* QCString trNoDescriptionAvailable() */ +/* { return "Opis ni dostopen"; } */ QCString trDocumentation() { return "Dokumentacija"; } QCString trModuleIndex() { return "seznam modulov"; } QCString trHierarchicalIndex() - { return "Hierarhični indeks"; } + { return "Hierarhièni indeks"; } QCString trCompoundIndex() { return "abecedni seznam"; } QCString trFileIndex() @@ -165,30 +169,30 @@ class TranslatorSlovene : public TranslatorAdapter_1_2_16 QCString trPageDocumentation() { return "Opis povezanih strani"; } QCString trReferenceManual() - { return "Priročnik"; } + { return "Priroènik"; } QCString trDefines() { return "Makro deklaracije"; } QCString trFuncProtos() { return "Prototipi funkcij"; } QCString trTypedefs() - { return "Uporabniško definirani tipi"; } + { return "Uporabniško definirani tipi"; } QCString trEnumerations() - { return "Naštevni tipi"; } + { return "Naštevni tipi"; } QCString trFunctions() { return "Funkcije"; } QCString trVariables() { return "Spremenljivke"; } QCString trEnumerationValues() - { return "Vrednosti naštevnih tipov"; } + { return "Vrednosti naštevnih tipov"; } QCString trDefineDocumentation() { return "Opis makro definicije"; } QCString trFunctionPrototypeDocumentation() { return "Opis prototipa funkcije"; } QCString trTypedefDocumentation() - { return "Opis uporabniško definiranega tipa"; } + { return "Opis uporabniško definiranega tipa"; } QCString trEnumerationTypeDocumentation() - { return "Opis naštevnega (enum) tipa"; } + { return "Opis naštevnega (enum) tipa"; } QCString trFunctionDocumentation() { return "Opis funkcije"; } QCString trVariableDocumentation() @@ -212,14 +216,14 @@ class TranslatorSlovene : public TranslatorAdapter_1_2_16 } QCString trForInternalUseOnly() { return "Samo za interno uporabo."; } - QCString trReimplementedForInternalReasons() - { return "Ponovno implementirano zaradi internih razlogov. " - "Nima vpliva na API."; - } +/* QCString trReimplementedForInternalReasons() */ +/* { return "Ponovno implementirano zaradi internih razlogov. " */ +/* "Nima vpliva na API."; */ +/* } */ QCString trWarning() { return "Opozorilo"; } - QCString trBugsAndLimitations() - { return "Napake in omejtive"; } +/* QCString trBugsAndLimitations() */ +/* { return "Napake in omejtive"; } */ QCString trVersion() { return "Verzija"; } QCString trDate() @@ -233,7 +237,7 @@ class TranslatorSlovene : public TranslatorAdapter_1_2_16 QCString trExceptions() { return "Prekinitve"; } QCString trGeneratedBy() - { return "Izdelano s pomočjo"; } + { return "Izdelano s pomoèjo"; } ////////////////////////////////////////////////////////////////////////// // new since 0.49-990307 @@ -272,7 +276,7 @@ class TranslatorSlovene : public TranslatorAdapter_1_2_16 { case ClassDef::Class: result+=" Razred "; break; case ClassDef::Struct: result+=" Struktura "; break; - case ClassDef::Union: result+=" Množica "; break; + case ClassDef::Union: result+=" Množica "; break; case ClassDef::Interface: result+=" IDL vmesnik "; break; case ClassDef::Protocol: result+=" protocol "; break; // translate me! case ClassDef::Category: result+=" category "; break; // translate me! @@ -306,19 +310,19 @@ class TranslatorSlovene : public TranslatorAdapter_1_2_16 QCString trSignals() { return "Programske prekinitve"; } QCString trStaticPublicMembers() - { return "Statične javne metode in atributi"; } + { return "Statiène javne metode in atributi"; } QCString trProtectedMembers() - { return "Zaščitene metode in atributi"; } + { return "Zašèitene metode in atributi"; } QCString trProtectedSlots() - { return "Zaščiteni sloti"; } + { return "Zašèiteni sloti"; } QCString trStaticProtectedMembers() - { return "Statične zaščitene metode in atributi"; } + { return "Statiène zašèitene metode in atributi"; } QCString trPrivateMembers() { return "Skrite metode in atributi"; } QCString trPrivateSlots() { return "Skriti slotovi"; } QCString trStaticPrivateMembers() - { return "Statične skrite metode in atributi"; } + { return "Statiène skrite metode in atributi"; } // end of member sections QCString trWriteList(int numEntries) @@ -355,7 +359,7 @@ class TranslatorSlovene : public TranslatorAdapter_1_2_16 // used in class documentation to produce a list of super classes, // if class diagrams are disabled. { - return "Naslijeđena u "+trWriteList(numEntries)+"."; + return "NaslijeĂ°ena u "+trWriteList(numEntries)+"."; } QCString trReimplementedFromList(int numEntries) // used in member documentation blocks to produce a list of @@ -462,10 +466,10 @@ class TranslatorSlovene : public TranslatorAdapter_1_2_16 // new since 0.49-991106 ////////////////////////////////////////////////////////////////////////// - QCString trSources() - { - return "Izvorne datoteke"; - } +/* QCString trSources() */ +/* { */ +/* return "Izvorne datoteke"; */ +/* } */ QCString trDefinedAtLineInSourceFile() { return "Definirano v @0 vrstici datoteke @1."; @@ -498,10 +502,10 @@ class TranslatorSlovene : public TranslatorAdapter_1_2_16 { return (QCString)"Graf prikazuje seznam datotek, " "ki jih datoteka \""+fName+"\" " - "direktno ali indirektno vključuje. Pravokotniki ponazarjajo datoteke, puščice " + "direktno ali indirektno vkljuèuje. Pravokotniki ponazarjajo datoteke, pušèice " "predstavljajo relacije med njimi. " - "Črn pravokotnik ponazarja datoteko "+fName+". Puščice A->B ponazarjajo " - "usmerjeno relacijo \"A vključuje B\"." + "Ărn pravokotnik ponazarja datoteko "+fName+". Pušèice A->B ponazarjajo " + "usmerjeno relacijo \"A vkljuèuje B\"." ; } /*! header that is put before the list of constructor/destructors. */ @@ -517,7 +521,7 @@ class TranslatorSlovene : public TranslatorAdapter_1_2_16 /*! Used in the file sources to point to the corresponding documentation. */ QCString trGotoDocumentation() { - return "dokumenacija tekoče datoteke."; + return "dokumenacija tekoèe datoteke."; } /*! Text for the \pre command */ QCString trPrecondition() @@ -537,7 +541,7 @@ class TranslatorSlovene : public TranslatorAdapter_1_2_16 /*! Text shown before a multi-line variable/enum initialization */ QCString trInitialValue() { - return "Začetna vrednost / definicija :"; + return "Zaèetna vrednost / definicija :"; } /*! Text used the source code in the file index */ QCString trCode() @@ -546,11 +550,11 @@ class TranslatorSlovene : public TranslatorAdapter_1_2_16 } QCString trGraphicalHierarchy() { - return "Hierarhija razredov v grafični obliki"; + return "Hierarhija razredov v grafièni obliki"; } QCString trGotoGraphicalHierarchy() { - return "Dedovalna hierarhija v grafični obliki"; + return "Dedovalna hierarhija v grafièni obliki"; } QCString trGotoTextualHierarchy() { @@ -579,19 +583,19 @@ class TranslatorSlovene : public TranslatorAdapter_1_2_16 } QCString trStaticPublicAttribs() { - return "Statični javni atributi"; + return "Statièni javni atributi"; } QCString trProtectedTypes() { - return "Zaščiteni tipi"; + return "Zašèiteni tipi"; } QCString trProtectedAttribs() { - return "Zaščiteni atributi"; + return "Zašèiteni atributi"; } QCString trStaticProtectedAttribs() { - return "Statični zaščiteni tipi"; + return "Statièni zašèiteni tipi"; } QCString trPrivateTypes() { @@ -603,7 +607,7 @@ class TranslatorSlovene : public TranslatorAdapter_1_2_16 } QCString trStaticPrivateAttribs() { - return "Statični skriti atributi"; + return "Statièni skriti atributi"; } ////////////////////////////////////////////////////////////////////////// // new since 1.1.3 @@ -617,7 +621,7 @@ class TranslatorSlovene : public TranslatorAdapter_1_2_16 /*! Used as the header of the todo list */ virtual QCString trTodoList() { - return "Seznam nedokončanih opravil"; + return "Seznam nedokonèanih opravil"; } ////////////////////////////////////////////////////////////////////////// @@ -639,12 +643,12 @@ class TranslatorSlovene : public TranslatorAdapter_1_2_16 virtual QCString trInclByDepGraph() { return "Graf prikazuje datoteke, ki posredno ali neposredno " - "vključujejo tekočo datoteko. Pravokotniki simbolizirajo datoteke, " - "puščice pa relacije med datotekami. Tekoča datoteka je prikazana " - "kot pravokotnik s črno podlago, ostale pa kot pravokotnik brez podlage. " - "Smer puščice A->B definira relacijo \"A vključuje B\". " - "Vse datoteke, ki torej mejijo na tekočo (t.j. obstaja povezava med črnim in " - "praznim pravokotnikom), jo direktno vključujejo, medtem, ko jo ostale vključujejo " + "vkljuèujejo tekoèo datoteko. Pravokotniki simbolizirajo datoteke, " + "pušèice pa relacije med datotekami. Tekoèa datoteka je prikazana " + "kot pravokotnik s èrno podlago, ostale pa kot pravokotnik brez podlage. " + "Smer pušèice A->B definira relacijo \"A vkljuèuje B\". " + "Vse datoteke, ki torej mejijo na tekoèo (t.j. obstaja povezava med èrnim in " + "praznim pravokotnikom), jo direktno vkljuèujejo, medtem, ko jo ostale vkljuèujejo " "le posredno. " ; } @@ -668,7 +672,7 @@ class TranslatorSlovene : public TranslatorAdapter_1_2_16 virtual QCString trLegendDocs() { return - "Tekoča stran pojasnjuje način interpretacije grafov, ki jih izriše " + "Tekoèa stran pojasnjuje naèin interpretacije grafov, ki jih izriše " "doxygen.<p>\n" "Poglejmo si naslednji primer:\n" "\\code\n" @@ -678,11 +682,11 @@ class TranslatorSlovene : public TranslatorAdapter_1_2_16 "class Truncated : public Invisible { };\n\n" "/* razred, ki ni opisan z doxygen komentarji */\n" "class Undocumented { };\n\n" - "/*! Razred, ki ga dedujemo s pomočjo javnega dedovanja */\n" + "/*! Razred, ki ga dedujemo s pomoèjo javnega dedovanja */\n" "class PublicBase : public Truncated { };\n\n" - "/*! Razred, ki ga dedujemo s pomočjo zaščitenega dedovanja */\n" + "/*! Razred, ki ga dedujemo s pomoèjo zašèitenega dedovanja */\n" "class ProtectedBase { };\n\n" - "/*! Razred, ki ga dedujemo s pomočjo skritega dedovanja */\n" + "/*! Razred, ki ga dedujemo s pomoèjo skritega dedovanja */\n" "class PrivateBase { };\n\n" "/*! Razred, ki ga uporablja dedovani razred */\n" "class Used { };\n\n" @@ -772,10 +776,10 @@ class TranslatorSlovene : public TranslatorAdapter_1_2_16 ////////////////////////////////////////////////////////////////////////// /*! Used for Java interfaces in the summary section of Java packages */ - virtual QCString trInterfaces() - { - return "Vmesniki"; - } +/* virtual QCString trInterfaces() */ +/* { */ +/* return "Vmesniki"; */ +/* } */ /*! Used for Java classes in the summary section of Java packages */ virtual QCString trClasses() { @@ -809,10 +813,10 @@ class TranslatorSlovene : public TranslatorAdapter_1_2_16 return "JAVA paketi"; } /*! Used as a chapter title for Latex & RTF output */ - virtual QCString trPackageDocumentation() - { - return "Opisi JAVA paketov"; - } +/* virtual QCString trPackageDocumentation() */ +/* { */ +/* return "Opisi JAVA paketov"; */ +/* } */ /*! Text shown before a multi-line define */ virtual QCString trDefineValue() { @@ -954,13 +958,13 @@ class TranslatorSlovene : public TranslatorAdapter_1_2_16 * 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")); - if (!singular) result+="a"; - else result += "e"; - return result; - } +/* virtual QCString trField(bool first_capital, bool singular) */ +/* { */ +/* QCString result((first_capital ? "Polj" : "polj")); */ +/* if (!singular) result+="a"; */ +/* else result += "e"; */ +/* return result; */ +/* } */ /*! This is used for translation of the word that will possibly * be followed by a single name or by a list of names @@ -1015,14 +1019,230 @@ class TranslatorSlovene : public TranslatorAdapter_1_2_16 return "Implementirano v "+trWriteList(numEntries)+"."; } -}; +////////////////////////////////////////////////////////////////////////// +// new since 1.2.16 +////////////////////////////////////////////////////////////////////////// -#endif + /*! used in RTF documentation as a heading for the Table + * of Contents. + */ + virtual QCString trRTFTableOfContents() + { + return "Vsebina"; + } + +////////////////////////////////////////////////////////////////////////// +// new since 1.2.17 +////////////////////////////////////////////////////////////////////////// + + /*! Used as the header of the list of item that have been + * flagged deprecated + */ + virtual QCString trDeprecatedList() + { + return "Seznam opuĹĄÄenih"; + } + +////////////////////////////////////////////////////////////////////////// +// new since 1.2.18 +////////////////////////////////////////////////////////////////////////// + + /*! Used as a header for declaration section of the events found in + * a C# program + */ + virtual QCString trEvents() + { + return "Dogodki"; + } + /*! Header used for the documentation section of a class' events. */ + virtual QCString trEventDocumentation() + { + return "Opisi dogodkov"; + } + +////////////////////////////////////////////////////////////////////////// +// new since 1.3 +////////////////////////////////////////////////////////////////////////// + + /*! Used as a heading for a list of Java class types with package scope. + */ + virtual QCString trPackageTypes() + { + return "Tipi paketov"; + } + /*! Used as a heading for a list of Java class functions with package + * scope. + */ + virtual QCString trPackageMembers() + { + return "Funkcije paketa"; /* don't know the context */ + } + /*! Used as a heading for a list of static Java class functions with + * package scope. + */ + virtual QCString trStaticPackageMembers() + { + return "StatiÄne funkcije paketa"; + } + /*! Used as a heading for a list of Java class variables with package + * scope. + */ + virtual QCString trPackageAttribs() + { + return "Atributi paketa"; + } + /*! Used as a heading for a list of static Java class variables with + * package scope. + */ + virtual QCString trStaticPackageAttribs() + { + return "StatiÄni atributi paketa"; + } + +////////////////////////////////////////////////////////////////////////// +// 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 "Vse"; + } + /*! Put in front of the call graph for a function. */ + virtual QCString trCallGraph() + { + return "Graf klicev tekoÄe funkcije:"; + } + +////////////////////////////////////////////////////////////////////////// +// 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 "IĹĄÄi"; + } + /*! This string is used as the title for the page listing the search + * results. + */ + virtual QCString trSearchResultsTitle() + { + return "Rezultat(i) iskanja"; + } + /*! 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 "Oprostite, noben dokument ne ustreza vaĹĄemu povpraĹĄevanju."; + } + else if (numDocuments==1) + { + return "NaĹĄel sem <b>1</b> dokument, ki ustreza vaĹĄemu povpraĹĄevanju."; + } + else if (numDocuments==2) + { + return "NaĹĄel sem <b>2</b> dokumenta, ki ustrezata vaĹĄemu povpraĹĄevanju."; + } + else + { + return "NaĹĄel sem <b>$num</b> dokumentov, ki ustrezajo vaĹĄemu povpraĹĄevanju. " + "Dokumenti z najboljĹĄo stopnjo ujemanja se nahajajo na zaÄetku."; + } + } + /*! 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 "Zadetki:"; + } + +////////////////////////////////////////////////////////////////////////// +// 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 + " izvorna koda"; + } +////////////////////////////////////////////////////////////////////////// +// new since 1.3.9 +////////////////////////////////////////////////////////////////////////// + /*! This is used as the name of the chapter containing the directory + * hierarchy. + */ + virtual QCString trDirIndex() + { return "Hierarhija imenikov"; } + /*! This is used as the name of the chapter containing the documentation + * of the directories. + */ + virtual QCString trDirDocumentation() + { return "Opisi imenikov"; } + /*! 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 "Imeniki"; } + /*! This returns a sentences that introduces the directory hierarchy. + * and the fact that it is sorted alphabetically per level + */ + virtual QCString trDirDescription() + { return "ImeniĹĄka hierarhija je urejena v glavnem, toda ne popolnoma, po abecedi, "; + } + /*! 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+=" imeniĹĄke reference"; /* not sure for context */ + 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 ? "Imenik" : "imenik")); + if (singular) result+="i"; 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 "To je ponovno definirana metoda, " /* don't know Slovene expresion for overloaded */ + "podana je zaradi priroÄnosti. Metoda se od predhodnje razlikuje " + "samo v ĹĄtevilu in/ali tipu formalnih argumentov."; + } +}; + +#endif diff --git a/src/util.cpp b/src/util.cpp index 912c6dc..8cf4ba5 100644 --- a/src/util.cpp +++ b/src/util.cpp @@ -1000,7 +1000,7 @@ done: return result; } -int computeQualifiedIndex(const QString &name) +int computeQualifiedIndex(const QCString &name) { int i = name.find('<'); return name.findRev("::",i==-1 ? name.length() : i); @@ -1136,15 +1136,18 @@ ClassDef *getResolvedClassRec(Definition *scope, // see if we are dealing with a class or a typedef if (d->definitionType()==Definition::TypeClass) // d is a class { - if (!((ClassDef*)d)->isTemplateArgument()) // skip classes that - // are only there to - // represent a template - // argument + ClassDef *cd = (ClassDef *)d; + //printf("cd=%s\n",cd->name().data()); + if (!cd->isTemplateArgument()) // skip classes that + // are only there to + // represent a template + // argument { + //printf("is not a templ arg\n"); if (distance<minDistance) // found a definition that is "closer" { minDistance=distance; - bestMatch = (ClassDef *)d; + bestMatch = cd; bestTypedef = 0; bestTemplSpec.resize(0); } @@ -1164,7 +1167,7 @@ ClassDef *getResolvedClassRec(Definition *scope, // Just a non-perfect heuristic but it could help in some situations // (kdecore code is an example). minDistance=distance; - bestMatch = (ClassDef *)d; + bestMatch = cd; bestTypedef = 0; bestTemplSpec.resize(0); } @@ -5605,7 +5608,7 @@ QCString stripLeadingAndTrailingEmptyLines(const QCString &s) p=s.data()+b; while (b>=0) { - c=*--p; + c=*p; p--; if (c==' ' || c=='\t' || c=='\r') b--; else if (c=='\n') bi=b,b--; else break; @@ -227,7 +227,7 @@ void replaceNamespaceAliases(QCString &scope,int i); int isAccessibleFrom(Definition *scope,FileDef *fileScope,Definition *item); int isAccessibleFromWithExpScope(Definition *scope,FileDef *fileScope,Definition *item, const QCString &explicitScopePart); -int computeQualifiedIndex(const QString &name); +int computeQualifiedIndex(const QCString &name); void addDirPrefix(QCString &fileName); QCString relativePathToRoot(const char *name); #define REL_PATH_TO_ROOT "../../" |