Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
D
doxverilog
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Commits
Open sidebar
Elphel
doxverilog
Commits
e3baf8c5
Commit
e3baf8c5
authored
Jul 03, 2000
by
dimitri
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Release-1.1.5
parent
1b2fd16c
Changes
41
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
41 changed files
with
1689 additions
and
757 deletions
+1689
-757
INSTALL
INSTALL
+4
-4
README
README
+2
-2
VERSION
VERSION
+1
-1
config_templ.l
addon/configgen/config_templ.l
+50
-2
configgen.cpp
addon/configgen/configgen.cpp
+29
-9
configure
configure
+2
-0
config.doc
doc/config.doc
+120
-26
language.doc
doc/language.doc
+8
-4
doxygen.spec
packages/rpm/doxygen.spec
+1
-1
classdef.cpp
src/classdef.cpp
+9
-2
code.l
src/code.l
+81
-20
config.h
src/config.h
+3
-1
config.l
src/config.l
+101
-12
definition.cpp
src/definition.cpp
+1
-1
dot.cpp
src/dot.cpp
+2
-1
doxygen.cpp
src/doxygen.cpp
+66
-16
doxygen.h
src/doxygen.h
+1
-0
doxytag.l
src/doxytag.l
+3
-3
htmlgen.cpp
src/htmlgen.cpp
+4
-2
index.cpp
src/index.cpp
+2
-5
language.cpp
src/language.cpp
+5
-0
latexgen.cpp
src/latexgen.cpp
+37
-15
memberdef.cpp
src/memberdef.cpp
+2
-1
pre.l
src/pre.l
+6
-1
rtfgen.cpp
src/rtfgen.cpp
+409
-192
scanner.l
src/scanner.l
+17
-7
suffixtree.cpp
src/suffixtree.cpp
+2
-2
suffixtree.h
src/suffixtree.h
+0
-5
translator.h
src/translator.h
+22
-27
translator_cz.h
src/translator_cz.h
+655
-285
translator_de.h
src/translator_de.h
+2
-20
translator_es.h
src/translator_es.h
+2
-28
translator_fi.h
src/translator_fi.h
+2
-0
translator_fr.h
src/translator_fr.h
+2
-0
translator_hr.h
src/translator_hr.h
+2
-0
translator_it.h
src/translator_it.h
+2
-28
translator_jp.h
src/translator_jp.h
+2
-27
translator_nl.h
src/translator_nl.h
+2
-0
translator_ru.h
src/translator_ru.h
+2
-0
translator_se.h
src/translator_se.h
+2
-0
util.cpp
src/util.cpp
+24
-7
No files found.
INSTALL
View file @
e3baf8c5
DOXYGEN Version 1.1.
4-2000062
5
DOXYGEN Version 1.1.5
CONTENTS
--------
...
...
@@ -15,8 +15,8 @@ INSTALLATION INSTRUCTIONS FOR UNIX:
1. Unpack the archive, unless you already have:
gunzip doxygen-1.1.
4-2000062
5.src.tar.gz # uncompress the archive
tar xf doxygen-1.1.
4-2000062
5.src.tar # unpack it
gunzip doxygen-1.1.5.src.tar.gz # uncompress the archive
tar xf doxygen-1.1.5.src.tar # unpack it
2. Run the configure script:
...
...
@@ -255,4 +255,4 @@ The latest version of doxygen can be obtained at
Enjoy,
Dimitri van Heesch (
25 June
2000)
Dimitri van Heesch (
02 July
2000)
README
View file @
e3baf8c5
DOXYGEN Version 1.1.
4-2000062
5
DOXYGEN Version 1.1.5
Please read INSTALL for compilation instructions.
...
...
@@ -7,4 +7,4 @@ The latest version of doxygen can be obtained at
Enjoy,
Dimitri van Heesch (
25 June
2000)
Dimitri van Heesch (
02 July
2000)
VERSION
View file @
e3baf8c5
1.1.
4-2000062
5
1.1.5
addon/configgen/config_templ.l
View file @
e3baf8c5
...
...
@@ -82,8 +82,6 @@ static bool * b=0;
static QStrList * l=0;
static int lastState;
static QCString elemStr;
//static QCString tabSizeString;
//static QCString colsInAlphaIndexString;
#CONFIG Static
/* -----------------------------------------------------------------
...
...
@@ -313,6 +311,56 @@ void configStrToVal()
}
Config::colsInAlphaIndex=cols;
}
if (maxDotGraphWidthString.isEmpty())
{
Config::maxDotGraphWidth=1024;
}
else
{
bool ok;
int width =maxDotGraphWidthString.toInt(&ok);
if (!ok)
{
warn_cont("Warning: argument of MAX_DOT_GRAPH_WIDTH is not a valid number in the range [1..20]!\n"
"Using the default of 1024 pixels!\n");
width=1024;
}
else if (width<250) // clip to lower bound
{
width=250;
}
else if (width>30000) // clip to upper bound
{
width=30000;
}
Config::maxDotGraphWidth=width;
}
if (maxDotGraphHeightString.isEmpty())
{
Config::maxDotGraphHeight=1024;
}
else
{
bool ok;
int height =maxDotGraphHeightString.toInt(&ok);
if (!ok)
{
warn_cont("Warning: argument of MAX_DOT_GRAPH_WIDTH is not a valid number in the range [1..20]!\n"
"Using the default of 1024 pixels!\n");
height=1024;
}
else if (height<250) // clip to lower bound
{
height=250;
}
else if (height>30000) // clip to upper bound
{
height=30000;
}
Config::maxDotGraphHeight=height;
}
}
static void substEnvVarsInString(QCString &s)
...
...
addon/configgen/configgen.cpp
View file @
e3baf8c5
...
...
@@ -1338,6 +1338,16 @@ void init()
"Note: wordpad (write) and others do not support links.
\n
"
);
addDependency
(
"rtfHyperFlag"
,
"generateRTF"
);
ConfigString
::
add
(
"rtfStylesheetFile"
,
"RTF_STYLESHEET_FILE"
,
""
,
"file to load stylesheet definitions from"
,
"Load stylesheet definitions from file. Syntax is similar to doxygen's
\n
"
"config file, i.e. a series of assigments. You only have to provide
\n
"
"replacements, missing definitions are set to their default value.
\n
"
,
ConfigString
::
File
);
addDependency
(
"rtfStylesheetFile"
,
"generateRTF"
);
//-----------------------------------------------------------------------------------------------
ConfigInfo
::
add
(
"Man"
,
"configuration options related to the man page output"
);
//-----------------------------------------------------------------------------------------------
...
...
@@ -1383,9 +1393,19 @@ void init()
"expand macros in the source."
,
"If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro
\n
"
"names in the source code. If set to NO (the default) only conditional
\n
"
"compilation will be performed.
\n
"
"compilation will be performed. Macro expansion can be done in a controlled
\n
"
"way by setting EXPAND_ONLY_PREDEF to YES.
\n
"
);
addDependency
(
"macroExpansionFlag"
,
"preprocessingFlag"
);
ConfigBool
::
add
(
"onlyPredefinedFlag"
,
"EXPAND_ONLY_PREDEF"
,
"FALSE"
,
"expand only predefined macros"
,
"If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES
\n
"
"then the macro expansion is limited to the macros specified with the
\n
"
"PREDEFINED and EXPAND_AS_PREDEFINED tags.
\n
"
);
addDependency
(
"onlyPredefinedFlag"
,
"preprocessingFlag"
);
ConfigBool
::
add
(
"searchIncludeFlag"
,
"SEARCH_INCLUDES"
,
"TRUE"
,
...
...
@@ -1415,15 +1435,15 @@ void init()
"omitted =1 is assumed.
\n
"
);
addDependency
(
"predefined"
,
"preprocessingFlag"
);
ConfigBool
::
add
(
"onlyPredefinedFlag"
,
"EXPAND_ONLY_PREDEF"
,
"FALSE"
,
"expand only predefined macros"
,
"If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES
\n
"
"then the macro expansion is limited to the macros specified with the
\n
"
"PREDEFINED tag.
\n
"
ConfigList
::
add
(
"expandAsDefinedList"
,
"EXPAND_AS_DEFINED"
,
""
,
"list of defines to expand"
,
"If the MACRO_EXPANSION and EXPAND_PREDEF_ONLY tags are set to YES then
\n
"
"this tag can be used to specify a list of macro names that should be expanded.
\n
"
"The macro definition that is found in the sources will be used.
\n
"
"Use the PREDEFINED tag if you want to use a different macro definition.
\n
"
);
addDependency
(
"onlyPredefinedFlag"
,
"preprocessingFlag"
);
//-----------------------------------------------------------------------------------------------
ConfigInfo
::
add
(
"External"
,
"Configuration::addtions related to external references "
);
//-----------------------------------------------------------------------------------------------
...
...
configure
View file @
e3baf8c5
...
...
@@ -353,6 +353,8 @@ if test "$f_shared" = NO; then
cat
>>
.tmakeconfig
<<
EOF
TMAKE_LFLAGS = -non_shared
EOF
elif
test
"
$f_platform
"
=
"solaris-cc"
;
then
TMAKE_LFLAGS
=
-Bstatic
else
cat
>>
.tmakeconfig
<<
EOF
TMAKE_LFLAGS = -static
...
...
doc/config.doc
View file @
e3baf8c5
This diff is collapsed.
Click to expand it.
doc/language.doc
View file @
e3baf8c5
...
...
@@ -59,7 +59,7 @@ Here is a list of the languages and their current maintainers:
</TD>
<TD>
<a href="mailto:bordeux@NOSPAM.lig.di.epfl.ch">
bordeux@NOSPAM.lig.di.epfl.ch</a>
bordeux@NOSPAM.lig.di.epfl.ch</a>
</TD>
</TR>
<TR BGCOLOR="#ffffff">
...
...
@@ -72,9 +72,9 @@ Here is a list of the languages and their current maintainers:
</TD>
<TD>
<a href="mailto:sahag96@NOSPAM.nts.mh.se">
sahag96@NOSPAM.nts.mh.se</a><br>
sahag96@NOSPAM.nts.mh.se</a><br>
<a href="mailto:xet@NOSPAM.hem.passagen.se">
xet@NOSPAM.hem.passagen.se</a>
xet@NOSPAM.hem.passagen.se</a>
</TD>
</TR>
<TR BGCOLOR="#ffffff">
...
...
@@ -82,9 +82,12 @@ Here is a list of the languages and their current maintainers:
Czech
</TD>
<TD>
Petr Prikryl<BR>
Vlastimil Havran
</TD>
<TD>
<a href="mailto:prikrylp@NOSPAM.skil.cz">
prikrylp@NOSPAM.skil.cz</a>
<a href="mailto:havran@NOSPAM.fel.cvut.cz">
havran@NOSPAM.fel.cvut.cz</a>
</TD>
...
...
@@ -206,7 +209,8 @@ Here is a list of the languages and their current maintainers:
Swedish & Samuel H\"agglund & {\tt sahag96@nts.mh.se} \\
& XeT Erixon & {\tt xet@hem.passagen.se} \\
\hline
Czech & Vlastimil Havran & {\tt havran@fel.cvut.cz} \\
Czech & Petr Prikryl & {\tt prikrylp@skil.cz} \\
& Vlastimil Havran & {\tt havran@fel.cvut.cz} \\
\hline
Romanian & Ionutz Borcoman & {\tt borco@borco-ei.eng.hokudai.ac.jp} \\
\hline
...
...
packages/rpm/doxygen.spec
View file @
e3baf8c5
Name: doxygen
Version: 1.1.
4-2000062
5
Version: 1.1.5
Summary: documentation system for C, C++ and IDL
Release: 1
Source0: doxygen-%{version}.src.tar.gz
...
...
src/classdef.cpp
View file @
e3baf8c5
...
...
@@ -1605,8 +1605,14 @@ void ClassDef::determineImplUsageRelation()
int
brCount
=
1
;
while
(
te
<
typeLen
&&
brCount
!=
0
)
{
if
(
type
.
at
(
te
)
==
'<'
)
brCount
++
;
if
(
type
.
at
(
te
)
==
'>'
)
brCount
--
;
if
(
type
.
at
(
te
)
==
'<'
)
{
if
(
te
<
typeLen
-
1
&&
type
.
at
(
te
+
1
)
==
'<'
)
te
++
;
else
brCount
++
;
}
if
(
type
.
at
(
te
)
==
'>'
)
{
if
(
te
<
typeLen
-
1
&&
type
.
at
(
te
+
1
)
==
'>'
)
te
++
;
else
brCount
--
;
}
te
++
;
}
}
...
...
@@ -1614,6 +1620,7 @@ void ClassDef::determineImplUsageRelation()
if
(
te
>
ts
)
templSpec
=
type
.
mid
(
ts
,
te
-
ts
);
ClassDef
*
cd
=
getResolvedClass
(
name
()
+
"::"
+
type
.
mid
(
i
,
l
));
if
(
cd
==
0
)
cd
=
getResolvedClass
(
type
.
mid
(
i
,
l
));
// TODO: also try inbetween scopes!
//printf("Search for class %s result=%p\n",type.mid(i,l).data(),cd);
if
(
cd
)
// class exists
{
found
=
TRUE
;
...
...
src/code.l
View file @
e3baf8c5
...
...
@@ -118,6 +118,7 @@ static const char * g_currentFontClass;
static bool g_searchingForBody;
static bool g_insideBody;
static int g_bodyCurlyCount;
static ClassDef * g_classVar;
/*! start a new line of code, inserting a line number if g_sourceFileDef
* is TRUE. If a definition starts at the current line, then the line
...
...
@@ -341,6 +342,34 @@ static void generateClassLink(OutputList &ol,char *clName,int *clNameLen=0)
}
}
static ClassDef *stripClassName(const char *s)
{
QCString tmp=s;
if (tmp.isEmpty()) return 0;
static const QRegExp re("[a-z_A-Z][a-z_A-Z0-9:]*");
int p=0,i,l;
while ((i=re.match(tmp,p,&l))!=-1)
{
ClassDef *cd=0;
QCString clName = tmp.mid(i,l);
//printf("g_classScope=`%s' clName=`%s'\n",g_classScope.data(),clName.data());
if (!g_classScope.isEmpty())
{
cd=getResolvedClass(g_classScope+"::"+clName);
}
if (cd==0)
{
cd=getResolvedClass(clName);
}
if (cd)
{
return cd;
}
p=i+l;
}
return 0;
}
static bool getLink(const char *className,
const char *memberName,OutputList &result,
const char *text=0)
...
...
@@ -375,10 +404,11 @@ static bool getLink(const char *className,
}
}
Definition *d=0;
if (cd) d=cd; else if (
c
d) d=nd; else if (fd) d=fd; else d=gd;
if (cd) d=cd; else if (
n
d) d=nd; else if (fd) d=fd; else d=gd;
if (d && d->isLinkable())
{
g_classVar = stripClassName(md->typeString());
if (g_currentDefinition && g_currentMemberDef &&
md!=g_currentMemberDef && g_insideBody)
{
...
...
@@ -393,32 +423,47 @@ static bool getLink(const char *className,
return FALSE;
}
static
ClassDef *stripClassName(const char *s
)
static
bool generateClassMemberLink(OutputList &ol,ClassDef *mcd,const char *memName
)
{
QCString tmp=s;
if (tmp.isEmpty()) return 0;
static const QRegExp re("[a-z_A-Z][a-z_A-Z0-9:]*");
int p=0,i,l;
while ((i=re.match(tmp,p,&l))!=-1)
//printf("generateClassMemberLink(%s,%s)\n",mcd->name().data(),memName);
MemberName *mmn=memberNameDict[memName];
if (mmn)
{
ClassDef *cd=0;
QCString clName = tmp.mid(i,l);
//printf("g_classScope=`%s' clName=`%s'\n",g_classScope.data(),clName.data());
if (!g_classScope.isEmpty())
{
cd=getResolvedClass(g_classScope+"::"+clName);
}
if (cd==0)
MemberNameIterator mmni(*mmn);
MemberDef *mmd,*xmd=0;
ClassDef *xcd=0;
const int maxInheritanceDepth = 100000;
int mdist=maxInheritanceDepth;
for (;(mmd=mmni.current());++mmni)
{
cd=getResolvedClass(clName);
int m=minClassDistance(mcd,mmd->memberClass());
if (m<mdist && mmd->memberClass()->isLinkable())
{
mdist=m;
xcd=mmd->memberClass();
xmd=mmd;
}
}
if (
cd)
if (
mdist!=maxInheritanceDepth)
{
return cd;
// extract class definition of the return type in order to resolve
// a->b()->c() like call chains
g_classVar = stripClassName(xmd->typeString());
// add usage reference
if (g_currentDefinition && g_currentMemberDef &&
xmd!=g_currentMemberDef && g_insideBody)
{
xmd->addSourceReference(g_currentMemberDef);
}
// write the actual link
writeMultiLineCodeLink(ol,xcd->getReference(),
xcd->getOutputFileBase(),xmd->anchor(),memName);
return TRUE;
}
p=i+l;
}
return
0
;
return
FALSE
;
}
static void generateMemberLink(OutputList &ol,const char *varName,
...
...
@@ -493,6 +538,8 @@ static void generateMemberLink(OutputList &ol,const char *varName,
ClassDef *mcd=stripClassName(vmd->typeString());
if (mcd && mcd->isLinkable())
{
if (generateClassMemberLink(ol,mcd,memName)) return;
#if 0
//printf("Found class `%s'\n",mcd->name().data());
MemberName *mmn=memberNameDict[memName];
if (mmn)
...
...
@@ -524,6 +571,7 @@ static void generateMemberLink(OutputList &ol,const char *varName,
return;
}
}
#endif
}
}
}
...
...
@@ -925,9 +973,21 @@ TYPEKW ("bool"|"char"|"double"|"float"|"int"|"long"|"short"|"signed"|"unsigned"
}
<MemberCall>{SCOPENAME}/{B}*"(" {
if (!g_name.isEmpty())
{
generateMemberLink(*g_code,g_name,yytext);
}
else if (g_classVar)
{
if (!generateClassMemberLink(*g_code,g_classVar,yytext))
{
g_code->codify(yytext);
}
g_classVar=0;
}
else
{
g_code->codify(yytext);
}
g_name.resize(0);g_type.resize(0);
g_bracketCount=0;
BEGIN(FuncCall);
...
...
@@ -1350,6 +1410,7 @@ void parseCode(OutputList &ol,const char *className,const QCString &s,
g_bodyCurlyCount = 0;
g_bracketCount = 0;
g_sharpCount = 0;
g_classVar = 0;
g_classScope = className;
g_exampleBlock = exBlock;
g_exampleName = exName;
...
...
src/config.h
View file @
e3baf8c5
...
...
@@ -96,15 +96,17 @@ struct Config
static
QCString
rtfOutputDir
;
// the directory to put the RTF files
static
bool
compactRTFFlag
;
// generate more compact RTF
static
bool
rtfHyperFlag
;
// generate hyper links in RTF
static
QCString
rtfStylesheetFile
;
// file to load stylesheet definitions from
static
bool
generateMan
;
// generate Man pages
static
QCString
manOutputDir
;
// the directory to put the man pages
static
QCString
manExtension
;
// extension the man page files
static
bool
preprocessingFlag
;
// enable preprocessing
static
bool
macroExpansionFlag
;
// expand macros in the source.
static
bool
onlyPredefinedFlag
;
// expand only predefined macros
static
bool
searchIncludeFlag
;
// search for included files
static
QStrList
includePath
;
// list of include paths
static
QStrList
predefined
;
// list of predefined macro names.
static
bool
onlyPredefinedFlag
;
// expand only predefined macros
static
QStrList
expandAsDefinedList
;
// list of defines to expand
static
QStrList
tagFileList
;
// list of tag files
static
QCString
genTagFile
;
// the tag file to generate
static
bool
allExtFlag
;
// include all external classes flag
...
...
src/config.l
View file @
e3baf8c5
...
...
@@ -131,15 +131,17 @@ bool Config::generateRTF = TRUE;
QCString Config::rtfOutputDir = "rtf";
bool Config::compactRTFFlag = FALSE;
bool Config::rtfHyperFlag = FALSE;
QCString Config::rtfStylesheetFile;
bool Config::generateMan = TRUE;
QCString Config::manOutputDir = "man";
QCString Config::manExtension = ".3";
bool Config::preprocessingFlag = TRUE;
bool Config::macroExpansionFlag = FALSE;
bool Config::onlyPredefinedFlag = FALSE;
bool Config::searchIncludeFlag = TRUE;
QStrList Config::includePath;
QStrList Config::predefined;
bool Config::onlyPredefinedFlag = FALSE
;
QStrList Config::expandAsDefinedList
;
QStrList Config::tagFileList;
QCString Config::genTagFile;
bool Config::allExtFlag = FALSE;
...
...
@@ -175,8 +177,6 @@ static bool * b=0;
static QStrList * l=0;
static int lastState;
static QCString elemStr;
//static QCString tabSizeString;
//static QCString colsInAlphaIndexString;
static QCString tabSizeString;
static QCString colsInAlphaIndexString;
static QCString maxDotGraphWidthString;
...
...
@@ -279,15 +279,17 @@ static int yyread(char *buf,int max_size)
<Start>"RTF_OUTPUT"[ \t]*"=" { BEGIN(GetString); s=&Config::rtfOutputDir; s->resize(0); }
<Start>"COMPACT_RTF"[ \t]*"=" { BEGIN(GetBool); b=&Config::compactRTFFlag; }
<Start>"RTF_HYPERLINKS"[ \t]*"=" { BEGIN(GetBool); b=&Config::rtfHyperFlag; }
<Start>"RTF_STYLESHEET_FILE"[ \t]*"=" { BEGIN(GetString); s=&Config::rtfStylesheetFile; s->resize(0); }
<Start>"GENERATE_MAN"[ \t]*"=" { BEGIN(GetBool); b=&Config::generateMan; }
<Start>"MAN_OUTPUT"[ \t]*"=" { BEGIN(GetString); s=&Config::manOutputDir; s->resize(0); }
<Start>"MAN_EXTENSION"[ \t]*"=" { BEGIN(GetString); s=&Config::manExtension; s->resize(0); }
<Start>"ENABLE_PREPROCESSING"[ \t]*"=" { BEGIN(GetBool); b=&Config::preprocessingFlag; }
<Start>"MACRO_EXPANSION"[ \t]*"=" { BEGIN(GetBool); b=&Config::macroExpansionFlag; }
<Start>"EXPAND_ONLY_PREDEF"[ \t]*"=" { BEGIN(GetBool); b=&Config::onlyPredefinedFlag; }
<Start>"SEARCH_INCLUDES"[ \t]*"=" { BEGIN(GetBool); b=&Config::searchIncludeFlag; }
<Start>"INCLUDE_PATH"[ \t]*"=" { BEGIN(GetStrList); l=&Config::includePath; l->clear(); elemStr=""; }
<Start>"PREDEFINED"[ \t]*"=" { BEGIN(GetStrList); l=&Config::predefined; l->clear(); elemStr=""; }
<Start>"EXPAND_
ONLY_PREDEF"[ \t]*"=" { BEGIN(GetBool); b=&Config::onlyPredefinedFlag
; }
<Start>"EXPAND_
AS_DEFINED"[ \t]*"=" { BEGIN(GetStrList); l=&Config::expandAsDefinedList; l->clear(); elemStr=""
; }
<Start>"TAGFILES"[ \t]*"=" { BEGIN(GetStrList); l=&Config::tagFileList; l->clear(); elemStr=""; }
<Start>"GENERATE_TAGFILE"[ \t]*"=" { BEGIN(GetString); s=&Config::genTagFile; s->resize(0); }
<Start>"ALLEXTERNALS"[ \t]*"=" { BEGIN(GetBool); b=&Config::allExtFlag; }
...
...
@@ -546,6 +548,7 @@ void dumpConfig()
printf("rtfOutputDir=`%s'\n",Config::rtfOutputDir.data());
printf("compactRTFFlag=`%d'\n",Config::compactRTFFlag);
printf("rtfHyperFlag=`%d'\n",Config::rtfHyperFlag);
printf("rtfStylesheetFile=`%s'\n",Config::rtfStylesheetFile.data());
printf("# configuration options related to the man page output\n");
printf("generateMan=`%d'\n",Config::generateMan);
printf("manOutputDir=`%s'\n",Config::manOutputDir.data());
...
...
@@ -553,6 +556,7 @@ void dumpConfig()
printf("# Configuration options related to the preprocessor \n");
printf("preprocessingFlag=`%d'\n",Config::preprocessingFlag);
printf("macroExpansionFlag=`%d'\n",Config::macroExpansionFlag);
printf("onlyPredefinedFlag=`%d'\n",Config::onlyPredefinedFlag);
printf("searchIncludeFlag=`%d'\n",Config::searchIncludeFlag);
{
char *is=Config::includePath.first();
...
...
@@ -570,7 +574,14 @@ void dumpConfig()
is=Config::predefined.next();
}
}
printf("onlyPredefinedFlag=`%d'\n",Config::onlyPredefinedFlag);
{
char *is=Config::expandAsDefinedList.first();
while (is)
{
printf("expandAsDefinedList=`%s'\n",is);
is=Config::expandAsDefinedList.next();
}
}
printf("# Configuration::addtions related to external references \n");
{
char *is=Config::tagFileList.first();
...
...
@@ -677,15 +688,17 @@ void Config::init()
Config::rtfOutputDir = "rtf";
Config::compactRTFFlag = FALSE;
Config::rtfHyperFlag = FALSE;
Config::rtfStylesheetFile.resize(0);
Config::generateMan = TRUE;
Config::manOutputDir = "man";
Config::manExtension = ".3";
Config::preprocessingFlag = TRUE;
Config::macroExpansionFlag = FALSE;
Config::onlyPredefinedFlag = FALSE;
Config::searchIncludeFlag = TRUE;
Config::includePath.clear();
Config::predefined.clear();
Config::
onlyPredefinedFlag = FALSE
;
Config::
expandAsDefinedList.clear()
;
Config::tagFileList.clear();
Config::genTagFile.resize(0);
Config::allExtFlag = FALSE;
...
...
@@ -1554,6 +1567,17 @@ void writeTemplateConfig(QFile *f,bool sl)
writeBoolValue(t,Config::rtfHyperFlag);
t << "\n";
if (!sl)
{
t << "\n";
t << "# Load stylesheet definitions from file. Syntax is similar to doxygen's \n";
t << "# config file, i.e. a series of assigments. You only have to provide \n";
t << "# replacements, missing definitions are set to their default value. \n";
t << "\n";
}
t << "RTF_STYLESHEET_FILE = ";
writeStringValue(t,Config::rtfStylesheetFile);
t << "\n";
if (!sl)
{
t << "\n";
}
...
...
@@ -1614,13 +1638,25 @@ void writeTemplateConfig(QFile *f,bool sl)
t << "\n";
t << "# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro \n";
t << "# names in the source code. If set to NO (the default) only conditional \n";
t << "# compilation will be performed. \n";
t << "# compilation will be performed. Macro expansion can be done in a controlled \n";
t << "# way by setting EXPAND_ONLY_PREDEF to YES. \n";
t << "\n";
}
t << "MACRO_EXPANSION = ";
writeBoolValue(t,Config::macroExpansionFlag);
t << "\n";
if (!sl)
{
t << "\n";
t << "# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES \n";
t << "# then the macro expansion is limited to the macros specified with the \n";
t << "# PREDEFINED and EXPAND_AS_PREDEFINED tags. \n";
t << "\n";
}
t << "EXPAND_ONLY_PREDEF = ";
writeBoolValue(t,Config::onlyPredefinedFlag);
t << "\n";
if (!sl)
{
t << "\n";
t << "# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files \n";
...
...
@@ -1657,13 +1693,14 @@ void writeTemplateConfig(QFile *f,bool sl)
if (!sl)
{
t << "\n";
t << "# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES \n";
t << "# then the macro expansion is limited to the macros specified with the \n";
t << "# PREDEFINED tag. \n";
t << "# If the MACRO_EXPANSION and EXPAND_PREDEF_ONLY tags are set to YES then \n";
t << "# this tag can be used to specify a list of macro names that should be expanded. \n";
t << "# The macro definition that is found in the sources will be used. \n";
t << "# Use the PREDEFINED tag if you want to use a different macro definition. \n";
t << "\n";
}
t << "EXPAND_
ONLY_PREDEF
= ";
write
BoolValue(t,Config::onlyPredefinedFlag
);
t << "EXPAND_
AS_DEFINED
= ";
write
StringList(t,Config::expandAsDefinedList
);
t << "\n";
if (!sl)
{
...
...
@@ -1942,6 +1979,56 @@ void configStrToVal()
}
Config::colsInAlphaIndex=cols;
}
if (maxDotGraphWidthString.isEmpty())
{
Config::maxDotGraphWidth=1024;
}
else
{
bool ok;
int width =maxDotGraphWidthString.toInt(&ok);
if (!ok)
{
warn_cont("Warning: argument of MAX_DOT_GRAPH_WIDTH is not a valid number in the range [1..20]!\n"
"Using the default of 1024 pixels!\n");
width=1024;
}
else if (width<250) // clip to lower bound
{
width=250;
}
else if (width>30000) // clip to upper bound
{
width=30000;
}
Config::maxDotGraphWidth=width;
}
if (maxDotGraphHeightString.isEmpty())
{
Config::maxDotGraphHeight=1024;
}
else
{
bool ok;
int height =maxDotGraphHeightString.toInt(&ok);
if (!ok)
{
warn_cont("Warning: argument of MAX_DOT_GRAPH_WIDTH is not a valid number in the range [1..20]!\n"
"Using the default of 1024 pixels!\n");
height=1024;
}
else if (height<250) // clip to lower bound
{
height=250;
}
else if (height>30000) // clip to upper bound
{
height=30000;
}
Config::maxDotGraphHeight=height;
}
}
static void substEnvVarsInString(QCString &s)
...
...
@@ -2073,10 +2160,12 @@ void substituteEnvironmentVars()
substEnvVarsInStrList( Config::extraPackageList );
substEnvVarsInString( Config::latexHeaderFile );
substEnvVarsInString( Config::rtfOutputDir );
substEnvVarsInString( Config::rtfStylesheetFile );
substEnvVarsInString( Config::manOutputDir );
substEnvVarsInString( Config::manExtension );
substEnvVarsInStrList( Config::includePath );
substEnvVarsInStrList( Config::predefined );
substEnvVarsInStrList( Config::expandAsDefinedList );
substEnvVarsInStrList( Config::tagFileList );
substEnvVarsInString( Config::genTagFile );
substEnvVarsInString( Config::perlPath );
...
...
src/definition.cpp
View file @
e3baf8c5
...
...
@@ -143,7 +143,7 @@ static bool readCodeFragment(const char *fileName,
{
// skip until the opening bracket or lonely : is found
bool
found
=
FALSE
;
char
cn
;
char
cn
=
0
;
while
(
lineNr
<=
endLine
&&
!
f
.
atEnd
()
&&
!
found
)
{
while
((
c
=
f
.
getch
())
!=
'{'
&&
c
!=
':'
&&
c
!=-
1
)
if
(
c
==
'\n'
)
lineNr
++
;
...
...
src/dot.cpp
View file @
e3baf8c5
...
...
@@ -996,7 +996,8 @@ static void findMaximalDotGraph(DotNode *root,
readBoundingBoxDot
(
baseName
+
"_tmp.dot"
,
&
width
,
&
height
);
width
=
width
*
96
/
72
;
// 96 pixels/inch, 72 points/inch
height
=
height
*
96
/
72
;
// 96 pixels/inch, 72 points/inch
//printf("Found bounding box (%d,%d)\n",width,height);
//printf("Found bounding box (%d,%d) max (%d,%d)\n",width,height,
// Config::maxDotGraphWidth,Config::maxDotGraphHeight);
lastFit
=
(
width
<
Config
::
maxDotGraphWidth
&&
height
<
Config
::
maxDotGraphHeight
);
if
(
lastFit
)
// image is small enough
...
...
src/doxygen.cpp
View file @
e3baf8c5
...
...
@@ -81,10 +81,6 @@ MemberNameDict functionNameDict(10007); // all functions
StringDict
substituteDict
(
1009
);
// class name substitutes
SectionDict
sectionDict
(
257
);
// all page sections
StringDict
excludeNameDict
(
1009
);
// sections
//FileNameDict inputNameDict(1009); // sections
//FileNameDict includeNameDict(1009); // include names
//FileNameDict exampleNameDict(1009); // examples
//FileNameDict imageNameDict(257); // images
FileNameDict
*
inputNameDict
;
// sections
FileNameDict
*
includeNameDict
;
// include names
FileNameDict
*
exampleNameDict
;
// examples
...
...
@@ -96,6 +92,7 @@ FormulaDict formulaNameDict(1009); // the label name of all formulas
StringDict
tagDestinationDict
(
257
);
// all tag locations
// a member group
QDict
<
void
>
compoundKeywordDict
(
7
);
// keywords recognised as compounds
QDict
<
void
>
expandAsDefinedDict
(
257
);
// all macros that should be expanded
OutputList
*
outputList
=
0
;
// list of output generating objects
PageInfo
*
mainPage
=
0
;
...
...
@@ -906,6 +903,15 @@ static MemberDef *addVariableToClass(
root
->
protection
,
fromAnnScope
);
// class friends may be templatized
//QCString name=n;
//int i;
//if (root->type.left(7)=="friend " && (i=name.find('<'))!=-1)
//{
// name=name.left(i);
//}
// add template names, if the class is a non-specialized template
//if (scope.find('<')==-1 && cd->templateArguments())
//{
...
...
@@ -1332,7 +1338,7 @@ static void buildMemberList(Entry *root)
ClassDef
*
cd
=
0
;
// check if this function's parent is a class
QRegExp
re
(
"([a-zA-Z0-9: ]*[ *]*[ ]*"
);
QRegExp
re
(
"([a-z
_
A-Z0-9: ]*[ *]*[ ]*"
);
//printf("root->parent=`%s' cd=%p root->type.find(re,0)=%d\n",
// root->parent->name.data(),getClass(root->parent->name),
// root->type.find(re,0));
...
...
@@ -1896,7 +1902,7 @@ static bool findBaseClassRelation(Entry *root,ClassDef *cd,
templSpec
=
baseClassName
.
mid
(
i
,
e
-
i
);
baseClassName
=
baseClassName
.
left
(
i
)
+
baseClassName
.
right
(
baseClassName
.
length
()
-
e
);
baseClass
=
getResolvedClass
(
baseClassName
);
//printf("baseClass=%p baseClass=%s templSpec=%s\n",
//printf("baseClass=%p
->
baseClass=%s templSpec=%s\n",
// baseClass,baseClassName.data(),templSpec.data());
}
}
...
...
@@ -2823,10 +2829,10 @@ static void findMember(Entry *root,QCString funcDecl,QCString related,bool overl
{
Debug
::
print
(
Debug
::
FindMembers
,
0
,
"1. funcName=`%s'
\n
"
,
funcName
.
data
());
//
if (!funcTempList.isEmpty()) // try with member specialization
//
{
//
mn=memberNameDict[funcName+funcTempList];
//
}
if
(
!
funcTempList
.
isEmpty
())
// try with member specialization
{
mn
=
memberNameDict
[
funcName
+
funcTempList
];
}
if
(
mn
==
0
)
// try without specialization
{
mn
=
memberNameDict
[
funcName
];
...
...
@@ -2978,15 +2984,39 @@ static void findMember(Entry *root,QCString funcDecl,QCString related,bool overl
"Warning: no matching class member found for
\n
%s"
,
fullFuncDecl
.
data
()
);
int
candidates
=
0
;
if
(
mn
->
count
()
>
0
)
{
md
=
mn
->
first
();
while
(
md
)
{
ClassDef
*
cd
=
md
->
memberClass
();
if
(
cd
!=
0
&&
cd
->
name
()
==
className
)
candidates
++
;
md
=
mn
->
next
();
}
}
if
(
candidates
>
0
)
{
warn_cont
(
"Possible candidates:
\n
"
);
md
=
mn
->
first
();
while
(
md
)
{
ClassDef
*
cd
=
md
->
memberClass
();
if
(
!
cd
||
cd
->
name
()
==
className
)
warn_cont
(
" %s
\n
"
,
md
->
declaration
());
if
(
cd
!=
0
&&
cd
->
name
()
==
className
)
{
warn_cont
(
" %s"
,
md
->
declaration
());
#if 0
if (cd->name().at(0)!='@')
{
warn_cont(" in class %s",cd->name().data());
}
if (!md->getDefFileName().isEmpty() && md->getDefLine()!=-1)
{
warn_cont(" defined at line %d of file %s",md->getDefLine(),md->getDefFileName().data());
}
#endif
warn_cont
(
"
\n
"
);
}
md
=
mn
->
next
();
}
}
...
...
@@ -3207,7 +3237,7 @@ static void findMember(Entry *root,QCString funcDecl,QCString related,bool overl
static
void
findMemberDocumentation
(
Entry
*
root
)
{
int
i
=-
1
,
l
;
QRegExp
re
(
"([a-zA-Z0-9: ]*
\\
*+[
\\
*]*"
);
QRegExp
re
(
"([a-z
_
A-Z0-9: ]*
\\
*+[
\\
*]*"
);
Debug
::
print
(
Debug
::
FindMembers
,
0
,
"root->type=`%s' root->inside=`%s' root->name=`%s' root->args=`%s' section=%x root->memSpec=%d root->mGrpId=%d
\n
"
,
root
->
type
.
data
(),
root
->
inside
.
data
(),
root
->
name
.
data
(),
root
->
args
.
data
(),
root
->
section
,
root
->
memSpec
,
root
->
mGrpId
...
...
@@ -4374,6 +4404,12 @@ static void generateGroupDocs()
{
//printf("group %s #members=%d\n",gd->name().data(),gd->countMembers());
if
(
gd
->
countMembers
()
>
0
)
gd
->
writeDocumentation
(
*
outputList
);
else
{
warn
(
gd
->
getDefFileName
(),
gd
->
getDefLine
(),
"Warning: group %s does not have any (documented) members."
,
gd
->
name
().
data
());
}
}
}
...
...
@@ -4540,7 +4576,8 @@ static void generateSearchIndex()
if
(
f
.
open
(
IO_WriteOnly
))
{
QTextStream
t
(
&
f
);
t
<<
Config
::
docURL
<<
endl
<<
Config
::
cgiURL
<<
"/"
<<
Config
::
cgiName
<<
endl
;
t
<<
Config
::
docURL
<<
endl
<<
Config
::
cgiURL
<<
"/"
<<
Config
::
cgiName
<<
endl
;
f
.
close
();
}
else
...
...
@@ -5276,9 +5313,21 @@ int main(int argc,char **argv)
&
inputFiles
,
0
);
s
=
Config
::
inputSources
.
next
();
}
//msg("Input size %d bytes\n",inputSize);
// add predefined macro name to a dictionary
s
=
Config
::
expandAsDefinedList
.
first
();
while
(
s
)
{
if
(
expandAsDefinedDict
[
s
]
==
0
)
{
expandAsDefinedDict
.
insert
(
s
,(
void
*
)
666
);
}
s
=
Config
::
expandAsDefinedList
.
next
();
}
BufStr
input
(
inputSize
+
1
);
// Add one byte extra for \0 termination
// read and preprocess all input files
readFiles
(
input
);
if
(
input
.
isEmpty
())
...
...
@@ -5288,9 +5337,10 @@ int main(int argc,char **argv)
}
else
{
msg
(
"Read %d bytes
\n
"
,
input
.
length
());
msg
(
"Read %d bytes
\n
"
,
input
.
curPos
());
}
/**************************************************************************
* Handle Tag Files *
**************************************************************************/
...
...
src/doxygen.h
View file @
e3baf8c5
...
...
@@ -126,6 +126,7 @@ extern PageInfo *mainPage;
extern
StringDict
tagDestinationDict
;
extern
QIntDict
<
QCString
>
memberHeaderDict
;
// dictionary of the member groups heading
extern
QIntDict
<
QCString
>
memberDocDict
;
// dictionary of the member groups heading
extern
QDict
<
void
>
expandAsDefinedDict
;
extern
int
annotatedClasses
;
extern
int
hierarchyClasses
;
...
...
src/doxytag.l
View file @
e3baf8c5
...
...
@@ -203,7 +203,7 @@ QCString unhtmlify(const char *str)
<Start>^"<h1 align=center>" { // Qt variant
BEGIN( ReadClassName );
}
<Start>^
"<h1>"
{ // Doxygen variant
<Start>^
("<hr>")?"<h1>"
{ // Doxygen variant
BEGIN( ReadClassName );
}
<Start>^"Inherits " {
...
...
@@ -223,7 +223,7 @@ QCString unhtmlify(const char *str)
BEGIN( SkipHTMLTag );
}
<Start>"&"[a-zA-Z]+";"
<Start>[a-z_A-Z][a-z_A-Z0-9]* {
<Start
,SkipPreformated
>[a-z_A-Z][a-z_A-Z0-9]* {
//printf("tag: %s#%s ref: %s word: `%s'\n",
// docBaseLink.data(),docAnchor.data(),
// docRefName.data(),yytext);
...
...
@@ -235,7 +235,7 @@ QCString unhtmlify(const char *str)
<SkipPreformated>"</pre>" {
BEGIN( Start );
}
<SkipPreformated>[^\<]+
<SkipPreformated>[^\<
\n
]+
<CheckConstructor>[a-z_A-Z0-9~:]+ {
QCString s=yytext;
if (s.find("::")!=-1)
...
...
src/htmlgen.cpp
View file @
e3baf8c5
...
...
@@ -80,7 +80,8 @@ void HtmlGenerator::startFile(const char *name,const char *title,bool external)
"<title>"
<<
title
<<
"</title>
\n
"
;
t
<<
"<link "
;
if
(
external
)
t
<<
"doxygen=
\"
_doc:
\"
href=
\"
/"
;
t
<<
"doxygen=
\"
_doc:"
<<
Config
::
docURL
<<
"
\"
href=
\"
"
<<
Config
::
docURL
<<
"/"
;
else
t
<<
"href=
\"
"
;
if
(
Config
::
htmlStyleSheet
.
isEmpty
())
...
...
@@ -147,7 +148,8 @@ void HtmlGenerator::writeFooter(int part,bool external)
t
<<
endl
<<
"<img "
;
if
(
external
)
{
t
<<
"doxygen=
\"
_doc:
\"
src=
\"
/"
;
t
<<
"doxygen=
\"
_doc:"
<<
Config
::
docURL
<<
"
\"
src=
\"
"
<<
Config
::
docURL
<<
"/"
;
}
else
{
...
...
src/index.cpp
View file @
e3baf8c5
...
...
@@ -547,7 +547,7 @@ int countNamespaces()
NamespaceDef
*
nd
;
for
(;(
nd
=
nli
.
current
());
++
nli
)
{
if
(
nd
->
isLinkableInProject
())
count
++
;
if
(
nd
->
isLinkableInProject
()
&&
nd
->
countMembers
()
>
0
)
count
++
;
}
return
count
;
}
...
...
@@ -583,7 +583,7 @@ void writeNamespaceIndex(OutputList &ol)
NamespaceDef
*
nd
=
namespaceList
.
first
();
while
(
nd
)
{
if
(
nd
->
isLinkableInProject
())
if
(
nd
->
isLinkableInProject
()
&&
nd
->
countMembers
()
>
0
)
{
ol
.
writeStartAnnoItem
(
"namespace"
,
nd
->
getOutputFileBase
(),
0
,
nd
->
name
());
ol
.
docify
(
" ("
);
...
...
@@ -1456,7 +1456,6 @@ int countGroups()
for
(;(
gd
=
gli
.
current
());
++
gli
)
{
if
(
gd
->
countMembers
()
>
0
)
count
++
;
gd
=
groupList
.
next
();
}
return
count
;
}
...
...
@@ -1513,7 +1512,6 @@ void writeGroupIndex(OutputList &ol)
htmlHelp
->
incContentsDepth
();
}
parseText
(
ol
,
theTranslator
->
trModulesDescription
());
//ol.newParagraph();
ol
.
endTextBlock
();
writeGroupList
(
ol
);
if
(
hasHtmlHelp
)
...
...
@@ -1521,7 +1519,6 @@ void writeGroupIndex(OutputList &ol)
htmlHelp
->
decContentsDepth
();
}
endFile
(
ol
);
//ol.enable(OutputGenerator::Man);
ol
.
popGeneratorState
();
}
...
...
src/language.cpp
View file @
e3baf8c5
...
...
@@ -15,6 +15,7 @@
*
*/
#include "message.h"
#include "language.h"
#if !defined(ENGLISH_ONLY)
#include "translator_nl.h"
...
...
@@ -51,6 +52,10 @@ bool setTranslator(const char *langName)
}
else
if
(
L_EQUAL
(
"czech"
))
{
#ifndef _WIN32
err
(
"Warning: The Czech translation uses the windows code page 1250 encoding.
\n
"
"Please convert translator_cz.h to ISO Latin-2 to use it under UNIX.
\n
"
);
#endif
theTranslator
=
new
TranslatorCzech
;
}
else
if
(
L_EQUAL
(
"french"
))
...
...
src/latexgen.cpp
View file @
e3baf8c5
...
...
@@ -216,17 +216,37 @@ void LatexGenerator::startIndexSection(IndexSections is)
<<
" linkcolor=blue"
<<
endl
<<
" ]{hyperref}"
<<
endl
;
}
if
(
!
theTranslator
->
latexBabelPackage
().
isEmpty
())
// Try to get the command for switching on the language
// support
QCString
sLanguageSupportCommand
(
theTranslator
->
latexLanguageSupportCommand
());
if
(
!
sLanguageSupportCommand
.
isEmpty
())
{
// The command is not empty. The language does
// not want to use the babel package. Use this
// command instead.
t
<<
sLanguageSupportCommand
;
}
else
{
if
(
theTranslator
->
latexBabelPackage
()
==
"russian"
)
if
(
!
theTranslator
->
latexBabelPackage
().
isEmpty
()
)
{
// The result of the LatexLanguageSupportCommand()
// is empty, which means that the language prefers
// the babel package, or no package is needed at all.
if
(
theTranslator
->
latexBabelPackage
()
==
"russian"
)
{
// The russian babel package also needs an encoding.
// Assume the encoding matched the platform.
#if defined(_WIN32)
t
<<
"
\\
usepackage[cp1251]{inputenc}
\n
"
;
t
<<
"
\\
usepackage[cp1251]{inputenc}
\n
"
;
#else
t
<<
"
\\
usepackage[koi8-r]{inputenc}
\n
"
;
t
<<
"
\\
usepackage[koi8-r]{inputenc}
\n
"
;
#endif
}
t
<<
"
\\
usepackage["
<<
theTranslator
->
latexBabelPackage
()
<<
"]{babel}
\n
"
;
}
t
<<
"
\\
usepackage["
<<
theTranslator
->
latexBabelPackage
()
<<
"]{babel}
\n
"
;
}
const
char
*
s
=
Config
::
extraPackageList
.
first
();
...
...
@@ -425,7 +445,7 @@ void LatexGenerator::endIndexSection(IndexSections is)
bool
found
=
FALSE
;
while
(
gd
&&
!
found
)
{
if
(
gd
->
isLinkableInProject
()
||
gd
->
countMembers
()
>
0
)
if
(
gd
->
countMembers
()
>
0
)
{
t
<<
"}
\n\\
input{"
<<
gd
->
getOutputFileBase
()
<<
"}
\n
"
;
found
=
TRUE
;
...
...
@@ -434,7 +454,7 @@ void LatexGenerator::endIndexSection(IndexSections is)
}
while
(
gd
)
{
if
(
gd
->
isLinkableInProject
()
||
gd
->
countMembers
()
>
0
)
if
(
gd
->
countMembers
()
>
0
)
{
if
(
Config
::
compactLatexFlag
)
t
<<
"
\\
input"
;
else
t
<<
"
\\
include"
;
t
<<
"{"
<<
gd
->
getOutputFileBase
()
<<
"}
\n
"
;
...
...
@@ -602,14 +622,14 @@ void LatexGenerator::writeStyleInfo(int part)
break
;
case
2
:
{
t
<<
" Dimitri van Heesch
(c)
1997-2000}]{}
\n
"
;
t
<<
" Dimitri van Heesch
\\
copyright{}
1997-2000}]{}
\n
"
;
//QCString dtString=dateToString(FALSE);
t
<<
"
\\
lfoot[]{
\\
fancyplain{}{
\\
bfseries
\\
scriptsize "
;
}
break
;
case
4
:
{
t
<<
" Dimitri van Heesch
(c)
1997-2000}}
\n
"
;
t
<<
" Dimitri van Heesch
\\
copyright{}
1997-2000}}
\n
"
;
t
<<
"
\\
cfoot{}
\n
"
;
t
<<
"
\\
newenvironment{CompactList}
\n
"
;
t
<<
"{
\\
begin{list}{}{
\n
"
;
...
...
@@ -812,7 +832,7 @@ void LatexGenerator::startPageRef()
void
LatexGenerator
::
endPageRef
(
const
char
*
clname
,
const
char
*
anchor
)
{
t
<<
"
~
\\
pageref{"
;
t
<<
"
\\
,
\\
pageref{"
;
if
(
clname
)
t
<<
clname
;
if
(
anchor
)
t
<<
"_"
<<
anchor
;
t
<<
"})}"
;
...
...
@@ -998,7 +1018,8 @@ void LatexGenerator::writeSectionRef(const char *,const char *lab,
{
if
(
strcmp
(
lab
,
text
)
!=
0
)
// lab!=text
{
t
<<
"{
\\
bf "
<<
text
<<
" (
\\
ref "
<<
lab
<<
")}}"
;
// todo: don't hardcode p. here!
t
<<
"{
\\
bf "
<<
text
<<
"} (p.
\\
,
\\
pageref{"
<<
lab
<<
"})"
;
}
else
{
...
...
@@ -1022,7 +1043,7 @@ void LatexGenerator::writeSectionRefAnchor(const char *,const char *lab,
startBold
();
docify
(
title
);
endBold
();
t
<<
" (p.
~
\\
pageref{"
<<
lab
<<
"})"
<<
endl
;
t
<<
" (p.
\\
,
\\
pageref{"
<<
lab
<<
"})"
<<
endl
;
}
//void LatexGenerator::docify(const char *str)
...
...
@@ -1033,9 +1054,10 @@ void LatexGenerator::writeSectionRefAnchor(const char *,const char *lab,
//void LatexGenerator::docifyStatic(QTextStream &t,const char *str)
void
LatexGenerator
::
docify
(
const
char
*
str
)
{
static
bool
isJapanese
=
theTranslator
->
latexBabelPackage
()
==
"a4j"
;
static
bool
isRussian
=
theTranslator
->
latexBabelPackage
()
==
"russian"
;
static
bool
isGerman
=
theTranslator
->
latexBabelPackage
()
==
"german"
;
static
bool
isCzech
=
theTranslator
->
idLanguage
()
==
"czech"
;
static
bool
isJapanese
=
theTranslator
->
idLanguage
()
==
"japanese"
;
static
bool
isRussian
=
theTranslator
->
idLanguage
()
==
"russian"
;
static
bool
isGerman
=
theTranslator
->
idLanguage
()
==
"german"
;
if
(
str
)
{
const
unsigned
char
*
p
=
(
const
unsigned
char
*
)
str
;
...
...
src/memberdef.cpp
View file @
e3baf8c5
...
...
@@ -445,8 +445,9 @@ void MemberDef::setMemberDefTemplateArguments(ArgumentList *tal)
void
MemberDef
::
writeLink
(
OutputList
&
ol
,
ClassDef
*
cd
,
NamespaceDef
*
nd
,
FileDef
*
fd
,
GroupDef
*
gd
)
{
Definition
*
d
;
Definition
*
d
=
0
;
if
(
cd
)
d
=
cd
;
else
if
(
nd
)
d
=
nd
;
else
if
(
fd
)
d
=
fd
;
else
if
(
gd
)
d
=
gd
;
if
(
d
==
0
)
return
;
ol
.
writeObjectLink
(
d
->
getReference
(),
d
->
getOutputFileBase
(),
anchor
(),
name
());
}
...
...
src/pre.l
View file @
e3baf8c5
...
...
@@ -758,6 +758,10 @@ Define *newDefine()
def->fileName = g_yyFileName;
def->lineNr = g_yyLineNr;
def->varArgs = g_defVarArgs;
if (!def->name.isEmpty() && expandAsDefinedDict[def->name])
{
def->isPredefined=TRUE;
}
return def;
}
...
...
@@ -1505,7 +1509,8 @@ BN [ \t\r\n]
{
addDefine();
}
if (/*!Config::onlyPredefinedFlag &&*/ (def=g_fileDefineDict->find(g_defName))==0)
def=g_fileDefineDict->find(g_defName);
if (def==0) // new define
{
g_fileDefineDict->insert(g_defName,newDefine());
}
...
...
src/rtfgen.cpp
View file @
e3baf8c5
This diff is collapsed.
Click to expand it.
src/scanner.l
View file @
e3baf8c5
...
...
@@ -1758,12 +1758,11 @@ DOCPARAM ([a-z_A-Z0-9:\<\>\=\.\-]+)|("\"".*"\"")
{
//outDoc->writeSectionRefAnchor(sec->fileName,sec->label,text);
outDoc->writeObjectLink(0,sec->fileName,sec->label,text);
//printf("Writing page ref `%s'\n",sec->label.data());
writePageRef(*outDoc,sec->label,0);
}
else
{
//printf(" ref sec=%p sec->fileName=%s
\n",sec,sec->fileName
.data());
//printf(" ref sec=%p sec->fileName=%s
text=%s\n",sec,sec->fileName.data(),text
.data());
outDoc->writeSectionRef(sec->fileName,sec->label,text);
}
}
...
...
@@ -3246,7 +3245,7 @@ DOCPARAM ([a-z_A-Z0-9:\<\>\=\.\-]+)|("\"".*"\"")
<MemberSpec>([*&]*{BN}*)*{ID}("["[a-z_A-Z0-9]*"]")* { // the [] part could be improved.
lineCount();
int i=0,l=yyleng,j;
while (i<l && (!is
alpha
(yytext[i]))) i++;
while (i<l && (!is
Id
(yytext[i]))) i++;
msName = yytext;
msName = msName.right(msName.length()-i);
j=msName.find("[");
...
...
@@ -3300,7 +3299,14 @@ DOCPARAM ([a-z_A-Z0-9:\<\>\=\.\-]+)|("\"".*"\"")
// current->parent->section & Entry::COMPOUND_MASK)
// varEntry->type+=current->parent->name+"::";
if (isTypedef)
{
varEntry->type.prepend("typedef ");
//printf("current->name = %s %s\n",current->name.data(),msName.data());
if (!current->name.isEmpty() && current->name.at(0)!='@')
{
typedefDict.insert(msName,new QCString(current->name));
}
}
varEntry->type+=current->name+msType;
varEntry->fileName = yyFileName;
varEntry->startLine = yyLineNr;
...
...
@@ -4671,12 +4677,12 @@ DOCPARAM ([a-z_A-Z0-9:\<\>\=\.\-]+)|("\"".*"\"")
<Doc,JavaDoc,LineDoc,ExampleDoc,ClassDocBrief,PageDoc,ClassDoc>("\\\\"|"@@")"f"[$\[\]] {
current->doc += &yytext[1];
}
<Doc,JavaDoc,LineDoc,ExampleDoc,ClassDocBrief,PageDoc,ClassDoc,AfterDoc>{CMD}"f$" {
<Doc,JavaDoc,LineDoc,ExampleDoc,ClassDocBrief,PageDoc,ClassDoc,AfterDoc
,AfterDocLine,AfterDocBrief
>{CMD}"f$" {
lastFormulaContext = YY_START;
formulaText="$";
BEGIN(ReadFormulaShort);
}
<Doc,JavaDoc,LineDoc,ExampleDoc,ClassDocBrief,PageDoc,ClassDoc,AfterDoc>{CMD}"f[" {
<Doc,JavaDoc,LineDoc,ExampleDoc,ClassDocBrief,PageDoc,ClassDoc,AfterDoc
,AfterDocLine,AfterDocBrief
>{CMD}"f[" {
lastFormulaContext = YY_START;
formulaText="\\[";
BEGIN(ReadFormulaLong);
...
...
@@ -4685,7 +4691,9 @@ DOCPARAM ([a-z_A-Z0-9:\<\>\=\.\-]+)|("\"".*"\"")
formulaText+="$";
if (lastFormulaContext==ClassDocBrief ||
lastFormulaContext==LineDoc ||
lastFormulaContext==JavaDoc
lastFormulaContext==JavaDoc ||
lastFormulaContext==AfterDocBrief ||
lastFormulaContext==AfterDocLine
)
current->brief += addFormula();
else
...
...
@@ -4696,7 +4704,9 @@ DOCPARAM ([a-z_A-Z0-9:\<\>\=\.\-]+)|("\"".*"\"")
formulaText+="\\]";
if (lastFormulaContext==ClassDocBrief ||
lastFormulaContext==LineDoc ||
lastFormulaContext==JavaDoc
lastFormulaContext==JavaDoc ||
lastFormulaContext==AfterDocBrief ||
lastFormulaContext==AfterDocLine
)
current->brief += addFormula();
else
...
...
src/suffixtree.cpp
View file @
e3baf8c5
...
...
@@ -38,7 +38,7 @@ bool writeNumber(QFile &f,int num)
(
f
.
putch
(
num
&
0xff
)
==-
1
);
}
bool
writeEncodedNumber
(
QFile
&
f
,
uint
number
)
static
bool
writeEncodedNumber
(
QFile
&
f
,
uint
number
)
{
bool
error
=
FALSE
;
uint
n
=
number
;
...
...
@@ -52,7 +52,7 @@ bool writeEncodedNumber(QFile &f,uint number)
return
error
;
}
int
encodedNumberSize
(
uint
number
)
static
int
encodedNumberSize
(
uint
number
)
{
uint
n
=
number
;
int
size
=
1
;
...
...
src/suffixtree.h
View file @
e3baf8c5
...
...
@@ -29,10 +29,6 @@ class IndexTree;
enum
WordRefMasks
{
WORDINNAME_MASK
=
4
,
INNAME_MASK
=
2
,
FULLWORD_MASK
=
1
};
enum
WordRefBits
{
WORDINNAME_BIT
=
2
,
INNAME_BIT
=
1
,
FULLWORD_BIT
=
0
};
// bool inName;
// bool fullWord;
// bool wordInName;
struct
WordRef
{
int
id
;
...
...
@@ -77,7 +73,6 @@ class SuffixTree
SuffixTree
();
~
SuffixTree
();
void
insertWord
(
const
char
*
word
,
int
index
,
bool
inName
);
//void buildIndex();
void
resolveForwardReferences
();
void
dump
();
int
size
();
// return the size of the (flat) tree in bytes
...
...
src/translator.h
View file @
e3baf8c5
...
...
@@ -25,38 +25,33 @@
class
Translator
{
public
:
//--------------------------------------------------------------------
// NOTICE:
// the following functions are now obsolete: these are no longer used and
// will disappear in future versions. You do not have to translate them!
virtual
QCString
trInherits
()
{
return
"Inherits"
;
}
virtual
QCString
trAnd
()
{
return
"and"
;
}
virtual
QCString
trInheritedBy
()
{
return
"Inherited By"
;
}
virtual
QCString
trReference
()
{
return
"Reference"
;
}
virtual
QCString
trReimplementedFrom
()
{
return
"Reimplemented from"
;
}
virtual
QCString
trReimplementedIn
()
{
return
"Reimplemented in"
;
}
virtual
QCString
trIncludeFile
()
{
return
"Include File"
;
}
virtual
QCString
trGeneratedFrom
(
const
char
*
s
,
bool
single
)
{
QCString
result
=
(
QCString
)
"The documentation for this"
+
s
+
" was generated from the following file"
;
if
(
single
)
result
+=
":"
;
else
result
+=
"s:"
;
return
result
;
}
// end of obsolete functions
//--------------------------------------------------------------------
// --- Language contol methods -------------------
/*! Used for identification of the language. May resemble
* the string returned by latexBabelPackage(), but it is not used
* for the same purpose. The identification should not be translated.
* It should be replaced by the name of the language in English
* (e.g. Czech, Japanese, Russian, etc.). It should be equal to
* the identification in language.h.
*/
virtual
QCString
idLanguage
()
{
return
"english"
;
}
/*! Used to get the command(s) for the language support. This method
* was designed for languages which do not prefer babel package.
* If this methods returns empty string, then the latexBabelPackage()
* method is used to generate the command for using the babel package.
*/
virtual
QCString
latexLanguageSupportCommand
()
{
return
""
;
}
/*! returns the name of the package that is included by LaTeX */
virtual
QCString
latexBabelPackage
()
{
return
""
;
}
// --- Language translation methods -------------------
/*! used in the compound documentation before a list of related functions. */
virtual
QCString
trRelatedFunctions
()
{
return
"Related Functions"
;
}
...
...
src/translator_cz.h
View file @
e3baf8c5
This diff is collapsed.
Click to expand it.
src/translator_de.h
View file @
e3baf8c5
...
...
@@ -25,26 +25,8 @@
class
TranslatorGerman
:
public
Translator
{
public
:
//--------------------------------------------------------------------
// NOTICE:
// the following functions are now obsolete: these are no longer used and
// will disappear in future versions. You do not have to translate them!
QCString
trInherits
()
{
return
"Abgeleitet von "
;
}
QCString
trAnd
()
{
return
"und"
;
}
QCString
trInheritedBy
()
{
return
"Basisklasse für"
;
}
QCString
trReference
()
{
return
"Verweis"
;
}
QCString
trReimplementedFrom
()
{
return
"Implementiert von"
;
}
QCString
trReimplementedIn
()
{
return
"erneute Implementation in"
;
}
QCString
trIncludeFile
()
{
return
"Include-Datei"
;
}
// end of obsolete functions
//--------------------------------------------------------------------
QCString
idLanguage
()
{
return
"german"
;
}
QCString
latexBabelPackage
()
// returns the name of the package that is included by LaTeX
...
...
src/translator_es.h
View file @
e3baf8c5
...
...
@@ -30,34 +30,8 @@
class
TranslatorSpanish
:
public
Translator
{
public
:
//--------------------------------------------------------------------
// NOTICE:
// the following functions are now obsolete: these are no longer used and
// will disappear in future versions. You do not have to translate them!
virtual
QCString
trInherits
()
{
return
"Inherits"
;
}
virtual
QCString
trAnd
()
{
return
"y"
;
}
virtual
QCString
trInheritedBy
()
{
return
"Inherited By"
;
}
virtual
QCString
trReference
()
{
return
"Referencia"
;
}
virtual
QCString
trReimplementedFrom
()
{
return
"Reimplementado de"
;
}
virtual
QCString
trReimplementedIn
()
{
return
"Reimplementado en"
;
}
virtual
QCString
trIncludeFile
()
{
return
"Include File"
;
}
virtual
QCString
trGeneratedFrom
(
const
char
*
s
,
bool
single
)
{
QCString
result
=
(
QCString
)
"The documentation for this"
+
s
+
" was generated from the following file"
;
if
(
single
)
result
+=
":"
;
else
result
+=
"s:"
;
return
result
;
}
// end of obsolete functions
//--------------------------------------------------------------------
virtual
QCString
idLanguage
()
{
return
"spanish"
;
}
/*! returns the name of the package that is included by LaTeX */
virtual
QCString
latexBabelPackage
()
{
return
""
;
}
...
...
src/translator_fi.h
View file @
e3baf8c5
...
...
@@ -79,6 +79,8 @@ positiiviset kommentit otetaan ilolla vastaan.
class
TranslatorFinnish
:
public
Translator
{
public
:
QCString
idLanguage
()
{
return
"finnish"
;
}
QCString
latexBabelPackage
()
// returns the name of the package that is included by LaTeX
{
return
"finnish"
;
}
...
...
src/translator_fr.h
View file @
e3baf8c5
...
...
@@ -25,6 +25,8 @@
class
TranslatorFrench
:
public
Translator
{
public
:
QCString
idLanguage
()
{
return
"french"
;
}
/*! returns the name of the package that is included by LaTeX */
QCString
latexBabelPackage
()
{
return
"french"
;
}
...
...
src/translator_hr.h
View file @
e3baf8c5
...
...
@@ -23,6 +23,8 @@
class
TranslatorCroatian
:
public
Translator
{
public
:
QCString
idLanguage
()
{
return
"croatian"
;
}
QCString
latexBabelPackage
()
{
return
"croatian"
;
}
QCString
trRelatedFunctions
()
...
...
src/translator_it.h
View file @
e3baf8c5
...
...
@@ -33,34 +33,8 @@
class
TranslatorItalian
:
public
Translator
{
public
:
//--------------------------------------------------------------------
// NOTICE:
// the following functions are now obsolete: these are no longer used and
// will disappear in future versions. You do not have to translate them!
QCString
trInherits
()
{
return
"Inherits"
;
}
QCString
trAnd
()
{
return
"and"
;
}
QCString
trInheritedBy
()
{
return
"Inherited By"
;
}
QCString
trReference
()
{
return
"Reference"
;
}
QCString
trReimplementedFrom
()
{
return
"Reimplemented from"
;
}
QCString
trReimplementedIn
()
{
return
"Reimplemented in"
;
}
QCString
trIncludeFile
()
{
return
"Include File"
;
}
QCString
trGeneratedFrom
(
const
char
*
s
,
bool
single
)
{
QCString
result
=
(
QCString
)
"The documentation for this"
+
s
+
" was generated from the following file"
;
if
(
single
)
result
+=
":"
;
else
result
+=
"s:"
;
return
result
;
}
// end of obsolete functions
//--------------------------------------------------------------------
QCString
idLanguage
()
{
return
"italian"
;
}
/*! returns the name of the package that is included by LaTeX */
QCString
latexBabelPackage
()
{
return
"italian"
;
}
...
...
src/translator_jp.h
View file @
e3baf8c5
...
...
@@ -23,33 +23,8 @@
class
TranslatorJapanese
:
public
Translator
{
public
:
//--------------------------------------------------------------------
// NOTICE:
// the following functions are now obsolete: these are no longer used and
// will disappear in future versions. You do not have to translate them!
QCString
trInherits
()
{
return
"継承"
;
}
QCString
trAnd
()
{
return
"と"
;
}
QCString
trInheritedBy
()
{
return
"次に継承されています。"
;
}
QCString
trReference
()
{
return
"リファレンス"
;
}
QCString
trReimplementedFrom
()
{
return
"次を再定義"
;
}
QCString
trReimplementedIn
()
{
return
"次で再定義"
;
}
QCString
trIncludeFile
()
{
return
"インクルードファイル"
;
}
QCString
trGeneratedFrom
(
const
char
*
s
,
bool
)
{
QCString
result
=
(
QCString
)
"この"
+
s
+
"に対するドキュメントは以下のファイルから生成されました。"
;
return
result
;
}
// end of obsolete functions
//--------------------------------------------------------------------
QCString
idLanguage
()
{
return
"japanese"
;
}
/*! returns the name of the package that is included by LaTeX */
QCString
latexBabelPackage
()
{
return
"a4j"
;
}
...
...
src/translator_nl.h
View file @
e3baf8c5
...
...
@@ -23,6 +23,8 @@
class
TranslatorDutch
:
public
Translator
{
public
:
QCString
idLanguage
()
{
return
"dutch"
;
}
QCString
latexBabelPackage
()
{
return
"dutch"
;
}
QCString
trRelatedFunctions
()
...
...
src/translator_ru.h
View file @
e3baf8c5
...
...
@@ -22,6 +22,8 @@
class
TranslatorRussian
:
public
Translator
{
public
:
QCString
idLanguage
()
{
return
"russian"
;
}
QCString
latexBabelPackage
()
{
return
"russian"
;
}
QCString
trRelatedFunctions
()
...
...
src/translator_se.h
View file @
e3baf8c5
...
...
@@ -67,6 +67,8 @@ Problem!
class
TranslatorSwedish
:
public
Translator
{
public
:
QCString
idLanguage
()
{
return
"swedish"
;
}
QCString
latexBabelPackage
()
{
return
"swedish"
;
}
...
...
src/util.cpp
View file @
e3baf8c5
...
...
@@ -212,6 +212,10 @@ ClassDef *getResolvedClass(const char *name)
QCString
*
subst
=
typedefDict
[
name
];
if
(
subst
)
// there is a typedef with this name
{
if
(
*
subst
==
name
)
// avoid resolving typedef struct foo foo;
{
return
classDict
[
name
];
}
int
count
=
0
;
// recursion detection guard
QCString
*
newSubst
;
while
((
newSubst
=
typedefDict
[
*
subst
])
&&
count
<
10
)
...
...
@@ -241,11 +245,20 @@ QCString removeRedundantWhiteSpace(const QCString &s)
if
(
s
.
isEmpty
())
return
s
;
QCString
result
;
uint
i
;
for
(
i
=
0
;
i
<
s
.
length
();
i
++
)
uint
l
=
s
.
length
();
for
(
i
=
0
;
i
<
l
;
i
++
)
{
char
c
=
s
.
at
(
i
);
if
(
c
!=
' '
||
(
i
!=
0
&&
i
!=
s
.
length
()
-
1
&&
isId
(
s
.
at
(
i
-
1
))
&&
isId
(
s
.
at
(
i
+
1
)))
if
(
i
<
l
-
2
&&
c
==
'<'
&&
s
.
at
(
i
+
1
)
!=
'<'
)
{
result
+=
"< "
;
}
else
if
(
i
>
0
&&
c
==
'>'
&&
s
.
at
(
i
-
1
)
!=
'>'
)
{
result
+=
" >"
;
}
else
if
(
c
!=
' '
||
(
i
!=
0
&&
i
!=
l
-
1
&&
isId
(
s
.
at
(
i
-
1
))
&&
isId
(
s
.
at
(
i
+
1
)))
)
{
if
((
c
==
'*'
||
c
==
'&'
||
c
==
'@'
)
&&
...
...
@@ -547,7 +560,7 @@ void writeQuickLinks(OutputList &ol,bool compact,bool ext)
//bool texEnabled = ol.isEnabled(OutputGenerator::Latex);
ol
.
disableAllBut
(
OutputGenerator
::
Html
);
QCString
extLink
,
absPath
;
if
(
ext
)
{
extLink
=
"_doc"
;
absPath
=
"/"
;
}
if
(
ext
)
{
extLink
=
"_doc"
;
absPath
=
Config
::
docURL
+
"/"
;
}
//if (manEnabled) ol.disable(OutputGenerator::Man);
//if (texEnabled) ol.disable(OutputGenerator::Latex);
if
(
compact
)
ol
.
startCenter
();
else
ol
.
startItemList
();
...
...
@@ -651,7 +664,7 @@ void writeQuickLinks(OutputList &ol,bool compact,bool ext)
if
(
Config
::
searchEngineFlag
)
{
if
(
!
compact
)
ol
.
writeListItem
();
ol
.
startQuickIndexItem
(
"_cgi"
,
""
);
ol
.
startQuickIndexItem
(
"_cgi"
,
Config
::
cgiURL
+
"/"
+
Config
::
cgiName
);
parseText
(
ol
,
theTranslator
->
trSearch
());
ol
.
endQuickIndexItem
();
}
...
...
@@ -968,6 +981,8 @@ static void trimNamespaceScope(QCString &t1,QCString &t2)
void
stripIrrelevantConstVolatile
(
QCString
&
s
)
{
int
i
,
j
;
if
(
s
==
"const"
)
{
s
.
resize
(
0
);
return
;
}
if
(
s
==
"volatile"
)
{
s
.
resize
(
0
);
return
;
}
i
=
s
.
find
(
"const "
);
if
(
i
!=-
1
)
{
...
...
@@ -2323,8 +2338,10 @@ QCString insertTemplateSpecifierInScope(const QCString &scope,const QCString &te
QCString
stripScope
(
const
char
*
name
)
{
QCString
result
=
name
;
int
i
=
result
.
findRev
(
"::"
);
if
(
i
!=-
1
)
int
ti
=
result
.
find
(
'<'
);
// find start of template
if
(
ti
==-
1
)
ti
=
result
.
length
();
int
i
=
ti
>
2
?
result
.
findRev
(
"::"
,
ti
-
2
)
:
-
1
;
// find scope just before template
if
(
i
!=-
1
)
// found scope
{
result
=
result
.
right
(
result
.
length
()
-
i
-
2
);
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment