summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDimitri van Heesch <dimitri@stack.nl>2014-09-07 19:33:28 (GMT)
committerDimitri van Heesch <dimitri@stack.nl>2014-09-07 19:33:28 (GMT)
commitd411fcaeea8d68321bdb01949b86947fdc551888 (patch)
tree1dcf22dc264d2fdeb61e2f3dd7a1c31fd46d55ed
parentaf14bab65f67d66b65f2ddf5c5d76a96f23cd447 (diff)
parent7ee743004ac80914bdb66e3c7a8e5c39c0d5bf4a (diff)
downloadDoxygen-d411fcaeea8d68321bdb01949b86947fdc551888.zip
Doxygen-d411fcaeea8d68321bdb01949b86947fdc551888.tar.gz
Doxygen-d411fcaeea8d68321bdb01949b86947fdc551888.tar.bz2
Merge branch 'java_templ_relations'
-rw-r--r--src/doxygen.cpp19
1 files changed, 15 insertions, 4 deletions
diff --git a/src/doxygen.cpp b/src/doxygen.cpp
index 8ab4591..24b309c 100644
--- a/src/doxygen.cpp
+++ b/src/doxygen.cpp
@@ -1310,11 +1310,11 @@ static void addClassToContext(EntryNav *rootNav)
QCString tagName;
QCString refFileName;
TagInfo *tagInfo = rootNav->tagInfo();
+ int i;
if (tagInfo)
{
tagName = tagInfo->tagName;
refFileName = tagInfo->fileName;
- int i;
if ((i=fullName.find("::"))!=-1)
// symbols imported via tag files may come without the parent scope,
// so we artificially create it here
@@ -1322,6 +1322,19 @@ static void addClassToContext(EntryNav *rootNav)
buildScopeFromQualifiedName(fullName,fullName.contains("::"),root->lang,tagInfo);
}
}
+ ArgumentList *tArgList = 0;
+ if ((root->lang==SrcLangExt_CSharp || root->lang==SrcLangExt_Java) && (i=fullName.find('<'))!=-1)
+ {
+ // a Java/C# generic class looks like a C++ specialization, so we need to split the
+ // name and template arguments here
+ tArgList = new ArgumentList;
+ stringToArgumentList(fullName.mid(i),tArgList);
+ fullName=fullName.left(i);
+ }
+ else
+ {
+ tArgList = getTemplateArgumentsFromName(fullName,root->tArgLists);
+ }
cd=new ClassDef(root->fileName,root->startLine,root->startColumn,
fullName,sec,tagName,refFileName,TRUE,root->spec&Entry::Enum);
Debug::print(Debug::Classes,0," New class `%s' (sec=0x%08x)! #tArgLists=%d tagInfo=%p\n",
@@ -1336,8 +1349,6 @@ static void addClassToContext(EntryNav *rootNav)
cd->setTypeConstraints(root->typeConstr);
//printf("new ClassDef %s tempArgList=%p specScope=%s\n",fullName.data(),root->tArgList,root->scopeSpec.data());
- ArgumentList *tArgList =
- getTemplateArgumentsFromName(fullName,root->tArgLists);
//printf("class %s template args=%s\n",fullName.data(),
// tArgList ? tempArgListToString(tArgList).data() : "<none>");
cd->setTemplateArguments(tArgList);
@@ -4710,7 +4721,7 @@ static bool findClassRelation(
if (found) templSpec = tmpTemplSpec;
}
//printf("2. found=%d\n",found);
-
+
//printf("root->name=%s biName=%s baseClassName=%s\n",
// root->name.data(),biName.data(),baseClassName.data());
//if (cd->isCSharp() && i!=-1) // C# generic -> add internal -g postfix