From ba7233b1be8545e619d80a62dd274521392fbe1f Mon Sep 17 00:00:00 2001 From: Dimitri van Heesch Date: Sun, 18 Sep 2005 19:25:32 +0000 Subject: Release-1.4.4-20050918 --- INSTALL | 4 +- README | 4 +- VERSION | 2 +- doc/docblocks.doc | 10 +- src/classdef.cpp | 1 + src/config.l | 4 +- src/dirdef.cpp | 27 +++- src/docparser.cpp | 6 + src/docparser.h | 2 + src/doctokenizer.l | 5 + src/dot.cpp | 14 +- src/doxygen.cpp | 2 + src/ftvhelp.cpp | 2 + src/latexgen.cpp | 4 +- src/message.cpp | 26 ++-- src/pre.l | 100 ++++++++++---- src/pycode.l | 4 +- src/pyscanner.l | 159 ++++++++++++++++----- src/scanner.l | 32 +++-- src/searchindex.cpp | 5 +- src/translator_si.h | 384 ++++++++++++++++++++++++++++++++++++++++----------- src/util.cpp | 19 +-- src/util.h | 2 +- wintools/Doxygen.dsp | 36 +++-- wintools/Doxygen.dsw | 36 ++++- wintools/Doxytag.dsp | 16 +-- wintools/libpng.dsp | 19 +-- wintools/qtools.dsp | 30 ++-- wintools/zlib.dsp | 2 + 29 files changed, 703 insertions(+), 254 deletions(-) diff --git a/INSTALL b/INSTALL index 1aa5eac..3cd278a 100644 --- a/INSTALL +++ b/INSTALL @@ -1,7 +1,7 @@ -DOXYGEN Version 1.4.4-20050817 +DOXYGEN Version 1.4.4-20050918 Please read the installation section of the manual (http://www.doxygen.org/install.html) for instructions. -------- -Dimitri van Heesch (17 August 2005) +Dimitri van Heesch (18 September 2005) diff --git a/README b/README index 9949e09..d474ced 100644 --- a/README +++ b/README @@ -1,4 +1,4 @@ -DOXYGEN Version 1.4.4_20050817 +DOXYGEN Version 1.4.4_20050918 Please read INSTALL for compilation instructions. @@ -17,4 +17,4 @@ to subscribe to the lists or to visit the archives. Enjoy, -Dimitri van Heesch (dimitri@stack.nl) (17 August 2005) +Dimitri van Heesch (dimitri@stack.nl) (18 September 2005) diff --git a/VERSION b/VERSION index 0cb25ea..944cb20 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.4.4-20050817 +1.4.4-20050918 diff --git a/doc/docblocks.doc b/doc/docblocks.doc index a0132d8..de1e94d 100644 --- a/doc/docblocks.doc +++ b/doc/docblocks.doc @@ -276,20 +276,22 @@ Here is an example of the use of these comment blocks: \section structuralcommands Documentation at other places -So far we have assumed that the documentation blocks are always located in -front of the declaration or definition of a file, class or namespace or in +So far we have assumed that the documentation blocks are always located \e in +\e front of the declaration or definition of a file, class or namespace or in front or after one of its members. Although this is often comfortable, there may sometimes be reasons to put the documentation somewhere else. For documenting a file this is even required since there is no such thing as "in front of a file". + Doxygen allows you to put your documentation blocks practically anywhere (the exception is inside the body of a function or inside a normal C style comment block). The price you pay for not putting the -documentation block before (or after) an item is the need to put a +documentation block directly before (or after) an item is the need to put a structural command inside the documentation block, which leads to some -duplication of information. +duplication of information. So in practice you should \e avoid the use of +structural commands \e unless other requirements force you to do so. Structural commands (like all other commands) start with a backslash (\\), or an at-sign (\@) if you prefer JavaDoc style, 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='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; } +"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 * s_newNumber = new QArray(); +static QArray 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;iat(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, ...) diff --git a/src/pre.l b/src/pre.l index 3619a22..2406871 100644 --- a/src/pre.l +++ b/src/pre.l @@ -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++; } -[\\@][\\@]("verbatim"|"latexonly"|"htmlonly"|"xmlonly"|"rtfonly"|"manonly"|"dot"|"code"){BN}+ { +[\\@][\\@]("verbatim"|"latexonly"|"htmlonly"|"xmlonly"|"rtfonly"|"manonly"|"dot"|"code"|"f{"|"f$"|"f["){BN}+ { outputArray(yytext,yyleng); } [\\@]("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); } [\\@]"cond"[ \t]+ { // conditional section @@ -1835,13 +1872,20 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'")) outputArray(yytext,yyleng); endCondSection(); } -[\\@]("endverbatim"|"endlatexonly"|"endhtmlonly"|"endxmlonly"|"endrtfonly"|"endmanonly"|"enddot"|"endcode") { /* end of verbatim block */ +[\\@]("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); } } +"*/"|"/*" { + outputArray(yytext,yyleng); + } [^*\\@\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}"##"/[^#] } } +{ + {IDENTIFIER}({B}"."{B}{IDENTIFIER})* { // from package import + g_packageName=yytext; + } + "import"{B} { + BEGIN(FromModItem); + } + \n { + yyLineNr++; + BEGIN(Search); + } + {B} { + } + . { + unput(*yytext); + BEGIN(Search); + } +} + +{ + "*" { // 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); + } +} + +{ + {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); + } +} + { "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++; } <> { 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}* ("@@"|"\\\\"){ID}/[^a-z_A-Z0-9] { // escaped command docBlock+=yytext; } -{CMD}("verbatim"|"latexonly"|"htmlonly"|"xmlonly"|"manonly"|"dot"|"code"|"f$"|"f["|"f{")/[^a-z_A-Z0-9] { // verbatim command (which could contain nested comments!) +{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); + } +"<"{PRE}">" { + docBlock+=yytext; + docBlockName="
";
+  					  BEGIN(DocCopyBlock);
+  					}
+{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);
   					}
 [^@*\/\\\n]+			{ // any character that isn't special
@@ -4073,6 +4076,13 @@ IDLATTR   ("["[^\]]*"]"){BN}*
 
  /* ---- Copy verbatim sections ------ */
 
+""		{ // end of a 
 block
+  					  docBlock+=yytext;
+					  if (docBlockName=="
")
+					  {
+  					    BEGIN(DocBlock);
+					  }
+  					}
 [\\@]("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);
 }
 
@@ -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.

\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 1 dokument, ki ustreza vaĹĄemu povpraĹĄevanju."; + } + else if (numDocuments==2) + { + return "NaĹĄel sem 2 dokumenta, ki ustrezata vaĹĄemu povpraĹĄevanju."; + } + else + { + return "NaĹĄel sem $num 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=0) { - c=*--p; + c=*p; p--; if (c==' ' || c=='\t' || c=='\r') b--; else if (c=='\n') bi=b,b--; else break; diff --git a/src/util.h b/src/util.h index 4e83872..6381a40 100644 --- a/src/util.h +++ b/src/util.h @@ -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 "../../" diff --git a/wintools/Doxygen.dsp b/wintools/Doxygen.dsp index 7031cd6..0a88c9a 100644 --- a/wintools/Doxygen.dsp +++ b/wintools/Doxygen.dsp @@ -23,8 +23,8 @@ CFG=Doxygen - Win32 Debug # Begin Project # PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" +# PROP Scc_ProjName "Doxygen" +# PROP Scc_LocalPath "." CPP=cl.exe RSC=rc.exe @@ -309,6 +309,14 @@ SOURCE=..\src\pre.cpp # End Source File # Begin Source File +SOURCE=..\src\pycode.cpp +# End Source File +# Begin Source File + +SOURCE=..\src\pyscanner.cpp +# End Source File +# Begin Source File + SOURCE=..\src\reflist.cpp # End Source File # Begin Source File @@ -537,6 +545,14 @@ SOURCE=..\src\mangen.h # End Source File # Begin Source File +SOURCE=..\libmd5\md5.h +# End Source File +# Begin Source File + +SOURCE=..\libmd5\md5_loc.h +# End Source File +# Begin Source File + SOURCE=..\src\memberdef.h # End Source File # Begin Source File @@ -569,19 +585,15 @@ SOURCE=..\src\outputlist.h # End Source File # Begin Source File -SOURCE=..\src\packagedef.h -# End Source File -# Begin Source File - SOURCE=..\src\pagedef.h # End Source File # Begin Source File -SOURCE=..\src\perlmodgen.h +SOURCE=..\src\parserintf.h # End Source File # Begin Source File -SOURCE=..\src\parserintf.h +SOURCE=..\src\perlmodgen.h # End Source File # Begin Source File @@ -597,6 +609,14 @@ SOURCE=..\src\printdocvisitor.h # End Source File # Begin Source File +SOURCE=..\src\pycode.h +# End Source File +# Begin Source File + +SOURCE=..\src\pyscanner.h +# End Source File +# Begin Source File + SOURCE=..\src\qtbc.h # End Source File # Begin Source File diff --git a/wintools/Doxygen.dsw b/wintools/Doxygen.dsw index 76ca47e..0085a89 100644 --- a/wintools/Doxygen.dsw +++ b/wintools/Doxygen.dsw @@ -3,10 +3,14 @@ Microsoft Developer Studio Workspace File, Format Version 6.00 ############################################################################### -Project: "Doxygen"=".\Doxygen.dsp" - Package Owner=<4> +Project: "Doxygen"=.\Doxygen.dsp - Package Owner=<4> Package=<5> {{{ + begin source code control + Doxygen + . + end source code control }}} Package=<4> @@ -18,16 +22,20 @@ Package=<4> Project_Dep_Name zlib End Project Dependency Begin Project Dependency - Project_Dep_Name qtools + Project_Dep_Name Doxytag End Project Dependency }}} ############################################################################### -Project: "Doxytag"=".\Doxytag.dsp" - Package Owner=<4> +Project: "Doxytag"=.\Doxytag.dsp - Package Owner=<4> Package=<5> {{{ + begin source code control + Doxytag + . + end source code control }}} Package=<4> @@ -39,10 +47,14 @@ Package=<4> ############################################################################### -Project: "libpng"=".\libpng.dsp" - Package Owner=<4> +Project: "libpng"=.\libpng.dsp - Package Owner=<4> Package=<5> {{{ + begin source code control + libpng + . + end source code control }}} Package=<4> @@ -51,10 +63,14 @@ Package=<4> ############################################################################### -Project: "qtools"=".\qtools.dsp" - Package Owner=<4> +Project: "qtools"=.\qtools.dsp - Package Owner=<4> Package=<5> {{{ + begin source code control + qtools + . + end source code control }}} Package=<4> @@ -63,10 +79,14 @@ Package=<4> ############################################################################### -Project: "zlib"=".\zlib.dsp" - Package Owner=<4> +Project: "zlib"=.\zlib.dsp - Package Owner=<4> Package=<5> {{{ + begin source code control + zlib + . + end source code control }}} Package=<4> @@ -79,6 +99,10 @@ Global: Package=<5> {{{ + begin source code control + Doxygen + . + end source code control }}} Package=<3> diff --git a/wintools/Doxytag.dsp b/wintools/Doxytag.dsp index 1d4b024..d394de8 100644 --- a/wintools/Doxytag.dsp +++ b/wintools/Doxytag.dsp @@ -23,6 +23,8 @@ CFG=Doxytag - Win32 Debug # Begin Project # PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "Doxytag" +# PROP Scc_LocalPath "." CPP=cl.exe RSC=rc.exe @@ -88,11 +90,11 @@ LINK32=link.exe # PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" # Begin Source File -SOURCE=..\src\doxytag.cpp +SOURCE=..\src\config.cpp # End Source File # Begin Source File -SOURCE=..\src\logos.cpp +SOURCE=..\src\doxytag.cpp # End Source File # Begin Source File @@ -104,15 +106,7 @@ SOURCE=..\src\version.cpp # PROP Default_Filter "h;hpp;hxx;hm;inl" # Begin Source File -SOURCE=..\src\logos.h -# End Source File -# Begin Source File - -SOURCE=..\src\searchindex.h -# End Source File -# Begin Source File - -SOURCE=..\src\suffixtree.h +SOURCE=..\src\config.h # End Source File # Begin Source File diff --git a/wintools/libpng.dsp b/wintools/libpng.dsp index a6a7f81..bf09b22 100644 --- a/wintools/libpng.dsp +++ b/wintools/libpng.dsp @@ -23,6 +23,8 @@ CFG=libpng - Win32 Debug # Begin Project # PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "libpng" +# PROP Scc_LocalPath "." CPP=cl.exe RSC=rc.exe @@ -85,87 +87,70 @@ LIB32=link.exe -lib # Begin Source File SOURCE=..\libpng\png.c - # End Source File # Begin Source File SOURCE=..\libpng\pngerror.c - # End Source File # Begin Source File SOURCE=..\libpng\pnggccrd.c - # End Source File # Begin Source File SOURCE=..\libpng\pngget.c - # End Source File # Begin Source File SOURCE=..\libpng\pngmem.c - # End Source File # Begin Source File SOURCE=..\libpng\pngpread.c - # End Source File # Begin Source File SOURCE=..\libpng\pngread.c - # End Source File # Begin Source File SOURCE=..\libpng\pngrio.c - # End Source File # Begin Source File SOURCE=..\libpng\pngrtran.c - # End Source File # Begin Source File SOURCE=..\libpng\pngrutil.c - # End Source File # Begin Source File SOURCE=..\libpng\pngset.c - # End Source File # Begin Source File SOURCE=..\libpng\pngtrans.c - # End Source File # Begin Source File SOURCE=..\libpng\pngvcrd.c - # End Source File # Begin Source File SOURCE=..\libpng\pngwio.c - # End Source File # Begin Source File SOURCE=..\libpng\pngwrite.c - # End Source File # Begin Source File SOURCE=..\libpng\pngwtran.c - # End Source File # Begin Source File SOURCE=..\libpng\pngwutil.c - # End Source File # End Group # Begin Group "Header Files" diff --git a/wintools/qtools.dsp b/wintools/qtools.dsp index 83b6cb8..97a62ba 100644 --- a/wintools/qtools.dsp +++ b/wintools/qtools.dsp @@ -23,6 +23,8 @@ CFG=qtools - Win32 Debug # Begin Project # PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "qtools" +# PROP Scc_LocalPath "." CPP=cl.exe RSC=rc.exe @@ -92,10 +94,6 @@ SOURCE=..\qtools\qcollection.cpp # End Source File # Begin Source File -SOURCE=..\qtools\scstring.cpp -# End Source File -# Begin Source File - SOURCE=..\qtools\qdatastream.cpp # End Source File # Begin Source File @@ -132,19 +130,19 @@ SOURCE=..\qtools\qgarray.cpp # End Source File # Begin Source File -SOURCE=..\qtools\qgdict.cpp +SOURCE=..\qtools\qgcache.cpp # End Source File # Begin Source File -SOURCE=..\qtools\qglist.cpp +SOURCE=..\qtools\qgdict.cpp # End Source File # Begin Source File -SOURCE=..\qtools\qglobal.cpp +SOURCE=..\qtools\qglist.cpp # End Source File # Begin Source File -SOURCE=..\qtools\qgcache.cpp +SOURCE=..\qtools\qglobal.cpp # End Source File # Begin Source File @@ -182,6 +180,10 @@ SOURCE=..\qtools\qtextstream.cpp SOURCE=..\qtools\qxml.cpp # End Source File +# Begin Source File + +SOURCE=..\qtools\scstring.cpp +# End Source File # End Group # Begin Group "Header Files" @@ -200,6 +202,10 @@ SOURCE=..\qtools\qbuffer.h # End Source File # Begin Source File +SOURCE=..\qtools\qcache.h +# End Source File +# Begin Source File + SOURCE=..\qtools\qcollection.h # End Source File # Begin Source File @@ -248,6 +254,10 @@ SOURCE=..\qtools\qgarray.h # End Source File # Begin Source File +SOURCE=..\qtools\qgcache.h +# End Source File +# Begin Source File + SOURCE=..\qtools\qgdict.h # End Source File # Begin Source File @@ -354,6 +364,10 @@ SOURCE=..\qtools\qvector.h SOURCE=..\qtools\qxml.h # End Source File +# Begin Source File + +SOURCE=..\qtools\scstring.h +# End Source File # End Group # End Target # End Project diff --git a/wintools/zlib.dsp b/wintools/zlib.dsp index b80c5fc..ba723ab 100644 --- a/wintools/zlib.dsp +++ b/wintools/zlib.dsp @@ -23,6 +23,8 @@ CFG=zlib - Win32 Debug # Begin Project # PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "zlib" +# PROP Scc_LocalPath "." CPP=cl.exe RSC=rc.exe -- cgit v0.12