Commit ba7233b1 authored by Dimitri van Heesch's avatar Dimitri van Heesch

Release-1.4.4-20050918

parent 143b39e7
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)
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)
1.4.4-20050817
1.4.4-20050918
......@@ -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
(<tt>\\</tt>), or an at-sign (<tt>\@</tt>) if you prefer JavaDoc style,
......
......@@ -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;
......
......@@ -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",
......
......@@ -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)
......
......@@ -5736,3 +5736,9 @@ void initDocParser()
Doxygen::searchIndex = 0;
}
}
void finializeDocParser()
{
delete Doxygen::searchIndex;
}
......@@ -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
......
......@@ -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;
}
/*******************************************************/
......
......@@ -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)
......
......@@ -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();
}
......@@ -369,6 +369,8 @@ void FTVHelp::initialize()
void FTVHelp::finalize()
{
generateTreeView();
delete m_theInstance;
m_theInstance=0;
}
/*! Increase the level of the contents hierarchy.
......
......@@ -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;
......
......@@ -135,30 +135,22 @@ static void do_warn(const char *tag, const char *file, int line, const char *fmt
substitute(
substitute(
substitute(
substitute(
outputFormat,
"$file",fileSubst
substitute(
substitute(
outputFormat,
"$file",fileSubst
),
"$text",textSubst
),
"$text",textSubst
"$line",lineSubst
),
"$line",lineSubst
"$version",versionSubst
),
"$version",versionSubst
"%","%%"
)+'\n';
// print resulting message
fprintf(warnFile,msgText);
// switch(warnFormatOrder)
// {
// case 1: fprintf(warnFile,outputFormat,file,line,text); break;
// case 2: fprintf(warnFile,outputFormat,text,line,file); break;
// case 3: fprintf(warnFile,outputFormat,line,text,file); break;
// case 4: fprintf(warnFile,outputFormat,file,text,line); break;
// case 5: fprintf(warnFile,outputFormat,text,file,line); break;
// case 6: fprintf(warnFile,outputFormat,line,file,text); break;
// default:
// printf("Error: warning format has not been initialized!\n");
// }
}
void warn(const char *file,int line,const char *fmt, ...)
......
......@@ -891,35 +891,65 @@ QCString removeMarkers(const char *s)
{
while ((c=*p))
{
if (c=='@') // replace @@ with @
switch(c)
{
if (*(p+1)=='@')
{
result+=c;
}
p+=2;
}
else if (c=='/') // skip C comments
{
result+=c;
char pc=c;
c=*++p;
if (c=='*') // start of C comment
{
while (*p && !(pc=='*' && c=='/')) // search end of comment
case '@': // replace @@ with @
{
if (*(p+1)=='@')
{
result+=c;
}
p+=2;
}
break;
case '/': // skip C comments
{
result+=c;
pc=c;
char pc=c;
c=*++p;
if (c=='*') // start of C comment
{
while (*p && !(pc=='*' && c=='/')) // search end of comment
{
result+=c;
pc=c;
c=*++p;
}
result+=c;
p++;
}
}
result+=c;
p++;
}
}
else
{
result+=c;
p++;
break;
case '"': // skip string literals
{
result+=c;
char pc=c;
c=*++p;
while (*p && (c!='"' || pc=='\\')) // no end quote
{
result+=c;
c=*++p;
}
}
break;
case '\'': // skip char literals
{
result+=c;
char pc=c;
c=*++p;
while (*p && (c!='\'' || pc=='\\')) // no end quote
{
result+=c;
c=*++p;
}
}
break;
default:
{
result+=c;
p++;
}
break;
}
}
}
......@@ -1807,12 +1837,19 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
outputChar('/');outputChar('*');
//g_commentCount++;
}
<SkipCComment>[\\@][\\@]("verbatim"|"latexonly"|"htmlonly"|"xmlonly"|"rtfonly"|"manonly"|"dot"|"code"){BN}+ {
<SkipCComment>[\\@][\\@]("verbatim"|"latexonly"|"htmlonly"|"xmlonly"|"rtfonly"|"manonly"|"dot"|"code"|"f{"|"f$"|"f["){BN}+ {
outputArray(yytext,yyleng);
}
<SkipCComment>[\\@]("verbatim"|"latexonly"|"htmlonly"|"xmlonly"|"rtfonly"|"manonly"|"dot"|"code"){BN}+ {
outputArray(yytext,yyleng);
g_blockName=QCString(&yytext[1]).stripWhiteSpace();
if (yytext[1]=='f')
{
g_blockName="f";
}
else
{
g_blockName=QCString(&yytext[1]).stripWhiteSpace();
}
BEGIN(SkipVerbatim);
}
<SkipCComment,SkipCPPComment>[\\@]"cond"[ \t]+ { // conditional section
......@@ -1835,13 +1872,20 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
outputArray(yytext,yyleng);
endCondSection();
}
<SkipVerbatim>[\\@]("endverbatim"|"endlatexonly"|"endhtmlonly"|"endxmlonly"|"endrtfonly"|"endmanonly"|"enddot"|"endcode") { /* end of verbatim block */
<SkipVerbatim>[\\@]("endverbatim"|"endlatexonly"|"endhtmlonly"|"endxmlonly"|"endrtfonly"|"endmanonly"|"enddot"|"endcode"|"f$"|"f]"|"f}") { /* end of verbatim block */
outputArray(yytext,yyleng);
if (&yytext[4]==g_blockName)
if (yytext[1]=='f' && g_blockName=="f")
{
BEGIN(SkipCComment);
}
else if (&yytext[4]==g_blockName)
{
BEGIN(SkipCComment);
}
}
<SkipVerbatim>"*/"|"/*" {
outputArray(yytext,yyleng);
}
<SkipCComment,SkipVerbatim>[^*\\@\x06\n\/]+ {
outputArray(yytext,yyleng);
}
......
......@@ -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;
......
......@@ -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;
......
......@@ -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
......
......@@ -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;
}
......@@ -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 uporabniko definiranih tipov"; }
{ return "Opis uporabni¹ko definiranih tipov"; }
QCString trMemberEnumerationDocumentation()
{ return "Opis komponent natevnih tipov"; }
QCString trEnumerationValueDocumentation()
{ return "Opis vrednosti natevnih 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 ", vkljuujo 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 "natevno ime"; }
{ return "na¹tevno ime"; }
QCString trEnumValue()
{ return "natevna 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 "Ii"; }
{ return "I¹èi"; }
QCString trClassHierarchyDescription()
{ return "Hierarhino 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, mnoic 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 "Hierarhini 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 "Prironik"; }
{ return "Priroènik"; }
QCString trDefines()
{ return "Makro deklaracije"; }
QCString trFuncProtos()
{ return "Prototipi funkcij"; }
QCString trTypedefs()
{ return "Uporabniko definirani tipi"; }
{ return "Uporabni¹ko definirani tipi"; }
QCString trEnumerations()
{ return "Natevni tipi"; }
{ return "Na¹tevni tipi"; }
QCString trFunctions()
{ return "Funkcije"; }
QCString trVariables()
{ return "Spremenljivke"; }
QCString trEnumerationValues()
{ return "Vrednosti natevnih tipov"; }
{ return "Vrednosti na¹tevnih tipov"; }
QCString trDefineDocumentation()
{ return "Opis makro definicije"; }
QCString trFunctionPrototypeDocumentation()
{ return "Opis prototipa funkcije"; }
QCString trTypedefDocumentation()
{ return "Opis uporabniko definiranega tipa"; }
{ return "Opis uporabni¹ko definiranega tipa"; }
QCString trEnumerationTypeDocumentation()
{ return "Opis natevnega (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 pomojo"; }
{ 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+=" Mnoica "; 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 "Statine javne metode in atributi"; }
{ return "Statiène javne metode in atributi"; }
QCString trProtectedMembers()
{ return "Zaitene metode in atributi"; }
{ return "Za¹èitene metode in atributi"; }
QCString trProtectedSlots()
{ return "Zaiteni sloti"; }
{ return "Za¹èiteni sloti"; }
QCString trStaticProtectedMembers()
{ return "Statine zaitene 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 "Statine 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 "Naslijeena 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 vkljuuje. Pravokotniki ponazarjajo datoteke, puice "
"direktno ali indirektno vkljuèuje. Pravokotniki ponazarjajo datoteke, pu¹èice "
"predstavljajo relacije med njimi. "
"rn pravokotnik ponazarja datoteko "+fName+". Puice A->B ponazarjajo "
"usmerjeno relacijo \"A vkljuuje 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 tekoe 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 "Zaetna 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 grafini obliki";
return "Hierarhija razredov v grafièni obliki";
}
QCString trGotoGraphicalHierarchy()
{
return "Dedovalna hierarhija v grafini obliki";
return "Dedovalna hierarhija v grafièni obliki";
}
QCString trGotoTextualHierarchy()
{
......@@ -579,19 +583,19 @@ class TranslatorSlovene : public TranslatorAdapter_1_2_16
}
QCString trStaticPublicAttribs()
{
return "Statini javni atributi";
return "Statièni javni atributi";
}
QCString trProtectedTypes()
{
return "Zaiteni tipi";
return "Za¹èiteni tipi";
}
QCString trProtectedAttribs()
{
return "Zaiteni atributi";
return "Za¹èiteni atributi";
}
QCString trStaticProtectedAttribs()
{
return "Statini zaiteni tipi";
return "Statièni za¹èiteni tipi";
}
QCString trPrivateTypes()
{
......@@ -603,7 +607,7 @@ class TranslatorSlovene : public TranslatorAdapter_1_2_16
}
QCString trStaticPrivateAttribs()
{
return "Statini 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 nedokonanih 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 "
"vkljuujejo tekoo datoteko. Pravokotniki simbolizirajo datoteke, "
"puice pa relacije med datotekami. Tekoa datoteka je prikazana "
"kot pravokotnik s rno podlago, ostale pa kot pravokotnik brez podlage. "
"Smer puice A->B definira relacijo \"A vkljuuje B\". "
"Vse datoteke, ki torej mejijo na tekoo (t.j. obstaja povezava med rnim in "
"praznim pravokotnikom), jo direktno vkljuujejo, medtem, ko jo ostale vkljuujejo "
"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
"Tekoa stran pojasnjuje nain interpretacije grafov, ki jih izrie "
"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 pomojo javnega dedovanja */\n"
"/*! Razred, ki ga dedujemo s pomoèjo javnega dedovanja */\n"
"class PublicBase : public Truncated { };\n\n"
"/*! Razred, ki ga dedujemo s pomojo zaitenega dedovanja */\n"
"/*! Razred, ki ga dedujemo s pomoèjo za¹èitenega dedovanja */\n"
"class ProtectedBase { };\n\n"
"/*! Razred, ki ga dedujemo s pomojo 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
......@@ -1000,7 +1000,7 @@ done:
return result;
}
int computeQualifiedIndex(const QString &name)
int computeQualifiedIndex(const QCString &name)
{
int i = name.find('<');
return name.findRev("::",i==-1 ? name.length() : i);
......@@ -1136,15 +1136,18 @@ ClassDef *getResolvedClassRec(Definition *scope,
// see if we are dealing with a class or a typedef
if (d->definitionType()==Definition::TypeClass) // d is a class
{
if (!((ClassDef*)d)->isTemplateArgument()) // skip classes that
// are only there to
// represent a template
// argument
ClassDef *cd = (ClassDef *)d;
//printf("cd=%s\n",cd->name().data());
if (!cd->isTemplateArgument()) // skip classes that
// are only there to
// represent a template
// argument
{
//printf("is not a templ arg\n");
if (distance<minDistance) // found a definition that is "closer"
{
minDistance=distance;
bestMatch = (ClassDef *)d;
bestMatch = cd;
bestTypedef = 0;
bestTemplSpec.resize(0);
}
......@@ -1164,7 +1167,7 @@ ClassDef *getResolvedClassRec(Definition *scope,
// Just a non-perfect heuristic but it could help in some situations
// (kdecore code is an example).
minDistance=distance;
bestMatch = (ClassDef *)d;
bestMatch = cd;
bestTypedef = 0;
bestTemplSpec.resize(0);
}
......@@ -5605,7 +5608,7 @@ QCString stripLeadingAndTrailingEmptyLines(const QCString &s)
p=s.data()+b;
while (b>=0)
{
c=*--p;
c=*p; p--;
if (c==' ' || c=='\t' || c=='\r') b--;
else if (c=='\n') bi=b,b--;
else break;
......
......@@ -227,7 +227,7 @@ void replaceNamespaceAliases(QCString &scope,int i);
int isAccessibleFrom(Definition *scope,FileDef *fileScope,Definition *item);
int isAccessibleFromWithExpScope(Definition *scope,FileDef *fileScope,Definition *item,
const QCString &explicitScopePart);
int computeQualifiedIndex(const QString &name);
int computeQualifiedIndex(const QCString &name);
void addDirPrefix(QCString &fileName);
QCString relativePathToRoot(const char *name);
#define REL_PATH_TO_ROOT "../../"
......
......@@ -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
......
......@@ -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>
......
......@@ -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
......
......@@ -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"
......
......@@ -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
......@@ -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
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment