summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDimitri van Heesch <dimitri@stack.nl>2013-12-07 12:51:18 (GMT)
committerDimitri van Heesch <dimitri@stack.nl>2013-12-12 19:13:33 (GMT)
commit6d118eec7474550f26b4b3b3cb05dc86bb3f3fc9 (patch)
tree908ad8672ace6a87823c609122b4fc61f77ee3d4
parent6dbf32d505d5c9e628474fb83e379b2646d24d3f (diff)
downloadDoxygen-6d118eec7474550f26b4b3b3cb05dc86bb3f3fc9.zip
Doxygen-6d118eec7474550f26b4b3b3cb05dc86bb3f3fc9.tar.gz
Doxygen-6d118eec7474550f26b4b3b3cb05dc86bb3f3fc9.tar.bz2
Added more info to the context
-rw-r--r--src/classdef.cpp6
-rw-r--r--src/classdef.h1
-rw-r--r--src/context.cpp459
-rw-r--r--src/context.h46
-rw-r--r--src/membergroup.h4
5 files changed, 361 insertions, 155 deletions
diff --git a/src/classdef.cpp b/src/classdef.cpp
index 25c6b58..53eabc2 100644
--- a/src/classdef.cpp
+++ b/src/classdef.cpp
@@ -4769,3 +4769,9 @@ const ExampleSDict *ClassDef::exampleList() const
{
return m_impl->exampleSDict;
}
+
+bool ClassDef::subGrouping() const
+{
+ return m_impl->subGrouping;
+}
+
diff --git a/src/classdef.h b/src/classdef.h
index eb36383..f6d594c 100644
--- a/src/classdef.h
+++ b/src/classdef.h
@@ -317,6 +317,7 @@ class ClassDef : public Definition
const ExampleSDict *exampleList() const;
bool hasExamples() const;
QCString getMemberListFileName() const;
+ bool subGrouping() const;
//-----------------------------------------------------------------------------------
// --- setters ----
diff --git a/src/context.cpp b/src/context.cpp
index c73c715..277b037 100644
--- a/src/context.cpp
+++ b/src/context.cpp
@@ -1124,11 +1124,17 @@ class ClassContext::Private : public DefinitionContext<ClassContext::Private>
addProperty("properties", this,&Private::properties);
addProperty("events", this,&Private::events);
addProperty("friends", this,&Private::friends);
- addProperty("relatedDecls", this,&Private::relatedDecls);
- addProperty("typedefs", this,&Private::typedefs);
- addProperty("enums", this,&Private::enums);
- addProperty("methods", this,&Private::methods);
- addProperty("relatedDefs", this,&Private::relatedDefs);
+ addProperty("related", this,&Private::related);
+ addProperty("detailedTypedefs", this,&Private::detailedTypedefs);
+ addProperty("detailedEnums", this,&Private::detailedEnums);
+ addProperty("detailedServices", this,&Private::detailedServices);
+ addProperty("detailedInterfaces", this,&Private::detailedInterfaces);
+ addProperty("detailedConstructors", this,&Private::detailedConstructors);
+ addProperty("detailedMethods", this,&Private::detailedMethods);
+ addProperty("detailedRelated", this,&Private::detailedRelated);
+ addProperty("detailedVariables", this,&Private::detailedVariables);
+ addProperty("detailedProperties", this,&Private::detailedProperties);
+ addProperty("detailedEvents", this,&Private::detailedEvents);
addProperty("nestedClasses", this,&Private::nestedClasses);
addProperty("compoundType", this,&Private::compoundType);
addProperty("templateDecls", this,&Private::templateDecls);
@@ -1136,6 +1142,7 @@ class ClassContext::Private : public DefinitionContext<ClassContext::Private>
addProperty("examples", this,&Private::examples);
addProperty("allMembersList", this,&Private::allMembersList);
addProperty("allMembersFileName", this,&Private::allMembersFileName);
+ addProperty("memberGroups", this,&Private::memberGroups);
}
TemplateVariant title() const
{
@@ -1298,7 +1305,7 @@ class ClassContext::Private : public DefinitionContext<ClassContext::Private>
MemberList *ml = m_classDef->getMemberList(type);
if (ml)
{
- list.reset(new MemberListInfoContext(ml,title));
+ list.reset(new MemberListInfoContext(m_classDef,relPathAsString(),ml,title));
}
}
if (list)
@@ -1430,25 +1437,49 @@ class ClassContext::Private : public DefinitionContext<ClassContext::Private>
{
return getMemberList(m_cache.friends,MemberListType_friends,theTranslator->trFriends());
}
- TemplateVariant relatedDecls() const
+ TemplateVariant related() const
{
- return getMemberList(m_cache.relatedDecls,MemberListType_related,theTranslator->trRelatedFunctions());
+ return getMemberList(m_cache.related,MemberListType_related,theTranslator->trRelatedFunctions());
}
- TemplateVariant typedefs() const
+ TemplateVariant detailedTypedefs() const
{
- return getMemberList(m_cache.typedefs,MemberListType_typedefMembers,theTranslator->trMemberTypedefDocumentation());
+ return getMemberList(m_cache.detailedTypedefs,MemberListType_typedefMembers,theTranslator->trMemberTypedefDocumentation());
}
- TemplateVariant enums() const
+ TemplateVariant detailedEnums() const
{
- return getMemberList(m_cache.enums,MemberListType_enumMembers,theTranslator->trMemberEnumerationDocumentation());
+ return getMemberList(m_cache.detailedEnums,MemberListType_enumMembers,theTranslator->trMemberEnumerationDocumentation());
}
- TemplateVariant methods() const
+ TemplateVariant detailedServices() const
{
- return getMemberList(m_cache.methods,MemberListType_functionMembers,theTranslator->trMemberFunctionDocumentation());
+ return getMemberList(m_cache.detailedServices,MemberListType_serviceMembers,theTranslator->trServices());
}
- TemplateVariant relatedDefs() const
+ TemplateVariant detailedInterfaces() const
{
- return getMemberList(m_cache.relatedDefs,MemberListType_relatedMembers,theTranslator->trRelatedFunctionDocumentation());
+ return getMemberList(m_cache.detailedInterfaces,MemberListType_interfaceMembers,theTranslator->trInterfaces());
+ }
+ TemplateVariant detailedConstructors() const
+ {
+ return getMemberList(m_cache.detailedConstructors,MemberListType_constructors,theTranslator->trConstructorDocumentation());
+ }
+ TemplateVariant detailedMethods() const
+ {
+ return getMemberList(m_cache.detailedMethods,MemberListType_functionMembers,theTranslator->trMemberFunctionDocumentation());
+ }
+ TemplateVariant detailedRelated() const
+ {
+ return getMemberList(m_cache.detailedRelated,MemberListType_relatedMembers,theTranslator->trRelatedFunctionDocumentation());
+ }
+ TemplateVariant detailedVariables() const
+ {
+ return getMemberList(m_cache.detailedVariables,MemberListType_variableMembers,theTranslator->trMemberDataDocumentation());
+ }
+ TemplateVariant detailedProperties() const
+ {
+ return getMemberList(m_cache.detailedProperties,MemberListType_propertyMembers,theTranslator->trPropertyDocumentation());
+ }
+ TemplateVariant detailedEvents() const
+ {
+ return getMemberList(m_cache.detailedEvents,MemberListType_eventMembers,theTranslator->trEventDocumentation());
}
TemplateVariant nestedClasses() const
{
@@ -1457,9 +1488,9 @@ class ClassContext::Private : public DefinitionContext<ClassContext::Private>
static bool extractLocalClasses = Config_getBool("EXTRACT_LOCAL_CLASSES");
if (!m_cache.nestedClasses)
{
+ NestedClassListContext *classList = new NestedClassListContext;
if (m_classDef->getClassSDict())
{
- NestedClassListContext *classList = new NestedClassListContext;
ClassSDict::Iterator sdi(*m_classDef->getClassSDict());
ClassDef *cd;
for (sdi.toFirst();(cd=sdi.current());++sdi)
@@ -1474,17 +1505,10 @@ class ClassContext::Private : public DefinitionContext<ClassContext::Private>
classList->append(cd);
}
}
- m_cache.nestedClasses.reset(classList);
}
+ m_cache.nestedClasses.reset(classList);
}
- if (m_cache.nestedClasses)
- {
- return m_cache.nestedClasses.get();
- }
- else
- {
- return TemplateVariant(FALSE);
- }
+ return m_cache.nestedClasses.get();
}
TemplateVariant compoundType() const
{
@@ -1536,14 +1560,7 @@ class ClassContext::Private : public DefinitionContext<ClassContext::Private>
addTemplateDecls(m_classDef,tl);
m_cache.templateDecls.reset(tl);
}
- if (m_cache.templateDecls)
- {
- return m_cache.templateDecls.get();
- }
- else
- {
- return TemplateVariant(FALSE);
- }
+ return m_cache.templateDecls.get();
}
TemplateVariant typeConstraints() const
{
@@ -1551,14 +1568,11 @@ class ClassContext::Private : public DefinitionContext<ClassContext::Private>
{
m_cache.typeConstraints.reset(new ArgumentListContext(m_classDef->typeConstraints(),m_classDef,relPathAsString()));
}
- if (m_cache.typeConstraints)
- {
- return m_cache.typeConstraints.get();
- }
else
{
- return TemplateVariant(FALSE);
+ m_cache.typeConstraints.reset(new ArgumentListContext);
}
+ return m_cache.typeConstraints.get();
}
TemplateVariant examples() const
{
@@ -1568,14 +1582,7 @@ class ClassContext::Private : public DefinitionContext<ClassContext::Private>
addExamples(exampleList);
m_cache.examples.reset(exampleList);
}
- if (m_cache.examples)
- {
- return m_cache.examples.get();
- }
- else
- {
- return TemplateVariant(FALSE);
- }
+ return m_cache.examples.get();
}
TemplateVariant allMembersList() const
{
@@ -1584,19 +1591,31 @@ class ClassContext::Private : public DefinitionContext<ClassContext::Private>
AllMembersListContext *ml = new AllMembersListContext(m_classDef->memberNameInfoSDict());
m_cache.allMembersList.reset(ml);
}
- if (m_cache.allMembersList)
- {
- return m_cache.allMembersList.get();
- }
else
{
- return TemplateVariant(FALSE);
+ m_cache.allMembersList.reset(new AllMembersListContext);
}
+ return m_cache.allMembersList.get();
}
TemplateVariant allMembersFileName() const
{
return m_classDef->getMemberListFileName();
}
+ TemplateVariant memberGroups() const
+ {
+ if (!m_cache.memberGroups)
+ {
+ if (m_classDef->getMemberGroupSDict())
+ {
+ m_cache.memberGroups.reset(new MemberGroupListContext(m_classDef,relPathAsString(),m_classDef->getMemberGroupSDict(),m_classDef->subGrouping()));
+ }
+ else
+ {
+ m_cache.memberGroups.reset(new MemberGroupListContext);
+ }
+ }
+ return m_cache.memberGroups.get();
+ }
private:
ClassDef *m_classDef;
@@ -1643,11 +1662,18 @@ class ClassContext::Private : public DefinitionContext<ClassContext::Private>
ScopedPtr<MemberListInfoContext> properties;
ScopedPtr<MemberListInfoContext> events;
ScopedPtr<MemberListInfoContext> friends;
- ScopedPtr<MemberListInfoContext> relatedDecls;
- ScopedPtr<MemberListInfoContext> typedefs;
- ScopedPtr<MemberListInfoContext> enums;
- ScopedPtr<MemberListInfoContext> methods;
- ScopedPtr<MemberListInfoContext> relatedDefs;
+ ScopedPtr<MemberListInfoContext> related;
+ ScopedPtr<MemberListInfoContext> detailedTypedefs;
+ ScopedPtr<MemberListInfoContext> detailedEnums;
+ ScopedPtr<MemberListInfoContext> detailedServices;
+ ScopedPtr<MemberListInfoContext> detailedInterfaces;
+ ScopedPtr<MemberListInfoContext> detailedConstructors;
+ ScopedPtr<MemberListInfoContext> detailedMethods;
+ ScopedPtr<MemberListInfoContext> detailedRelated;
+ ScopedPtr<MemberListInfoContext> detailedVariables;
+ ScopedPtr<MemberListInfoContext> detailedProperties;
+ ScopedPtr<MemberListInfoContext> detailedEvents;
+ ScopedPtr<MemberGroupListContext> memberGroups;
ScopedPtr<AllMembersListContext> allMembersList;
ScopedPtr<ArgumentListContext> typeConstraints;
ScopedPtr<TemplateList> examples;
@@ -2160,23 +2186,27 @@ class MemberContext::Private : public DefinitionContext<MemberContext::Private>
{
m_cache.enumValues.reset(new MemberListContext(ml));
}
+ else
+ {
+ m_cache.enumValues.reset(new MemberListContext);
+ }
}
- if (m_cache.enumValues)
- {
- return m_cache.enumValues.get();
- }
- else
- {
- return FALSE;
- }
+ return m_cache.enumValues.get();
}
TemplateVariant templateArgs() const
{
- if (!m_cache.templateArgs)
+ if (!m_cache.templateArgs && m_memberDef->templateArguments())
{
m_cache.templateArgs.reset(new ArgumentListContext(m_memberDef->templateArguments(),m_memberDef,relPathAsString()));
}
- return m_cache.templateArgs.get();
+ if (m_cache.templateArgs)
+ {
+ return m_cache.templateArgs.get();
+ }
+ else
+ {
+ return TemplateVariant(FALSE);
+ }
}
TemplateVariant templateAlias() const
{
@@ -2229,15 +2259,12 @@ class MemberContext::Private : public DefinitionContext<MemberContext::Private>
{
m_cache.arguments.reset(new ArgumentListContext(defArgList,m_memberDef,relPathAsString()));
}
+ else
+ {
+ m_cache.arguments.reset(new ArgumentListContext);
+ }
}
- if (m_cache.arguments)
- {
- return m_cache.arguments.get();
- }
- else
- {
- return FALSE;
- }
+ return m_cache.arguments.get();
}
TemplateVariant hasParameterList() const
{
@@ -2323,14 +2350,7 @@ class MemberContext::Private : public DefinitionContext<MemberContext::Private>
addTemplateDecls(tl);
m_cache.templateDecls.reset(tl);
}
- if (m_cache.templateDecls)
- {
- return m_cache.templateDecls.get();
- }
- else
- {
- return TemplateVariant(FALSE);
- }
+ return m_cache.templateDecls.get();
}
TemplateVariant labels() const
{
@@ -2338,25 +2358,18 @@ class MemberContext::Private : public DefinitionContext<MemberContext::Private>
{
QStrList sl;
m_memberDef->getLabels(sl,m_memberDef->getOuterScope());
+ TemplateList *tl = new TemplateList;
if (sl.count()>0)
{
- TemplateList *tl = new TemplateList;
QStrListIterator it(sl);
for (;it.current();++it)
{
tl->append(*it);
}
- m_cache.labels.reset(tl);
}
+ m_cache.labels.reset(tl);
}
- if (m_cache.labels)
- {
- return m_cache.labels.get();
- }
- else
- {
- return TemplateVariant(FALSE);
- }
+ return m_cache.labels.get();
}
TemplateVariant paramDocs() const
{
@@ -2392,63 +2405,49 @@ class MemberContext::Private : public DefinitionContext<MemberContext::Private>
if (!m_cache.implements)
{
MemberDef *md = m_memberDef->reimplements();
+ m_cache.implements.reset(new TemplateList);
if (md)
{
ClassDef *cd = md->getClassDef();
if (cd && (md->virtualness()==Pure || cd->compoundType()==ClassDef::Interface))
{
- m_cache.implements.reset(new TemplateList);
MemberContext *mc = new MemberContext(md);
m_cache.implementsMember.reset(mc);
m_cache.implements->append(mc);
}
}
}
- if (m_cache.implements)
- {
- return m_cache.implements.get();
- }
- else
- {
- return TemplateVariant(FALSE);
- }
+ return m_cache.implements.get();
}
TemplateVariant reimplements() const
{
if (!m_cache.reimplements)
{
MemberDef *md = m_memberDef->reimplements();
+ m_cache.reimplements.reset(new TemplateList);
if (md)
{
ClassDef *cd = md->getClassDef();
if (cd && md->virtualness()!=Pure && cd->compoundType()!=ClassDef::Interface)
{
- m_cache.reimplements.reset(new TemplateList);
MemberContext *mc = new MemberContext(md);
m_cache.reimplementsMember.reset(mc);
m_cache.reimplements->append(mc);
}
}
}
- if (m_cache.reimplements)
- {
- return m_cache.reimplements.get();
- }
- else
- {
- return TemplateVariant(FALSE);
- }
+ return m_cache.reimplements.get();
}
TemplateVariant implementedBy() const
{
if (!m_cache.implementedBy)
{
MemberList *ml = m_memberDef->reimplementedBy();
+ m_cache.implementedBy.reset(new TemplateList);
if (ml)
{
MemberListIterator mli(*ml);
MemberDef *md=0;
- m_cache.implementedBy.reset(new TemplateList);
for (mli.toFirst();(md=mli.current());++mli)
{
ClassDef *cd = md->getClassDef();
@@ -2461,25 +2460,18 @@ class MemberContext::Private : public DefinitionContext<MemberContext::Private>
}
}
}
- if (m_cache.implementedBy)
- {
- return m_cache.implementedBy.get();
- }
- else
- {
- return TemplateVariant(FALSE);
- }
+ return m_cache.implementedBy.get();
}
TemplateVariant reimplementedBy() const
{
if (!m_cache.reimplementedBy)
{
+ m_cache.reimplementedBy.reset(new TemplateList);
MemberList *ml = m_memberDef->reimplementedBy();
if (ml)
{
MemberListIterator mli(*ml);
MemberDef *md=0;
- m_cache.reimplementedBy.reset(new TemplateList);
for (mli.toFirst();(md=mli.current());++mli)
{
ClassDef *cd = md->getClassDef();
@@ -2492,14 +2484,7 @@ class MemberContext::Private : public DefinitionContext<MemberContext::Private>
}
}
}
- if (m_cache.reimplementedBy)
- {
- return m_cache.reimplementedBy.get();
- }
- else
- {
- return TemplateVariant(FALSE);
- }
+ return m_cache.reimplementedBy.get();
}
void addExamples(TemplateList *list) const
{
@@ -2527,14 +2512,7 @@ class MemberContext::Private : public DefinitionContext<MemberContext::Private>
addExamples(exampleList);
m_cache.examples.reset(exampleList);
}
- if (m_cache.examples)
- {
- return m_cache.examples.get();
- }
- else
- {
- return TemplateVariant(FALSE);
- }
+ return m_cache.examples.get();
}
TemplateVariant typeConstraints() const
{
@@ -2542,14 +2520,11 @@ class MemberContext::Private : public DefinitionContext<MemberContext::Private>
{
m_cache.typeConstraints.reset(new ArgumentListContext(m_memberDef->typeConstraints(),m_memberDef,relPathAsString()));
}
- if (m_cache.typeConstraints)
- {
- return m_cache.typeConstraints.get();
- }
else
{
- return TemplateVariant(FALSE);
+ m_cache.typeConstraints.reset(new ArgumentListContext);
}
+ return m_cache.typeConstraints.get();
}
TemplateVariant functionQualifier() const
{
@@ -4533,6 +4508,11 @@ class MemberListContext::Private : public GenericNodeListContext<MemberContext>
}
};
+MemberListContext::MemberListContext()
+{
+ p = new Private;
+}
+
MemberListContext::MemberListContext(const MemberList *list)
{
p = new Private;
@@ -4705,6 +4685,11 @@ class AllMembersListContext::Private : public GenericNodeListContext<MemberInfoC
}
};
+AllMembersListContext::AllMembersListContext()
+{
+ p = new Private(0);
+}
+
AllMembersListContext::AllMembersListContext(const MemberNameInfoSDict *ml)
{
p = new Private(ml);
@@ -4733,19 +4718,178 @@ TemplateListIntf::ConstIterator *AllMembersListContext::createIterator() const
//------------------------------------------------------------------------
+//%% struct MemberGroupInfo: member group information
+//%% {
+class MemberGroupInfoContext::Private : public PropertyMapper
+{
+ public:
+ Private(Definition *def,const QCString &relPath,const MemberGroup *mg) :
+ m_def(def),
+ m_relPath(relPath),
+ m_memberListContext(mg->members()),
+ m_memberGroups(def,relPath,0), m_memberGroup(mg)
+ {
+ addProperty("members", this,&Private::members);
+ addProperty("title", this,&Private::groupTitle);
+ addProperty("subtitle", this,&Private::groupSubtitle);
+ addProperty("anchor", this,&Private::groupAnchor);
+ addProperty("memberGroups", this,&Private::memberGroups);
+ addProperty("docs", this,&Private::docs);
+ }
+ TemplateVariant members() const
+ {
+ return &m_memberListContext;
+ }
+ TemplateVariant groupTitle() const
+ {
+ return m_memberGroup->header();
+ }
+ TemplateVariant groupSubtitle() const
+ {
+ return "";
+ }
+ TemplateVariant groupAnchor() const
+ {
+ return m_memberGroup->anchor();
+ }
+ TemplateVariant memberGroups() const
+ {
+ return &m_memberGroups;
+ }
+ TemplateVariant docs() const
+ {
+ if (!m_docs)
+ {
+ QCString docs = m_memberGroup->documentation();
+ if (!docs.isEmpty())
+ {
+ m_docs.reset(new TemplateVariant(
+ parseDoc(m_def,"[@name docs]",-1, // TODO store file & line
+ m_relPath,
+ m_memberGroup->documentation()+"\n",FALSE)));
+ }
+ else
+ {
+ m_docs.reset(new TemplateVariant(""));
+ }
+ }
+ return *m_docs;
+ }
+ private:
+ Definition *m_def;
+ QCString m_relPath;
+ MemberListContext m_memberListContext;
+ MemberGroupListContext m_memberGroups;
+ const MemberGroup *m_memberGroup;
+ mutable ScopedPtr<TemplateVariant> m_docs;
+};
+//%% }
+
+MemberGroupInfoContext::MemberGroupInfoContext(Definition *def,
+ const QCString &relPath,const MemberGroup *mg)
+{
+ p = new Private(def,relPath,mg);
+}
+
+MemberGroupInfoContext::~MemberGroupInfoContext()
+{
+ delete p;
+}
+
+TemplateVariant MemberGroupInfoContext::get(const char *name) const
+{
+ return p->get(name);
+}
+
+//------------------------------------------------------------------------
+
+//%% list MemberGroupList[MemberGroupInfo] : list of member groups
+class MemberGroupListContext::Private : public GenericNodeListContext<MemberGroupInfoContext>
+{
+ public:
+ void addMemberGroup(Definition *def,const QCString &relPath,const MemberGroup *mg)
+ {
+ append(new MemberGroupInfoContext(def,relPath,mg));
+ }
+};
+
+MemberGroupListContext::MemberGroupListContext()
+{
+ p = new Private;
+}
+
+MemberGroupListContext::MemberGroupListContext(Definition *def,const QCString &relPath,const MemberGroupList *list)
+{
+ p = new Private;
+ if (list)
+ {
+ MemberGroupListIterator mgli(*list);
+ MemberGroup *mg;
+ for (;(mg=mgli.current());++mgli)
+ {
+ p->addMemberGroup(def,relPath,mg);
+ }
+ }
+}
+
+MemberGroupListContext::MemberGroupListContext(Definition *def,const QCString &relPath,const MemberGroupSDict *dict,bool subGrouping)
+{
+ p = new Private;
+ if (dict)
+ {
+ MemberGroupSDict::Iterator di(*dict);
+ const MemberGroup *mg;
+ for (di.toFirst();(mg=di.current());++di)
+ {
+ if (!mg->allMembersInSameSection() || !subGrouping)
+ {
+ p->addMemberGroup(def,relPath,mg);
+ }
+ }
+ }
+}
+
+MemberGroupListContext::~MemberGroupListContext()
+{
+ delete p;
+}
+
+// TemplateListIntf
+int MemberGroupListContext::count() const
+{
+ return p->count();
+}
+
+TemplateVariant MemberGroupListContext::at(int index) const
+{
+ return p->at(index);
+}
+
+TemplateListIntf::ConstIterator *MemberGroupListContext::createIterator() const
+{
+ return p->createIterator();
+}
+
+
+//------------------------------------------------------------------------
+
//%% struct MemberListInfo: member list information
//%% {
class MemberListInfoContext::Private : public PropertyMapper
{
public:
- Private(const MemberList *ml,const QCString &title,const QCString &subtitle) :
- m_memberListContext(ml), m_memberList(ml), m_title(title), m_subtitle(subtitle)
- {
- addProperty("members", this,&Private::members);
- addProperty("title", this,&Private::title);
- addProperty("subtitle",this,&Private::subtitle);
- addProperty("anchor", this,&Private::anchor);
- // TODO: member groups
+ Private(Definition *def,const QCString &relPath,const MemberList *ml,const QCString &title,const QCString &subtitle) :
+ m_memberListContext(ml),
+ m_memberGroups(def,relPath,ml ? ml->getMemberGroupList() : 0),
+ m_memberList(ml),
+ m_title(title),
+ m_subtitle(subtitle)
+ {
+ addProperty("members", this,&Private::members);
+ addProperty("title", this,&Private::title);
+ addProperty("subtitle", this,&Private::subtitle);
+ addProperty("anchor", this,&Private::anchor);
+ addProperty("memberGroups", this,&Private::memberGroups);
}
TemplateVariant members() const
{
@@ -4763,18 +4907,24 @@ class MemberListInfoContext::Private : public PropertyMapper
{
return m_memberList->listTypeAsString(m_memberList->listType());
}
+ TemplateVariant memberGroups() const
+ {
+ return &m_memberGroups;
+ }
private:
MemberListContext m_memberListContext;
+ MemberGroupListContext m_memberGroups;
const MemberList *m_memberList;
QCString m_title;
QCString m_subtitle;
};
//%% }
-MemberListInfoContext::MemberListInfoContext(const MemberList *ml,
+MemberListInfoContext::MemberListInfoContext(
+ Definition *def,const QCString &relPath,const MemberList *ml,
const QCString &title,const QCString &subtitle)
{
- p = new Private(ml,title,subtitle);
+ p = new Private(def,relPath,ml,title,subtitle);
}
MemberListInfoContext::~MemberListInfoContext()
@@ -4892,6 +5042,11 @@ class ArgumentListContext::Private : public GenericNodeListContext<ArgumentConte
}
};
+ArgumentListContext::ArgumentListContext()
+{
+ p = new Private;
+}
+
ArgumentListContext::ArgumentListContext(const ArgumentList *list,
Definition *def,const QCString &relPath)
{
diff --git a/src/context.h b/src/context.h
index 9f88b69..6ae2c28 100644
--- a/src/context.h
+++ b/src/context.h
@@ -31,6 +31,9 @@ struct Argument;
class ArgumentList;
class MemberNameInfoSDict;
struct MemberInfo;
+class MemberGroup;
+class MemberGroupSDict;
+class MemberGroupList;
//----------------------------------------------------
@@ -650,6 +653,7 @@ class InheritanceListContext : public TemplateListIntf
class MemberListContext : public TemplateListIntf
{
public:
+ MemberListContext();
MemberListContext(const MemberList *ml);
MemberListContext(MemberSDict *ml,bool doSort);
~MemberListContext();
@@ -666,10 +670,48 @@ class MemberListContext : public TemplateListIntf
//----------------------------------------------------
+class MemberGroupInfoContext : public TemplateStructIntf
+{
+ public:
+ MemberGroupInfoContext(Definition *def,const QCString &relPath,const MemberGroup *mg);
+ ~MemberGroupInfoContext();
+
+ // TemplateStructIntf methods
+ virtual TemplateVariant get(const char *name) const;
+
+ private:
+ class Private;
+ Private *p;
+};
+
+//----------------------------------------------------
+
+class MemberGroupListContext : public TemplateListIntf
+{
+ public:
+ MemberGroupListContext();
+ MemberGroupListContext(Definition *def,const QCString &relPath,const MemberGroupList *list);
+ MemberGroupListContext(Definition *def,const QCString &relPath,const MemberGroupSDict *mgDict,bool subGrouping);
+ ~MemberGroupListContext();
+
+ // TemplateListIntf
+ virtual int count() const;
+ virtual TemplateVariant at(int index) const;
+ virtual TemplateListIntf::ConstIterator *createIterator() const;
+
+ private:
+ class Private;
+ Private *p;
+};
+
+
+//----------------------------------------------------
+
class MemberListInfoContext : public TemplateStructIntf
{
public:
- MemberListInfoContext(const MemberList *ml,const QCString &title,
+ MemberListInfoContext(Definition *def,const QCString &relPath,
+ const MemberList *ml,const QCString &title,
const QCString &subtitle=QCString());
~MemberListInfoContext();
@@ -702,6 +744,7 @@ class MemberInfoContext : public TemplateStructIntf
class AllMembersListContext : public TemplateListIntf
{
public:
+ AllMembersListContext();
AllMembersListContext(const MemberNameInfoSDict *ml);
~AllMembersListContext();
@@ -736,6 +779,7 @@ class ArgumentContext : public TemplateStructIntf
class ArgumentListContext : public TemplateListIntf
{
public:
+ ArgumentListContext();
ArgumentListContext(const ArgumentList *al,Definition *def,const QCString &relPath);
~ArgumentListContext();
diff --git a/src/membergroup.h b/src/membergroup.h
index 64a521b..c5a2d0c 100644
--- a/src/membergroup.h
+++ b/src/membergroup.h
@@ -61,8 +61,8 @@ class MemberGroup
MemberListType lt,
ClassDef *inheritedFrom,const QCString &inheritId);
- QCString documentation() { return doc; }
- bool allMembersInSameSection() { return inSameSection; }
+ QCString documentation() const { return doc; }
+ bool allMembersInSameSection() const { return inSameSection; }
void addToDeclarationSection();
int countDecMembers(GroupDef *gd=0);
int countDocMembers();