diff options
Diffstat (limited to 'src/memberdef.cpp')
-rw-r--r-- | src/memberdef.cpp | 39 |
1 files changed, 31 insertions, 8 deletions
diff --git a/src/memberdef.cpp b/src/memberdef.cpp index dffbb82..bc8c76e 100644 --- a/src/memberdef.cpp +++ b/src/memberdef.cpp @@ -346,6 +346,7 @@ class MemberDefImpl ArgumentList *declArgList; // argument list of this member declaration ArgumentList *tArgList; // template argument list of function template + ArgumentList *typeConstraints; // type constraints for template parameters MemberDef *templateMaster; QList<ArgumentList> *defTmpArgLists; // lists of template argument lists // (for template functions in nested template classes) @@ -410,6 +411,7 @@ MemberDefImpl::MemberDefImpl() : defArgList(0), declArgList(0), tArgList(0), + typeConstraints(0), defTmpArgLists(0), classSectionSDict(0) { @@ -422,6 +424,7 @@ MemberDefImpl::~MemberDefImpl() delete enumFields; delete defArgList; delete tArgList; + delete typeConstraints; delete defTmpArgLists; delete classSectionSDict; delete declArgList; @@ -2014,10 +2017,7 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol, // write class that contains a member that is reimplemented by this one if (bcd->isLinkable()) { - ol.disable(OutputGenerator::RTF); - ol.newParagraph(); - ol.enableAll(); - + ol.startParagraph(); QCString reimplFromLine; if (bmd->virtualness()!=Pure && bcd->compoundType()!=ClassDef::Interface) { @@ -2062,6 +2062,7 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol, { err("Error: translation error: no marker in trReimplementsFromList()\n"); } + ol.endParagraph(); } //ol.writeString("."); @@ -2087,9 +2088,7 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol, { mli.toFirst(); // write the list of classes that overwrite this member - ol.disable(OutputGenerator::RTF); - ol.newParagraph(); - ol.enable(OutputGenerator::RTF); + ol.startParagraph(); QCString reimplInLine; if (m_impl->virt==Pure || (m_impl->classDef && m_impl->classDef->compoundType()==ClassDef::Interface)) @@ -2137,6 +2136,7 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol, index=newIndex+matchLen; } ol.parseText(reimplInLine.right(reimplInLine.length()-index)); + ol.endParagraph(); } } @@ -2150,6 +2150,11 @@ void MemberDef::writeDocumentation(MemberList *ml,OutputList &ol, ol.endSimpleSect(); } + if (m_impl->typeConstraints) + { + writeTypeConstraints(ol,this,m_impl->typeConstraints); + } + // write reference to the source writeSourceDef(ol,cname); writeSourceRefs(ol,cname); @@ -2635,7 +2640,8 @@ bool MemberDef::isDestructor() const } else // other languages { - return name().find('~')!=-1 && name().find("operator")==-1; + return (name().find('~')!=-1 || name().find('!')!=-1) // The ! is for C++/CLI + && name().find("operator")==-1; } } @@ -2780,6 +2786,21 @@ void MemberDef::setDeclArgumentList(ArgumentList *al) m_impl->declArgList = al; } +void MemberDef::setTypeConstraints(ArgumentList *al) +{ + if (al==0) return; + makeResident(); + if (m_impl->typeConstraints) delete m_impl->typeConstraints; + m_impl->typeConstraints = new ArgumentList; + m_impl->typeConstraints->setAutoDelete(TRUE); + ArgumentListIterator ali(*al); + Argument *a; + for (;(a=ali.current());++ali) + { + m_impl->typeConstraints->append(new Argument(*a)); + } +} + void MemberDef::findSectionsInDocumentation() { makeResident(); @@ -3648,6 +3669,7 @@ void MemberDef::flushToDisk() const marshalArgumentList (Doxygen::symbolStorage,m_impl->defArgList); marshalArgumentList (Doxygen::symbolStorage,m_impl->declArgList); marshalArgumentList (Doxygen::symbolStorage,m_impl->tArgList); + marshalArgumentList (Doxygen::symbolStorage,m_impl->typeConstraints); marshalObjPointer (Doxygen::symbolStorage,m_impl->templateMaster); marshalArgumentLists(Doxygen::symbolStorage,m_impl->defTmpArgLists); marshalObjPointer (Doxygen::symbolStorage,m_impl->cachedAnonymousType); @@ -3746,6 +3768,7 @@ void MemberDef::loadFromDisk() const m_impl->defArgList = unmarshalArgumentList (Doxygen::symbolStorage); m_impl->declArgList = unmarshalArgumentList (Doxygen::symbolStorage); m_impl->tArgList = unmarshalArgumentList (Doxygen::symbolStorage); + m_impl->typeConstraints = unmarshalArgumentList (Doxygen::symbolStorage); m_impl->templateMaster = (MemberDef*)unmarshalObjPointer (Doxygen::symbolStorage); m_impl->defTmpArgLists = unmarshalArgumentLists(Doxygen::symbolStorage); m_impl->cachedAnonymousType = (ClassDef*)unmarshalObjPointer (Doxygen::symbolStorage); |