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
66db5d84
Commit
66db5d84
authored
May 26, 2002
by
dimitri
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Release-1.2.16-20020526
parent
5a7cb538
Changes
19
Hide whitespace changes
Inline
Side-by-side
Showing
19 changed files
with
272 additions
and
161 deletions
+272
-161
INSTALL
INSTALL
+2
-2
README
README
+2
-2
VERSION
VERSION
+1
-1
mainhandler.cpp
addon/doxmlparser/src/mainhandler.cpp
+13
-5
mainhandler.h
addon/doxmlparser/src/mainhandler.h
+1
-0
install.doc
doc/install.doc
+3
-0
doxygen.spec
packages/rpm/doxygen.spec
+1
-1
dot.cpp
src/dot.cpp
+21
-9
doxygen.cpp
src/doxygen.cpp
+68
-37
htmlgen.cpp
src/htmlgen.cpp
+14
-12
htmlgen.h
src/htmlgen.h
+2
-2
index.cpp
src/index.cpp
+16
-16
memberdef.cpp
src/memberdef.cpp
+1
-0
rtfgen.h
src/rtfgen.h
+2
-2
scanner.l
src/scanner.l
+1
-6
translator_en.h
src/translator_en.h
+1
-1
util.cpp
src/util.cpp
+91
-41
util.h
src/util.h
+2
-1
xmlgen.cpp
src/xmlgen.cpp
+30
-23
No files found.
INSTALL
View file @
66db5d84
DOXYGEN Version 1.2.16
DOXYGEN Version 1.2.16
-20020526
Please read the installation section of the manual for instructions.
Please read the installation section of the manual for instructions.
--------
--------
Dimitri van Heesch (2
0
May 2002)
Dimitri van Heesch (2
6
May 2002)
README
View file @
66db5d84
DOXYGEN Version 1.2.16
DOXYGEN Version 1.2.16
_20020526
Please read INSTALL for compilation instructions.
Please read INSTALL for compilation instructions.
...
@@ -17,4 +17,4 @@ to subscribe to the lists or to visit the archives.
...
@@ -17,4 +17,4 @@ to subscribe to the lists or to visit the archives.
Enjoy,
Enjoy,
Dimitri van Heesch (dimitri@stack.nl) (2
0
May 2002)
Dimitri van Heesch (dimitri@stack.nl) (2
6
May 2002)
VERSION
View file @
66db5d84
1.2.16
1.2.16
-20020526
addon/doxmlparser/src/mainhandler.cpp
View file @
66db5d84
...
@@ -100,6 +100,7 @@ MainHandler::MainHandler() : m_compoundDict(2999), m_compoundNameDict(2999),
...
@@ -100,6 +100,7 @@ MainHandler::MainHandler() : m_compoundDict(2999), m_compoundNameDict(2999),
addStartHandler
(
"name"
,
this
,
&
MainHandler
::
startName
);
addStartHandler
(
"name"
,
this
,
&
MainHandler
::
startName
);
addEndHandler
(
"name"
,
this
,
&
MainHandler
::
endName
);
addEndHandler
(
"name"
,
this
,
&
MainHandler
::
endName
);
m_curCompound
=
0
;
m_curCompound
=
0
;
m_insideMember
=
FALSE
;
}
}
MainHandler
::~
MainHandler
()
MainHandler
::~
MainHandler
()
...
@@ -110,7 +111,7 @@ MainHandler::~MainHandler()
...
@@ -110,7 +111,7 @@ MainHandler::~MainHandler()
void
MainHandler
::
startCompound
(
const
QXmlAttributes
&
attrib
)
void
MainHandler
::
startCompound
(
const
QXmlAttributes
&
attrib
)
{
{
m_curCompound
=
new
CompoundEntry
(
257
);
m_curCompound
=
new
CompoundEntry
(
257
);
m_curCompound
->
id
=
attrib
.
value
(
"id"
);
m_curCompound
->
id
=
attrib
.
value
(
"
ref
id"
);
m_compounds
.
append
(
m_curCompound
);
m_compounds
.
append
(
m_curCompound
);
m_compoundDict
.
insert
(
m_curCompound
->
id
,
m_curCompound
);
m_compoundDict
.
insert
(
m_curCompound
->
id
,
m_curCompound
);
}
}
...
@@ -122,21 +123,27 @@ void MainHandler::startName(const QXmlAttributes& /*attrib*/)
...
@@ -122,21 +123,27 @@ void MainHandler::startName(const QXmlAttributes& /*attrib*/)
void
MainHandler
::
endName
()
void
MainHandler
::
endName
()
{
{
m_curCompound
->
name
=
m_curString
;
if
(
m_insideMember
)
{
m_curMember
->
name
=
m_curString
;
}
else
{
m_curCompound
->
name
=
m_curString
;
}
}
}
void
MainHandler
::
startMember
(
const
QXmlAttributes
&
attrib
)
void
MainHandler
::
startMember
(
const
QXmlAttributes
&
attrib
)
{
{
m_
curString
=
""
;
m_
insideMember
=
TRUE
;
m_curMember
=
new
MemberEntry
;
m_curMember
=
new
MemberEntry
;
m_curMember
->
id
=
attrib
.
value
(
"id"
);
m_curMember
->
id
=
attrib
.
value
(
"
ref
id"
);
m_curMember
->
compound
=
m_curCompound
;
m_curMember
->
compound
=
m_curCompound
;
m_memberDict
.
insert
(
m_curMember
->
id
,
m_curMember
);
m_memberDict
.
insert
(
m_curMember
->
id
,
m_curMember
);
}
}
void
MainHandler
::
endMember
()
void
MainHandler
::
endMember
()
{
{
m_curMember
->
name
=
m_curString
;
m_curCompound
->
memberDict
.
insert
(
m_curString
,
m_curMember
);
m_curCompound
->
memberDict
.
insert
(
m_curString
,
m_curMember
);
QList
<
CompoundEntry
>
*
cel
=
0
;
QList
<
CompoundEntry
>
*
cel
=
0
;
if
((
cel
=
m_memberNameDict
.
find
(
m_curString
))
==
0
)
if
((
cel
=
m_memberNameDict
.
find
(
m_curString
))
==
0
)
...
@@ -145,6 +152,7 @@ void MainHandler::endMember()
...
@@ -145,6 +152,7 @@ void MainHandler::endMember()
m_memberNameDict
.
insert
(
m_curString
,
cel
);
m_memberNameDict
.
insert
(
m_curString
,
cel
);
}
}
cel
->
append
(
m_curCompound
);
cel
->
append
(
m_curCompound
);
m_insideMember
=
FALSE
;
}
}
void
MainHandler
::
setDebugLevel
(
int
level
)
void
MainHandler
::
setDebugLevel
(
int
level
)
...
...
addon/doxmlparser/src/mainhandler.h
View file @
66db5d84
...
@@ -76,6 +76,7 @@ class MainHandler : public IDoxygen, public BaseHandler<MainHandler>
...
@@ -76,6 +76,7 @@ class MainHandler : public IDoxygen, public BaseHandler<MainHandler>
QDict
<
QList
<
CompoundEntry
>
>
m_memberNameDict
;
QDict
<
QList
<
CompoundEntry
>
>
m_memberNameDict
;
QString
m_xmlDirName
;
QString
m_xmlDirName
;
QDict
<
CompoundHandler
>
m_compoundsLoaded
;
QDict
<
CompoundHandler
>
m_compoundsLoaded
;
bool
m_insideMember
;
};
};
#endif
#endif
doc/install.doc
View file @
66db5d84
...
@@ -395,6 +395,9 @@ Here is what is required:
...
@@ -395,6 +395,9 @@ Here is what is required:
download only a <a href="http://www.doxygen.org/dl/cygwin_tools.zip">small subset</a>
download only a <a href="http://www.doxygen.org/dl/cygwin_tools.zip">small subset</a>
\latexonly(see {\tt http://www.doxygen.org/dl/cygwin\_tools.zip})\endlatexonly
\latexonly(see {\tt http://www.doxygen.org/dl/cygwin\_tools.zip})\endlatexonly
of the cygwin tools that I put together just to compile doxygen.
of the cygwin tools that I put together just to compile doxygen.
As a third alternative one could use the GNUWin32 tools that can be
found at http://gnuwin32.sourceforge.net/
Make sure the <code>BISONLIB</code> environment variable points to the
Make sure the <code>BISONLIB</code> environment variable points to the
location where the files <code>bison.simple</code> and
location where the files <code>bison.simple</code> and
...
...
packages/rpm/doxygen.spec
View file @
66db5d84
Summary: A documentation system for C/C++.
Summary: A documentation system for C/C++.
Name: doxygen
Name: doxygen
Version: 1.2.16
Version: 1.2.16
_20020526
Release: 1
Release: 1
Epoch: 1
Epoch: 1
Source0: ftp://ftp.stack.nl/pub/users/dimitri/%{name}-%{version}.src.tar.gz
Source0: ftp://ftp.stack.nl/pub/users/dimitri/%{name}-%{version}.src.tar.gz
...
...
src/dot.cpp
View file @
66db5d84
...
@@ -769,11 +769,11 @@ void DotGfxHierarchyTable::writeGraph(QTextStream &out,const char *path)
...
@@ -769,11 +769,11 @@ void DotGfxHierarchyTable::writeGraph(QTextStream &out,const char *path)
return
;
return
;
}
}
QCString
mapLabel
=
convertNameToFile
(
n
->
m_label
);
QCString
mapLabel
=
convertNameToFile
(
n
->
m_label
);
out
<<
"<tr><td><img src=
\"
"
<<
imgName
<<
"
\"
border=
\"
0
\"
usemap=
\"
#"
out
<<
"<tr><td><img src=
\"
"
<<
imgName
<<
"
\"
border=
\"
0
\"
alt=
\"\"
usemap=
\"
#"
<<
mapLabel
<<
"_map
\"
>
</td></tr>
"
<<
endl
;
<<
mapLabel
<<
"_map
\"
>"
<<
endl
;
out
<<
"<map name=
\"
"
<<
mapLabel
<<
"_map
\"
>"
<<
endl
;
out
<<
"<map name=
\"
"
<<
mapLabel
<<
"_map
\"
>"
<<
endl
;
convertMapFile
(
out
,
mapName
);
convertMapFile
(
out
,
mapName
);
out
<<
"</map>"
<<
endl
;
out
<<
"</map>
</td></tr>
"
<<
endl
;
if
(
Config_getBool
(
"DOT_CLEANUP"
))
thisDir
.
remove
(
dotName
);
if
(
Config_getBool
(
"DOT_CLEANUP"
))
thisDir
.
remove
(
dotName
);
thisDir
.
remove
(
mapName
);
thisDir
.
remove
(
mapName
);
}
}
...
@@ -1378,9 +1378,15 @@ QCString DotClassGraph::writeGraph(QTextStream &out,
...
@@ -1378,9 +1378,15 @@ QCString DotClassGraph::writeGraph(QTextStream &out,
break
;
break
;
}
}
out
<<
"
\"
></center>"
<<
endl
;
out
<<
"
\"
></center>"
<<
endl
;
out
<<
"<map name=
\"
"
<<
mapLabel
<<
"
\"
>"
<<
endl
;
QString
tmpstr
;
convertMapFile
(
out
,
baseName
+
".map"
);
QTextOStream
tmpout
(
&
tmpstr
);
out
<<
"</map>"
<<
endl
;
convertMapFile
(
tmpout
,
baseName
+
".map"
);
if
(
!
tmpstr
.
isEmpty
())
{
out
<<
"<map name=
\"
"
<<
mapLabel
<<
"
\"
>"
<<
endl
;
out
<<
tmpstr
;
out
<<
"</map>"
<<
endl
;
}
thisDir
.
remove
(
baseName
+
".map"
);
thisDir
.
remove
(
baseName
+
".map"
);
}
}
}
}
...
@@ -1601,9 +1607,15 @@ QCString DotInclDepGraph::writeGraph(QTextStream &out,
...
@@ -1601,9 +1607,15 @@ QCString DotInclDepGraph::writeGraph(QTextStream &out,
if
(
m_inverse
)
out
<<
"Included by dependency graph"
;
else
out
<<
"Include dependency graph"
;
if
(
m_inverse
)
out
<<
"Included by dependency graph"
;
else
out
<<
"Include dependency graph"
;
out
<<
"
\"
>"
;
out
<<
"
\"
>"
;
out
<<
"</center>"
<<
endl
;
out
<<
"</center>"
<<
endl
;
out
<<
"<map name=
\"
"
<<
mapName
<<
"_map
\"
>"
<<
endl
;
QString
tmpstr
;
convertMapFile
(
out
,
baseName
+
".map"
);
QTextOStream
tmpout
(
&
tmpstr
);
out
<<
"</map>"
<<
endl
;
convertMapFile
(
tmpout
,
baseName
+
".map"
);
if
(
!
tmpstr
.
isEmpty
())
{
out
<<
"<map name=
\"
"
<<
mapName
<<
"
\"
>"
<<
endl
;
out
<<
tmpstr
;
out
<<
"</map>"
<<
endl
;
}
thisDir
.
remove
(
baseName
+
".map"
);
thisDir
.
remove
(
baseName
+
".map"
);
}
}
}
}
...
...
src/doxygen.cpp
View file @
66db5d84
...
@@ -1908,6 +1908,24 @@ static void buildFunctionList(Entry *root)
...
@@ -1908,6 +1908,24 @@ static void buildFunctionList(Entry *root)
md
->
setDocsForDefinition
(
!
root
->
proto
);
md
->
setDocsForDefinition
(
!
root
->
proto
);
ArgumentList
*
argList
=
new
ArgumentList
;
ArgumentList
*
argList
=
new
ArgumentList
;
stringToArgumentList
(
root
->
args
,
argList
);
stringToArgumentList
(
root
->
args
,
argList
);
//printf("root->argList=%p\n",root->argList);
//if (root->argList)
//{
// ArgumentListIterator ali1(*root->argList);
// ArgumentListIterator ali2(*argList);
// Argument *sa,*da;
// for (;(sa=ali1.current()) && (da=ali2.current());++ali1,++ali2)
// {
// printf("sa->name=%s (doc=%s) da->name=%s (doc=%s)\n",
// sa->name.data(),sa->docs.data(),
// da->name.data(),da->docs.data()
// );
// if (!sa->docs.isEmpty() && da->docs.isEmpty())
// {
// da->docs=sa->docs.copy();
// }
// }
//}
if
(
root
->
proto
)
if
(
root
->
proto
)
{
{
md
->
setDeclArgumentList
(
argList
);
md
->
setDeclArgumentList
(
argList
);
...
@@ -1957,6 +1975,9 @@ static void buildFunctionList(Entry *root)
...
@@ -1957,6 +1975,9 @@ static void buildFunctionList(Entry *root)
root
->
type
,
name
,
root
->
args
,
root
->
exception
,
root
->
type
,
name
,
root
->
args
,
root
->
exception
,
root
->
protection
,
root
->
virt
,
root
->
stat
,
FALSE
,
root
->
protection
,
root
->
virt
,
root
->
stat
,
FALSE
,
MemberDef
::
Function
,
tArgList
,
root
->
argList
);
MemberDef
::
Function
,
tArgList
,
root
->
argList
);
//printf("new member %p\n",md);
if
(
root
->
tagInfo
)
if
(
root
->
tagInfo
)
{
{
md
->
setAnchor
(
root
->
tagInfo
->
anchor
);
md
->
setAnchor
(
root
->
tagInfo
->
anchor
);
...
@@ -2154,6 +2175,33 @@ static void findFriends()
...
@@ -2154,6 +2175,33 @@ static void findFriends()
//----------------------------------------------------------------------
//----------------------------------------------------------------------
static
void
transferArgumentDocumentation
(
ArgumentList
*
decAl
,
ArgumentList
*
defAl
)
{
if
(
decAl
&&
defAl
)
{
ArgumentListIterator
decAli
(
*
decAl
);
ArgumentListIterator
defAli
(
*
defAl
);
Argument
*
decA
,
*
defA
;
for
(
decAli
.
toFirst
(),
defAli
.
toFirst
();
(
decA
=
decAli
.
current
())
&&
(
defA
=
defAli
.
current
());
++
decAli
,
++
defAli
)
{
//printf("Argument decA->name=%s (doc=%s) defA->name=%s (doc=%s)\n",
// decA->name.data(),decA->docs.data(),
// defA->name.data(),defA->docs.data()
// );
if
(
decA
->
docs
.
isEmpty
()
&&
!
defA
->
docs
.
isEmpty
())
{
decA
->
docs
=
defA
->
docs
.
copy
();
}
else
if
(
defA
->
docs
.
isEmpty
()
&&
!
decA
->
docs
.
isEmpty
())
{
defA
->
docs
=
decA
->
docs
.
copy
();
}
}
}
}
static
void
transferFunctionDocumentation
()
static
void
transferFunctionDocumentation
()
{
{
//printf("transferFunctionDocumentation()\n");
//printf("transferFunctionDocumentation()\n");
...
@@ -2185,23 +2233,15 @@ static void transferFunctionDocumentation()
...
@@ -2185,23 +2233,15 @@ static void transferFunctionDocumentation()
matchArguments
(
mdef
->
argumentList
(),
mdec
->
argumentList
())
matchArguments
(
mdef
->
argumentList
(),
mdec
->
argumentList
())
)
/* match found */
)
/* match found */
{
{
/* FIX: Always match declaration and definition.
//printf("Found member %s: definition in %s (doc=`%s') and declaration in %s (doc=`%s')\n",
FileDef *fdef = mdef->getFileDef();
FileDef *fdec = mdec->getFileDef();
// check if not in different but documented files
if (Config_getBool("EXTRACT_ALL") ||
fdef==fdec ||
(fdef!=0 && (!fdef->hasDocumentation() || !fdec->hasDocumentation()))
)
*/
{
//printf("Found member %s: definition in %s (doc=%d) and declation in %s (doc=%d)\n",
// mn->memberName(),
// mn->memberName(),
// mdef->getFileDef()->name().data(),
!mdef->documentation().isEmpty
(),
// mdef->getFileDef()->name().data(),
mdef->documentation().data
(),
// mdec->getFileDef()->name().data(),
!mdec->documentation().isEmpty
()
// mdec->getFileDef()->name().data(),
mdec->documentation().data
()
// );
// );
// first merge argument documentation
transferArgumentDocumentation
(
mdec
->
argumentList
(),
mdef
->
argumentList
());
/* copy documentation between function definition and declaration */
/* copy documentation between function definition and declaration */
if
(
!
mdec
->
briefDescription
().
isEmpty
())
if
(
!
mdec
->
briefDescription
().
isEmpty
())
{
{
...
@@ -2218,6 +2258,10 @@ static void transferFunctionDocumentation()
...
@@ -2218,6 +2258,10 @@ static void transferFunctionDocumentation()
mdec
->
setDocsForDefinition
(
mdef
->
isDocsForDefinition
());
mdec
->
setDocsForDefinition
(
mdef
->
isDocsForDefinition
());
ArgumentList
*
mdefAl
=
new
ArgumentList
;
ArgumentList
*
mdefAl
=
new
ArgumentList
;
stringToArgumentList
(
mdef
->
argsString
(),
mdefAl
);
stringToArgumentList
(
mdef
->
argsString
(),
mdefAl
);
if
(
mdef
->
argumentList
())
{
transferArgumentDocumentation
(
mdef
->
argumentList
(),
mdefAl
);
}
mdec
->
setArgumentList
(
mdefAl
);
mdec
->
setArgumentList
(
mdefAl
);
}
}
else
if
(
!
mdec
->
documentation
().
isEmpty
())
else
if
(
!
mdec
->
documentation
().
isEmpty
())
...
@@ -2227,6 +2271,10 @@ static void transferFunctionDocumentation()
...
@@ -2227,6 +2271,10 @@ static void transferFunctionDocumentation()
mdef
->
setDocsForDefinition
(
mdec
->
isDocsForDefinition
());
mdef
->
setDocsForDefinition
(
mdec
->
isDocsForDefinition
());
ArgumentList
*
mdecAl
=
new
ArgumentList
;
ArgumentList
*
mdecAl
=
new
ArgumentList
;
stringToArgumentList
(
mdec
->
argsString
(),
mdecAl
);
stringToArgumentList
(
mdec
->
argsString
(),
mdecAl
);
if
(
mdec
->
argumentList
())
{
transferArgumentDocumentation
(
mdec
->
argumentList
(),
mdecAl
);
}
mdef
->
setDeclArgumentList
(
mdecAl
);
mdef
->
setDeclArgumentList
(
mdecAl
);
}
}
if
(
mdec
->
getStartBodyLine
()
!=-
1
&&
mdef
->
getStartBodyLine
()
==-
1
)
if
(
mdec
->
getStartBodyLine
()
!=-
1
&&
mdef
->
getStartBodyLine
()
==-
1
)
...
@@ -2244,27 +2292,6 @@ static void transferFunctionDocumentation()
...
@@ -2244,27 +2292,6 @@ static void transferFunctionDocumentation()
mdec
->
mergeMemberSpecifiers
(
mdef
->
getMemberSpecifiers
());
mdec
->
mergeMemberSpecifiers
(
mdef
->
getMemberSpecifiers
());
mdef
->
mergeMemberSpecifiers
(
mdec
->
getMemberSpecifiers
());
mdef
->
mergeMemberSpecifiers
(
mdec
->
getMemberSpecifiers
());
ArgumentList
*
decAl
=
mdec
->
argumentList
();
ArgumentList
*
defAl
=
mdef
->
argumentList
();
if
(
decAl
&&
defAl
)
{
ArgumentListIterator
decAli
(
*
decAl
);
ArgumentListIterator
defAli
(
*
defAl
);
Argument
*
decA
,
*
defA
;
for
(
decAli
.
toFirst
(),
defAli
.
toFirst
();
(
decA
=
decAli
.
current
())
&&
(
defA
=
defAli
.
current
());
++
decAli
,
++
defAli
)
{
if
(
decA
->
docs
.
isEmpty
()
&&
!
defA
->
docs
.
isEmpty
())
{
decA
->
docs
=
defA
->
docs
.
copy
();
}
else
if
(
defA
->
docs
.
isEmpty
()
&&
!
decA
->
docs
.
isEmpty
())
{
defA
->
docs
=
decA
->
docs
.
copy
();
}
}
}
// copy group info.
// copy group info.
//if (mdec->getGroupDef()==0 && mdef->getGroupDef()!=0)
//if (mdec->getGroupDef()==0 && mdef->getGroupDef()!=0)
...
@@ -2281,7 +2308,6 @@ static void transferFunctionDocumentation()
...
@@ -2281,7 +2308,6 @@ static void transferFunctionDocumentation()
int
testId
=
QMAX
(
mdec
->
testId
(),
mdef
->
testId
());
int
testId
=
QMAX
(
mdec
->
testId
(),
mdef
->
testId
());
int
bugId
=
QMAX
(
mdec
->
bugId
()
,
mdef
->
bugId
()
);
int
bugId
=
QMAX
(
mdec
->
bugId
()
,
mdef
->
bugId
()
);
mdec
->
setRefItems
(
todoId
,
testId
,
bugId
);
mdec
->
setRefItems
(
todoId
,
testId
,
bugId
);
}
}
}
}
}
}
}
...
@@ -2552,6 +2578,7 @@ static void findUsedClassesForClass(Entry *root,
...
@@ -2552,6 +2578,7 @@ static void findUsedClassesForClass(Entry *root,
if
(
usedCd
)
if
(
usedCd
)
{
{
if
(
isArtificial
)
usedCd
->
setClassIsArtificial
();
if
(
isArtificial
)
usedCd
->
setClassIsArtificial
();
Debug
::
print
(
Debug
::
Classes
,
0
,
" Adding used class `%s'
\n
"
,
usedCd
->
name
().
data
());
instanceCd
->
addUsedClass
(
usedCd
,
md
->
name
());
instanceCd
->
addUsedClass
(
usedCd
,
md
->
name
());
}
}
}
}
...
@@ -2583,6 +2610,7 @@ static void findUsedClassesForClass(Entry *root,
...
@@ -2583,6 +2610,7 @@ static void findUsedClassesForClass(Entry *root,
if
(
usedCd
)
if
(
usedCd
)
{
{
found
=
TRUE
;
found
=
TRUE
;
Debug
::
print
(
Debug
::
Classes
,
0
,
" Adding used class `%s'
\n
"
,
usedCd
->
name
().
data
());
instanceCd
->
addUsedClass
(
usedCd
,
md
->
name
());
// class exists
instanceCd
->
addUsedClass
(
usedCd
,
md
->
name
());
// class exists
}
}
}
}
...
@@ -2610,6 +2638,7 @@ static void findUsedClassesForClass(Entry *root,
...
@@ -2610,6 +2638,7 @@ static void findUsedClassesForClass(Entry *root,
if
(
usedCd
)
if
(
usedCd
)
{
{
if
(
isArtificial
)
usedCd
->
setClassIsArtificial
();
if
(
isArtificial
)
usedCd
->
setClassIsArtificial
();
Debug
::
print
(
Debug
::
Classes
,
0
,
" Adding used class `%s'
\n
"
,
usedCd
->
name
().
data
());
instanceCd
->
addUsedClass
(
usedCd
,
md
->
name
());
instanceCd
->
addUsedClass
(
usedCd
,
md
->
name
());
}
}
}
}
...
@@ -2653,6 +2682,7 @@ static void findBaseClassesForClass(
...
@@ -2653,6 +2682,7 @@ static void findBaseClassesForClass(
{
{
tbi
.
name
=
substituteTemplateArgumentsInString
(
bi
->
name
,
formalArgs
,
actualArgs
);
tbi
.
name
=
substituteTemplateArgumentsInString
(
bi
->
name
,
formalArgs
,
actualArgs
);
}
}
//printf("bi->name=%s tbi.name=%s\n",bi->name.data(),tbi.name.data());
if
(
mode
==
DocumentedOnly
)
if
(
mode
==
DocumentedOnly
)
{
{
...
@@ -2779,6 +2809,7 @@ static bool findClassRelation(
...
@@ -2779,6 +2809,7 @@ static bool findClassRelation(
biName
=
biName
.
right
(
biName
.
length
()
-
2
);
biName
=
biName
.
right
(
biName
.
length
()
-
2
);
explicitGlobalScope
=
TRUE
;
explicitGlobalScope
=
TRUE
;
}
}
//printf("biName=`%s'\n",biName.data());
Entry
*
parentNode
=
root
->
parent
;
Entry
*
parentNode
=
root
->
parent
;
bool
lastParent
=
FALSE
;
bool
lastParent
=
FALSE
;
...
@@ -2817,7 +2848,7 @@ static bool findClassRelation(
...
@@ -2817,7 +2848,7 @@ static bool findClassRelation(
if
(
!
isRecursiveBaseClass
(
root
->
name
,
baseClassName
)
||
explicitGlobalScope
)
if
(
!
isRecursiveBaseClass
(
root
->
name
,
baseClassName
)
||
explicitGlobalScope
)
{
{
Debug
::
print
(
Debug
::
print
(
Debug
::
Classes
,
0
,
" class relation %s inherited by %s found (%s and %s)
\n
"
,
Debug
::
Classes
,
0
,
" class relation %s inherited
/used
by %s found (%s and %s)
\n
"
,
baseClassName
.
data
(),
baseClassName
.
data
(),
root
->
name
.
data
(),
root
->
name
.
data
(),
(
bi
->
prot
==
Private
)
?
"private"
:
((
bi
->
prot
==
Protected
)
?
"protected"
:
"public"
),
(
bi
->
prot
==
Private
)
?
"private"
:
((
bi
->
prot
==
Protected
)
?
"protected"
:
"public"
),
...
...
src/htmlgen.cpp
View file @
66db5d84
...
@@ -85,13 +85,13 @@ static const char *defaultStyleSheet =
...
@@ -85,13 +85,13 @@ static const char *defaultStyleSheet =
" margin-top : 2px;
\n
"
" margin-top : 2px;
\n
"
" margin-bottom : 2px
\n
"
" margin-bottom : 2px
\n
"
"}
\n
"
"}
\n
"
"
FONT
.keyword { color: #008000 }
\n
"
"
span
.keyword { color: #008000 }
\n
"
"
FONT
.keywordtype { color: #604020 }
\n
"
"
span
.keywordtype { color: #604020 }
\n
"
"
FONT
.keywordflow { color: #e08000 }
\n
"
"
span
.keywordflow { color: #e08000 }
\n
"
"
FONT
.comment { color: #800000 }
\n
"
"
span
.comment { color: #800000 }
\n
"
"
FONT
.preprocessor { color: #806020 }
\n
"
"
span
.preprocessor { color: #806020 }
\n
"
"
FONT
.stringliteral { color: #002080 }
\n
"
"
span
.stringliteral { color: #002080 }
\n
"
"
FONT
.charliteral { color: #008080 }
\n
"
;
"
span
.charliteral { color: #008080 }
\n
"
;
static
QCString
g_header
;
static
QCString
g_header
;
...
@@ -181,7 +181,7 @@ void HtmlGenerator::writeHeaderFile(QFile &file)
...
@@ -181,7 +181,7 @@ void HtmlGenerator::writeHeaderFile(QFile &file)
void
HtmlGenerator
::
writeFooterFile
(
QFile
&
file
)
void
HtmlGenerator
::
writeFooterFile
(
QFile
&
file
)
{
{
QTextStream
t
(
&
file
);
QTextStream
t
(
&
file
);
t
<<
"<hr><address
align=
\"
right
\"
><small>
\n
"
;
t
<<
"<hr><address
style=
\"
align: right;
\"
><small>
\n
"
;
t
<<
theTranslator
->
trGeneratedAt
(
"$datetime"
,
"$projectname"
);
t
<<
theTranslator
->
trGeneratedAt
(
"$datetime"
,
"$projectname"
);
t
<<
" <a href=
\"
http://www.doxygen.org/index.html
\"
>
\n
"
t
<<
" <a href=
\"
http://www.doxygen.org/index.html
\"
>
\n
"
<<
"<img src=
\"
doxygen.png
\"
alt=
\"
doxygen
\"
"
<<
"<img src=
\"
doxygen.png
\"
alt=
\"
doxygen
\"
"
...
@@ -257,7 +257,7 @@ void HtmlGenerator::writeFooter(int part,bool external)
...
@@ -257,7 +257,7 @@ void HtmlGenerator::writeFooter(int part,bool external)
{
{
case
0
:
case
0
:
if
(
g_footer
.
isEmpty
())
if
(
g_footer
.
isEmpty
())
t
<<
"<hr><address
align=
\"
right
\"
><small>"
;
t
<<
"<hr><address
style=
\"
align: right;
\"
><small>"
;
else
else
t
<<
substituteKeywords
(
g_footer
,
convertToHtml
(
lastTitle
));
t
<<
substituteKeywords
(
g_footer
,
convertToHtml
(
lastTitle
));
break
;
break
;
...
@@ -519,14 +519,14 @@ void HtmlGenerator::endGroupHeader()
...
@@ -519,14 +519,14 @@ void HtmlGenerator::endGroupHeader()
void
HtmlGenerator
::
startSection
(
const
char
*
lab
,
const
char
*
,
bool
sub
)
void
HtmlGenerator
::
startSection
(
const
char
*
lab
,
const
char
*
,
bool
sub
)
{
{
t
<<
"<a name=
\"
"
<<
lab
<<
"
\"
>"
;
if
(
sub
)
t
<<
"<h3>"
;
else
t
<<
"<h2>"
;
if
(
sub
)
t
<<
"<h3>"
;
else
t
<<
"<h2>"
;
t
<<
"<a name=
\"
"
<<
lab
<<
"
\"
>"
;
}
}
void
HtmlGenerator
::
endSection
(
const
char
*
,
bool
sub
)
void
HtmlGenerator
::
endSection
(
const
char
*
,
bool
sub
)
{
{
if
(
sub
)
t
<<
"</h3>"
;
else
t
<<
"</h2>"
;
t
<<
"</a>"
<<
endl
;
t
<<
"</a>"
<<
endl
;
if
(
sub
)
t
<<
"</h3>"
;
else
t
<<
"</h2>"
;
}
}
void
HtmlGenerator
::
writeSectionRef
(
const
char
*
ref
,
const
char
*
name
,
void
HtmlGenerator
::
writeSectionRef
(
const
char
*
ref
,
const
char
*
name
,
...
@@ -654,7 +654,7 @@ void HtmlGenerator::endClassDiagram(ClassDiagram &d,
...
@@ -654,7 +654,7 @@ void HtmlGenerator::endClassDiagram(ClassDiagram &d,
{
{
t
<<
"
\n
<p><center><img src=
\"
"
t
<<
"
\n
<p><center><img src=
\"
"
<<
fileName
<<
".png
\"
usemap=
\"
#"
<<
name
<<
"_map
\"
"
<<
fileName
<<
".png
\"
usemap=
\"
#"
<<
name
<<
"_map
\"
"
<<
" border=
\"
0
\"
></center>"
<<
endl
<<
" border=
\"
0
\"
alt=
\"\"
></center>"
<<
endl
<<
"<map name=
\"
"
<<
name
<<
"_map
\"
>"
<<
endl
;
<<
"<map name=
\"
"
<<
name
<<
"_map
\"
>"
<<
endl
;
d
.
writeImage
(
t
,
dir
,
fileName
);
d
.
writeImage
(
t
,
dir
,
fileName
);
...
@@ -786,6 +786,8 @@ void HtmlGenerator::startMemberSections()
...
@@ -786,6 +786,8 @@ void HtmlGenerator::startMemberSections()
if
(
Config_getBool
(
"HTML_ALIGN_MEMBERS"
))
if
(
Config_getBool
(
"HTML_ALIGN_MEMBERS"
))
{
{
t
<<
"<table border=0 cellpadding=0 cellspacing=0>"
<<
endl
;
t
<<
"<table border=0 cellpadding=0 cellspacing=0>"
<<
endl
;
// HTML is not recursively decomposable, sorry
t
<<
"<tr><td></td></tr>"
<<
endl
;
}
}
}
}
...
...
src/htmlgen.h
View file @
66db5d84
...
@@ -254,8 +254,8 @@ class HtmlGenerator : public OutputGenerator
...
@@ -254,8 +254,8 @@ class HtmlGenerator : public OutputGenerator
void
startParameterList
();
void
startParameterList
();
void
endParameterList
();
void
endParameterList
();
void
startFontClass
(
const
char
*
s
)
{
t
<<
"<
font
class=
\"
"
<<
s
<<
"
\"
>"
;
}
void
startFontClass
(
const
char
*
s
)
{
t
<<
"<
span
class=
\"
"
<<
s
<<
"
\"
>"
;
}
void
endFontClass
()
{
t
<<
"</
font
>"
;
}
void
endFontClass
()
{
t
<<
"</
span
>"
;
}
void
startHtmlOnly
()
{}
void
startHtmlOnly
()
{}
void
endHtmlOnly
()
{}
void
endHtmlOnly
()
{}
...
...
src/index.cpp
View file @
66db5d84
...
@@ -417,11 +417,11 @@ void writeClassTree(OutputList &ol,BaseClassList *bcl,bool hideSuper,int level)
...
@@ -417,11 +417,11 @@ void writeClassTree(OutputList &ol,BaseClassList *bcl,bool hideSuper,int level)
}
}
if
(
hasHtmlHelp
)
if
(
hasHtmlHelp
)
{
{
htmlHelp
->
addContentsItem
(
hasChildren
,
cd
->
n
ame
(),
cd
->
getOutputFileBase
());
htmlHelp
->
addContentsItem
(
hasChildren
,
cd
->
displayN
ame
(),
cd
->
getOutputFileBase
());
}
}
if
(
hasFtvHelp
)
if
(
hasFtvHelp
)
{
{
ftvHelp
->
addContentsItem
(
hasChildren
,
cd
->
getReference
(),
cd
->
getOutputFileBase
(),
0
,
cd
->
n
ame
());
ftvHelp
->
addContentsItem
(
hasChildren
,
cd
->
getReference
(),
cd
->
getOutputFileBase
(),
0
,
cd
->
displayN
ame
());
}
}
}
}
else
else
...
@@ -429,11 +429,11 @@ void writeClassTree(OutputList &ol,BaseClassList *bcl,bool hideSuper,int level)
...
@@ -429,11 +429,11 @@ void writeClassTree(OutputList &ol,BaseClassList *bcl,bool hideSuper,int level)
ol
.
writeIndexItem
(
0
,
0
,
cd
->
name
());
ol
.
writeIndexItem
(
0
,
0
,
cd
->
name
());
if
(
hasHtmlHelp
)
if
(
hasHtmlHelp
)
{
{
htmlHelp
->
addContentsItem
(
hasChildren
,
cd
->
n
ame
(),
0
);
htmlHelp
->
addContentsItem
(
hasChildren
,
cd
->
displayN
ame
(),
0
);
}
}
if
(
hasFtvHelp
)
if
(
hasFtvHelp
)
{
{
ftvHelp
->
addContentsItem
(
hasChildren
,
0
,
0
,
0
,
cd
->
n
ame
());
ftvHelp
->
addContentsItem
(
hasChildren
,
0
,
0
,
0
,
cd
->
displayN
ame
());
}
}
}
}
if
(
hasChildren
)
if
(
hasChildren
)
...
@@ -492,11 +492,11 @@ void writeClassTree(BaseClassList *cl,int level)
...
@@ -492,11 +492,11 @@ void writeClassTree(BaseClassList *cl,int level)
{
{
if
(
hasHtmlHelp
)
if
(
hasHtmlHelp
)
{
{
htmlHelp
->
addContentsItem
(
hasChildren
,
cd
->
n
ame
(),
cd
->
getOutputFileBase
());
htmlHelp
->
addContentsItem
(
hasChildren
,
cd
->
displayN
ame
(),
cd
->
getOutputFileBase
());
}
}
if
(
hasFtvHelp
)
if
(
hasFtvHelp
)
{
{
ftvHelp
->
addContentsItem
(
hasChildren
,
cd
->
getReference
(),
cd
->
getOutputFileBase
(),
0
,
cd
->
n
ame
());
ftvHelp
->
addContentsItem
(
hasChildren
,
cd
->
getReference
(),
cd
->
getOutputFileBase
(),
0
,
cd
->
displayN
ame
());
}
}
}
}
if
(
hasChildren
)
if
(
hasChildren
)
...
@@ -530,11 +530,11 @@ void writeClassTreeNode(ClassDef *cd,bool hasHtmlHelp,bool hasFtvHelp,bool &star
...
@@ -530,11 +530,11 @@ void writeClassTreeNode(ClassDef *cd,bool hasHtmlHelp,bool hasFtvHelp,bool &star
{
{
if
(
hasHtmlHelp
)
if
(
hasHtmlHelp
)
{
{
HtmlHelp
::
getInstance
()
->
addContentsItem
(
hasChildren
,
cd
->
n
ame
(),
cd
->
getOutputFileBase
());
HtmlHelp
::
getInstance
()
->
addContentsItem
(
hasChildren
,
cd
->
displayN
ame
(),
cd
->
getOutputFileBase
());
}
}
if
(
hasFtvHelp
)
if
(
hasFtvHelp
)
{
{
FTVHelp
::
getInstance
()
->
addContentsItem
(
hasChildren
,
cd
->
getReference
(),
cd
->
getOutputFileBase
(),
0
,
cd
->
n
ame
());
FTVHelp
::
getInstance
()
->
addContentsItem
(
hasChildren
,
cd
->
getReference
(),
cd
->
getOutputFileBase
(),
0
,
cd
->
displayN
ame
());
}
}
}
}
if
(
hasChildren
)
if
(
hasChildren
)
...
@@ -624,11 +624,11 @@ static void writeClassTreeForList(OutputList &ol,ClassSDict *cl,bool &started)
...
@@ -624,11 +624,11 @@ static void writeClassTreeForList(OutputList &ol,ClassSDict *cl,bool &started)
}
}
if
(
hasHtmlHelp
)
if
(
hasHtmlHelp
)
{
{
htmlHelp
->
addContentsItem
(
hasChildren
,
cd
->
n
ame
(),
cd
->
getOutputFileBase
());
htmlHelp
->
addContentsItem
(
hasChildren
,
cd
->
displayN
ame
(),
cd
->
getOutputFileBase
());
}
}
if
(
hasFtvHelp
)
if
(
hasFtvHelp
)
{
{
ftvHelp
->
addContentsItem
(
hasChildren
,
cd
->
getReference
(),
cd
->
getOutputFileBase
(),
0
,
cd
->
n
ame
());
ftvHelp
->
addContentsItem
(
hasChildren
,
cd
->
getReference
(),
cd
->
getOutputFileBase
(),
0
,
cd
->
displayN
ame
());
}
}
}
}
else
else
...
@@ -636,11 +636,11 @@ static void writeClassTreeForList(OutputList &ol,ClassSDict *cl,bool &started)
...
@@ -636,11 +636,11 @@ static void writeClassTreeForList(OutputList &ol,ClassSDict *cl,bool &started)
ol
.
writeIndexItem
(
0
,
0
,
cd
->
displayName
());
ol
.
writeIndexItem
(
0
,
0
,
cd
->
displayName
());
if
(
hasHtmlHelp
)
if
(
hasHtmlHelp
)
{
{
htmlHelp
->
addContentsItem
(
hasChildren
,
cd
->
n
ame
(),
0
);
htmlHelp
->
addContentsItem
(
hasChildren
,
cd
->
displayN
ame
(),
0
);
}
}
if
(
hasFtvHelp
)
if
(
hasFtvHelp
)
{
{
ftvHelp
->
addContentsItem
(
hasChildren
,
0
,
0
,
0
,
cd
->
n
ame
());
ftvHelp
->
addContentsItem
(
hasChildren
,
0
,
0
,
0
,
cd
->
displayN
ame
());
}
}
}
}
if
(
hasChildren
)
if
(
hasChildren
)
...
@@ -1140,11 +1140,11 @@ void writeNamespaceIndex(OutputList &ol)
...
@@ -1140,11 +1140,11 @@ void writeNamespaceIndex(OutputList &ol)
//ol.writeEndAnnoItem(nd->getOutputFileBase());
//ol.writeEndAnnoItem(nd->getOutputFileBase());
if
(
hasHtmlHelp
)
if
(
hasHtmlHelp
)
{
{
htmlHelp
->
addContentsItem
(
FALSE
,
nd
->
n
ame
(),
nd
->
getOutputFileBase
());
htmlHelp
->
addContentsItem
(
FALSE
,
nd
->
displayN
ame
(),
nd
->
getOutputFileBase
());
}
}
if
(
hasFtvHelp
)
if
(
hasFtvHelp
)
{
{
ftvHelp
->
addContentsItem
(
FALSE
,
nd
->
getReference
(),
nd
->
getOutputFileBase
(),
0
,
nd
->
n
ame
());
ftvHelp
->
addContentsItem
(
FALSE
,
nd
->
getReference
(),
nd
->
getOutputFileBase
(),
0
,
nd
->
displayN
ame
());
}
}
}
}
}
}
...
@@ -1216,11 +1216,11 @@ void writeAnnotatedClassList(OutputList &ol)
...
@@ -1216,11 +1216,11 @@ void writeAnnotatedClassList(OutputList &ol)
//ol.writeEndAnnoItem(cd->getOutputFileBase());
//ol.writeEndAnnoItem(cd->getOutputFileBase());
if
(
hasHtmlHelp
)
if
(
hasHtmlHelp
)
{
{
HtmlHelp
::
getInstance
()
->
addContentsItem
(
FALSE
,
cd
->
n
ame
(),
cd
->
getOutputFileBase
());
HtmlHelp
::
getInstance
()
->
addContentsItem
(
FALSE
,
cd
->
displayN
ame
(),
cd
->
getOutputFileBase
());
}
}
if
(
hasFtvHelp
)
if
(
hasFtvHelp
)
{
{
FTVHelp
::
getInstance
()
->
addContentsItem
(
FALSE
,
cd
->
getReference
(),
cd
->
getOutputFileBase
(),
0
,
cd
->
n
ame
());
FTVHelp
::
getInstance
()
->
addContentsItem
(
FALSE
,
cd
->
getReference
(),
cd
->
getOutputFileBase
(),
0
,
cd
->
displayN
ame
());
}
}
}
}
}
}
...
...
src/memberdef.cpp
View file @
66db5d84
...
@@ -340,6 +340,7 @@ MemberDef::MemberDef(const char *df,int dl,
...
@@ -340,6 +340,7 @@ MemberDef::MemberDef(const char *df,int dl,
Argument
*
a
;
Argument
*
a
;
for
(;(
a
=
ali
.
current
());
++
ali
)
for
(;(
a
=
ali
.
current
());
++
ali
)
{
{
//printf("copy argument %s (doc=%s)\n",a->name.data(),a->docs.data());
defArgList
->
append
(
new
Argument
(
*
a
));
defArgList
->
append
(
new
Argument
(
*
a
));
}
}
defArgList
->
constSpecifier
=
al
->
constSpecifier
;
defArgList
->
constSpecifier
=
al
->
constSpecifier
;
...
...
src/rtfgen.h
View file @
66db5d84
...
@@ -114,8 +114,8 @@ class RTFGenerator : public OutputGenerator
...
@@ -114,8 +114,8 @@ class RTFGenerator : public OutputGenerator
void
endCodeFragment
();
void
endCodeFragment
();
void
startPreFragment
()
{
startCodeFragment
();
}
void
startPreFragment
()
{
startCodeFragment
();
}
void
endPreFragment
()
{
endCodeFragment
();
}
void
endPreFragment
()
{
endCodeFragment
();
}
void
startVerbatimFragment
()
{
start
Verbatim
Fragment
();
}
void
startVerbatimFragment
()
{
start
Code
Fragment
();
}
void
endVerbatimFragment
()
{
end
Verbatim
Fragment
();
}
void
endVerbatimFragment
()
{
end
Code
Fragment
();
}
void
writeLineNumber
(
const
char
*
,
const
char
*
,
const
char
*
,
int
l
)
{
t
<<
l
<<
" "
;
}
void
writeLineNumber
(
const
char
*
,
const
char
*
,
const
char
*
,
int
l
)
{
t
<<
l
<<
" "
;
}
void
startCodeLine
()
{
col
=
0
;
}
void
startCodeLine
()
{
col
=
0
;
}
void
endCodeLine
()
{
lineBreak
();
}
void
endCodeLine
()
{
lineBreak
();
}
...
...
src/scanner.l
View file @
66db5d84
...
@@ -2668,12 +2668,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
...
@@ -2668,12 +2668,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
current->args += yytext;
current->args += yytext;
}
}
<Bases>{BN}*{ID}("."{ID})* { // Java style class
<Bases>{BN}*{ID}("."{ID})* { // Java style class
QCString name = yytext;
QCString name = substitute(yytext,".","::");
int i=name.findRev('.');
if (i!=-1) // strip part before dots
{
name=name.right(name.length()-i-1);
}
baseName += name;
baseName += name;
current->args += ' ';
current->args += ' ';
current->args += name;
current->args += name;
...
...
src/translator_en.h
View file @
66db5d84
...
@@ -1072,7 +1072,7 @@ class TranslatorEnglish : public Translator
...
@@ -1072,7 +1072,7 @@ class TranslatorEnglish : public Translator
"
\\
endcode
\n
"
"
\\
endcode
\n
"
"If the
\\
c MAX_DOT_GRAPH_HEIGHT tag in the configuration file "
"If the
\\
c MAX_DOT_GRAPH_HEIGHT tag in the configuration file "
"is set to 240 this will result in the following graph:"
"is set to 240 this will result in the following graph:"
"<p><center><img src=
\"
graph_legend."
+
Config_getEnum
(
"DOT_IMAGE_FORMAT"
)
+
"
\"
></center>
\n
"
"<p><center><img
alt=
\"\"
src=
\"
graph_legend."
+
Config_getEnum
(
"DOT_IMAGE_FORMAT"
)
+
"
\"
></center>
\n
"
"<p>
\n
"
"<p>
\n
"
"The boxes in the above graph have the following meaning:
\n
"
"The boxes in the above graph have the following meaning:
\n
"
"<ul>
\n
"
"<ul>
\n
"
...
...
src/util.cpp
View file @
66db5d84
...
@@ -360,53 +360,100 @@ int guessSection(const char *name)
...
@@ -360,53 +360,100 @@ int guessSection(const char *name)
return
0
;
return
0
;
}
}
QCString
resolveTypeDef
(
Definition
*
d
,
const
QCString
&
name
)
QCString
resolveTypeDef
(
Definition
*
context
,
const
QCString
&
qualifiedName
,
Definition
**
typedefContext
)
{
{
//printf("resolveTypeDef(%s,%s)\n",d ? d->name().data() : "<none>",name.data());
//printf("resolveTypeDef(%s,%s)\n",
// context ? context->name().data() : "<none>",qualifiedName.data());
QCString
result
;
QCString
result
;
if
(
n
ame
.
isEmpty
())
return
result
;
if
(
qualifiedN
ame
.
isEmpty
())
return
result
;
Definition
*
mContext
=
d
;
Definition
*
mContext
=
context
;
if
(
typedefContext
)
*
typedefContext
=
context
;
// see if the qualified name has a scope part
int
scopeIndex
=
qualifiedName
.
findRev
(
"::"
);
QCString
resName
=
qualifiedName
;
if
(
scopeIndex
!=-
1
)
// strip scope part for the name
{
resName
=
qualifiedName
.
right
(
qualifiedName
.
length
()
-
scopeIndex
-
2
);
}
else
{
resName
=
qualifiedName
;
}
MemberDef
*
md
=
0
;
MemberDef
*
md
=
0
;
while
(
mContext
&&
md
==
0
)
while
(
mContext
&&
md
==
0
)
{
{
MemberNameSDict
*
mnd
=
0
;
// step 1: get the right scope
if
(
mContext
->
definitionType
()
==
Definition
::
TypeClass
)
Definition
*
resScope
=
mContext
;
{
if
(
scopeIndex
!=-
1
)
mnd
=&
Doxygen
::
memberNameSDict
;
}
else
{
{
mnd
=&
Doxygen
::
functionNameSDict
;
// split-off scope part
QCString
resScopeName
=
qualifiedName
.
left
(
scopeIndex
);
//printf("resScopeName=`%s'\n",resScopeName.data());
// look-up scope in context
int
is
,
ps
=
0
;
int
l
;
while
((
is
=
getScopeFragment
(
resScopeName
,
ps
,
&
l
))
!=-
1
)
{
QCString
qualScopePart
=
resScopeName
.
mid
(
is
,
l
);
QCString
tmp
=
resolveTypeDef
(
context
,
qualScopePart
);
if
(
!
tmp
.
isEmpty
())
qualScopePart
=
tmp
;
resScope
=
resScope
->
findInnerCompound
(
qualScopePart
);
//printf("qualScopePart=`%s' resScope=%p\n",qualScopePart.data(),resScope);
if
(
resScope
==
0
)
break
;
ps
=
is
+
l
;
}
}
}
MemberName
*
mn
=
mnd
->
find
(
name
);
if
(
mn
)
// step 2: get the member
if
(
resScope
)
// no scope or scope found in the current context
{
{
MemberNameIterator
mni
(
*
mn
);
//printf("scope found: %s, look for typedef %s\n",
MemberDef
*
tmd
=
0
;
// resScope->qualifiedName().data(),resName.data());
for
(;(
tmd
=
mni
.
current
());
++
mni
)
MemberNameSDict
*
mnd
=
0
;
if
(
resScope
->
definitionType
()
==
Definition
::
TypeClass
)
{
mnd
=&
Doxygen
::
memberNameSDict
;
}
else
{
{
//printf("Found member %s scope=%p mContext=%p\n",tmd->name().data(),
mnd
=&
Doxygen
::
functionNameSDict
;
// tmd->getOuterScope(),mContext);
}
if
(
tmd
->
isTypedef
()
&&
tmd
->
getOuterScope
()
==
mContext
)
MemberName
*
mn
=
mnd
->
find
(
resName
);
if
(
mn
)
{
MemberNameIterator
mni
(
*
mn
);
MemberDef
*
tmd
=
0
;
for
(;(
tmd
=
mni
.
current
());
++
mni
)
{
{
md
=
tmd
;
//printf("Found member %s scope=%p mContext=%p\n",tmd->name().data(),
// tmd->getOuterScope(),mContext);
if
(
tmd
->
isTypedef
()
&&
tmd
->
getOuterScope
()
==
resScope
)
{
md
=
tmd
;
}
}
}
}
}
}
}
mContext
=
mContext
->
getOuterScope
();
mContext
=
mContext
->
getOuterScope
();
}
}
// step 3: get the member's type
if
(
md
)
if
(
md
)
{
{
//printf("Found typedef name `%s' in scope `%s' value=`%s'\n",
//printf("Found typedef name `%s' in scope `%s' value=`%s'\n",
//
name.data(),d
->name().data(),md->typeString()
//
qualifiedName.data(),context
->name().data(),md->typeString()
// );
// );
result
=
md
->
typeString
();
result
=
md
->
typeString
();
if
(
typedefContext
)
*
typedefContext
=
md
->
getOuterScope
();
}
}
else
else
{
{
//printf("Typedef `%s' not found in scope `%s'!\n",
//printf("Typedef `%s' not found in scope `%s'!\n",
//
name.data(),d ? d
->name().data() : "<global>");
//
qualifiedName.data(),context ? context
->name().data() : "<global>");
}
}
return
result
;
return
result
;
...
@@ -456,32 +503,27 @@ ClassDef *getResolvedClass(
...
@@ -456,32 +503,27 @@ ClassDef *getResolvedClass(
QCString
name
=
n
;
QCString
name
=
n
;
if
(
scope
==
0
)
scope
=
Doxygen
::
globalScope
;
if
(
scope
==
0
)
scope
=
Doxygen
::
globalScope
;
if
(
name
.
isEmpty
())
return
0
;
if
(
name
.
isEmpty
())
return
0
;
int
index
=
name
.
findRev
(
"::"
);
//
int index = name.findRev("::");
ClassDef
*
cd
=
0
;
ClassDef
*
cd
=
0
;
//printf("===================\n");
do
do
{
{
//fprintf(stderr,"getResolvedClass(%s,%s)\n",scope ? scope->name().data() : "<none>", n);
//printf("trying getResolvedClass(%s,%s)\n",scope ? scope->name().data() : "<none>", n);
QCString
subst
;
Definition
*
typedefScope
=
0
;
if
(
index
!=-
1
)
QCString
subst
=
resolveTypeDef
(
scope
,
name
,
&
typedefScope
);
{
subst
=
resolveTypeDef
(
scope
,
name
.
right
(
name
.
length
()
-
index
-
2
));
}
else
{
subst
=
resolveTypeDef
(
scope
,
name
);
}
//printf(" typedef subst=`%s'\n",subst.data());
if
(
!
subst
.
isEmpty
())
if
(
!
subst
.
isEmpty
())
{
{
//printf(" typedef value=%s typedefScope=%s\n",subst.data(),
// typedefScope?typedefScope->qualifiedName().data():0);
// strip * and & from n
// strip * and & from n
int
ip
=
subst
.
length
()
-
1
;
int
ip
=
subst
.
length
()
-
1
;
while
(
ip
>=
0
&&
(
subst
.
at
(
ip
)
==
'*'
||
subst
.
at
(
ip
)
==
'&'
||
subst
.
at
(
ip
)
==
' '
))
ip
--
;
while
(
ip
>=
0
&&
(
subst
.
at
(
ip
)
==
'*'
||
subst
.
at
(
ip
)
==
'&'
||
subst
.
at
(
ip
)
==
' '
))
ip
--
;
subst
=
subst
.
left
(
ip
+
1
);
subst
=
subst
.
left
(
ip
+
1
);
if
(
pIsTypeDef
)
*
pIsTypeDef
=
TRUE
;
if
(
pIsTypeDef
)
*
pIsTypeDef
=
TRUE
;
if
(
subst
==
name
)
// avoid resolving
typedef struct foo foo
;
if
(
subst
==
name
)
// avoid resolving
"typedef struct foo foo"
;
{
{
cd
=
Doxygen
::
classSDict
.
find
(
name
);
cd
=
Doxygen
::
classSDict
.
find
(
name
);
if
(
cd
)
goto
found
;
if
(
cd
)
goto
found
;
...
@@ -492,8 +534,8 @@ ClassDef *getResolvedClass(
...
@@ -492,8 +534,8 @@ ClassDef *getResolvedClass(
QCString
newSubst
;
QCString
newSubst
;
QCString
typeName
=
subst
;
QCString
typeName
=
subst
;
if
(
index
!=-
1
)
typeName
.
prepend
(
name
.
left
(
index
)
+
"::"
);
//
if (index!=-1) typeName.prepend(name.left(index)+"::");
while
(
!
(
newSubst
=
resolveTypeDef
(
s
cope
,
typeName
)).
isEmpty
()
while
(
!
(
newSubst
=
resolveTypeDef
(
typedefS
cope
,
typeName
)).
isEmpty
()
&&
count
<
10
)
&&
count
<
10
)
{
{
if
(
typeName
==
newSubst
)
if
(
typeName
==
newSubst
)
...
@@ -511,7 +553,7 @@ ClassDef *getResolvedClass(
...
@@ -511,7 +553,7 @@ ClassDef *getResolvedClass(
//printf(" getResolvedClass `%s'->`%s'\n",name.data(),subst.data());
//printf(" getResolvedClass `%s'->`%s'\n",name.data(),subst.data());
typeName
=
newSubst
;
typeName
=
newSubst
;
if
(
index
!=-
1
)
typeName
.
prepend
(
name
.
left
(
index
)
+
"::"
);
//
if (index!=-1) typeName.prepend(name.left(index)+"::");
count
++
;
count
++
;
}
}
if
(
count
==
10
)
if
(
count
==
10
)
...
@@ -523,7 +565,14 @@ ClassDef *getResolvedClass(
...
@@ -523,7 +565,14 @@ ClassDef *getResolvedClass(
else
else
{
{
int
i
;
int
i
;
cd
=
Doxygen
::
classSDict
.
find
(
typeName
);
if
(
typedefScope
)
{
cd
=
Doxygen
::
classSDict
.
find
(
typedefScope
->
qualifiedName
()
+
"::"
+
typeName
);
}
if
(
cd
==
0
)
{
cd
=
Doxygen
::
classSDict
.
find
(
typeName
);
}
//printf(" getClass: subst %s->%s cd=%p\n",name.data(),typeName.data(),cd);
//printf(" getClass: subst %s->%s cd=%p\n",name.data(),typeName.data(),cd);
if
(
cd
==
0
&&
(
i
=
typeName
.
find
(
'<'
))
>
0
)
// try unspecialized version as well
if
(
cd
==
0
&&
(
i
=
typeName
.
find
(
'<'
))
>
0
)
// try unspecialized version as well
{
{
...
@@ -534,8 +583,9 @@ ClassDef *getResolvedClass(
...
@@ -534,8 +583,9 @@ ClassDef *getResolvedClass(
}
}
}
}
}
}
else
else
// not a typedef
{
{
//printf(" not a typedef value\n");
if
(
pIsTypeDef
)
*
pIsTypeDef
=
FALSE
;
if
(
pIsTypeDef
)
*
pIsTypeDef
=
FALSE
;
if
(
scope
!=
Doxygen
::
globalScope
)
if
(
scope
!=
Doxygen
::
globalScope
)
cd
=
Doxygen
::
classSDict
.
find
(
scope
->
name
()
+
"::"
+
name
);
cd
=
Doxygen
::
classSDict
.
find
(
scope
->
name
()
+
"::"
+
name
);
...
@@ -550,7 +600,7 @@ ClassDef *getResolvedClass(
...
@@ -550,7 +600,7 @@ ClassDef *getResolvedClass(
}
while
(
scope
);
}
while
(
scope
);
found:
found:
//
fprintf(stderr,
"getResolvedClass()=%s\n",cd?cd->name().data():"<none>");
//
printf(
"getResolvedClass()=%s\n",cd?cd->name().data():"<none>");
return
cd
;
return
cd
;
}
}
...
...
src/util.h
View file @
66db5d84
...
@@ -164,7 +164,8 @@ ArgumentList *copyArgumentList(const ArgumentList *src);
...
@@ -164,7 +164,8 @@ ArgumentList *copyArgumentList(const ArgumentList *src);
QList
<
ArgumentList
>
*
copyArgumentLists
(
const
QList
<
ArgumentList
>
*
srcLists
);
QList
<
ArgumentList
>
*
copyArgumentLists
(
const
QList
<
ArgumentList
>
*
srcLists
);
QCString
stripTemplateSpecifiersFromScope
(
const
QCString
&
fullName
,
QCString
stripTemplateSpecifiersFromScope
(
const
QCString
&
fullName
,
bool
parentOnly
=
TRUE
);
bool
parentOnly
=
TRUE
);
QCString
resolveTypeDef
(
Definition
*
d
,
const
QCString
&
name
);
QCString
resolveTypeDef
(
Definition
*
d
,
const
QCString
&
name
,
Definition
**
typedefContext
=
0
);
QCString
mergeScopes
(
const
QCString
&
leftScope
,
const
QCString
&
rightScope
);
QCString
mergeScopes
(
const
QCString
&
leftScope
,
const
QCString
&
rightScope
);
int
getScopeFragment
(
const
QCString
&
s
,
int
p
,
int
*
l
);
int
getScopeFragment
(
const
QCString
&
s
,
int
p
,
int
*
l
);
int
filterCRLF
(
char
*
buf
,
int
len
);
int
filterCRLF
(
char
*
buf
,
int
len
);
...
...
src/xmlgen.cpp
View file @
66db5d84
...
@@ -1083,19 +1083,9 @@ static void generateXMLForMember(MemberDef *md,QTextStream &ti,QTextStream &t,De
...
@@ -1083,19 +1083,9 @@ static void generateXMLForMember(MemberDef *md,QTextStream &ti,QTextStream &t,De
// + template arguments
// + template arguments
// (templateArguments(), definitionTemplateParameterLists())
// (templateArguments(), definitionTemplateParameterLists())
// enum values are written as part of the enum
if
(
md
->
memberType
()
==
MemberDef
::
EnumValue
)
return
;
if
(
md
->
memberType
()
==
MemberDef
::
EnumValue
)
return
;
ti
<<
" <member id=
\"
"
<<
md
->
getOutputFileBase
()
<<
"_1"
<<
md
->
anchor
()
<<
"
\"
>"
<<
convertToXML
(
md
->
name
())
<<
"</member>"
<<
endl
;
QCString
scopeName
;
if
(
md
->
getClassDef
())
scopeName
=
md
->
getClassDef
()
->
name
();
else
if
(
md
->
getNamespaceDef
())
scopeName
=
md
->
getNamespaceDef
()
->
name
();
t
<<
" <memberdef kind=
\"
"
;
//enum { define_t,variable_t,typedef_t,enum_t,function_t } xmlType = function_t;
QCString
memType
;
QCString
memType
;
bool
isFunc
=
FALSE
;
bool
isFunc
=
FALSE
;
switch
(
md
->
memberType
())
switch
(
md
->
memberType
())
...
@@ -1113,6 +1103,19 @@ static void generateXMLForMember(MemberDef *md,QTextStream &ti,QTextStream &t,De
...
@@ -1113,6 +1103,19 @@ static void generateXMLForMember(MemberDef *md,QTextStream &ti,QTextStream &t,De
case
MemberDef
:
:
DCOP
:
memType
=
"dcop"
;
isFunc
=
TRUE
;
break
;
case
MemberDef
:
:
DCOP
:
memType
=
"dcop"
;
isFunc
=
TRUE
;
break
;
case
MemberDef
:
:
Slot
:
memType
=
"slot"
;
isFunc
=
TRUE
;
break
;
case
MemberDef
:
:
Slot
:
memType
=
"slot"
;
isFunc
=
TRUE
;
break
;
}
}
ti
<<
" <member refid=
\"
"
<<
md
->
getOutputFileBase
()
<<
"_1"
<<
md
->
anchor
()
<<
"
\"
kind=
\"
"
<<
memType
<<
"
\"
><name>"
<<
convertToXML
(
md
->
name
())
<<
"</name></member>"
<<
endl
;
QCString
scopeName
;
if
(
md
->
getClassDef
())
scopeName
=
md
->
getClassDef
()
->
name
();
else
if
(
md
->
getNamespaceDef
())
scopeName
=
md
->
getNamespaceDef
()
->
name
();
t
<<
" <memberdef kind=
\"
"
;
//enum { define_t,variable_t,typedef_t,enum_t,function_t } xmlType = function_t;
t
<<
memType
<<
"
\"
id=
\"
"
;
t
<<
memType
<<
"
\"
id=
\"
"
;
t
<<
md
->
getOutputFileBase
()
t
<<
md
->
getOutputFileBase
()
<<
"_1"
// encoded `:' character (see util.cpp:convertNameToFile)
<<
"_1"
// encoded `:' character (see util.cpp:convertNameToFile)
...
@@ -1407,7 +1410,8 @@ static void generateXMLForClass(ClassDef *cd,QTextStream &ti)
...
@@ -1407,7 +1410,8 @@ static void generateXMLForClass(ClassDef *cd,QTextStream &ti)
if
(
cd
->
name
().
find
(
'@'
)
!=-
1
)
return
;
// skip anonymous compounds.
if
(
cd
->
name
().
find
(
'@'
)
!=-
1
)
return
;
// skip anonymous compounds.
if
(
cd
->
templateMaster
()
!=
0
)
return
;
// skip generated template instances.
if
(
cd
->
templateMaster
()
!=
0
)
return
;
// skip generated template instances.
ti
<<
" <compound id=
\"
"
<<
cd
->
getOutputFileBase
()
ti
<<
" <compound refid=
\"
"
<<
cd
->
getOutputFileBase
()
<<
"
\"
kind=
\"
"
<<
cd
->
compoundTypeString
()
<<
"
\"
><name>"
<<
convertToXML
(
cd
->
name
())
<<
"</name>"
<<
endl
;
<<
"
\"
><name>"
<<
convertToXML
(
cd
->
name
())
<<
"</name>"
<<
endl
;
QCString
outputDirectory
=
Config_getString
(
"OUTPUT_DIRECTORY"
);
QCString
outputDirectory
=
Config_getString
(
"OUTPUT_DIRECTORY"
);
...
@@ -1477,7 +1481,7 @@ static void generateXMLForClass(ClassDef *cd,QTextStream &ti)
...
@@ -1477,7 +1481,7 @@ static void generateXMLForClass(ClassDef *cd,QTextStream &ti)
case
Pure
:
t
<<
"pure-virtual"
;
break
;
case
Pure
:
t
<<
"pure-virtual"
;
break
;
}
}
t
<<
"
\"
>"
<<
convertToXML
(
bcd
->
classDef
->
displayName
())
t
<<
"
\"
>"
<<
convertToXML
(
bcd
->
classDef
->
displayName
())
<<
"</
base
compoundref>"
<<
endl
;
<<
"</
derived
compoundref>"
<<
endl
;
}
}
}
}
...
@@ -1573,8 +1577,9 @@ static void generateXMLForNamespace(NamespaceDef *nd,QTextStream &ti)
...
@@ -1573,8 +1577,9 @@ static void generateXMLForNamespace(NamespaceDef *nd,QTextStream &ti)
if
(
nd
->
isReference
())
return
;
// skip external references
if
(
nd
->
isReference
())
return
;
// skip external references
ti
<<
" <compound id=
\"
"
<<
nd
->
getOutputFileBase
()
ti
<<
" <compound refid=
\"
"
<<
nd
->
getOutputFileBase
()
<<
"
\"
><name>"
<<
convertToXML
(
nd
->
name
())
<<
"</name>"
<<
endl
;
<<
"
\"
kind=
\"
namespace
\"
"
<<
"><name>"
<<
convertToXML
(
nd
->
name
())
<<
"</name>"
<<
endl
;
QCString
outputDirectory
=
Config_getString
(
"OUTPUT_DIRECTORY"
);
QCString
outputDirectory
=
Config_getString
(
"OUTPUT_DIRECTORY"
);
QCString
fileName
=
outputDirectory
+
"/xml/"
+
nd
->
getOutputFileBase
()
+
".xml"
;
QCString
fileName
=
outputDirectory
+
"/xml/"
+
nd
->
getOutputFileBase
()
+
".xml"
;
...
@@ -1663,8 +1668,9 @@ static void generateXMLForFile(FileDef *fd,QTextStream &ti)
...
@@ -1663,8 +1668,9 @@ static void generateXMLForFile(FileDef *fd,QTextStream &ti)
if
(
fd
->
isReference
())
return
;
// skip external references
if
(
fd
->
isReference
())
return
;
// skip external references
ti
<<
" <compound id=
\"
"
<<
fd
->
getOutputFileBase
()
ti
<<
" <compound refid=
\"
"
<<
fd
->
getOutputFileBase
()
<<
"
\"
><name>"
<<
convertToXML
(
fd
->
name
())
<<
"</name>"
<<
endl
;
<<
"
\"
kind=
\"
file
\"
><name>"
<<
convertToXML
(
fd
->
name
())
<<
"</name>"
<<
endl
;
QCString
outputDirectory
=
Config_getString
(
"OUTPUT_DIRECTORY"
);
QCString
outputDirectory
=
Config_getString
(
"OUTPUT_DIRECTORY"
);
QCString
fileName
=
outputDirectory
+
"/xml/"
+
fd
->
getOutputFileBase
()
+
".xml"
;
QCString
fileName
=
outputDirectory
+
"/xml/"
+
fd
->
getOutputFileBase
()
+
".xml"
;
...
@@ -1796,8 +1802,8 @@ static void generateXMLForGroup(GroupDef *gd,QTextStream &ti)
...
@@ -1796,8 +1802,8 @@ static void generateXMLForGroup(GroupDef *gd,QTextStream &ti)
if
(
gd
->
isReference
())
return
;
// skip external references
if
(
gd
->
isReference
())
return
;
// skip external references
ti
<<
" <compound id=
\"
"
<<
gd
->
getOutputFileBase
()
ti
<<
" <compound
ref
id=
\"
"
<<
gd
->
getOutputFileBase
()
<<
"
\"
><name>"
<<
convertToXML
(
gd
->
name
())
<<
"</name>"
<<
endl
;
<<
"
\"
kind=
\"
group
\"
><name>"
<<
convertToXML
(
gd
->
name
())
<<
"</name>"
<<
endl
;
QCString
outputDirectory
=
Config_getString
(
"OUTPUT_DIRECTORY"
);
QCString
outputDirectory
=
Config_getString
(
"OUTPUT_DIRECTORY"
);
QCString
fileName
=
outputDirectory
+
"/xml/"
+
gd
->
getOutputFileBase
()
+
".xml"
;
QCString
fileName
=
outputDirectory
+
"/xml/"
+
gd
->
getOutputFileBase
()
+
".xml"
;
...
@@ -1857,7 +1863,7 @@ static void generateXMLForGroup(GroupDef *gd,QTextStream &ti)
...
@@ -1857,7 +1863,7 @@ static void generateXMLForGroup(GroupDef *gd,QTextStream &ti)
for
(
pli
.
toFirst
();(
pi
=
pli
.
current
());
++
pli
)
for
(
pli
.
toFirst
();(
pi
=
pli
.
current
());
++
pli
)
{
{
t
<<
" <innerpage refid=
\"
"
<<
pi
->
getOutputFileBase
()
t
<<
" <innerpage refid=
\"
"
<<
pi
->
getOutputFileBase
()
<<
"
\"
/
>"
<<
convertToXML
(
pi
->
title
)
<<
"</innerpage>"
<<
endl
;
<<
"
\"
>"
<<
convertToXML
(
pi
->
title
)
<<
"</innerpage>"
<<
endl
;
}
}
}
}
...
@@ -1869,7 +1875,8 @@ static void generateXMLForGroup(GroupDef *gd,QTextStream &ti)
...
@@ -1869,7 +1875,8 @@ static void generateXMLForGroup(GroupDef *gd,QTextStream &ti)
for
(
gli
.
toFirst
();(
sgd
=
gli
.
current
());
++
gli
)
for
(
gli
.
toFirst
();(
sgd
=
gli
.
current
());
++
gli
)
{
{
t
<<
" <innergroup refid=
\"
"
<<
gd
->
getOutputFileBase
()
t
<<
" <innergroup refid=
\"
"
<<
gd
->
getOutputFileBase
()
<<
"
\"
/>"
<<
convertToXML
(
sgd
->
groupTitle
())
<<
"</innergroup>"
<<
endl
;
<<
"
\"
>"
<<
convertToXML
(
sgd
->
groupTitle
())
<<
"</innergroup>"
<<
endl
;
}
}
}
}
...
@@ -1907,8 +1914,8 @@ static void generateXMLForPage(PageInfo *pi,QTextStream &ti)
...
@@ -1907,8 +1914,8 @@ static void generateXMLForPage(PageInfo *pi,QTextStream &ti)
if
(
pi
->
isReference
())
return
;
if
(
pi
->
isReference
())
return
;
ti
<<
" <compound id=
\"
"
<<
pi
->
getOutputFileBase
()
ti
<<
" <compound
ref
id=
\"
"
<<
pi
->
getOutputFileBase
()
<<
"
\"
><name>"
<<
convertToXML
(
pi
->
name
)
<<
"</name>"
<<
endl
;
<<
"
\"
kind=
\"
page
\"
><name>"
<<
convertToXML
(
pi
->
name
)
<<
"</name>"
<<
endl
;
QCString
outputDirectory
=
Config_getString
(
"OUTPUT_DIRECTORY"
);
QCString
outputDirectory
=
Config_getString
(
"OUTPUT_DIRECTORY"
);
QCString
fileName
=
outputDirectory
+
"/xml/"
+
pi
->
getOutputFileBase
()
+
".xml"
;
QCString
fileName
=
outputDirectory
+
"/xml/"
+
pi
->
getOutputFileBase
()
+
".xml"
;
...
...
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