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
5042f145
Commit
5042f145
authored
Sep 09, 2003
by
dimitri
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Release-1.3.3-20030909
parent
d20edf5d
Changes
17
Hide whitespace changes
Inline
Side-by-side
Showing
17 changed files
with
258 additions
and
239 deletions
+258
-239
INSTALL
INSTALL
+2
-2
README
README
+2
-2
VERSION
VERSION
+1
-1
config.doc
doc/config.doc
+1
-2
doxygen_manual.tex
doc/doxygen_manual.tex
+0
-1
history.doc
doc/history.doc
+2
-2
install.doc
doc/install.doc
+6
-7
language.doc
doc/language.doc
+5
-5
doxygen.spec
packages/rpm/doxygen.spec
+1
-1
definition.cpp
src/definition.cpp
+3
-3
doxygen.cpp
src/doxygen.cpp
+16
-12
pngenc.cpp
src/pngenc.cpp
+11
-2
pre.l
src/pre.l
+12
-3
translator_br.h
src/translator_br.h
+54
-2
translator_hr.h
src/translator_hr.h
+78
-1
translator_it.h
src/translator_it.h
+52
-0
util.cpp
src/util.cpp
+12
-193
No files found.
INSTALL
View file @
5042f145
DOXYGEN Version 1.3.3-2003090
4
DOXYGEN Version 1.3.3-2003090
9
Please read the installation section of the manual
(http://www.doxygen.org/install.html) for instructions.
--------
Dimitri van Heesch (0
4
September 2003)
Dimitri van Heesch (0
9
September 2003)
README
View file @
5042f145
DOXYGEN Version 1.3.3_2003090
4
DOXYGEN Version 1.3.3_2003090
9
Please read INSTALL for compilation instructions.
...
...
@@ -17,4 +17,4 @@ to subscribe to the lists or to visit the archives.
Enjoy,
Dimitri van Heesch (dimitri@stack.nl) (0
4
September 2003)
Dimitri van Heesch (dimitri@stack.nl) (0
9
September 2003)
VERSION
View file @
5042f145
1.3.3-2003090
4
1.3.3-2003090
9
doc/config.doc
View file @
5042f145
...
...
@@ -917,8 +917,7 @@ function's detailed documentation block.
HTML
files
are
now
used
as
the
Windows
98
help
format
,
and
will
replace
the
old
Windows
help
format
(.
hlp
)
on
all
Windows
platforms
in
the
future
.
Compressed
HTML
files
also
contain
an
index
,
a
table
of
contents
,
and
you
can
search
for
words
in
the
documentation
(
which
basically
renders
\
c
doxysearch
obsolete
on
Windows
).
and
you
can
search
for
words
in
the
documentation
.
The
HTML
workshop
also
contains
a
viewer
for
compressed
HTML
files
.
\
anchor
cfg_chm_file
...
...
doc/doxygen_manual.tex
View file @
5042f145
...
...
@@ -62,7 +62,6 @@ Written by Dimitri van Heesch\\[2ex]
\input
{
history
}
\input
{
doxygen
_
usage
}
\input
{
doxytag
_
usage
}
\input
{
doxysearch
_
usage
}
\input
{
doxywizard
_
usage
}
\input
{
installdox
_
usage
}
\input
{
output
}
...
...
doc/history.doc
View file @
5042f145
...
...
@@ -85,8 +85,8 @@
<h2>Version 0.3</h2>
<h3>Major new features:</h3>
<ul>
<li>A
search engine <a href="doxysearch_usage.html">doxysearch</a>,
that allows you to search through the generated
documentation.
<li>A
PHP based search engine that allows you to search through the generated
documentation.
<li>A configuration file instead of command-line options. A default
configuration file can be generated
by <a href="doxygen_usage.html">doxygen</a>.
...
...
doc/install.doc
View file @
5042f145
...
...
@@ -125,7 +125,7 @@ Compilation is now done by performing the following steps:
\endverbatim
The program should compile without problems and three binaries
(<code>doxygen</code>
, <code>doxytag</code>, and <code>doxysearch
</code>)
(<code>doxygen</code>
and <code>doxytag
</code>)
should be available in the bin directory of the distribution.
<li>Optional: Generate the user manual.
...
...
@@ -314,7 +314,7 @@ virtual function of class QList<PageInfo> is defined]
\endverbatim
These are generated because the compiler is confused about the object sharing
between \c doxygen and \c doxytag. To compile \c doxytag
and \c doxysearch
between \c doxygen and \c doxytag. To compile \c doxytag
anyway do:
\verbatim
...
...
@@ -322,7 +322,6 @@ rm -rf objects
mkdir objects
cd src
gmake -f Makefile.doxytag
gmake -f Makefile.doxysearch
\endverbatim
when configuring with <code>--static</code> I got:
...
...
@@ -457,8 +456,8 @@ Here is what is required:
steps.
<li>From Doxygen-1.2.2-20001015 onwards, the distribution includes the part
of Qt-2.x.y that is needed for to compile doxygen
,
doxytag,
and doxysearch.
The Windows specific part were also created.
of Qt-2.x.y that is needed for to compile doxygen
and
doxytag,
The Windows specific part were also created.
As a result doxygen can be compiled on systems without X11 or the
commerical version of Qt.
...
...
@@ -539,8 +538,8 @@ Compilation is now done by performing the following steps:
\endverbatim
This should build the executables
<code>doxygen.exe</code>
, <code>doxytag.exe</code>, and
<code>doxysearch.exe</code>
using Microsoft's Visual C++ compiler
<code>doxygen.exe</code>
and <code>doxytag.exe</code>
using Microsoft's Visual C++ compiler
(The compiler should not produce any serious warnings or errors).
You can use also the <code>bcc</code> argument to build
...
...
doc/language.doc
View file @
5042f145
...
...
@@ -25,7 +25,7 @@ Doxygen has built-in support for multiple languages. This means
that the text fragments that doxygen generates can be produced in
languages other than English (the default) at configuration time.
Currently (version 1.3.3-20030
82
4), 29 languages
Currently (version 1.3.3-20030
90
4), 29 languages
are supported (sorted alphabetically):
Brazilian Portuguese, Catalan, Chinese, Chinese Traditional, Croatian,
Czech, Danish, Dutch, English, Finnish,
...
...
@@ -55,7 +55,7 @@ when the translator was updated.
<TD>Brazilian Portuguese</TD>
<TD>Fabio "FJTC" Jun Takada Chino</TD>
<TD>chino@NOSPAM.icmc.sc.usp.br</TD>
<TD>
1.3.3
</TD>
<TD>
up-to-date
</TD>
</TR>
<TR BGCOLOR="#ffffff">
<TD>Catalan</TD>
...
...
@@ -79,7 +79,7 @@ when the translator was updated.
<TD>Croatian</TD>
<TD>Boris Bralo</TD>
<TD>boris.bralo@NOSPAM.zg.tel.hr</TD>
<TD>
1.3.1
</TD>
<TD>
up-to-date
</TD>
</TR>
<TR BGCOLOR="#ffffff">
<TD>Czech</TD>
...
...
@@ -236,7 +236,7 @@ when the translator was updated.
{\bf Language} & {\bf Maintainer} & {\bf Contact address} & {\bf Status} \\
\hline
\hline
Brazilian Portuguese & Fabio "FJTC" Jun Takada Chino & {\tt chino@icmc.sc.usp.br} &
1.3.3
\\
Brazilian Portuguese & Fabio "FJTC" Jun Takada Chino & {\tt chino@icmc.sc.usp.br} &
up-to-date
\\
\hline
Catalan & Albert Mora & {\tt amora@iua.upf.es} & 1.2.17 \\
\hline
...
...
@@ -246,7 +246,7 @@ when the translator was updated.
Chinese Traditional & Daniel YC Lin & {\tt daniel@twpda.com} & 1.3.3 \\
& Gary Lee & {\tt garylee@ecosine.com.tw} & \\
\hline
Croatian & Boris Bralo & {\tt boris.bralo@zg.tel.hr} &
1.3.1
\\
Croatian & Boris Bralo & {\tt boris.bralo@zg.tel.hr} &
up-to-date
\\
\hline
Czech & Petr P\v{r}ikryl & {\tt prikrylp@skil.cz} & up-to-date \\
\hline
...
...
packages/rpm/doxygen.spec
View file @
5042f145
Summary: A documentation system for C/C++.
Name: doxygen
Version: 1.3.3_2003090
4
Version: 1.3.3_2003090
9
Release: 1
Epoch: 1
Source0: ftp://ftp.stack.nl/pub/users/dimitri/%{name}-%{version}.src.tar.gz
...
...
src/definition.cpp
View file @
5042f145
...
...
@@ -243,6 +243,7 @@ static bool readCodeFragment(const char *fileName,
if
(
fileName
==
0
||
fileName
[
0
]
==
0
)
return
FALSE
;
// not a valid file name
QCString
cmd
=
Config_getString
(
"INPUT_FILTER"
)
+
"
\"
"
+
fileName
+
"
\"
"
;
FILE
*
f
=
Config_getBool
(
"FILTER_SOURCE_FILES"
)
?
popen
(
cmd
,
"r"
)
:
fopen
(
fileName
,
"r"
);
bool
found
=
FALSE
;
if
(
f
)
{
int
c
=
0
;
...
...
@@ -257,7 +258,6 @@ static bool readCodeFragment(const char *fileName,
if
(
!
feof
(
f
))
{
// skip until the opening bracket or lonely : is found
bool
found
=
FALSE
;
char
cn
=
0
;
while
(
lineNr
<=
endLine
&&
!
feof
(
f
)
&&
!
found
)
{
...
...
@@ -324,11 +324,11 @@ static bool readCodeFragment(const char *fileName,
result
.
truncate
(
braceIndex
+
1
);
}
endLine
=
lineNr
-
1
;
return
TRUE
;
}
}
if
(
Config_getBool
(
"FILTER_SOURCE_FILES"
))
pclose
(
f
);
else
fclose
(
f
);
}
return
FALSE
;
return
found
;
}
/*! Write a reference to the source code defining this definition */
...
...
src/doxygen.cpp
View file @
5042f145
...
...
@@ -856,13 +856,17 @@ Definition *buildScopeFromQualifiedName(const QCString name,int level)
QCString
nsName
=
name
.
mid
(
idx
,
l
);
if
(
!
fullScope
.
isEmpty
())
fullScope
+=
"::"
;
fullScope
+=
nsName
;
//printf("adding dummy namespace %s to %s\n",nsName.data(),prevScope->name().data());
// introduce bogus namespace
NamespaceDef
*
nd
=
new
NamespaceDef
(
NamespaceDef
*
nd
=
Doxygen
::
namespaceSDict
.
find
(
fullScope
);
if
(
nd
==
0
)
{
// introduce bogus namespace
//printf("adding dummy namespace %s to %s\n",nsName.data(),prevScope->name().data());
nd
=
new
NamespaceDef
(
"<generated>"
,
1
,
fullScope
);
// add namespace to the list
Doxygen
::
namespaceSDict
.
inSort
(
fullScope
,
nd
);
// add namespace to the list
Doxygen
::
namespaceSDict
.
inSort
(
fullScope
,
nd
);
}
prevScope
->
addInnerCompound
(
nd
);
nd
->
setOuterScope
(
prevScope
);
p
=
idx
+
l
+
2
;
...
...
@@ -897,13 +901,13 @@ static void resolveClassNestingRelations()
Definition
*
d
=
findScopeFromQualifiedName
(
Doxygen
::
globalScope
,
cd
->
name
());
if
(
d
==
0
)
{
//
Definition *d = buildScopeFromQualifiedName(cd->name(),cd->name().contains("::"));
//d->addInnerCompound(n
d);
//n
d->setOuterScope(d);
warn
(
cd
->
getDefFileName
(),
cd
->
getDefLine
(),
"Warning: Internal inconsistency: scope for class %s not "
"found!
\n
"
,
cd
->
name
().
data
()
);
Definition
*
d
=
buildScopeFromQualifiedName
(
cd
->
name
(),
cd
->
name
().
contains
(
"::"
));
d
->
addInnerCompound
(
c
d
);
c
d
->
setOuterScope
(
d
);
//
warn(cd->getDefFileName(),cd->getDefLine(),
//
"Warning: Internal inconsistency: scope for class %s not "
//
"found!\n",cd->name().data()
//
);
}
else
{
...
...
src/pngenc.cpp
View file @
5042f145
...
...
@@ -27,6 +27,8 @@
#include <png.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include "pngenc.h"
#include "message.h"
...
...
@@ -133,8 +135,15 @@ void PngEncoder::write(const char *name)
png_set_rows
(
png_ptr
,
info_ptr
,
rows
);
file
=
fopen
(
name
,
"wb"
);
png_init_io
(
png_ptr
,
file
);
png_write_png
(
png_ptr
,
info_ptr
,
PNG_TRANSFORM_IDENTITY
,
NULL
);
if
(
file
==
0
)
{
err
(
"Error opening png file %s for writing: %s!
\n
"
,
name
,
strerror
(
errno
));
}
else
{
png_init_io
(
png_ptr
,
file
);
png_write_png
(
png_ptr
,
info_ptr
,
PNG_TRANSFORM_IDENTITY
,
NULL
);
}
}
png_destroy_write_struct
(
&
png_ptr
,
&
info_ptr
);
...
...
src/pre.l
View file @
5042f145
...
...
@@ -1061,6 +1061,7 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
%x Ifdef
%x Ifndef
%x SkipCComment
%x SkipVerbatim
%x SkipCPPComment
%x RemoveCComment
%x RemoveCPPComment
...
...
@@ -1660,14 +1661,22 @@ CHARLIT (("'"\\[0-7]{1,3}"'")|("'"\\."'")|("'"[^'\\\n]{1,4}"'"))
outputChar('/');outputChar('*');
//g_commentCount++;
}
<SkipCComment>[
^*\n\/]+
{
<SkipCComment>[
\\@]"verbatim"{BN}+
{
outputArray(yytext,yyleng);
BEGIN(SkipVerbatim);
}
<SkipCComment>\n {
<SkipVerbatim>[\\@]"endverbatim" {
outputArray(yytext,yyleng);
BEGIN(SkipCComment);
}
<SkipCComment,SkipVerbatim>[^*\n\/]+ {
outputArray(yytext,yyleng);
}
<SkipCComment,SkipVerbatim>\n {
g_yyLineNr++;
outputChar('\n');
}
<SkipCComment
>.
{
<SkipCComment
,SkipVerbatim>.
{
outputChar(*yytext);
}
<RemoveCComment>"*/" { BEGIN(g_lastCContext); }
...
...
src/translator_br.h
View file @
5042f145
...
...
@@ -16,6 +16,8 @@
* Version: 1.3 (2003/05/01)
*
* History:
* 1.3.3:
* - Updated to Doxygen 1.3.3
* 1.3.2:
* - Updated to Doxygen 1.3.2
* 1.3:
...
...
@@ -29,7 +31,7 @@
#ifndef TRANSLATOR_BR_H
#define TRANSLATOR_BR_H
class
TranslatorBrazilian
:
public
Translator
Adapter_1_3_3
class
TranslatorBrazilian
:
public
Translator
{
public
:
...
...
@@ -1466,7 +1468,7 @@ class TranslatorBrazilian: public TranslatorAdapter_1_3_3
// new since 1.3.1
//////////////////////////////////////////////////////////////////////////
/*! Used in the quick index of a class/file/namespace member list page
/*! Used in the quick index of a class/file/namespace member list page
* to link to the unfiltered list of all members.
*/
virtual
QCString
trAll
()
...
...
@@ -1479,5 +1481,55 @@ class TranslatorBrazilian: public TranslatorAdapter_1_3_3
return
"Este é o grafo de chamadas para esta função:"
;
}
//////////////////////////////////////////////////////////////////////////
// new since 1.3.3
//////////////////////////////////////////////////////////////////////////
/*! When the search engine is enabled this text is put in the header
* of each page before the field where one can enter the text to search
* for.
*/
virtual
QCString
trSearchForIndex
()
{
return
"Procurar por"
;
}
/*! This string is used as the title for the page listing the search
* results.
*/
virtual
QCString
trSearchResultsTitle
()
{
return
"Resultado da Busca"
;
}
/*! This string is put just before listing the search results. The
* text can be different depending on the number of documents found.
* Inside the text you can put the special marker $num to insert
* the number representing the actual number of search results.
* The @a numDocuments parameter can be either 0, 1 or 2, where the
* value 2 represents 2 or more matches. HTML markup is allowed inside
* the returned string.
*/
virtual
QCString
trSearchResults
(
int
numDocuments
)
{
if
(
numDocuments
==
0
)
{
return
"Nenhum documento foi encontrado."
;
}
else
if
(
numDocuments
==
1
)
{
return
"Apenas <b>1</b> documento foi encontrado."
;
}
else
{
return
"<b>$num</b> documentos encontrados. "
"Os melhores resultados vem primeiro."
;
}
}
/*! This string is put before the list of matched words, for each search
* result. What follows is the list of words that matched the query.
*/
virtual
QCString
trSearchMatches
()
{
return
"Resultados:"
;
}
};
#endif
src/translator_hr.h
View file @
5042f145
...
...
@@ -56,7 +56,7 @@
#ifndef TRANSLATOR_HR_H
#define TRANSLATOR_HR_H
class
TranslatorCroatian
:
public
Translator
Adapter_1_3_1
class
TranslatorCroatian
:
public
Translator
{
private
:
/*! to avoid macro redefinition from translator_cz.h */
...
...
@@ -1130,6 +1130,83 @@ class TranslatorCroatian : public TranslatorAdapter_1_3_1
{
return
decode
(
"Statiki atributi u paketu"
);
}
//////////////////////////////////////////////////////////////////////////
// new since 1.3.1
//////////////////////////////////////////////////////////////////////////
/*! Used in the quick index of a class/file/namespace member list page
* to link to the unfiltered list of all members.
*/
virtual
QCString
trAll
()
{
return
"Sve"
;
}
/*! Put in front of the call graph for a function. */
virtual
QCString
trCallGraph
()
{
return
"Ovo je dijagram poziva za ovu funkciju:"
;
}
//////////////////////////////////////////////////////////////////////////
// new since 1.3.3
//////////////////////////////////////////////////////////////////////////
/*! When the search engine is enabled this text is put in the header
* of each page before the field where one can enter the text to search
* for.
*/
virtual
QCString
trSearchForIndex
()
{
return
decode
(
"Trai"
);
}
/*! This string is used as the title for the page listing the search
* results.
*/
virtual
QCString
trSearchResultsTitle
()
{
return
"Rezultati pretrage"
;
}
/*! This string is put just before listing the search results. The
* text can be different depending on the number of documents found.
* Inside the text you can put the special marker $num to insert
* the number representing the actual number of search results.
* The @a numDocuments parameter can be either 0, 1 or 2, where the
* value 2 represents 2 or more matches. HTML markup is allowed inside
* the returned string.
*/
virtual
QCString
trSearchResults
(
int
numDocuments
)
{
if
(
numDocuments
==
0
)
{
return
decode
(
"Nema dokumenta koji odgovaraju vaem upitu"
);
}
else
if
(
numDocuments
==
1
)
{
return
decode
(
"Naen <b>1</b> dokument koji odgovara vaem upitu."
);
}
else
if
(
numDocuments
<
5
)
{
// croatian handle numbers up to 5 differently
// For those of you who like to read comments :
// There are only 4 men in the world in croatian.
// We say 1 ovjek (man), 2 ovjeka, 3 ovjeka , 4 ovjeka , but 5, 6, 7 ... ljudi (people)
// That's deep, isn't it :-)?
return
decode
(
"Naena <b>$num</b> dokumenta koji odgovaraju vaem upitu."
"Najbolji su prikazani prvi."
);
}
else
{
return
decode
(
"Naeno <b>$num</b> dokumenata koji odgovaraju vaem upitu."
"Najbolji su prikazani prvi."
);
}
}
/*! This string is put before the list of matched words, for each search
* result. What follows is the list of words that matched the query.
*/
virtual
QCString
trSearchMatches
()
{
return
decode
(
"Pronaeno:"
);
}
};
...
...
src/translator_it.h
View file @
5042f145
...
...
@@ -19,6 +19,7 @@
*
* Revision history
*
* 2003/11: translated new items used since version 1.3.3
* 2003/06: translated new items used since version 1.3.1
* 2003/04: translated new items used since version 1.3
* 2002/11: translated new items used since version 1.2.18
...
...
@@ -1448,6 +1449,57 @@ class TranslatorItalian : public TranslatorAdapter_1_3_3
return
"Questo è il grafo delle chiamate per questa funzione:"
;
}
//////////////////////////////////////////////////////////////////////////
// new since 1.3.3
//////////////////////////////////////////////////////////////////////////
/*! When the search engine is enabled this text is put in the header
* of each page before the field where one can enter the text to search
* for.
*/
virtual
QCString
trSearchForIndex
()
{
return
"Cerca"
;
}
/*! This string is used as the title for the page listing the search
* results.
*/
virtual
QCString
trSearchResultsTitle
()
{
return
"Risultati della ricerca"
;
}
/*! This string is put just before listing the search results. The
* text can be different depending on the number of documents found.
* Inside the text you can put the special marker $num to insert
* the number representing the actual number of search results.
* The @a numDocuments parameter can be either 0, 1 or 2, where the
* value 2 represents 2 or more matches. HTML markup is allowed inside
* the returned string.
*/
virtual
QCString
trSearchResults
(
int
numDocuments
)
{
if
(
numDocuments
==
0
)
{
return
"Nessun documento soddisfa la tua richiesta."
;
}
else
if
(
numDocuments
==
1
)
{
return
"Trovato <b>1</b> documento rispondente alla tua richiesta."
;
}
else
{
return
"Trovati <b>$num</b> documenti rispondenti alla tua richiesta. "
"Le corrispondenze migliori sono in testa."
;
}
}
/*! This string is put before the list of matched words, for each search
* result. What follows is the list of words that matched the query.
*/
virtual
QCString
trSearchMatches
()
{
return
"Corrispondenze:"
;
}
};
#endif
src/util.cpp
View file @
5042f145
...
...
@@ -405,6 +405,7 @@ int guessSection(const char *name)
return
0
;
}
// TODO: remove this!
QCString
resolveTypeDef
(
Definition
*
context
,
const
QCString
&
qualifiedName
,
Definition
**
typedefContext
)
{
...
...
@@ -543,195 +544,6 @@ NamespaceDef *getResolvedNamespace(const char *name)
}
}
//static QDict<Definition> g_resolvedScopes;
//
///*
// * find the fully qualified class name refered to by the input class
// * or typedef name against the input scope.
// * loops through scope and each of its parent scopes looking for a
// * match against the input name. Also recursively calls itself to check
// * against any imported namespaces in each scope being checked.
// */
//ClassDef *getResolvedClassRecursive(
// Definition *scope,
// const char *n,
// bool *pIsTypeDef,
// QCString *pTemplSpec
// )
//{
// QCString name = n;
// // bail out if there is no name
// if (name.isEmpty()) return 0;
// // use the global scope if no scope was passed
// if (scope==0) scope=Doxygen::globalScope;
// ClassDef *cd=0;
//
// //printf("===================\n");
// Definition *typedefScope = 0;
// //printf("-----------------------------------------------------\n");
// QCString subst = resolveTypeDef(scope,name,&typedefScope);
// //printf("trying getResolvedClass(%s,%s) => subst=%s\n",
// // scope ? scope->name().data() : "<none>", name.data(),subst.data());
//
// if (!subst.isEmpty())
// {
// //printf(" typedef value=%s typedefScope=%s\n",subst.data(),
// // typedefScope?typedefScope->qualifiedName().data():0);
//
// // strip * and & from n
// int ip=subst.length()-1;
// while (ip>=0 && (subst.at(ip)=='*' || subst.at(ip)=='&' ||
// subst.at(ip)==' ')) ip--;
// subst=subst.left(ip+1);
//
// if (pIsTypeDef) *pIsTypeDef=TRUE;
// if (subst==name) // avoid resolving "typedef struct foo foo";
// {
// cd = Doxygen::classSDict.find(name);
// if (cd) goto found;
// }
// else
// {
// int count=0; // recursion detection guard
// QCString newSubst;
// QCString typeName = subst;
// //printf( "---> subst=%s\n",subst.data());
//
// while (!(newSubst=resolveTypeDef(typedefScope,typeName)).isEmpty()
// && count<10)
// {
// //printf( "---> newSubst=%s\n",newSubst.data());
// if (typeName==newSubst)
// {
// cd = Doxygen::classSDict.find(subst); // for breaking typedef struct A A;
// //printf(" getClass: exit `%s' %p\n",subst.data(),cd);
// if (cd) goto found;
// break;
// }
// subst=newSubst;
// // strip * and & from n
// int ip=subst.length()-1;
// while (ip>=0 && subst.at(ip)=='*' || subst.at(ip)=='&' || subst.at(ip)==' ') ip--;
// subst=subst.left(ip+1);
// //printf(" getResolvedClass `%s'->`%s'\n",name.data(),subst.data());
//
// typeName=newSubst;
// //if (index!=-1) typeName.prepend(name.left(index)+"::");
// count++;
// }
// if (count==10)
// {
// warn_cont("Warning: possible recursive typedef dependency detected for %s!\n",n);
// cd = Doxygen::classSDict.find(name);
// if (cd) goto found;
// }
// else
// {
// int i;
// 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);
// if (cd==0 && (i=typeName.find('<'))>0) // try unspecialized version as well
// {
// if (pTemplSpec) *pTemplSpec = typeName.right(typeName.length()-i);
// cd = Doxygen::classSDict.find(typeName.left(i));
// }
// //if (cd) goto found;
// }
// }
// // whether we found something or not, we stop searching to prevent
// // finding false positives.
// goto found;
// }
// else // not a typedef
// {
// do
// {
// //printf(" %s is not a typedef value in scope %s\n",name.data(),scope?scope->name().data():"<global>");
// if (pIsTypeDef) *pIsTypeDef=FALSE;
// if (scope!=Doxygen::globalScope)
// {
// cd = Doxygen::classSDict.find(scope->name()+"::"+name);
// }
// else
// {
// cd = Doxygen::classSDict.find(name);
// }
// if (cd==0)
// {
// if (scope->definitionType()==Definition::TypeNamespace)
// {
// NamespaceDef *nscope = (NamespaceDef*)scope;
// ClassSDict *cl = nscope->getUsedClasses();
// if (cl) // see if the class was imported via a using statement
// {
// ClassSDict::Iterator cli(*cl);
// ClassDef *ucd;
// for (cli.toFirst();(ucd=cli.current());++cli)
// {
// //printf("comparing %s<->%s\n",ucd->name().data(),name.data());
// if (rightScopeMatch(ucd->name(),name))
// {
// cd=ucd;
// break;
// }
// }
// }
// NamespaceSDict *nl = nscope->getUsedNamespaces();
// if (nl) // check used namespaces for the class
// {
// NamespaceSDict::Iterator nli(*nl);
// NamespaceDef *und;
// for (nli.toFirst();(und=nli.current());++nli)
// {
// if (g_resolvedScopes.find(und->name())==0)
// {
// g_resolvedScopes.insert(und->name(),und);
// cd = getResolvedClassRecursive(und,name,pIsTypeDef,pTemplSpec);
// g_resolvedScopes.remove(und->name());
// if (cd) break;
// }
// }
// }
// }
// }
// if (cd) goto found;
//
// if (scope==Doxygen::globalScope) scope=0;
// else if (scope) scope=scope->getOuterScope();
// //fprintf(stderr,"scope=%p\n",scope);
// } while (scope);
// }
//
//found:
// //printf("getResolvedClass()=%s\n",cd?cd->name().data():"<none>");
// return cd;
//}
//
//
//ClassDef *getOldResolvedClass(
// Definition *scope,
// const char *n,
// bool *pIsTypeDef,
// QCString *pTemplSpec
// )
//{
// g_resolvedScopes.clear();
// return getResolvedClassRecursive(scope,n,pIsTypeDef,pTemplSpec);
//}
//
//-------------------------------------------------------------------------
//-------------------------------------------------------------------------
//-------------------------------------------------------------------------
//-------------------------------------------------------------------------
static
QDict
<
MemberDef
>
g_resolvedTypedefs
;
// forward declaration
...
...
@@ -744,7 +556,8 @@ ClassDef *getResolvedClassRec(Definition *scope,
int
isAccessibleFrom
(
Definition
*
scope
,
FileDef
*
fileScope
,
Definition
*
item
,
const
QCString
&
explicitScopePart
);
/*! Returns the class representing the value of the typedef represented by md.
/*! Returns the class representing the value of the typedef represented by \a md
* within file \a fileScope.
*
* Example: typedef A T; will return the class representing A if it is a class.
*
...
...
@@ -865,7 +678,10 @@ static Definition *followPath(Definition *start,FileDef *fileScope,const QCStrin
return
current
;
// path could be followed
}
bool
accessibleViaUsingClass
(
const
ClassSDict
*
cl
,
FileDef
*
fileScope
,
Definition
*
item
,
const
QCString
&
explicitScopePart
=
""
)
bool
accessibleViaUsingClass
(
const
ClassSDict
*
cl
,
FileDef
*
fileScope
,
Definition
*
item
,
const
QCString
&
explicitScopePart
=
""
)
{
if
(
cl
)
// see if the class was imported via a using statement
{
...
...
@@ -893,7 +709,10 @@ bool accessibleViaUsingClass(const ClassSDict *cl,FileDef *fileScope,Definition
return
FALSE
;
}
bool
accessibleViaUsingNamespace
(
const
NamespaceSDict
*
nl
,
FileDef
*
fileScope
,
Definition
*
item
,
const
QCString
&
explicitScopePart
=
""
)
bool
accessibleViaUsingNamespace
(
const
NamespaceSDict
*
nl
,
FileDef
*
fileScope
,
Definition
*
item
,
const
QCString
&
explicitScopePart
=
""
)
{
if
(
nl
)
// check used namespaces for the class
{
...
...
@@ -1211,7 +1030,7 @@ QCString removeRedundantWhiteSpace(const QCString &s)
result
+=
' '
;
result
+=
s
.
at
(
i
);
}
else
if
(
c
==
't'
&&
csp
==
5
)
// prevent const ::A from being converted to const::A
else
if
(
c
==
't'
&&
csp
==
5
&&
!
isId
(
s
.
at
(
i
+
1
))
)
// prevent const ::A from being converted to const::A
{
result
+=
"t "
;
csp
=
0
;
...
...
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