summaryrefslogtreecommitdiffstats
path: root/src/pagedef.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/pagedef.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/pagedef.h')
-rw-r--r--src/pagedef.h78
1 files changed, 31 insertions, 47 deletions
diff --git a/src/pagedef.h b/src/pagedef.h
index e958617..f0b68d1 100644
--- a/src/pagedef.h
+++ b/src/pagedef.h
@@ -26,63 +26,47 @@ class OutputList;
class FTextStream;
/** @brief A model of a page symbol. */
-class PageDef : public Definition
+class PageDef : virtual public Definition
{
public:
- PageDef(const char *f,int l,const char *n,const char *d,const char *t);
- ~PageDef();
+ virtual ~PageDef() {}
// setters
- void setFileName(const char *name);
- void setLocalToc(const LocalToc &tl);
- void setShowLineNo(bool);
+ virtual void setFileName(const char *name) = 0;
+ virtual void setLocalToc(const LocalToc &tl) = 0;
+ virtual void setShowLineNo(bool) = 0;
// getters
- DefType definitionType() const { return TypePage; }
- bool isLinkableInProject() const
- {
- return /*hasDocumentation() &&*/ !isReference();
- }
- bool isLinkable() const
- {
- return isLinkableInProject() || isReference();
- }
-
- // functions to get a uniform interface with Definitions
- QCString getOutputFileBase() const;
- QCString anchor() const { return QCString(); }
- void findSectionsInDocumentation();
- QCString title() const { return m_title; }
- GroupDef * getGroupDef() const;
- PageSDict * getSubPages() const { return m_subPageDict; }
- void addInnerCompound(Definition *d);
- bool visibleInIndex() const;
- bool documentedPage() const;
- bool hasSubPages() const;
- bool hasParentPage() const;
- bool hasTitle() const;
- LocalToc localToc() const { return m_localToc; }
- void setPageScope(Definition *d){ m_pageScope = d; }
- Definition *getPageScope() const { return m_pageScope; }
- QCString displayName(bool=TRUE) const
- { return hasTitle() ? m_title : Definition::name(); }
- bool showLineNo() const;
+ virtual DefType definitionType() const = 0;
+ virtual bool isLinkableInProject() const = 0;
+ virtual bool isLinkable() const = 0;
+ virtual QCString getOutputFileBase() const = 0;
+ virtual QCString anchor() const = 0;
+ virtual void findSectionsInDocumentation() = 0;
+ virtual QCString title() const = 0;
+ virtual GroupDef * getGroupDef() const = 0;
+ virtual PageSDict * getSubPages() const = 0;
+ virtual void addInnerCompound(Definition *d) = 0;
+ virtual bool visibleInIndex() const = 0;
+ virtual bool documentedPage() const = 0;
+ virtual bool hasSubPages() const = 0;
+ virtual bool hasParentPage() const = 0;
+ virtual bool hasTitle() const = 0;
+ virtual LocalToc localToc() const = 0;
+ virtual void setPageScope(Definition *d) = 0;
+ virtual Definition *getPageScope() const = 0;
+ virtual QCString displayName(bool=TRUE) const = 0;
+ virtual bool showLineNo() const = 0;
- void writeDocumentation(OutputList &ol);
- void writeTagFile(FTextStream &);
+ virtual void writeDocumentation(OutputList &ol) = 0;
+ virtual void writeTagFile(FTextStream &) = 0;
+ virtual void setNestingLevel(int l) = 0;
+ virtual void writePageDocumentation(OutputList &ol) = 0;
- private:
- void setNestingLevel(int l);
- void writePageDocumentation(OutputList &ol);
- QCString m_fileName;
- QCString m_title;
- PageSDict *m_subPageDict; // list of pages in the group
- Definition *m_pageScope;
- int m_nestingLevel;
- LocalToc m_localToc;
- bool m_showLineNo;
};
+PageDef *createPageDef(const char *f,int l,const char *n,const char *d,const char *t);
+
class PageSDict : public SDict<PageDef>
{
public: