summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/classdef.cpp1
-rw-r--r--src/config.l4
-rw-r--r--src/dirdef.cpp27
-rw-r--r--src/docparser.cpp6
-rw-r--r--src/docparser.h2
-rw-r--r--src/doctokenizer.l5
-rw-r--r--src/dot.cpp14
-rw-r--r--src/doxygen.cpp2
-rw-r--r--src/ftvhelp.cpp2
-rw-r--r--src/latexgen.cpp4
-rw-r--r--src/message.cpp26
-rw-r--r--src/pre.l100
-rw-r--r--src/pycode.l4
-rw-r--r--src/pyscanner.l159
-rw-r--r--src/scanner.l32
-rw-r--r--src/searchindex.cpp5
-rw-r--r--src/translator_si.h384
-rw-r--r--src/util.cpp19
-rw-r--r--src/util.h2
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, ...)
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++;
}
-<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;
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 "../../"