Commit d411fcae authored by Dimitri van Heesch's avatar Dimitri van Heesch

Merge branch 'java_templ_relations'

parents af14bab6 7ee74300
...@@ -1310,11 +1310,11 @@ static void addClassToContext(EntryNav *rootNav) ...@@ -1310,11 +1310,11 @@ static void addClassToContext(EntryNav *rootNav)
QCString tagName; QCString tagName;
QCString refFileName; QCString refFileName;
TagInfo *tagInfo = rootNav->tagInfo(); TagInfo *tagInfo = rootNav->tagInfo();
int i;
if (tagInfo) if (tagInfo)
{ {
tagName = tagInfo->tagName; tagName = tagInfo->tagName;
refFileName = tagInfo->fileName; refFileName = tagInfo->fileName;
int i;
if ((i=fullName.find("::"))!=-1) if ((i=fullName.find("::"))!=-1)
// symbols imported via tag files may come without the parent scope, // symbols imported via tag files may come without the parent scope,
// so we artificially create it here // so we artificially create it here
...@@ -1322,6 +1322,19 @@ static void addClassToContext(EntryNav *rootNav) ...@@ -1322,6 +1322,19 @@ static void addClassToContext(EntryNav *rootNav)
buildScopeFromQualifiedName(fullName,fullName.contains("::"),root->lang,tagInfo); 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, cd=new ClassDef(root->fileName,root->startLine,root->startColumn,
fullName,sec,tagName,refFileName,TRUE,root->spec&Entry::Enum); 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", 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) ...@@ -1336,8 +1349,6 @@ static void addClassToContext(EntryNav *rootNav)
cd->setTypeConstraints(root->typeConstr); cd->setTypeConstraints(root->typeConstr);
//printf("new ClassDef %s tempArgList=%p specScope=%s\n",fullName.data(),root->tArgList,root->scopeSpec.data()); //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(), //printf("class %s template args=%s\n",fullName.data(),
// tArgList ? tempArgListToString(tArgList).data() : "<none>"); // tArgList ? tempArgListToString(tArgList).data() : "<none>");
cd->setTemplateArguments(tArgList); cd->setTemplateArguments(tArgList);
...@@ -4710,7 +4721,7 @@ static bool findClassRelation( ...@@ -4710,7 +4721,7 @@ static bool findClassRelation(
if (found) templSpec = tmpTemplSpec; if (found) templSpec = tmpTemplSpec;
} }
//printf("2. found=%d\n",found); //printf("2. found=%d\n",found);
//printf("root->name=%s biName=%s baseClassName=%s\n", //printf("root->name=%s biName=%s baseClassName=%s\n",
// root->name.data(),biName.data(),baseClassName.data()); // root->name.data(),biName.data(),baseClassName.data());
//if (cd->isCSharp() && i!=-1) // C# generic -> add internal -g postfix //if (cd->isCSharp() && i!=-1) // C# generic -> add internal -g postfix
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment