From 32093bcca82c7d3a4df4670f52340033e9f16b62 Mon Sep 17 00:00:00 2001 From: Dimitri van Heesch Date: Sun, 22 Mar 2015 14:09:04 +0100 Subject: Fix for rendering the template parameters of members of variadic template classes. --- src/defargs.l | 12 ++++++------ src/doxygen.cpp | 2 +- src/util.cpp | 6 +++++- 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() : ""); + // tArgList ? tempArgListToString(tArgList,root->lang).data() : ""); 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 { -- cgit v0.12