summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDimitri van Heesch <dimitri@stack.nl>2005-06-23 21:12:45 (GMT)
committerDimitri van Heesch <dimitri@stack.nl>2005-06-23 21:12:45 (GMT)
commitd497898d92c2d2e3495505095563f07549dc2201 (patch)
tree4786c7f47c0280d74828ce09dd0a0f1bf1bcdea6
parentf160c0c8c0545b1f397fbc7892bf9f71995cf790 (diff)
downloadDoxygen-d497898d92c2d2e3495505095563f07549dc2201.zip
Doxygen-d497898d92c2d2e3495505095563f07549dc2201.tar.gz
Doxygen-d497898d92c2d2e3495505095563f07549dc2201.tar.bz2
Release-1.4.3-20050623
-rw-r--r--INSTALL4
-rw-r--r--README4
-rw-r--r--VERSION2
-rw-r--r--src/code.l6
-rw-r--r--src/commentscan.l10
-rw-r--r--src/defargs.l10
-rw-r--r--src/definition.cpp7
-rw-r--r--src/doxygen.cpp110
-rw-r--r--src/filedef.cpp1
-rw-r--r--src/latexdocvisitor.cpp2
-rw-r--r--src/memberdef.h1
-rw-r--r--src/scanner.l8
-rw-r--r--src/translator_id.h1
-rw-r--r--src/util.cpp54
14 files changed, 141 insertions, 79 deletions
diff --git a/INSTALL b/INSTALL
index af1b6c4..33514bb 100644
--- a/INSTALL
+++ b/INSTALL
@@ -1,7 +1,7 @@
-DOXYGEN Version 1.4.3-20050615
+DOXYGEN Version 1.4.3-20050623
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)
diff --git a/README b/README
index e9cb674..5bb8276 100644
--- a/README
+++ b/README
@@ -1,4 +1,4 @@
-DOXYGEN Version 1.4.3_20050615
+DOXYGEN Version 1.4.3_20050623
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)
diff --git a/VERSION b/VERSION
index c1ffc41..b8972b1 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-1.4.3-20050615
+1.4.3-20050623
diff --git a/src/code.l b/src/code.l
index 598b781..e42df77 100644
--- a/src/code.l
+++ b/src/code.l
@@ -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(),
diff --git a/src/commentscan.l b/src/commentscan.l
index 9181776..ff6e603 100644
--- a/src/commentscan.l
+++ b/src/commentscan.l
@@ -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;
diff --git a/src/defargs.l b/src/defargs.l
index c452c47..00c862f 100644
--- a/src/defargs.l
+++ b/src/defargs.l
@@ -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);
diff --git a/src/definition.cpp b/src/definition.cpp
index 381159b..9b0ee16 100644
--- a/src/definition.cpp
+++ b/src/definition.cpp
@@ -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))
{
diff --git a/src/doxygen.cpp b/src/doxygen.cpp
index d2b4303..e45f91c 100644
--- a/src/doxygen.cpp
+++ b/src/doxygen.cpp
@@ -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->getNamespaceDef()==0 && md->getFileDef() &&
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);
}
}
}
diff --git a/src/filedef.cpp b/src/filedef.cpp
index 351d83b..46e0b6b 100644
--- a/src/filedef.cpp
+++ b/src/filedef.cpp
@@ -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);
diff --git a/src/latexdocvisitor.cpp b/src/latexdocvisitor.cpp
index a72dd65..9afde53 100644
--- a/src/latexdocvisitor.cpp
+++ b/src/latexdocvisitor.cpp
@@ -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");
}
diff --git a/src/memberdef.h b/src/memberdef.h
index 70c69ac..9f69892 100644
--- a/src/memberdef.h
+++ b/src/memberdef.h
@@ -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,
diff --git a/src/scanner.l b/src/scanner.l
index ddd839b..810a79b 100644
--- a/src/scanner.l
+++ b/src/scanner.l
@@ -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=&current->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;
}
diff --git a/src/translator_id.h b/src/translator_id.h
index a0d4b83..bd292c2 100644
--- a/src/translator_id.h
+++ b/src/translator_id.h
@@ -21,7 +21,6 @@
/*!
Indonesian translator based on Doxygen 1.4.2.
- \version $Id$
\author Hendy Irawan <ceefour@gauldong.net>
*/
class TranslatorIndonesian : public Translator
diff --git a/src/util.cpp b/src/util.cpp
index 679e0d3..881988e 100644
--- a/src/util.cpp
+++ b/src/util.cpp
@@ -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 && !(scope=stripScope(word)).isEmpty())
+ if (word.findRev("::")!=-1 && !(tmpName=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;
}
}
}