summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDimitri van Heesch <dimitri@stack.nl>2015-03-22 13:09:04 (GMT)
committerDimitri van Heesch <dimitri@stack.nl>2015-03-22 13:09:04 (GMT)
commit32093bcca82c7d3a4df4670f52340033e9f16b62 (patch)
tree2c07734b7eaae6b4d51735ebfd449116f98417a1
parent95375152974fa7e0e4d4cec7007d942dd5e9615e (diff)
downloadDoxygen-32093bcca82c7d3a4df4670f52340033e9f16b62.zip
Doxygen-32093bcca82c7d3a4df4670f52340033e9f16b62.tar.gz
Doxygen-32093bcca82c7d3a4df4670f52340033e9f16b62.tar.bz2
Fix for rendering the template parameters of members of variadic template classes.
-rw-r--r--src/defargs.l12
-rw-r--r--src/doxygen.cpp2
-rw-r--r--src/util.cpp6
3 files changed, 12 insertions, 8 deletions
diff --git a/src/defargs.l b/src/defargs.l
index 7b8248c..40a77fb 100644
--- a/src/defargs.l
+++ b/src/defargs.l
@@ -370,18 +370,18 @@ RAWEND ")"[^ \t\(\)\\]{0,16}\"
if (a->type.left(6)=="const ") sv=6;
else if (a->type.left(9)=="volatile ") sv=9;
- if (a->type.mid(sv)=="struct" ||
- a->type.mid(sv)=="union" ||
- a->type.mid(sv)=="class" ||
- a->type.mid(sv)=="typename" ||
- a->type=="const" ||
+ if (a->type.mid(sv,6)=="struct" ||
+ a->type.mid(sv,5)=="union" ||
+ a->type.mid(sv,5)=="class" ||
+ a->type.mid(sv,8)=="typename" ||
+ a->type=="const" ||
a->type=="volatile"
)
{
a->type = a->type + " " + a->name;
a->name.resize(0);
}
- //printf(" --> a->type='%s'\n",a->type.data());
+ //printf(" --> a->type='%s' a->name='%s'\n",a->type.data(),a->name.data());
}
else // assume only the type was specified, try to determine name later
{
diff --git a/src/doxygen.cpp b/src/doxygen.cpp
index fbad9d1..d966738 100644
--- a/src/doxygen.cpp
+++ b/src/doxygen.cpp
@@ -1353,7 +1353,7 @@ static void addClassToContext(EntryNav *rootNav)
//printf("new ClassDef %s tempArgList=%p specScope=%s\n",fullName.data(),root->tArgList,root->scopeSpec.data());
//printf("class %s template args=%s\n",fullName.data(),
- // tArgList ? tempArgListToString(tArgList).data() : "<none>");
+ // tArgList ? tempArgListToString(tArgList,root->lang).data() : "<none>");
cd->setTemplateArguments(tArgList);
cd->setProtection(root->protection);
cd->setIsStatic(root->stat);
diff --git a/src/util.cpp b/src/util.cpp
index ffa03e1..a550a2f 100644
--- a/src/util.cpp
+++ b/src/util.cpp
@@ -1724,7 +1724,7 @@ nextChar:
growBuf.addChar(' ');
}
else if (i>0 && c=='>' && // current char is a >
- (isId(s.at(i-1)) || isspace((uchar)s.at(i-1)) || s.at(i-1)=='*' || s.at(i-1)=='&') && // prev char is an id char or space
+ (isId(s.at(i-1)) || isspace((uchar)s.at(i-1)) || s.at(i-1)=='*' || s.at(i-1)=='&' || s.at(i-1)=='.') && // prev char is an id char or space
(i<8 || !findOperator(s,i)) // string in front is not "operator"
)
{
@@ -2225,6 +2225,10 @@ QCString tempArgListToString(ArgumentList *al,SrcLangExt lang)
if (i>0)
{
result+=a->type.right(a->type.length()-i-1);
+ if (a->type.find("...")!=-1)
+ {
+ result+="...";
+ }
}
else // nothing found -> take whole name
{