diff options
Diffstat (limited to 'src/definition.h')
-rw-r--r-- | src/definition.h | 124 |
1 files changed, 77 insertions, 47 deletions
diff --git a/src/definition.h b/src/definition.h index 8110c96..5e342d6 100644 --- a/src/definition.h +++ b/src/definition.h @@ -54,18 +54,27 @@ struct BodyInfo FileDef *fileDef; // file definition containing the function body }; -/*! The common base class of all entity definitions found in the sources. */ -class Definition +/*! Abstract interface for a Definition or DefinitionList */ +class DefinitionIntf { public: + DefinitionIntf() {} + virtual ~DefinitionIntf() {} /*! Types of derived classes */ enum DefType { TypeClass, TypeMember, TypeFile, TypeGroup, - TypeNamespace, TypePackage, TypePage, TypeDir + TypeNamespace, TypePackage, TypePage, TypeDir, + TypeSymbolList }; /*! Use this for dynamic inspection of the type of the derived class */ virtual DefType definitionType() const = 0; +}; + +/*! The common base class of all entity definitions found in the sources. */ +class Definition : public DefinitionIntf +{ + public: /*! Create a new definition */ Definition( @@ -76,16 +85,24 @@ class Definition /*! Destroys the definition */ virtual ~Definition(); + //----------------------------------------------------------------------------------- + // ---- getters ----- + //----------------------------------------------------------------------------------- + /*! Returns the name of the definition */ const QCString& name() const { return m_name; } + /*! Returns the local name without any scope qualifiers. */ + QCString localName() const; + /*! Returns the base name of the output file that contains this * definition. */ virtual QCString qualifiedName(); - /*! Returns the local name without any scope qualifiers. */ - QCString localName() const; + /*! Returns the name of this definition as it appears in the symbol map. + */ + QCString symbolName() const { return m_symbolName; } /*! Returns the base file name (without extension) of this definition. * as it is referenced to/written to disk. @@ -98,15 +115,6 @@ class Definition /*! Returns the detailed description of this definition */ QCString documentation() const { return m_details ? m_details->doc : QCString(""); } - /*! Returns the brief description of this definition */ - QCString briefDescription() const { return m_brief ? m_brief->doc : QCString(""); } - - /*! Sets a new \a name for the definition */ - void setName(const char *name) { m_name=name; } - - /*! Sets the documentation of this definition to \a d. */ - void setDocumentation(const char *d,const char *docFile,int docLine,bool stripWhiteSpace=TRUE); - /*! Returns the line number at which the detailed documentation was found. */ int docLine() const { return m_details ? m_details->line : 1; } @@ -115,10 +123,8 @@ class Definition */ QCString docFile() const { return m_details ? m_details->file : QCString("<"+m_name+">"); } - /*! Sets the brief description of this definition to \a b. - * A dot is added to the sentence if not available. - */ - void setBriefDescription(const char *b,const char *briefFile,int briefLine); + /*! Returns the brief description of this definition */ + QCString briefDescription() const { return m_brief ? m_brief->doc : QCString(""); } /*! Returns the line number at which the brief description was found. */ int briefLine() const { return m_brief ? m_brief->line : 1; } @@ -166,6 +172,8 @@ class Definition virtual bool isVisible() const { return m_hidden || isLinkable(); } + bool isHidden() const { return m_hidden; } + /*! If this definition was imported via a tag file, this function * returns the tagfile for the external project. This can be * translated into an external link target via @@ -176,12 +184,37 @@ class Definition /*! Returns TRUE if this definition is imported via a tag file. */ virtual bool isReference() const { return !m_ref.isEmpty(); } - /*! Sets the tag file id via which this definition was imported. */ - void setReference(const char *r) { m_ref=r; } + int getStartBodyLine() const { return m_body ? m_body->startLine : -1; } + int getEndBodyLine() const { return m_body ? m_body->endLine : -1; } + FileDef *getBodyDef() { return m_body ? m_body->fileDef : 0; } - /*! Returns the name of this definition as it appears in the symbol map. + GroupList *partOfGroups() const { return m_partOfGroups; } + + const QList<ListItemInfo> *xrefListItems() const; + + virtual Definition *findInnerCompound(const char *name); + virtual Definition *getOuterScope() const { return m_outerScope; } + + MemberSDict *getReferencesMembers() const { return m_sourceRefsDict; } + MemberSDict *getReferencedByMembers() const { return m_sourceRefByDict; } + + //----------------------------------------------------------------------------------- + // ---- setters ----- + //----------------------------------------------------------------------------------- + + /*! Sets a new \a name for the definition */ + void setName(const char *name) { m_name=name; } + + /*! Sets the documentation of this definition to \a d. */ + void setDocumentation(const char *d,const char *docFile,int docLine,bool stripWhiteSpace=TRUE); + + /*! Sets the brief description of this definition to \a b. + * A dot is added to the sentence if not available. */ - QCString symbolName() const { return m_symbolName; } + void setBriefDescription(const char *b,const char *briefFile,int briefLine); + + /*! Sets the tag file id via which this definition was imported. */ + void setReference(const char *r) { m_ref=r; } /*! Sets the name of this definition as it should appear in the symbol map. */ @@ -192,47 +225,37 @@ class Definition */ void addSectionsToDefinition(QList<SectionInfo> *anchorList); - /*! Writes the documentation anchors of the definition to - * the Doxygen::tagFile stream. - */ - void writeDocAnchorsToTagFile(); - - bool isHidden() const { return m_hidden; } - // source references void setBodySegment(int bls,int ble); void setBodyDef(FileDef *fd); - int getStartBodyLine() const { return m_body ? m_body->startLine : -1; } - int getEndBodyLine() const { return m_body ? m_body->endLine : -1; } - FileDef *getBodyDef() { return m_body ? m_body->fileDef : 0; } - void writeSourceDef(OutputList &ol,const char *scopeName); - void writeInlineCode(OutputList &ol,const char *scopeName); - void writeSourceRefs(OutputList &ol,const char *scopeName); - void writeSourceReffedBy(OutputList &ol,const char *scopeName); void addSourceReferencedBy(MemberDef *d); void addSourceReferences(MemberDef *d); void setRefItems(const QList<ListItemInfo> *sli); void mergeRefItems(Definition *d); - const QList<ListItemInfo> *xrefListItems() const; - - virtual Definition *findInnerCompound(const char *name); - virtual Definition *getOuterScope() const { return m_outerScope; } virtual void addInnerCompound(Definition *d); virtual void setOuterScope(Definition *d); - MemberSDict *getReferencesMembers() const { return m_sourceRefsDict; } - MemberSDict *getReferencedByMembers() const { return m_sourceRefByDict; } + void setHidden(bool b) { m_hidden = b; } - void makePartOfGroup(GroupDef *gd); - GroupList *partOfGroups() const { return m_partOfGroups; } - QCString convertNameToFile(const char *name,bool allowDots=FALSE) const; + //----------------------------------------------------------------------------------- + // --- actions ---- + //----------------------------------------------------------------------------------- + QCString convertNameToFile(const char *name,bool allowDots=FALSE) const; + void writeSourceDef(OutputList &ol,const char *scopeName); + void writeInlineCode(OutputList &ol,const char *scopeName); + void writeSourceRefs(OutputList &ol,const char *scopeName); + void writeSourceReffedBy(OutputList &ol,const char *scopeName); + void makePartOfGroup(GroupDef *gd); void writePathFragment(OutputList &ol) const; void writeNavigationPath(OutputList &ol) const; virtual void writeQuickMemberLinks(OutputList &,MemberDef *) const {} - void setHidden(bool b) { m_hidden = b; } + /*! Writes the documentation anchors of the definition to + * the Doxygen::tagFile stream. + */ + void writeDocAnchorsToTagFile(); protected: void setLocalName(const QCString name) { m_localName=name; } @@ -241,7 +264,13 @@ class Definition int getXRefListId(const char *listName) const; void writeSourceRefList(OutputList &ol,const char *scopeName, const QCString &text,MemberSDict *members,bool); + + //----------------------------------------------------------------------------------- + // --- member variables + //----------------------------------------------------------------------------------- + SectionDict *m_sectionDict; // dictionary of all sections + MemberSDict *m_sourceRefByDict; MemberSDict *m_sourceRefsDict; @@ -271,10 +300,11 @@ class Definition QCString m_defFileExt; }; -class DefinitionList : public QList<Definition> +class DefinitionList : public QList<Definition>, public DefinitionIntf { public: ~DefinitionList() {} + DefType definitionType() const { return TypeSymbolList; } int compareItems(GCI item1,GCI item2) { return stricmp(((Definition *)item1)->name(), |