summaryrefslogtreecommitdiffstats
path: root/src/memberdef.h
diff options
context:
space:
mode:
authorDimitri van Heesch <doxygen@gmail.com>2019-02-18 19:29:38 (GMT)
committerDimitri van Heesch <doxygen@gmail.com>2019-02-28 19:55:47 (GMT)
commit960bae7191faf07f142b1ae5b0038905d33e2b1f (patch)
treefb5ce28720b56945588c77c3f5ab19c61cc8ef32 /src/memberdef.h
parent79ace06168f1e09fce00515248d83571302a67ae (diff)
downloadDoxygen-960bae7191faf07f142b1ae5b0038905d33e2b1f.zip
Doxygen-960bae7191faf07f142b1ae5b0038905d33e2b1f.tar.gz
Doxygen-960bae7191faf07f142b1ae5b0038905d33e2b1f.tar.bz2
Refactored Definition and derived classes such that they are abstract interfaces
Diffstat (limited to 'src/memberdef.h')
-rw-r--r--src/memberdef.h603
1 files changed, 279 insertions, 324 deletions
diff --git a/src/memberdef.h b/src/memberdef.h
index d96b9c9..555935a 100644
--- a/src/memberdef.h
+++ b/src/memberdef.h
@@ -35,424 +35,379 @@ class OutputList;
class GroupDef;
class QTextStream;
class ArgumentList;
-class MemberDefImpl;
class QStrList;
struct TagInfo;
/** A model of a class/file/namespace member symbol. */
-class MemberDef : public Definition
+class MemberDef : virtual public Definition
{
public:
-
- MemberDef(const char *defFileName,int defLine,int defColumn,
- const char *type,const char *name,const char *args,
- const char *excp,Protection prot,Specifier virt,bool stat,
- Relationship related,MemberType t,const ArgumentList *tal,
- const ArgumentList *al,const char *metaData);
- ~MemberDef();
- DefType definitionType() const { return TypeMember; }
+ virtual ~MemberDef() {}
+ virtual DefType definitionType() const = 0;
// move this member into a different scope
- MemberDef *deepCopy() const;
- void moveTo(Definition *);
+ virtual MemberDef *deepCopy() const =0;
+ virtual void moveTo(Definition *) = 0;
//-----------------------------------------------------------------------------------
// ---- getters -----
//-----------------------------------------------------------------------------------
// link id
- QCString getOutputFileBase() const;
- QCString getReference() const;
- QCString anchor() const;
-
- const char *declaration() const;
- const char *definition() const;
- const char *typeString() const;
- const char *argsString() const;
- const char *excpString() const;
- const char *bitfieldString() const;
- const char *extraTypeChars() const;
- const QCString &initializer() const;
- int initializerLines() const;
- uint64 getMemberSpecifiers() const;
- MemberList *getSectionList(Definition *d) const;
- QCString displayDefinition() const;
+ virtual QCString getOutputFileBase() const = 0;
+ virtual QCString getReference() const = 0;
+ virtual QCString anchor() const = 0;
+
+ virtual const char *declaration() const = 0;
+ virtual const char *definition() const = 0;
+ virtual const char *typeString() const = 0;
+ virtual const char *argsString() const = 0;
+ virtual const char *excpString() const = 0;
+ virtual const char *bitfieldString() const = 0;
+ virtual const char *extraTypeChars() const = 0;
+ virtual const QCString &initializer() const = 0;
+ virtual int initializerLines() const = 0;
+ virtual uint64 getMemberSpecifiers() const = 0;
+ virtual MemberList *getSectionList(Definition *d) const = 0;
+ virtual QCString displayDefinition() const = 0;
// scope query members
- ClassDef *getClassDef() const;
- FileDef *getFileDef() const;
- NamespaceDef* getNamespaceDef() const;
- ClassDef *accessorClass() const;
+ virtual ClassDef *getClassDef() const = 0;
+ virtual FileDef *getFileDef() const = 0;
+ virtual NamespaceDef* getNamespaceDef() const = 0;
+ virtual ClassDef *accessorClass() const = 0;
// grabbing the property read/write accessor names
- const char *getReadAccessor() const;
- const char *getWriteAccessor() const;
+ virtual const char *getReadAccessor() const = 0;
+ virtual const char *getWriteAccessor() const = 0;
// querying the grouping definition
- GroupDef *getGroupDef() const;
- Grouping::GroupPri_t getGroupPri() const;
- const char *getGroupFileName() const;
- int getGroupStartLine() const;
- bool getGroupHasDocs() const;
- QCString qualifiedName() const;
- QCString objCMethodName(bool localLink,bool showStatic) const;
+ virtual GroupDef *getGroupDef() const = 0;
+ virtual Grouping::GroupPri_t getGroupPri() const = 0;
+ virtual const char *getGroupFileName() const = 0;
+ virtual int getGroupStartLine() const = 0;
+ virtual bool getGroupHasDocs() const = 0;
+ virtual QCString qualifiedName() const = 0;
+ virtual QCString objCMethodName(bool localLink,bool showStatic) const = 0;
// direct kind info
- Protection protection() const;
- Specifier virtualness(int count=0) const;
- MemberType memberType() const;
- QCString memberTypeName() const;
+ virtual Protection protection() const = 0;
+ virtual Specifier virtualness(int count=0) const = 0;
+ virtual MemberType memberType() const = 0;
+ virtual QCString memberTypeName() const = 0;
// getter methods
- bool isSignal() const;
- bool isSlot() const;
- bool isVariable() const;
- bool isEnumerate() const;
- bool isEnumValue() const;
- bool isTypedef() const;
- bool isSequence() const;
- bool isDictionary() const;
- bool isFunction() const;
- bool isFunctionPtr() const;
- bool isDefine() const;
- bool isFriend() const;
- bool isDCOP() const;
- bool isProperty() const;
- bool isEvent() const;
- bool isRelated() const;
- bool isForeign() const;
- bool isStatic() const;
- bool isInline() const;
- bool isExplicit() const;
- bool isMutable() const;
- bool isGettable() const;
- bool isPrivateGettable() const;
- bool isProtectedGettable() const;
- bool isSettable() const;
- bool isPrivateSettable() const;
- bool isProtectedSettable() const;
- bool isReadable() const;
- bool isWritable() const;
- bool isAddable() const;
- bool isRemovable() const;
- bool isRaisable() const;
- bool isFinal() const;
- bool isAbstract() const;
- bool isOverride() const;
- bool isInitonly() const;
- bool isOptional() const;
- bool isRequired() const;
- bool isNonAtomic() const;
- bool isCopy() const;
- bool isAssign() const;
- bool isRetain() const;
- bool isWeak() const;
- bool isStrong() const;
- bool isUnretained() const;
- bool isNew() const;
- bool isSealed() const;
- bool isImplementation() const;
- bool isExternal() const;
- bool isAlias() const;
- bool isDefault() const;
- bool isDelete() const;
- bool isNoExcept() const;
- bool isAttribute() const; // UNO IDL attribute
- bool isUNOProperty() const; // UNO IDL property
- bool isReadonly() const;
- bool isBound() const;
- bool isConstrained() const;
- bool isTransient() const;
- bool isMaybeVoid() const;
- bool isMaybeDefault() const;
- bool isMaybeAmbiguous() const;
- bool isPublished() const; // UNO IDL published
- bool isTemplateSpecialization() const;
- bool hasDocumentedParams() const;
- bool hasDocumentedReturnType() const;
- bool isObjCMethod() const;
- bool isObjCProperty() const;
- bool isConstructor() const;
- bool isDestructor() const;
- bool hasOneLineInitializer() const;
- bool hasMultiLineInitializer() const;
- bool protectionVisible() const;
- bool showInCallGraph() const;
- bool isStrongEnumValue() const;
- bool livesInsideEnum() const;
- bool isSliceLocal() const;
- bool isConstExpr() const;
+ virtual bool isSignal() const = 0;
+ virtual bool isSlot() const = 0;
+ virtual bool isVariable() const = 0;
+ virtual bool isEnumerate() const = 0;
+ virtual bool isEnumValue() const = 0;
+ virtual bool isTypedef() const = 0;
+ virtual bool isSequence() const = 0;
+ virtual bool isDictionary() const = 0;
+ virtual bool isFunction() const = 0;
+ virtual bool isFunctionPtr() const = 0;
+ virtual bool isDefine() const = 0;
+ virtual bool isFriend() const = 0;
+ virtual bool isDCOP() const = 0;
+ virtual bool isProperty() const = 0;
+ virtual bool isEvent() const = 0;
+ virtual bool isRelated() const = 0;
+ virtual bool isForeign() const = 0;
+ virtual bool isStatic() const = 0;
+ virtual bool isInline() const = 0;
+ virtual bool isExplicit() const = 0;
+ virtual bool isMutable() const = 0;
+ virtual bool isGettable() const = 0;
+ virtual bool isPrivateGettable() const = 0;
+ virtual bool isProtectedGettable() const = 0;
+ virtual bool isSettable() const = 0;
+ virtual bool isPrivateSettable() const = 0;
+ virtual bool isProtectedSettable() const = 0;
+ virtual bool isReadable() const = 0;
+ virtual bool isWritable() const = 0;
+ virtual bool isAddable() const = 0;
+ virtual bool isRemovable() const = 0;
+ virtual bool isRaisable() const = 0;
+ virtual bool isFinal() const = 0;
+ virtual bool isAbstract() const = 0;
+ virtual bool isOverride() const = 0;
+ virtual bool isInitonly() const = 0;
+ virtual bool isOptional() const = 0;
+ virtual bool isRequired() const = 0;
+ virtual bool isNonAtomic() const = 0;
+ virtual bool isCopy() const = 0;
+ virtual bool isAssign() const = 0;
+ virtual bool isRetain() const = 0;
+ virtual bool isWeak() const = 0;
+ virtual bool isStrong() const = 0;
+ virtual bool isUnretained() const = 0;
+ virtual bool isNew() const = 0;
+ virtual bool isSealed() const = 0;
+ virtual bool isImplementation() const = 0;
+ virtual bool isExternal() const = 0;
+ virtual bool isAlias() const = 0;
+ virtual bool isDefault() const = 0;
+ virtual bool isDelete() const = 0;
+ virtual bool isNoExcept() const = 0;
+ virtual bool isAttribute() const = 0; // UNO IDL attribute
+ virtual bool isUNOProperty() const = 0; // UNO IDL property
+ virtual bool isReadonly() const = 0;
+ virtual bool isBound() const = 0;
+ virtual bool isConstrained() const = 0;
+ virtual bool isTransient() const = 0;
+ virtual bool isMaybeVoid() const = 0;
+ virtual bool isMaybeDefault() const = 0;
+ virtual bool isMaybeAmbiguous() const = 0;
+ virtual bool isPublished() const = 0; // UNO IDL published
+ virtual bool isTemplateSpecialization() const = 0;
+ virtual bool hasDocumentedParams() const = 0;
+ virtual bool hasDocumentedReturnType() const = 0;
+ virtual bool isObjCMethod() const = 0;
+ virtual bool isObjCProperty() const = 0;
+ virtual bool isConstructor() const = 0;
+ virtual bool isDestructor() const = 0;
+ virtual bool hasOneLineInitializer() const = 0;
+ virtual bool hasMultiLineInitializer() const = 0;
+ virtual bool showInCallGraph() const = 0;
+ virtual bool isStrongEnumValue() const = 0;
+ virtual bool livesInsideEnum() const = 0;
+ virtual bool isSliceLocal() const = 0;
+ virtual bool isConstExpr() const = 0;
// derived getters
- bool isFriendToHide() const;
- bool isNotFriend() const;
- bool isFunctionOrSignalSlot() const;
- bool isRelatedOrFriend() const;
+ virtual bool isFriendToHide() const = 0;
+ virtual bool isNotFriend() const = 0;
+ virtual bool isFunctionOrSignalSlot() const = 0;
+ virtual bool isRelatedOrFriend() const = 0;
// output info
- bool isLinkableInProject() const;
- bool isLinkable() const;
- bool hasDocumentation() const; // overrides hasDocumentation in definition.h
- //bool hasUserDocumentation() const; // overrides hasUserDocumentation
- bool isDeleted() const;
- bool isBriefSectionVisible() const;
- bool isDetailedSectionVisible(bool inGroup,bool inFile) const;
- bool isDetailedSectionLinkable() const;
- bool isFriendClass() const;
- bool isDocumentedFriendClass() const;
-
- MemberDef *reimplements() const;
- MemberList *reimplementedBy() const;
- bool isReimplementedBy(ClassDef *cd) const;
-
- //int inbodyLine() const;
- //QCString inbodyFile() const;
- //const QCString &inbodyDocumentation() const;
-
- ClassDef *relatedAlso() const;
-
- bool hasDocumentedEnumValues() const;
- MemberDef *getAnonymousEnumType() const;
- bool isDocsForDefinition() const;
- MemberDef *getEnumScope() const;
- MemberList *enumFieldList() const;
- void setEnumBaseType(const QCString &type);
- QCString enumBaseType() const;
-
- bool hasExamples();
- ExampleSDict *getExamples() const;
- bool isPrototype() const;
+ virtual bool isLinkableInProject() const = 0;
+ virtual bool isLinkable() const = 0;
+ virtual bool hasDocumentation() const = 0; // overrides hasDocumentation in definition.h
+ //bool hasUserDocumentation() const = 0; // overrides hasUserDocumentation
+ virtual bool isDeleted() const = 0;
+ virtual bool isBriefSectionVisible() const = 0;
+ virtual bool isDetailedSectionVisible(bool inGroup,bool inFile) const = 0;
+ virtual bool isDetailedSectionLinkable() const = 0;
+ virtual bool isFriendClass() const = 0;
+ virtual bool isDocumentedFriendClass() const = 0;
+
+ virtual MemberDef *reimplements() const = 0;
+ virtual MemberList *reimplementedBy() const = 0;
+ virtual bool isReimplementedBy(ClassDef *cd) const = 0;
+
+ virtual ClassDef *relatedAlso() const = 0;
+
+ virtual bool hasDocumentedEnumValues() const = 0;
+ virtual MemberDef *getAnonymousEnumType() const = 0;
+ virtual bool isDocsForDefinition() const = 0;
+ virtual MemberDef *getEnumScope() const = 0;
+ virtual MemberList *enumFieldList() const = 0;
+ virtual void setEnumBaseType(const QCString &type) = 0;
+ virtual QCString enumBaseType() const = 0;
+
+ virtual bool hasExamples() = 0;
+ virtual ExampleSDict *getExamples() const = 0;
+ virtual bool isPrototype() const = 0;
// argument related members
- ArgumentList *argumentList() const;
- ArgumentList *declArgumentList() const;
- ArgumentList *templateArguments() const;
- QList<ArgumentList> *definitionTemplateParameterLists() const;
+ virtual ArgumentList *argumentList() const = 0;
+ virtual ArgumentList *declArgumentList() const = 0;
+ virtual ArgumentList *templateArguments() const = 0;
+ virtual QList<ArgumentList> *definitionTemplateParameterLists() const = 0;
// member group related members
- int getMemberGroupId() const;
- MemberGroup *getMemberGroup() const;
+ virtual int getMemberGroupId() const = 0;
+ virtual MemberGroup *getMemberGroup() const = 0;
- bool fromAnonymousScope() const;
- bool anonymousDeclShown() const;
- MemberDef *fromAnonymousMember() const;
+ virtual bool fromAnonymousScope() const = 0;
+ virtual bool anonymousDeclShown() const = 0;
+ virtual MemberDef *fromAnonymousMember() const = 0;
// callgraph related members
- bool hasCallGraph() const;
- bool hasCallerGraph() const;
- bool visibleMemberGroup(bool hideNoHeader);
+ virtual bool hasCallGraph() const = 0;
+ virtual bool hasCallerGraph() const = 0;
+ virtual bool visibleMemberGroup(bool hideNoHeader) = 0;
// refrenced related members
- bool hasReferencesRelation() const;
- bool hasReferencedByRelation() const;
+ virtual bool hasReferencesRelation() const = 0;
+ virtual bool hasReferencedByRelation() const = 0;
- MemberDef *templateMaster() const;
- QCString getScopeString() const;
- ClassDef *getClassDefOfAnonymousType();
+ virtual MemberDef *templateMaster() const = 0;
+ virtual QCString getScopeString() const = 0;
+ virtual ClassDef *getClassDefOfAnonymousType() = 0;
// cached typedef functions
- bool isTypedefValCached() const;
- ClassDef *getCachedTypedefVal() const;
- QCString getCachedTypedefTemplSpec() const;
- QCString getCachedResolvedTypedef() const;
+ virtual bool isTypedefValCached() const = 0;
+ virtual ClassDef *getCachedTypedefVal() const = 0;
+ virtual QCString getCachedTypedefTemplSpec() const = 0;
+ virtual QCString getCachedResolvedTypedef() const = 0;
- MemberDef *memberDefinition() const;
- MemberDef *memberDeclaration() const;
- MemberDef *inheritsDocsFrom() const;
- MemberDef *getGroupAlias() const;
+ virtual MemberDef *memberDefinition() const = 0;
+ virtual MemberDef *memberDeclaration() const = 0;
+ virtual MemberDef *inheritsDocsFrom() const = 0;
+ virtual MemberDef *getGroupAlias() const = 0;
- ClassDef *category() const;
- MemberDef *categoryRelation() const;
+ virtual ClassDef *category() const = 0;
+ virtual MemberDef *categoryRelation() const = 0;
- QCString displayName(bool=TRUE) const;
- QCString getDeclType() const;
- void getLabels(QStrList &sl,Definition *container) const;
+ virtual QCString displayName(bool=TRUE) const = 0;
+ virtual QCString getDeclType() const = 0;
+ virtual void getLabels(QStrList &sl,Definition *container) const = 0;
- const ArgumentList *typeConstraints() const;
+ virtual const ArgumentList *typeConstraints() const = 0;
// overrules
- QCString documentation() const;
- QCString briefDescription(bool abbr=FALSE) const;
- QCString fieldType() const;
- bool isReference() const;
+ virtual QCString documentation() const = 0;
+ virtual QCString briefDescription(bool abbr=FALSE) const = 0;
+ virtual QCString fieldType() const = 0;
+ virtual bool isReference() const = 0;
- QCString getDeclFileName() const;
- int getDeclLine() const;
- int getDeclColumn() const;
+ virtual QCString getDeclFileName() const = 0;
+ virtual int getDeclLine() const = 0;
+ virtual int getDeclColumn() const = 0;
//-----------------------------------------------------------------------------------
// ---- setters -----
//-----------------------------------------------------------------------------------
// set functions
- void setMemberType(MemberType t);
- void setDefinition(const char *d);
- void setFileDef(FileDef *fd);
- void setAnchor();
- void setProtection(Protection p);
- void setMemberSpecifiers(uint64 s);
- void mergeMemberSpecifiers(uint64 s);
- void setInitializer(const char *i);
- void setBitfields(const char *s);
- void setMaxInitLines(int lines);
- void setMemberClass(ClassDef *cd);
- void setSectionList(Definition *d,MemberList *sl);
- void setGroupDef(GroupDef *gd,Grouping::GroupPri_t pri,
+ virtual void setMemberType(MemberType t) = 0;
+ virtual void setDefinition(const char *d) = 0;
+ virtual void setFileDef(FileDef *fd) = 0;
+ virtual void setAnchor() = 0;
+ virtual void setProtection(Protection p) = 0;
+ virtual void setMemberSpecifiers(uint64 s) = 0;
+ virtual void mergeMemberSpecifiers(uint64 s) = 0;
+ virtual void setInitializer(const char *i) = 0;
+ virtual void setBitfields(const char *s) = 0;
+ virtual void setMaxInitLines(int lines) = 0;
+ virtual void setMemberClass(ClassDef *cd) = 0;
+ virtual void setSectionList(Definition *d,MemberList *sl) = 0;
+ virtual void setGroupDef(GroupDef *gd,Grouping::GroupPri_t pri,
const QCString &fileName,int startLine,bool hasDocs,
- MemberDef *member=0);
- void setReadAccessor(const char *r);
- void setWriteAccessor(const char *w);
- void setTemplateSpecialization(bool b);
+ MemberDef *member=0) = 0;
+ virtual void setReadAccessor(const char *r) = 0;
+ virtual void setWriteAccessor(const char *w) = 0;
+ virtual void setTemplateSpecialization(bool b) = 0;
- void makeRelated();
- void makeForeign();
- void setHasDocumentedParams(bool b);
- void setHasDocumentedReturnType(bool b);
- void setInheritsDocsFrom(MemberDef *md);
- void setTagInfo(TagInfo *i);
- void setArgsString(const char *as);
+ virtual void makeRelated() = 0;
+ virtual void makeForeign() = 0;
+ virtual void setHasDocumentedParams(bool b) = 0;
+ virtual void setHasDocumentedReturnType(bool b) = 0;
+ virtual void setInheritsDocsFrom(MemberDef *md) = 0;
+ virtual void setTagInfo(TagInfo *i) = 0;
+ virtual void setArgsString(const char *as) = 0;
// relation to other members
- void setReimplements(MemberDef *md);
- void insertReimplementedBy(MemberDef *md);
-
- // in-body documentation
- //void setInbodyDocumentation(const char *docs,const char *file,int line);
+ virtual void setReimplements(MemberDef *md) = 0;
+ virtual void insertReimplementedBy(MemberDef *md) = 0;
- void setRelatedAlso(ClassDef *cd);
+ virtual void setRelatedAlso(ClassDef *cd) = 0;
// enumeration specific members
- void insertEnumField(MemberDef *md);
- void setEnumScope(MemberDef *md,bool livesInsideEnum=FALSE);
- void setEnumClassScope(ClassDef *cd);
- void setDocumentedEnumValues(bool value);
- void setAnonymousEnumType(MemberDef *md);
+ virtual void insertEnumField(MemberDef *md) = 0;
+ virtual void setEnumScope(MemberDef *md,bool livesInsideEnum=FALSE) = 0;
+ virtual void setEnumClassScope(ClassDef *cd) = 0;
+ virtual void setDocumentedEnumValues(bool value) = 0;
+ virtual void setAnonymousEnumType(MemberDef *md) = 0;
// example related members
- bool addExample(const char *anchor,const char *name,const char *file);
+ virtual bool addExample(const char *anchor,const char *name,const char *file) = 0;
// prototype related members
- void setPrototype(bool p,const QCString &df,int line, int column);
- void setExplicitExternal(bool b,const QCString &df,int line,int column);
- void setDeclFile(const QCString &df,int line,int column);
+ virtual void setPrototype(bool p,const QCString &df,int line, int column) = 0;
+ virtual void setExplicitExternal(bool b,const QCString &df,int line,int column) = 0;
+ virtual void setDeclFile(const QCString &df,int line,int column) = 0;
// argument related members
- void setArgumentList(ArgumentList *al);
- void setDeclArgumentList(ArgumentList *al);
- void setDefinitionTemplateParameterLists(QList<ArgumentList> *lists);
- void setTypeConstraints(ArgumentList *al);
- void setType(const char *t);
- void setAccessorType(ClassDef *cd,const char *t);
+ virtual void setArgumentList(ArgumentList *al) = 0;
+ virtual void setDeclArgumentList(ArgumentList *al) = 0;
+ virtual void setDefinitionTemplateParameterLists(QList<ArgumentList> *lists) = 0;
+ virtual void setTypeConstraints(ArgumentList *al) = 0;
+ virtual void setType(const char *t) = 0;
+ virtual void setAccessorType(ClassDef *cd,const char *t) = 0;
// namespace related members
- void setNamespace(NamespaceDef *nd);
+ virtual void setNamespace(NamespaceDef *nd) = 0;
// member group related members
- void setMemberGroup(MemberGroup *grp);
- void setMemberGroupId(int id);
- void makeImplementationDetail();
+ virtual void setMemberGroup(MemberGroup *grp) = 0;
+ virtual void setMemberGroupId(int id) = 0;
+ virtual void makeImplementationDetail() = 0;
// anonymous scope members
- void setFromAnonymousScope(bool b);
- void setFromAnonymousMember(MemberDef *m);
+ virtual void setFromAnonymousScope(bool b) = 0;
+ virtual void setFromAnonymousMember(MemberDef *m) = 0;
- void enableCallGraph(bool e);
- void enableCallerGraph(bool e);
+ virtual void enableCallGraph(bool e) = 0;
+ virtual void enableCallerGraph(bool e) = 0;
- void enableReferencedByRelation(bool e);
- void enableReferencesRelation(bool e);
+ virtual void enableReferencedByRelation(bool e) = 0;
+ virtual void enableReferencesRelation(bool e) = 0;
- void setTemplateMaster(MemberDef *mt);
- void addListReference(Definition *d);
- void setDocsForDefinition(bool b);
- void setGroupAlias(MemberDef *md);
+ virtual void setTemplateMaster(MemberDef *mt) = 0;
+ virtual void addListReference(Definition *d) = 0;
+ virtual void setDocsForDefinition(bool b) = 0;
+ virtual void setGroupAlias(MemberDef *md) = 0;
- void cacheTypedefVal(ClassDef *val,const QCString &templSpec,const QCString &resolvedType);
- void invalidateTypedefValCache();
+ virtual void cacheTypedefVal(ClassDef *val,const QCString &templSpec,const QCString &resolvedType) = 0;
+ virtual void invalidateTypedefValCache() = 0;
- void invalidateCachedArgumentTypes();
+ virtual void invalidateCachedArgumentTypes() = 0;
// declaration <-> definition relation
- void setMemberDefinition(MemberDef *md);
- void setMemberDeclaration(MemberDef *md);
+ virtual void setMemberDefinition(MemberDef *md) = 0;
+ virtual void setMemberDeclaration(MemberDef *md) = 0;
- void setAnonymousUsed();
- void copyArgumentNames(MemberDef *bmd);
+ virtual void setAnonymousUsed() = 0;
+ virtual void copyArgumentNames(MemberDef *bmd) = 0;
- void setCategory(ClassDef *);
- void setCategoryRelation(MemberDef *);
+ virtual void setCategory(ClassDef *) = 0;
+ virtual void setCategoryRelation(MemberDef *) = 0;
- void setDocumentation(const char *d,const char *docFile,int docLine,bool stripWhiteSpace=TRUE);
- void setBriefDescription(const char *b,const char *briefFile,int briefLine);
- void setInbodyDocumentation(const char *d,const char *inbodyFile,int inbodyLine);
+ virtual void setDocumentation(const char *d,const char *docFile,int docLine,bool stripWhiteSpace=TRUE) = 0;
+ virtual void setBriefDescription(const char *b,const char *briefFile,int briefLine) = 0;
+ virtual void setInbodyDocumentation(const char *d,const char *inbodyFile,int inbodyLine) = 0;
- void setHidden(bool b);
+ virtual void setHidden(bool b) = 0;
//-----------------------------------------------------------------------------------
// --- actions ----
//-----------------------------------------------------------------------------------
// output generation
- void writeDeclaration(OutputList &ol,
+ virtual void writeDeclaration(OutputList &ol,
ClassDef *cd,NamespaceDef *nd,FileDef *fd,GroupDef *gd,
- bool inGroup, ClassDef *inheritFrom=0,const char *inheritId=0);
- void writeDocumentation(MemberList *ml,int memCount,int memTotal,OutputList &ol,
+ bool inGroup, ClassDef *inheritFrom=0,const char *inheritId=0) = 0;
+ virtual void writeDocumentation(MemberList *ml,int memCount,int memTotal,OutputList &ol,
const char *scopeName,Definition *container,
bool inGroup,bool showEnumValues=FALSE,bool
- showInline=FALSE);
- void writeMemberDocSimple(OutputList &ol,Definition *container);
- void writeEnumDeclaration(OutputList &typeDecl,
- ClassDef *cd,NamespaceDef *nd,FileDef *fd,GroupDef *gd);
- void writeTagFile(FTextStream &);
- void warnIfUndocumented();
- void warnIfUndocumentedParams();
-
- MemberDef *createTemplateInstanceMember(ArgumentList *formalArgs,
- ArgumentList *actualArgs);
-
- void findSectionsInDocumentation();
-
- bool visited;
-
- protected:
- void flushToDisk() const;
- void loadFromDisk() const;
- private:
- void lock() const;
- void unlock() const;
- void saveToDisk() const;
- void makeResident() const;
- void _computeLinkableInProject();
- void _computeIsConstructor();
- void _computeIsDestructor();
- void _writeGroupInclude(OutputList &ol,bool inGroup);
- void _writeCallGraph(OutputList &ol);
- void _writeCallerGraph(OutputList &ol);
- void _writeReimplements(OutputList &ol);
- void _writeReimplementedBy(OutputList &ol);
- void _writeExamples(OutputList &ol);
- void _writeTypeConstraints(OutputList &ol);
- void _writeEnumValues(OutputList &ol,Definition *container,
- const QCString &cfname,const QCString &ciname,
- const QCString &cname);
- void _writeCategoryRelation(OutputList &ol);
- void _writeTagData(const DefType);
- void _addToSearchIndex();
-
- static int s_indentLevel;
-
- // disable copying of member defs
- MemberDef(const MemberDef &);
- MemberDef &operator=(const MemberDef &);
-
- void writeLink(OutputList &ol,
+ showInline=FALSE) = 0;
+ virtual void writeMemberDocSimple(OutputList &ol,Definition *container) = 0;
+ virtual void writeEnumDeclaration(OutputList &typeDecl,
+ ClassDef *cd,NamespaceDef *nd,FileDef *fd,GroupDef *gd) = 0;
+ virtual void writeTagFile(FTextStream &) = 0;
+ virtual void warnIfUndocumented() = 0;
+ virtual void warnIfUndocumentedParams() = 0;
+
+ virtual MemberDef *createTemplateInstanceMember(ArgumentList *formalArgs,
+ ArgumentList *actualArgs) = 0;
+
+ virtual void findSectionsInDocumentation() = 0;
+ virtual void writeLink(OutputList &ol,
ClassDef *cd,NamespaceDef *nd,FileDef *fd,GroupDef *gd,
- bool onlyText=FALSE);
+ bool onlyText=FALSE) = 0;
+ virtual void addToSearchIndex() = 0;
- MemberDefImpl *m_impl;
- uchar m_isLinkableCached; // 0 = not cached, 1=FALSE, 2=TRUE
- uchar m_isConstructorCached; // 0 = not cached, 1=FALSE, 2=TRUE
- uchar m_isDestructorCached; // 0 = not cached, 1=FALSE, 2=TRUE
};
+/** Factory method to create a new instance of a MemberDef */
+MemberDef *createMemberDef(const char *defFileName,int defLine,int defColumn,
+ const char *type,const char *name,const char *args,
+ const char *excp,Protection prot,Specifier virt,bool stat,
+ Relationship related,MemberType t,const ArgumentList *tal,
+ const ArgumentList *al,const char *metaData);
+
void combineDeclarationAndDefinition(MemberDef *mdec,MemberDef *mdef);
#endif