summaryrefslogtreecommitdiffstats
path: root/src/memberdef.cpp
diff options
context:
space:
mode:
authorDimitri van Heesch <dimitri@stack.nl>2009-06-22 20:14:03 (GMT)
committerDimitri van Heesch <dimitri@stack.nl>2009-06-22 20:14:03 (GMT)
commitb70a5b4f9325ec703db37394feeaa9ebc11228b4 (patch)
tree2f918f7da3205101b2a8a300ee9afefe247b3f24 /src/memberdef.cpp
parent8375a55083e5232e65493e73cb594c9c5e9552ab (diff)
downloadDoxygen-b70a5b4f9325ec703db37394feeaa9ebc11228b4.zip
Doxygen-b70a5b4f9325ec703db37394feeaa9ebc11228b4.tar.gz
Doxygen-b70a5b4f9325ec703db37394feeaa9ebc11228b4.tar.bz2
Release-1.5.9-20090622
Diffstat (limited to 'src/memberdef.cpp')
-rw-r--r--src/memberdef.cpp73
1 files changed, 65 insertions, 8 deletions
diff --git a/src/memberdef.cpp b/src/memberdef.cpp
index 7bbfed4..630b6ff 100644
--- a/src/memberdef.cpp
+++ b/src/memberdef.cpp
@@ -449,6 +449,8 @@ class MemberDefImpl
bool docsForDefinition; // TRUE => documentation block is put before
// definition.
// FALSE => block is put before declaration.
+
+ ClassDef *category;
};
MemberDefImpl::MemberDefImpl() :
@@ -460,7 +462,8 @@ MemberDefImpl::MemberDefImpl() :
tArgList(0),
typeConstraints(0),
defTmpArgLists(0),
- classSectionSDict(0)
+ classSectionSDict(0),
+ category(0)
{
}
@@ -634,6 +637,24 @@ MemberDef::MemberDef(const char *df,int dl,
m_flushPending = FALSE;
}
+void MemberDef::moveTo(Definition *scope)
+{
+ setOuterScope(scope);
+ if (scope->definitionType()==Definition::TypeClass)
+ {
+ m_impl->classDef = (ClassDef*)scope;
+ }
+ else if (scope->definitionType()==Definition::TypeFile)
+ {
+ m_impl->fileDef = (FileDef*)scope;
+ }
+ else if (scope->definitionType()==Definition::TypeNamespace)
+ {
+ m_impl->nspace = (NamespaceDef*)scope;
+ }
+}
+
+
/*! Destroys the member definition. */
MemberDef::~MemberDef()
{
@@ -1176,12 +1197,12 @@ void MemberDef::writeDeclaration(OutputList &ol,
}
// write search index info
- if (Config_getBool("SEARCHENGINE") && !isReference())
- {
- Doxygen::searchIndex->setCurrentDoc(qualifiedName(),getOutputFileBase(),anchor());
- Doxygen::searchIndex->addWord(localName(),TRUE);
- Doxygen::searchIndex->addWord(qualifiedName(),FALSE);
- }
+ //if (Config_getBool("SEARCHENGINE") && !isReference())
+ //{
+ // Doxygen::searchIndex->setCurrentDoc(qualifiedName(),getOutputFileBase(),anchor());
+ // Doxygen::searchIndex->addWord(localName(),TRUE);
+ // Doxygen::searchIndex->addWord(qualifiedName(),FALSE);
+ //}
QCString cname = d->name();
QCString cfname = getOutputFileBase();
@@ -1496,7 +1517,9 @@ void MemberDef::writeDeclaration(OutputList &ol,
)
{
ol.startMemberDescription();
- ol.parseDoc(briefFile(),briefLine(),getOuterScope()?getOuterScope():d,this,briefDescription(),TRUE,FALSE);
+ ol.parseDoc(briefFile(),briefLine(),
+ getOuterScope()?getOuterScope():d,this,briefDescription(),
+ TRUE,FALSE,0,TRUE,FALSE);
if (detailsVisible)
{
ol.pushGeneratorState();
@@ -3846,6 +3869,19 @@ void MemberDef::setMemberDeclaration(MemberDef *md)
m_impl->memDec=md;
}
+ClassDef *MemberDef::category() const
+{
+ makeResident();
+ return m_impl->category;
+}
+
+void MemberDef::setCategory(ClassDef *def)
+{
+ makeResident();
+ m_impl->category = def;
+}
+
+
void MemberDef::cacheTypedefVal(ClassDef*val, const QCString & templSpec, const QCString &resolvedType)
{
makeResident();
@@ -3938,6 +3974,7 @@ void MemberDef::flushToDisk() const
marshalBool (Doxygen::symbolStorage,m_impl->tspec);
marshalBool (Doxygen::symbolStorage,m_impl->groupHasDocs);
marshalBool (Doxygen::symbolStorage,m_impl->docsForDefinition);
+ marshalObjPointer (Doxygen::symbolStorage,m_impl->category);
marshalUInt(Doxygen::symbolStorage,END_MARKER);
// function doesn't modify the object conceptually but compiler doesn't know this.
@@ -4035,6 +4072,7 @@ void MemberDef::loadFromDisk() const
m_impl->tspec = unmarshalBool (Doxygen::symbolStorage);
m_impl->groupHasDocs = unmarshalBool (Doxygen::symbolStorage);
m_impl->docsForDefinition = unmarshalBool (Doxygen::symbolStorage);
+ m_impl->category = (ClassDef*)unmarshalObjPointer (Doxygen::symbolStorage);
marker = unmarshalUInt(Doxygen::symbolStorage);
assert(marker==END_MARKER);
}
@@ -4150,4 +4188,23 @@ void MemberDef::copyArgumentNames(MemberDef *bmd)
}
}
+static void invalidateCachedTypesInArgumentList(ArgumentList *al)
+{
+ if (al)
+ {
+ ArgumentListIterator ali(*al);
+ Argument *a;
+ for (ali.toFirst();(a=ali.current());++ali)
+ {
+ a->canType.resize(0);
+ }
+ }
+}
+
+void MemberDef::invalidateCachedArgumentTypes()
+{
+ makeResident();
+ invalidateCachedTypesInArgumentList(m_impl->defArgList);
+ invalidateCachedTypesInArgumentList(m_impl->declArgList);
+}