diff options
author | Dimitri van Heesch <doxygen@gmail.com> | 2019-02-18 19:29:38 (GMT) |
---|---|---|
committer | Dimitri van Heesch <doxygen@gmail.com> | 2019-02-28 19:55:47 (GMT) |
commit | 960bae7191faf07f142b1ae5b0038905d33e2b1f (patch) | |
tree | fb5ce28720b56945588c77c3f5ab19c61cc8ef32 /src/memberdef.h | |
parent | 79ace06168f1e09fce00515248d83571302a67ae (diff) | |
download | Doxygen-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.h | 603 |
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 |