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
f92ed7a6
Commit
f92ed7a6
authored
Jun 23, 2005
by
dimitri
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Release-1.4.3-20050623
parent
069dd778
Changes
14
Hide whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
141 additions
and
79 deletions
+141
-79
INSTALL
INSTALL
+2
-2
README
README
+2
-2
VERSION
VERSION
+1
-1
code.l
src/code.l
+3
-3
commentscan.l
src/commentscan.l
+9
-1
defargs.l
src/defargs.l
+10
-0
definition.cpp
src/definition.cpp
+6
-1
doxygen.cpp
src/doxygen.cpp
+62
-48
filedef.cpp
src/filedef.cpp
+1
-0
latexdocvisitor.cpp
src/latexdocvisitor.cpp
+1
-1
memberdef.h
src/memberdef.h
+1
-0
scanner.l
src/scanner.l
+7
-1
translator_id.h
src/translator_id.h
+0
-1
util.cpp
src/util.cpp
+36
-18
No files found.
INSTALL
View file @
f92ed7a6
DOXYGEN Version 1.4.3-200506
15
DOXYGEN Version 1.4.3-200506
23
Please read the installation section of the manual
(http://www.doxygen.org/install.html) for instructions.
--------
Dimitri van Heesch (
15
June 2005)
Dimitri van Heesch (
23
June 2005)
README
View file @
f92ed7a6
DOXYGEN Version 1.4.3_200506
15
DOXYGEN Version 1.4.3_200506
23
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) (
15
June 2005)
Dimitri van Heesch (dimitri@stack.nl) (
23
June 2005)
VERSION
View file @
f92ed7a6
1.4.3-200506
15
1.4.3-200506
23
src/code.l
View file @
f92ed7a6
...
...
@@ -448,9 +448,9 @@ static void startCodeLine()
//lineAnchor.sprintf("l%05d",g_yyLineNr);
Definition *d = g_sourceFileDef->getSourceDefinition(g_yyLineNr);
//printf("startCodeLine %d d=%
p\n",g_yyLineNr,d
);
//printf("startCodeLine %d d=%
s\n", g_yyLineNr,d ? d->name().data() : "<null>"
);
//g_code->startLineNumber();
if (!g_includeCodeFragment && d
&& d->isLinkableInProject()
)
if (!g_includeCodeFragment && d)
{
g_currentDefinition = d;
g_currentMemberDef = g_sourceFileDef->getSourceMember(g_yyLineNr);
...
...
@@ -476,7 +476,7 @@ static void startCodeLine()
g_sourceFileDef->getSourceFileBase(),
lineAnchor);
}
else
else
if (d->isLinkableInProject())
{
g_code->writeLineNumber(d->getReference(),
d->getOutputFileBase(),
...
...
src/commentscan.l
View file @
f92ed7a6
...
...
@@ -327,6 +327,7 @@ static Protection protection;
static bool xrefAppendFlag;
static bool inGroupParamFound;
static int braceCount;
static bool insidePre;
//-----------------------------------------------------------------------------
...
...
@@ -618,6 +619,7 @@ static inline void setOutput(OutputContext ctx)
break;
}
}
inContext = ctx;
switch(inContext)
{
...
...
@@ -876,8 +878,13 @@ MAILADR [a-z_A-Z0-9.+\-]+"@"[a-z_A-Z0-9\-]+("."[a-z_A-Z0-9\-]+)+[a-z_A-Z0-9\-]
if (inContext!=OutputBrief)
{
addOutput(yytext);
setOutput(OutputDoc);
}
else
{
setOutput(OutputDoc);
addOutput(yytext);
}
setOutput(OutputDoc);
lineCount();
}
<Comment>"." { // potential end of a JavaDoc style comment
...
...
@@ -2099,6 +2106,7 @@ bool parseCommentBlock(/* in */ ParserInterface *parser,
needNewEntry = FALSE;
xrefKind = XRef_None;
xrefAppendFlag = FALSE;
insidePre = FALSE;
outputXRef.resize(0);
setOutput( isBrief || isJavaDocStyle ? OutputBrief : OutputDoc );
briefEndsAtDot = isJavaDocStyle;
...
...
src/defargs.l
View file @
f92ed7a6
...
...
@@ -402,6 +402,16 @@ void stringToArgumentList(const char *argsString,ArgumentList* &al)
{
if (al==0) return;
if (argsString==0) return;
g_copyArgValue=0;
g_curArgDocs.resize(0);
g_curArgAttrib.resize(0);
g_curArgArray.resize(0);
g_argRoundCount = 0;
g_argSharpCount = 0;
g_argCurlyCount = 0;
g_lastDocChar = 0;
g_inputString = argsString;
g_inputPosition = 0;
g_curArgTypeName.resize(0);
...
...
src/definition.cpp
View file @
f92ed7a6
...
...
@@ -227,10 +227,15 @@ void Definition::setDocumentation(const char *d,const char *docFile,int docLine,
void
Definition
::
setBriefDescription
(
const
char
*
b
,
const
char
*
briefFile
,
int
briefLine
)
{
if
(
b
==
0
)
return
;
static
QCString
outputLanguage
=
Config_getEnum
(
"OUTPUT_LANGUAGE"
);
static
bool
needsDot
=
outputLanguage
!=
"Japanese"
&&
outputLanguage
!=
"Chinese"
&&
outputLanguage
!=
"Korean"
;
//fprintf(stderr,"Definition::setBriefDescription(%s,%s,%d)\n",b,briefFile,briefLine);
m_brief
=
QCString
(
b
).
stripWhiteSpace
();
int
bl
=
m_brief
.
length
();
if
(
bl
>
0
)
// add punctuation if needed
if
(
bl
>
0
&&
needsDot
)
// add punctuation if needed
{
switch
(
m_brief
.
at
(
bl
-
1
))
{
...
...
src/doxygen.cpp
View file @
f92ed7a6
...
...
@@ -699,19 +699,22 @@ static void addClassToContext(Entry *root)
//NamespaceDef *nd = 0;
FileDef
*
fd
=
findFileDef
(
Doxygen
::
inputNameDict
,
root
->
fileName
,
ambig
);
// see if the using statement was found inside a namespace or inside
// the global file scope.
QCString
scName
;
if
(
root
->
parent
->
section
&
Entry
::
SCOPE_MASK
)
{
scName
=
root
->
parent
->
name
;
}
// name without parent's scope
QCString
fullName
=
root
->
name
;
QCString
qualifiedName
=
scName
.
isEmpty
()
?
root
->
name
:
scName
+
"::"
+
root
->
name
;
ClassDef
*
cd
=
getClass
(
qualifiedName
);
// strip off any template parameters (but not those for specializations)
fullName
=
stripTemplateSpecifiersFromScope
(
fullName
);
// name with scope
QCString
qualifiedName
=
scName
.
isEmpty
()
?
fullName
:
scName
+
"::"
+
fullName
;
ClassDef
*
cd
=
getClass
(
qualifiedName
);
Debug
::
print
(
Debug
::
Classes
,
0
,
" Found class with name %s (qualifiedName=%s -> cd=%p)
\n
"
,
cd
?
cd
->
name
().
data
()
:
root
->
name
.
data
(),
qualifiedName
.
data
(),
cd
);
...
...
@@ -1624,7 +1627,7 @@ static MemberDef *addVariableToFile(
for
(
mni
.
toFirst
();(
md
=
mni
.
current
());
++
mni
)
{
if
(
((
nd
==
0
&&
md
->
getFileDef
()
&&
((
nd
==
0
&&
md
->
get
NamespaceDef
()
==
0
&&
md
->
get
FileDef
()
&&
root
->
fileName
==
md
->
getFileDef
()
->
absFilePath
()
)
// both variable names in the same file
||
(
nd
!=
0
&&
md
->
getNamespaceDef
()
==
nd
)
// both in same namespace
...
...
@@ -1633,12 +1636,16 @@ static MemberDef *addVariableToFile(
)
// variable already in the scope
{
Debug
::
print
(
Debug
::
Variables
,
0
,
" variable already found: scope=%s
\n
"
,
md
->
getOuterScope
()
->
name
().
data
());
addMemberDocs
(
root
,
md
,
def
,
0
,
FALSE
);
md
->
setRefItems
(
root
->
sli
);
return
md
;
}
}
}
Debug
::
print
(
Debug
::
Variables
,
0
,
" new variable!
\n
"
);
// new global variable, enum value or typedef
MemberDef
*
md
=
new
MemberDef
(
root
->
fileName
,
root
->
startLine
,
...
...
@@ -1658,6 +1665,7 @@ static MemberDef *addVariableToFile(
md
->
setDefinition
(
def
);
md
->
enableCallGraph
(
root
->
callGraph
);
md
->
setExplicitExternal
(
root
->
explicitExternal
);
md
->
setOuterScope
(
fd
);
if
(
!
root
->
explicitExternal
)
{
md
->
setBodySegment
(
root
->
bodyLine
,
root
->
endBodyLine
);
...
...
@@ -2378,6 +2386,7 @@ static void buildFunctionList(Entry *root)
if
(
md
->
briefDescription
().
isEmpty
()
&&
!
root
->
brief
.
isEmpty
())
{
md
->
setBriefDescription
(
root
->
brief
,
root
->
briefFile
,
root
->
briefLine
);
md
->
setArgsString
(
root
->
args
);
}
else
if
(
!
md
->
briefDescription
().
isEmpty
()
&&
!
root
->
brief
.
isEmpty
()
&&
mnd
==
rnd
)
{
...
...
@@ -3100,16 +3109,20 @@ static ClassDef *findClassWithinClassContext(Definition *context,ClassDef *cd,co
FileDef
*
fd
=
cd
->
getFileDef
();
ClassDef
*
result
=
0
;
if
(
context
)
if
(
context
&&
cd
!=
context
)
{
result
=
getResolvedClass
(
context
,
0
,
name
);
//printf("** Trying to find %s within context %s result=%s\n",
// name.data(),context->name().data(),result ? result->name().data() : "<none>");
}
if
(
result
==
0
)
{
result
=
getResolvedClass
(
cd
,
fd
,
name
);
}
//printf("** Trying to find %s within context %s class %s result=%s\n",
// name.data(),
// context ? context->name().data() : "<none>",
// cd ? cd->name().data() : "<none>",
// result ? result->name().data() : "<none>"
// );
return
result
;
}
...
...
@@ -3165,19 +3178,22 @@ static void findUsedClassesForClass(Entry *root,
{
type
=
substituteTemplateArgumentsInString
(
type
,
formalArgs
,
actualArgs
);
}
QCString
typeName
=
resolveTypeDef
(
masterCd
,
usedClassName
);
//printf("*** Found resolved class %s for %s\n",typeName.data(),usedClassName.data());
if
(
!
typeName
.
isEmpty
())
// if we could resolve the typedef, use
// the result as the class name.
{
usedClassName
=
typeName
;
}
//printf(" template substitution gives=%s\n",type.data());
while
(
!
found
&&
extractClassNameFromType
(
type
,
pos
,
usedClassName
,
templSpec
)
!=-
1
)
{
//printf(" found used class %s\n",usedClassName.data());
// the name could be a type definition, resolve it
QCString
typeName
=
resolveTypeDef
(
masterCd
,
usedClassName
);
//printf("*** Found resolved class %s for %s\n",typeName.data(),usedClassName.data());
if
(
!
typeName
.
isEmpty
())
// if we could resolve the typedef, use
// the result as the class name.
{
usedClassName
=
typeName
;
}
//QCString typeName = resolveTypeDef(masterCd,usedClassName);
int
sp
=
usedClassName
.
find
(
'<'
);
if
(
sp
==-
1
)
sp
=
0
;
...
...
@@ -3767,6 +3783,7 @@ static void computeClassRelations()
for
(;(
root
=
edi
.
current
());
++
edi
)
{
ClassDef
*
cd
;
// strip any annonymous scopes first
QCString
bName
=
stripAnonymousNamespaceScope
(
root
->
name
);
bName
=
stripTemplateSpecifiersFromScope
(
bName
);
...
...
@@ -4010,12 +4027,15 @@ static void addMemberDocs(Entry *root,
if
(
al
)
{
//printf("merging arguments (1)\n");
mergeArguments
(
md
->
argumentList
(),
al
,
TRUE
);
//printf("merging arguments (1) docs=%d\n",root->doc.isEmpty());
if
(
!
root
->
doc
.
isEmpty
())
{
mergeArguments
(
md
->
argumentList
(),
al
,
TRUE
);
}
}
else
{
if
(
if
(
!
root
->
doc
.
isEmpty
()
&&
matchArguments2
(
md
->
getOuterScope
(),
md
->
getFileDef
(),
md
->
argumentList
(),
rscope
,
rfd
,
root
->
argList
,
TRUE
...
...
@@ -4088,16 +4108,14 @@ static void addMemberDocs(Entry *root,
md
->
setMaxInitLines
(
root
->
initLines
);
}
//if (md->bodyCode().isEmpty() && !root->body.isEmpty()) /* no body yet */
//{
// md->setBody(root->body);
//}
if
(
rfd
)
{
if
((
md
->
getStartBodyLine
()
==-
1
&&
root
->
bodyLine
!=-
1
)
||
(
md
->
isVariable
()
&&
!
root
->
explicitExternal
))
if
((
md
->
getStartBodyLine
()
==-
1
&&
root
->
bodyLine
!=-
1
)
// || (md->isVariable() && !root->explicitExternal)
)
{
//printf("Setting new body segment [%d,%d]\n",root->bodyLine,root->endBodyLine);
md
->
setBodySegment
(
root
->
bodyLine
,
root
->
endBodyLine
);
md
->
setBodyDef
(
rfd
);
}
...
...
@@ -4107,8 +4125,6 @@ static void addMemberDocs(Entry *root,
md
->
enableCallGraph
(
md
->
hasCallGraph
()
||
root
->
callGraph
);
//md->setDefFile(root->fileName);
//md->setDefLine(root->startLine);
md
->
mergeMemberSpecifiers
(
root
->
memSpec
);
md
->
addSectionsToDefinition
(
root
->
anchors
);
addMemberToGroups
(
root
,
md
);
...
...
@@ -4182,8 +4198,10 @@ static bool findGlobalMember(Entry *root,
{
bool
ambig
;
NamespaceDef
*
nd
=
md
->
getNamespaceDef
();
//printf("Namespace namespaceName=%s nd=%s\n",
// namespaceName.data(),nd ? nd->name().data() : "<none>");
FileDef
*
fd
=
findFileDef
(
Doxygen
::
inputNameDict
,
root
->
fileName
,
ambig
);
//printf("File %s\n",fd ? fd->name().data() : "<none>");
NamespaceSDict
*
nl
=
fd
?
fd
->
getUsedNamespaces
()
:
0
;
...
...
@@ -6021,15 +6039,15 @@ static void addSourceReferences()
for
(
mni
.
toFirst
();(
md
=
mni
.
current
());
++
mni
)
{
//printf("class member %s\n",md->name().data());
ClassDef
*
cd
=
md
->
getClassDef
();
FileDef
*
fd
=
md
->
getBodyDef
();
if
(
fd
&&
cd
&&
cd
->
isLinkableInProject
()
&&
md
->
getStartBodyLine
()
!=-
1
&&
md
->
isLinkableInProject
())
if
(
fd
&&
md
->
getStartBodyLine
()
!=-
1
&&
md
->
isLinkableInProject
()
&&
fd
->
generateSourceFile
())
{
Definition
*
d
=
cd
;
if
(
d
==
0
)
d
=
md
->
getNamespaceDef
();
if
(
d
==
0
)
d
=
md
->
getFileDef
();
fd
->
addSourceRef
(
md
->
getStartBodyLine
(),
d
,
md
);
//printf("Found member `%s' in file `%s' at line `%d' def=%s\n",
// md->name().data(),fd->name().data(),md->getStartBodyLine(),md->getOuterScope()->name().data());
fd
->
addSourceRef
(
md
->
getStartBodyLine
(),
md
->
getOuterScope
(),
md
);
}
}
}
...
...
@@ -6040,22 +6058,18 @@ static void addSourceReferences()
MemberDef
*
md
=
0
;
for
(
mni
.
toFirst
();(
md
=
mni
.
current
());
++
mni
)
{
NamespaceDef
*
nd
=
md
->
getNamespaceDef
();
FileDef
*
fd
=
md
->
getBodyDef
();
GroupDef
*
gd
=
md
->
getGroupDef
();
//printf("member %s fd=%p nd=%p gd=%p\n",md->name().data(),fd,nd,gd);
if
(
fd
&&
md
->
getStartBodyLine
()
!=-
1
&&
md
->
isLinkableInProject
()
&&
((
nd
&&
nd
->
isLinkableInProject
())
||
(
fd
->
isLinkableInProject
())
||
(
gd
&&
gd
->
isLinkableInProject
())
)
//printf("member %s body=[%d,%d] fd=%p\n",md->name().data(),
// md->getStartBodyLine(),md->getEndBodyLine(),fd);
if
(
fd
&&
md
->
getStartBodyLine
()
!=-
1
&&
md
->
isLinkableInProject
()
&&
fd
->
generateSourceFile
()
)
{
//printf("Found member `%s' in file `%s' at line `%d'\n",
// md->name().data(),fd->name().data(),md->getStartBodyLine());
Definition
*
d
=
gd
!=
0
?
(
Definition
*
)
gd
:
(
nd
!=
0
?
(
Definition
*
)
nd
:
(
Definition
*
)
fd
);
fd
->
addSourceRef
(
md
->
getStartBodyLine
(),
d
,
md
);
//printf("Found member `%s' in file `%s' at line `%d' def=%s\n",
// md->name().data(),fd->name().data(),md->getStartBodyLine(),md->getOuterScope()->name().data());
fd
->
addSourceRef
(
md
->
getStartBodyLine
(),
md
->
getOuterScope
(),
md
);
}
}
}
...
...
src/filedef.cpp
View file @
f92ed7a6
...
...
@@ -762,6 +762,7 @@ void FileDef::insertNamespace(NamespaceDef *nd)
void
FileDef
::
addSourceRef
(
int
line
,
Definition
*
d
,
MemberDef
*
md
)
{
//printf("FileDef::addSourceDef(%d,%p,%p)\n",line,d,md);
if
(
d
)
{
if
(
srcDefDict
==
0
)
srcDefDict
=
new
QIntDict
<
Definition
>
(
257
);
...
...
src/latexdocvisitor.cpp
View file @
f92ed7a6
...
...
@@ -170,7 +170,7 @@ void LatexDocVisitor::visit(DocSymbol *s)
case
DocSymbol
:
:
Szlig
:
m_t
<<
"
\"
s"
;
break
;
case
DocSymbol
:
:
Cedil
:
m_t
<<
"
\\
c{"
<<
s
->
letter
()
<<
"}"
;
break
;
case
DocSymbol
:
:
Ring
:
m_t
<<
"
\\
"
<<
s
->
letter
()
<<
s
->
letter
();
break
;
case
DocSymbol
:
:
Nbsp
:
m_t
<<
"
\\
"
;
break
;
case
DocSymbol
:
:
Nbsp
:
m_t
<<
"
~
"
;
break
;
default
:
err
(
"Error: unknown symbol found
\n
"
);
}
...
...
src/memberdef.h
View file @
f92ed7a6
...
...
@@ -185,6 +185,7 @@ class MemberDef : public Definition
void
setHasDocumentedReturnType
(
bool
b
)
{
m_hasDocumentedReturnType
=
b
;
}
void
setInheritsDocsFrom
(
MemberDef
*
md
)
{
m_docProvider
=
md
;
}
void
setTagInfo
(
TagInfo
*
i
);
void
setArgsString
(
const
char
*
as
)
{
args
=
as
;
}
// output generation
void
writeDeclaration
(
OutputList
&
ol
,
...
...
src/scanner.l
View file @
f92ed7a6
...
...
@@ -2175,6 +2175,8 @@ IDLATTR ("["[^\]]*"]"){BN}*
}
current->name.resize(0);
current->args.resize(0);
current->brief.resize(0);
current->doc.resize(0);
current->initializer.resize(0);
current->bitfields.resize(0);
int i=oldType.length();
...
...
@@ -2709,7 +2711,7 @@ IDLATTR ("["[^\]]*"]"){BN}*
fullArgString=current->args.copy();
copyArgString=¤t->args;
BEGIN( ReadFuncArgType ) ;
//printf(">>> Read function arguments
!\n"
);
//printf(">>> Read function arguments
current->argList->count()=%d\n",current->argList->count()
);
}
}
/*
...
...
@@ -4047,6 +4049,10 @@ IDLATTR ("["[^\]]*"]"){BN}*
<DocBlock>"//" { // slashes in the middle of a comment block
docBlock+=yytext;
}
<DocBlock>"/*" { // start of a new comment in the
// middle of a comment block
docBlock+=yytext;
}
<DocBlock>("@@"|"\\\\"){ID}/[^a-z_A-Z0-9] { // escaped command
docBlock+=yytext;
}
...
...
src/translator_id.h
View file @
f92ed7a6
...
...
@@ -21,7 +21,6 @@
/*!
Indonesian translator based on Doxygen 1.4.2.
\version $Id$
\author Hendy Irawan <ceefour@gauldong.net>
*/
class
TranslatorIndonesian
:
public
Translator
...
...
src/util.cpp
View file @
f92ed7a6
...
...
@@ -2685,21 +2685,19 @@ static QCString getCanonicalTypeForIdentifier(
Definition
*
d
,
FileDef
*
fs
,
const
QCString
&
word
,
QCString
*
tSpec
)
{
QCString
symName
,
scope
,
result
,
templSpec
;
QCString
symName
,
scope
,
result
,
templSpec
,
tmpName
;
DefinitionList
*
defList
=
0
;
if
(
tSpec
)
templSpec
=
*
tSpec
;
if
(
word
.
findRev
(
"::"
)
!=-
1
&&
!
(
scop
e
=
stripScope
(
word
)).
isEmpty
())
if
(
word
.
findRev
(
"::"
)
!=-
1
&&
!
(
tmpNam
e
=
stripScope
(
word
)).
isEmpty
())
{
symName
=
word
.
mid
(
scope
.
length
()
+
2
)
;
symName
=
tmpName
;
}
else
{
symName
=
word
;
}
//printf("symName=%s templSpec=%s\n",symName.data(),templSpec.data());
if
(
!
symName
.
isEmpty
()
&&
!
templSpec
.
isEmpty
()
&&
(
defList
=
Doxygen
::
symbolMap
->
find
(
symName
+
templSpec
))
&&
defList
->
count
()
==
1
)
// word without scope but with template specs
...
...
@@ -2715,6 +2713,7 @@ static QCString getCanonicalTypeForIdentifier(
// unique symbol in the symbol map
{
QCString
ts
;
//printf("unique symName=%s\n",symName.data());
result
=
resolveSymbolName
(
fs
,
defList
->
first
(),
ts
)
+
templSpec
;
}
else
// symbol not unique, try to find the one in the right scope
...
...
@@ -2730,11 +2729,19 @@ static QCString getCanonicalTypeForIdentifier(
{
cd
=
getResolvedClass
(
d
,
fs
,
word
,
&
mType
,
0
,
TRUE
);
}
//printf("symbol=%s word=%s cd=%s d=%s fs=%s\n",
// symName.data(),
// word.data(),
// cd?cd->name().data():"<none>",
// d?d->name().data():"<none>",
// fs?fs->name().data():"<none>"
// );
//printf(">>>> word '%s' => '%s'\n",(word+templSpec).data(),cd?cd->qualifiedNameWithTemplateParameters().data():"<none>");
if
(
cd
)
// known type
{
result
=
cd
->
qualifiedNameWithTemplateParameters
();
//result = cd->qualifiedNameWithTemplateParameters();
result
=
removeRedundantWhiteSpace
(
cd
->
qualifiedName
()
+
templSpec
);
if
(
cd
->
isTemplate
())
{
*
tSpec
=
""
;
...
...
@@ -2799,6 +2806,8 @@ static QCString extractCanonicalType(Definition *d,FileDef *fs,const Argument *a
//printf(" i=%d p=%d\n",i,p);
canType
+=
type
.
mid
(
pp
,
i
-
pp
);
//printf("word=%s templSpec=%s\n",word.data(),templSpec.data());
canType
+=
getCanonicalTypeForIdentifier
(
d
,
fs
,
word
,
&
templSpec
);
if
(
!
templSpec
.
isEmpty
())
// if we didn't use up the templSpec already
// (i.e. type is not a template specialization)
...
...
@@ -2825,8 +2834,8 @@ static QCString extractCanonicalType(Definition *d,FileDef *fs,const Argument *a
}
static
bool
matchArgument2
(
Definition
*
srcScope
,
FileDef
*
srcFileScope
,
const
Argument
*
srcA
,
Definition
*
dstScope
,
FileDef
*
dstFileScope
,
const
Argument
*
dstA
Definition
*
srcScope
,
FileDef
*
srcFileScope
,
Argument
*
srcA
,
Definition
*
dstScope
,
FileDef
*
dstFileScope
,
Argument
*
dstA
)
{
//printf(">> match argument: %s::`%s|%s' (%s) <-> %s::`%s|%s' (%s)\n",
...
...
@@ -2840,18 +2849,26 @@ static bool matchArgument2(
NOMATCH
return
FALSE
;
}
QCString
sSrcName
=
" "
+
srcA
->
name
;
QCString
sDstName
=
" "
+
dstA
->
name
;
if
(
sSrcName
==
dstA
->
type
.
right
(
sSrcName
.
length
()))
{
// case "unsigned int" <-> "unsigned int i"
srcA
->
type
+=
sSrcName
;
srcA
->
name
=
""
;
}
else
if
(
sDstName
==
srcA
->
type
.
right
(
sDstName
.
length
()))
{
// case "unsigned int i" <-> "unsigned int"
dstA
->
type
+=
sDstName
;
dstA
->
name
=
""
;
}
if
(
srcA
->
canType
.
isEmpty
())
{
Argument
*
thatSrcA
=
(
Argument
*
)
srcA
;
// since canType is a cached value
// of type we do not really change the argument, but the
// compiler does know that.
thatSrcA
->
canType
=
extractCanonicalType
(
srcScope
,
srcFileScope
,
srcA
);
srcA
->
canType
=
extractCanonicalType
(
srcScope
,
srcFileScope
,
srcA
);
}
if
(
dstA
->
canType
.
isEmpty
())
{
Argument
*
thatDstA
=
(
Argument
*
)
dstA
;
thatDstA
->
canType
=
extractCanonicalType
(
dstScope
,
dstFileScope
,
dstA
);
dstA
->
canType
=
extractCanonicalType
(
dstScope
,
dstFileScope
,
dstA
);
}
if
(
srcA
->
canType
==
dstA
->
canType
)
...
...
@@ -2911,7 +2928,7 @@ bool matchArguments2(Definition *srcScope,FileDef *srcFileScope,ArgumentList *sr
MATCH
return
TRUE
;
}
if
(
srcAl
->
count
()
!=
dstAl
->
count
())
{
NOMATCH
...
...
@@ -3010,19 +3027,20 @@ void mergeArguments(ArgumentList *srcAl,ArgumentList *dstAl,bool forceNameOverwr
}
else
if
(
!
srcA
->
name
.
isEmpty
()
&&
!
dstA
->
name
.
isEmpty
())
{
//printf("srcA->name=%s dstA->name=%s\n",srcA->name.data(),dstA->name.data());
if
(
forceNameOverwrite
)
{
srcA
->
name
=
dstA
->
name
.
copy
()
;
srcA
->
name
=
dstA
->
name
;
}
else
{
if
(
srcA
->
docs
.
isEmpty
()
&&
!
dstA
->
docs
.
isEmpty
())
{
srcA
->
name
=
dstA
->
name
.
copy
()
;
srcA
->
name
=
dstA
->
name
;
}
else
if
(
!
srcA
->
docs
.
isEmpty
()
&&
dstA
->
docs
.
isEmpty
())
{
dstA
->
name
=
srcA
->
name
.
copy
()
;
dstA
->
name
=
srcA
->
name
;
}
}
}
...
...
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