From 0a2dfb54e727aded768486d9a101ce688b064a18 Mon Sep 17 00:00:00 2001 From: albert-github Date: Sun, 12 May 2019 19:00:00 +0200 Subject: Enable example doxmlparser possibilities for cmake build The doxmlparser example program could be build by the build system before the use of cmake. In cmake it was available but "disabled" by means of an empty CMakeLists.txt in the doxmlparser main directory. (Windows is not fond of symbolic links, so removing link between src/doxmlintf.h and include/doxmlintf.h) --- addon/doxmlparser/CMakeLists.txt | 4 + addon/doxmlparser/examples/CMakeLists.txt | 2 + addon/doxmlparser/examples/metrics/CMakeLists.txt | 14 + addon/doxmlparser/examples/metrics/Makefile.in | 15 - addon/doxmlparser/examples/metrics/metrics.pro.in | 20 - addon/doxmlparser/include/doxmlintf.h | 1142 ++++++++++++++++++++- addon/doxmlparser/src/CMakeLists.txt | 18 + addon/doxmlparser/src/doxmlintf.h | 1141 -------------------- addon/doxmlparser/test/CMakeLists.txt | 15 + addon/doxmlparser/test/Makefile.in | 15 - addon/doxmlparser/test/xmlparse.pro.in | 20 - 11 files changed, 1194 insertions(+), 1212 deletions(-) create mode 100644 addon/doxmlparser/examples/CMakeLists.txt create mode 100644 addon/doxmlparser/examples/metrics/CMakeLists.txt delete mode 100644 addon/doxmlparser/examples/metrics/Makefile.in delete mode 100644 addon/doxmlparser/examples/metrics/metrics.pro.in mode change 120000 => 100644 addon/doxmlparser/include/doxmlintf.h create mode 100644 addon/doxmlparser/src/CMakeLists.txt delete mode 100644 addon/doxmlparser/src/doxmlintf.h create mode 100644 addon/doxmlparser/test/CMakeLists.txt delete mode 100644 addon/doxmlparser/test/Makefile.in delete mode 100644 addon/doxmlparser/test/xmlparse.pro.in diff --git a/addon/doxmlparser/CMakeLists.txt b/addon/doxmlparser/CMakeLists.txt index e69de29..8456d2a 100644 --- a/addon/doxmlparser/CMakeLists.txt +++ b/addon/doxmlparser/CMakeLists.txt @@ -0,0 +1,4 @@ + +add_subdirectory(src) +add_subdirectory(examples) +add_subdirectory(test) diff --git a/addon/doxmlparser/examples/CMakeLists.txt b/addon/doxmlparser/examples/CMakeLists.txt new file mode 100644 index 0000000..1e08d36 --- /dev/null +++ b/addon/doxmlparser/examples/CMakeLists.txt @@ -0,0 +1,2 @@ + +add_subdirectory(metrics) diff --git a/addon/doxmlparser/examples/metrics/CMakeLists.txt b/addon/doxmlparser/examples/metrics/CMakeLists.txt new file mode 100644 index 0000000..8e03246 --- /dev/null +++ b/addon/doxmlparser/examples/metrics/CMakeLists.txt @@ -0,0 +1,14 @@ + +include_directories( + ../../include +) + +add_executable(doxmlparser_metrics +main.cpp +) + + +target_link_libraries(doxmlparser_metrics + doxmlparser + qtools +) diff --git a/addon/doxmlparser/examples/metrics/Makefile.in b/addon/doxmlparser/examples/metrics/Makefile.in deleted file mode 100644 index a3eb784..0000000 --- a/addon/doxmlparser/examples/metrics/Makefile.in +++ /dev/null @@ -1,15 +0,0 @@ -all clean depend: Makefile.metrics - $(MAKE) -f Makefile.metrics $@ - -distclean: clean - $(RM) -rf Makefile.metrics metrics.pro Makefile obj - -realclean: distclean - -tmake: - $(ENV) $(PERL) $(TMAKE) metrics.pro >Makefile.metrics - -Makefile.metrics: metrics.pro - $(ENV) $(PERL) $(TMAKE) metrics.pro >Makefile.metrics - -install: diff --git a/addon/doxmlparser/examples/metrics/metrics.pro.in b/addon/doxmlparser/examples/metrics/metrics.pro.in deleted file mode 100644 index 3b2354d..0000000 --- a/addon/doxmlparser/examples/metrics/metrics.pro.in +++ /dev/null @@ -1,20 +0,0 @@ -TEMPLATE = app.t -CONFIG = console warn_on $extraopts -HEADERS = -SOURCES = main.cpp -unix:LIBS += -L../../../../lib -ldoxmlparser -lqtools -win32:INCLUDEPATH += . -win32-mingw:LIBS += -L../../../../lib -ldoxmlparser -lqtools -win32-msvc:LIBS += doxmlparser.lib qtools.lib shell32.lib -win32-msvc:TMAKE_LFLAGS += /LIBPATH:..\..\..\..\lib; -win32-borland:LIBS += doxmlparser.lib qtools.lib shell32.lib -win32-borland:TMAKE_LFLAGS += -L..\..\..\..\lib -win32:TMAKE_CXXFLAGS += -DQT_NODLL -DESTDIR = ../../../../bin -OBJECTS_DIR = ../../../../objects/doxmlparer/metrics -TARGET = metrics -DEPENDPATH = ../../include -INCLUDEPATH += ../../../../qtools ../../include -unix:TARGETDEPS = ../../../../lib/libdoxmlparser.a -win32:TARGETDEPS = ..\..\..\..\lib\doxmlparser.lib - diff --git a/addon/doxmlparser/include/doxmlintf.h b/addon/doxmlparser/include/doxmlintf.h deleted file mode 120000 index 2d2b707..0000000 --- a/addon/doxmlparser/include/doxmlintf.h +++ /dev/null @@ -1 +0,0 @@ -../src/doxmlintf.h \ No newline at end of file diff --git a/addon/doxmlparser/include/doxmlintf.h b/addon/doxmlparser/include/doxmlintf.h new file mode 100644 index 0000000..22cecdb --- /dev/null +++ b/addon/doxmlparser/include/doxmlintf.h @@ -0,0 +1,1141 @@ +/****************************************************************************** + * + * $Id$ + * + * + * Copyright (C) 1997-2015 by Dimitri van Heesch. + * + * Permission to use, copy, modify, and distribute this software and its + * documentation under the terms of the GNU General Public License is hereby + * granted. No representations are made about the suitability of this software + * for any purpose. It is provided "as is" without express or implied warranty. + * See the GNU General Public License for more details. + * + */ + +#ifndef _DOXMLINTF_H +#define _DOXMLINTF_H + +/*! \file + * \brief The interface to the object model provided by the XML parser + * library. + * + * To start using this library one calls createObjectModel() and then + * uses the returned IDoxygen interface to read doxygen generated + * XML output and navigate through the information contained in it. + * + * @see createObjectModel() + */ + +class IMember; +class IDocIterator; +class ICompound; +class ISection; +class INode; +class IDocInternal; +class IDocRoot; + +#define VIRTUAL_DESTRUCTOR(x) virtual ~x() {} + +/*! \brief Read only interface to a string. + */ +class IString +{ + public: + VIRTUAL_DESTRUCTOR(IString) + /*! Returns a latin1 character representation of the string. */ + virtual const char *latin1() const = 0; + /*! Returns a utf8 character representation of the string. */ + virtual const char *utf8() const = 0; + /*! Returns a 16-bit unicode character representation of the character at + * position \a index in the string. The first character is at index 0. + */ + virtual unsigned short unicodeCharAt(int index) const = 0; + /*! Returns true if this string is empty or false otherwise */ + virtual bool isEmpty() const = 0; + /*! Returns the number of characters in the string. */ + virtual int length() const = 0; +}; + +/*! \brief Base interface for hyperlinked text + * + * Depending on the result of kind() the interface is extended by + * ILT_Text or ILT_Ref. + */ +class ILinkedText +{ + public: + VIRTUAL_DESTRUCTOR(ILinkedText) + enum Kind { Kind_Text, Kind_Ref }; + virtual Kind kind() const = 0; +}; + +/*! \brief Plain text fragment. + */ +class ILT_Text : public ILinkedText +{ + public: + VIRTUAL_DESTRUCTOR(ILT_Text) + virtual const IString *text() const = 0; +}; + +/*! \brief Reference to an object. + */ +class ILT_Ref : public ILinkedText +{ + public: + VIRTUAL_DESTRUCTOR(ILT_Ref) + enum TargetKind { Member, Compound }; + virtual const IString *id() const = 0; + virtual TargetKind targetKind() const = 0; + virtual const IString *external() const = 0; + virtual const IString *text() const = 0; +}; + +/*! \brief Iterates over a list of ILinkedText fragments. + */ +class ILinkedTextIterator +{ + public: + VIRTUAL_DESTRUCTOR(ILinkedTextIterator) + virtual ILinkedText *toFirst() = 0; + virtual ILinkedText *toLast() = 0; + virtual ILinkedText *toNext() = 0; + virtual ILinkedText *toPrev() = 0; + virtual ILinkedText *current() const = 0; + virtual void release() = 0; +}; + +/*! \brief Representation of a parameter of a function. */ +class IParam +{ + public: + VIRTUAL_DESTRUCTOR(IParam) + virtual ILinkedTextIterator *type() const = 0; + virtual const IString * declarationName() const = 0; + virtual const IString * definitionName() const = 0; + virtual const IString * attrib() const = 0; + virtual const IString * arraySpecifier() const = 0; + virtual ILinkedTextIterator *defaultValue() const = 0; + virtual IDocRoot *briefDescription() const = 0; +}; + +class IParamIterator +{ + public: + VIRTUAL_DESTRUCTOR(IParamIterator) + virtual IParam *toFirst() = 0; + virtual IParam *toLast() = 0; + virtual IParam *toNext() = 0; + virtual IParam *toPrev() = 0; + virtual IParam *current() const = 0; + virtual void release() = 0; +}; + +class IMemberReference +{ + public: + VIRTUAL_DESTRUCTOR(IMemberReference) + virtual IMember *member() const = 0; + virtual const IString * name() const = 0; + virtual const IString * scope() const = 0; + virtual const IString * protection() const = 0; + virtual const IString * virtualness() const = 0; + virtual const IString * ambiguityScope() const = 0; +}; + +class IMemberReferenceIterator +{ + public: + VIRTUAL_DESTRUCTOR(IMemberReferenceIterator) + virtual IMemberReference *toFirst() = 0; + virtual IMemberReference *toLast() = 0; + virtual IMemberReference *toNext() = 0; + virtual IMemberReference *toPrev() = 0; + virtual IMemberReference *current() const = 0; + virtual void release() = 0; +}; + +class IDoc +{ + public: + VIRTUAL_DESTRUCTOR(IDoc) + enum Kind + { + Invalid = 0, // 0 + Para, // 1 -> IDocPara + Text, // 2 -> IDocText + MarkupModifier, // 3 -> IDocMarkupModifier + ItemizedList, // 4 -> IDocItemizedList + OrderedList, // 5 -> IDocOrderedList + ListItem, // 6 -> IDocListItem + ParameterList, // 7 -> IDocParameterList + Parameter, // 8 -> IDocParameter + SimpleSect, // 9 -> IDocSimpleSect + Title, // 10 -> IDocTitle + Ref, // 11 -> IDocRef + VariableList, // 12 -> IDocVariableList + VariableListEntry, // 13 -> IDocVariableListEntry + HRuler, // 14 -> IDocHRuler + LineBreak, // 15 -> IDocLineBreak + ULink, // 16 -> IDocULink + EMail, // 17 -> IDocEMail + Link, // 18 -> IDocLink + ProgramListing, // 19 -> IDocProgramListing + CodeLine, // 20 -> IDocCodeLine + Highlight, // 21 -> IDocHighlight + Formula, // 22 -> IDocFormula + Image, // 23 -> IDocImage + DotFile, // 24 -> IDocDotFile + IndexEntry, // 25 -> IDocIndexEntry + Table, // 26 -> IDocTable + Row, // 27 -> IDocRow + Entry, // 28 -> IDocEntry + Section, // 29 -> IDocSection + Verbatim, // 30 -> IDocVerbatim + Copy, // 31 -> IDocCopy + TocList, // 32 -> IDocTocList + TocItem, // 33 -> IDocTocItem + Anchor, // 34 -> IDocAnchor + Symbol, // 35 -> IDocSymbol + Internal, // 36 -> IDocInternal + Root, // 37 -> IDocRoot + ParameterItem // 38 -> IDocParameterItem + }; + virtual Kind kind() const = 0; +}; + +class IDocMarkup : public IDoc +{ + public: + enum Markup + { + Normal = 0x000, + Bold = 0x001, + Emphasis = 0x002, + ComputerOutput = 0x004, + Subscript = 0x008, + Superscript = 0x010, + SmallFont = 0x020, + Center = 0x040, + Preformatted = 0x080, + Heading = 0x100 + }; +}; + +class IDocPara : public IDoc +{ + public: + virtual IDocIterator *contents() const = 0; +}; + +class IDocText : public IDocMarkup +{ + public: + virtual const IString * text() const = 0; + virtual int markup() const = 0; + virtual int headingLevel() const = 0; +}; + +class IDocMarkupModifier : public IDoc +{ + public: + virtual bool enabled() const = 0; + virtual int markup() const = 0; + virtual int headingLevel() const = 0; +}; + +class IDocItemizedList : public IDoc +{ + public: + virtual IDocIterator *elements() const = 0; +}; + +class IDocOrderedList : public IDoc +{ + public: + virtual IDocIterator *elements() const = 0; +}; + +class IDocListItem : public IDoc +{ + public: + virtual IDocIterator *contents() const = 0; +}; + +class IDocParameterList : public IDoc +{ + public: + enum Types { Param, RetVal, Exception }; + virtual Types sectType() const = 0; + virtual IDocIterator *params() const = 0; +}; + +class IDocParameterItem : public IDoc +{ + public: + virtual IDocIterator *paramNames() const = 0; + virtual IDocPara *description() const = 0; +}; + +class IDocParameter : public IDoc +{ + public: + virtual const IString * name() const = 0; +}; + +class IDocTitle : public IDoc +{ + public: + virtual IDocIterator *title() const = 0; +}; + +class IDocSimpleSect : public IDoc +{ + public: + enum Types { Invalid = 0, + See, Return, Author, Version, + Since, Date, Bug, Note, + Warning, Par, Deprecated, Pre, + Post, Invar, Remark, Attention, + Todo, Test, RCS, EnumValues, + Examples + }; + virtual Types type() const = 0; + virtual const IString * typeString() const = 0; + virtual IDocTitle *title() const = 0; + virtual IDocPara *description() const = 0; +}; + +class IDocRef : public IDoc +{ + public: + enum TargetKind { Member, Compound }; + virtual const IString * refId() const = 0; + virtual TargetKind targetKind() const = 0; + virtual const IString * external() const = 0; + virtual const IString * text() const = 0; +}; + +class IDocVariableList : public IDoc +{ + public: + virtual IDocIterator *entries() const = 0; +}; + +class IDocVariableListEntry : public IDoc +{ + public: + virtual ILinkedTextIterator * term() const = 0; + virtual IDocPara *description() const = 0; +}; + +class IDocHRuler : public IDoc +{ +}; + +class IDocLineBreak : public IDoc +{ +}; + +class IDocULink : public IDoc +{ + public: + virtual const IString * url() const = 0; + virtual const IString * text() const = 0; +}; + +class IDocEMail : public IDoc +{ + public: + virtual const IString * address() const = 0; +}; + +class IDocLink : public IDoc +{ + public: + virtual const IString * refId() const = 0; + virtual const IString * text() const = 0; +}; + +class IDocProgramListing : public IDoc +{ + public: + virtual IDocIterator *codeLines() const = 0; +}; + +class IDocCodeLine : public IDoc +{ + public: + virtual int lineNumber() const = 0; + virtual const IString * refId() const = 0; + virtual IDocIterator *codeElements() const = 0; +}; + +class IDocHighlight : public IDoc +{ + public: + enum HighlightKind + { Invalid=0, + Comment, Keyword, + KeywordType, KeywordFlow, CharLiteral, + StringLiteral, Preprocessor + }; + virtual HighlightKind highlightKind() const = 0; + virtual IDocIterator *codeElements() const = 0; +}; + +class IDocFormula : public IDoc +{ + public: + virtual const IString * id() const = 0; + virtual const IString * text() const = 0; +}; + +class IDocImage : public IDoc +{ + public: + virtual const IString * name() const = 0; + virtual const IString * caption() const = 0; +}; + +class IDocDotFile : public IDoc +{ + public: + virtual const IString * name() const = 0; + virtual const IString * caption() const = 0; +}; + +class IDocIndexEntry : public IDoc +{ + public: + virtual const IString * primary() const = 0; + virtual const IString * secondary() const = 0; +}; + +class IDocTable : public IDoc +{ + public: + virtual IDocIterator *rows() const = 0; + virtual int numColumns() const = 0; + virtual const IString * caption() const = 0; +}; + +class IDocRow : public IDoc +{ + public: + virtual IDocIterator *entries() const = 0; +}; + +class IDocEntry : public IDoc +{ + public: + virtual IDocIterator *contents() const = 0; +}; + +class IDocSection : public IDoc +{ + public: + virtual const IString * id() const = 0; + virtual int level() const = 0; + virtual IDocTitle *title() const = 0; + virtual IDocIterator *paragraphs() const = 0; + virtual IDocIterator *subSections() const = 0; + virtual IDocInternal *internal() const = 0; +}; + +class IDocInternal : public IDoc +{ + public: + virtual IDocIterator *paragraphs() const = 0; + virtual IDocIterator *subSections() const = 0; +}; + +class IDocTocList : public IDoc +{ + public: + virtual IDocIterator *elements() const = 0; +}; + +class IDocTocItem : public IDoc +{ + public: + virtual const IString *id() const = 0; + virtual const IString *title() const = 0; +}; + +class IDocCopy : public IDoc +{ + public: + virtual IDocIterator *contents() const = 0; +}; + +class IDocVerbatim : public IDoc +{ + public: + enum Types { Invalid = 0, HtmlOnly, LatexOnly, Verbatim }; + virtual const IString *text() const = 0; + virtual Types type() const = 0; +}; + +class IDocAnchor : public IDoc +{ + public: + virtual const IString *id() const = 0; +}; + +class IDocSymbol : public IDoc +{ + public: + enum Types + { Invalid = 0, + Umlaut, Acute, Grave, Circ, Tilde, Szlig, Cedil, Ring, Nbsp, Copy + }; + virtual Types type() const = 0; + virtual const IString * typeString() const = 0; + virtual char letter() const = 0; +}; + +class IDocRoot : public IDoc +{ + public: + virtual IDocIterator *contents() const = 0; + virtual IDocInternal *internal() const = 0; +}; + +class IDocIterator +{ + public: + VIRTUAL_DESTRUCTOR(IDocIterator) + virtual IDoc *toFirst() = 0; + virtual IDoc *toLast() = 0; + virtual IDoc *toNext() = 0; + virtual IDoc *toPrev() = 0; + virtual IDoc *current() const = 0; + virtual void release() = 0; +}; + +class IEdgeLabel +{ + public: + VIRTUAL_DESTRUCTOR(IEdgeLabel) + virtual const IString * label() const = 0; +}; + +class IEdgeLabelIterator +{ + public: + VIRTUAL_DESTRUCTOR(IEdgeLabelIterator) + virtual IEdgeLabel *toFirst() = 0; + virtual IEdgeLabel *toLast() = 0; + virtual IEdgeLabel *toNext() = 0; + virtual IEdgeLabel *toPrev() = 0; + virtual IEdgeLabel *current() const = 0; + virtual void release() = 0; +}; + +class IChildNode +{ + public: + VIRTUAL_DESTRUCTOR(IChildNode) + enum NodeRelation { PublicInheritance, ProtectedInheritance, + PrivateInheritance, Usage, TemplateInstance + }; + virtual INode * node() const = 0; + virtual NodeRelation relation() const = 0; + virtual const IString * relationString() const = 0; + virtual IEdgeLabelIterator *edgeLabels() const = 0; +}; + +class IChildNodeIterator +{ + public: + VIRTUAL_DESTRUCTOR(IChildNodeIterator) + virtual IChildNode *toFirst() = 0; + virtual IChildNode *toLast() = 0; + virtual IChildNode *toNext() = 0; + virtual IChildNode *toPrev() = 0; + virtual IChildNode *current() const = 0; + virtual void release() = 0; +}; + +class INode +{ + public: + VIRTUAL_DESTRUCTOR(INode) + virtual const IString * id() const = 0; + virtual const IString * label() const = 0; + virtual const IString * linkId() const = 0; + virtual IChildNodeIterator *children() const = 0; +}; + +class INodeIterator +{ + public: + VIRTUAL_DESTRUCTOR(INodeIterator) + virtual INode *toFirst() = 0; + virtual INode *toLast() = 0; + virtual INode *toNext() = 0; + virtual INode *toPrev() = 0; + virtual INode *current() const = 0; + virtual void release() = 0; +}; + +class IGraph +{ + public: + VIRTUAL_DESTRUCTOR(IGraph) + virtual INodeIterator *nodes() const = 0; +}; + +class IMember +{ + public: + VIRTUAL_DESTRUCTOR(IMember) + enum MemberKind { Invalid=0, + Define, Property, Variable, Typedef, Enum, + Function, Signal, Prototype, Friend, DCOP, Slot, + EnumValue + }; + virtual ICompound *compound() const = 0; + virtual ISection *section() const = 0; + virtual MemberKind kind() const = 0; + virtual const IString * kindString() const = 0; + virtual const IString * id() const = 0; + virtual const IString * protection() const = 0; + virtual const IString * virtualness() const = 0; + virtual ILinkedTextIterator *type() const = 0; + virtual const IString * typeString() const = 0; + virtual const IString * name() const = 0; + virtual const IString * readAccessor() const = 0; + virtual const IString * writeAccessor() const = 0; + virtual const IString * definition() const = 0; + virtual const IString * argsstring() const = 0; + virtual bool isConst() const = 0; + virtual bool isVolatile() const = 0; + virtual bool isStatic() const = 0; + virtual bool isExplicit() const = 0; + virtual bool isInline() const = 0; + virtual bool isMutable() const = 0; + virtual bool isReadable() const = 0; + virtual bool isWritable() const = 0; + virtual IParamIterator *parameters() const = 0; + virtual IParamIterator *templateParameters() const = 0; + virtual ILinkedTextIterator *initializer() const = 0; + virtual ILinkedTextIterator *exceptions() const = 0; + virtual IMemberReferenceIterator *references() const = 0; + virtual IMemberReferenceIterator *referencedBy() const = 0; + virtual const IString *bodyFile() const = 0; + virtual int bodyStart() const = 0; + virtual int bodyEnd() const = 0; + virtual const IString * definitionFile() const = 0; + virtual int definitionLine() const = 0; + virtual IMemberReference *reimplements() const = 0; + virtual IMemberReferenceIterator *reimplementedBy() const = 0; + virtual IDocRoot *briefDescription() const = 0; + virtual IDocRoot *detailedDescription() const = 0; + virtual IDocRoot *inbodyDescription() const = 0; +}; + +class IDefine : public IMember +{ + public: +}; + +class IProperty : public IMember +{ + public: +}; + +class IVariable : public IMember +{ + public: +}; + +class ITypedef : public IMember +{ + public: +}; + +class IFunction : public IMember +{ + public: +}; + +class ISignal : public IMember +{ + public: +}; + +class IPrototype : public IMember +{ + public: +}; + +class IFriend : public IMember +{ + public: +}; + +class IDCOP : public IMember +{ + public: +}; + +class ISlot : public IMember +{ + public: +}; + +class IEnumValue : public IMember +{ + public: + virtual const IString * name() const = 0; +}; + +/*! \brief Include relation + */ +class IInclude +{ + public: + VIRTUAL_DESTRUCTOR(IInclude) + virtual const IString * name() const = 0; + virtual const IString * refId() const = 0; + virtual bool isLocal() const = 0; +}; + +class IIncludeIterator +{ + public: + VIRTUAL_DESTRUCTOR(IIncludeIterator) + virtual IInclude *toFirst() = 0; + virtual IInclude *toLast() = 0; + virtual IInclude *toNext() = 0; + virtual IInclude *toPrev() = 0; + virtual IInclude *current() const = 0; + virtual void release() = 0; +}; + +class IMemberIterator +{ + public: + VIRTUAL_DESTRUCTOR(IMemberIterator) + virtual IMember *toFirst() = 0; + virtual IMember *toLast() = 0; + virtual IMember *toNext() = 0; + virtual IMember *toPrev() = 0; + virtual IMember *current() const = 0; + virtual void release() = 0; +}; + +class IEnum : public IMember +{ + public: + virtual IMemberIterator *enumValues() const = 0; +}; + +/*! \brief The interface to a section in the object model. + * + * A compound can have a number of sections, where each + * section contains a set of members with the properties implied by + * the section kind. The kind() method returns the kind of the section. + * The members of the section can be accessed via members(). Apart + * from using kind(), some of the individual properties of the section can + * also be inspected via isStatic(), isPublic(), isProtected() and + * isPrivate(). + */ +class ISection +{ + public: + VIRTUAL_DESTRUCTOR(ISection) + /*! Possible section types */ + enum SectionKind + { Invalid=0, + UserDefined, //!< A user defined member group + PubTypes, //!< Public member typedefs + PubFuncs, //!< Public member functions + PubAttribs, //!< Public member attributes + PubSlots, //!< Public Qt Slots + Signals, //!< Qt Signals + DCOPFuncs, //!< KDE-DCOP interface functions + Properties, //!< IDL properties + Events, //!< C# events + PubStatFuncs, //!< Public static member functions + PubStatAttribs, //!< Public static attributes + ProTypes, //!< Protected member typedefs + ProFuncs, //!< Protected member functions + ProAttribs, //!< Protected member attributes + ProSlots, //!< Protected slots + ProStatFuncs, //!< Protected static member functions + ProStatAttribs, //!< Protected static member attributes + PacTypes, //!< Package member typedefs + PacFuncs, //!< Package member functions + PacAttribs, //!< Package member attributes + PacStatFuncs, //!< Package static member functions + PacStatAttribs, //!< Package static member attributes + PriTypes, //!< Private member typedefs + PriFuncs, //!< Private member functions + PriAttribs, //!< Private member attributes + PriSlots, //!< Private Qt slots + PriStatFuncs, //!< Private static member functions + PriStatAttribs, //!< Private static member attributes + Friend, //!< Friends + Related, //!< Function marked as related + Defines, //!< Preprocessor defines + Prototypes, //!< Global function prototypes + Typedefs, //!< Global typedefs + Enums, //!< Enumerations + Functions, //!< Global functions + Variables //!< Global variables + }; + + /*! Returns a string representation of the value returned by kind() */ + virtual const IString * kindString() const = 0; + + /*! Returns what kind of section this is */ + virtual SectionKind kind() const = 0; + + /*! Returns the description attached to this section (for user defined + * sections, also known as member groups). + */ + virtual IDocRoot *description() const = 0; + + /*! Returns an iterator for the members of this section */ + virtual IMemberIterator *members() const = 0; + + /*! Returns \c true if this section contains statics */ + virtual bool isStatic() const = 0; + + /*! Returns \c true if this section belongs to a + * public section of a class + */ + virtual bool isPublic() const = 0; + + /*! Returns \c true if this section belongs to a + * private section of a class + */ + virtual bool isPrivate() const = 0; + + /*! Returns \c true if this section belongs to a + * protected section of a class + * */ + virtual bool isProtected() const = 0; +}; + +class IUserDefined : public ISection +{ + public: + virtual const IString * header() const = 0; +}; + +class ISectionIterator +{ + public: + VIRTUAL_DESTRUCTOR(ISectionIterator) + virtual ISection *toFirst() = 0; + virtual ISection *toLast() = 0; + virtual ISection *toNext() = 0; + virtual ISection *toPrev() = 0; + virtual ISection *current() const = 0; + virtual void release() = 0; +}; + +/*! \brief The interface to a compound in the object model. + * + * A compound has a name which can be obtained via the name() method + * and a unique id, which is return via the id() method. + * A compound consists zero or more members which are grouped into sections. + * The sections() method can be used to access the individual sections. + * Alternatively, members can be obtained by name or id. There are + * different types of compounds. The kind() method returns what kind of + * compound this is. Depending on the return value one can dynamically + * cast an interface pointer to an more specialised interface that provides + * additional methods. + * Example: + * \code + * ICompound *comp=...; + * if (comp->kind()==ICompound::Class) + * { + * IClass *cls = dynamic_cast(comp); + * // use methods of IClass + * } + * \endcode + * The documentation that is provided by a compound is available via + * the briefDescription() and detailedDescription() methods. + * To avoid excessive memory usage, release() should be called (once) on each + * compound interface pointer that is no longer needed. + */ +class ICompound +{ + public: + VIRTUAL_DESTRUCTOR(ICompound) + /*! Represents the kind of compounds recognised by doxygen. */ + enum CompoundKind { Invalid=0, + Class, Struct, Union, Interface, Protocol, Category, + Exception, File, Namespace, Group, Page, Example, Dir + }; + + /*! Returns the name of this compound */ + virtual const IString * name() const = 0; + + /*! Returns the id of this compound. The id is a + * unique string representing a specific compound object. + */ + virtual const IString * id() const = 0; + + /*! Returns the kind of compound. See #CompoundKind for possible + * values. + */ + virtual CompoundKind kind() const = 0; + + /*! Returns a string representation of the compound kind. + * @see kind() + */ + virtual const IString * kindString() const = 0; + + /*! Returns an iterator for the different member sections in this + * compound. + */ + virtual ISectionIterator *sections() const = 0; + + /*! Returns a tree-structured representation of the brief + * description that is attached to this compound. + */ + virtual IDocRoot *briefDescription() const = 0; + + /*! Returns a tree-structured representation of the detailed + * description that is attached to this compound. + */ + virtual IDocRoot *detailedDescription() const = 0; + + /*! Returns an interface to a member given its id. + * @param id The member id. + */ + virtual IMember *memberById(const char * id) const = 0; + + /*! Returns a list of all members within the compound having a certain + * name. Member overloading is the reason why there can be more than + * one member. + * @param name The name of the member. + */ + virtual IMemberIterator *memberByName(const char * name) const = 0; + + /*! Decreases the reference counter for this compound. If it reaches + * zero, the memory for the compound will be released. + */ + virtual void release() = 0; +}; + +class ICompoundIterator +{ + public: + VIRTUAL_DESTRUCTOR(ICompoundIterator) + virtual void toFirst() = 0; + virtual void toLast() = 0; + virtual void toNext() = 0; + virtual void toPrev() = 0; + virtual ICompound *current() const = 0; + virtual void release() = 0; +}; + +class IRelatedCompound +{ + public: + VIRTUAL_DESTRUCTOR(IRelatedCompound) + enum Protection { Public, Protected, Private }; + enum Kind { Normal, Virtual }; + virtual ICompound *compound() const = 0; + virtual Protection protection() const = 0; + virtual Kind kind() const = 0; + virtual const IString *name() const = 0; + +}; + +class IRelatedCompoundIterator +{ + public: + VIRTUAL_DESTRUCTOR(IRelatedCompoundIterator) + virtual IRelatedCompound *toFirst() = 0; + virtual IRelatedCompound *toLast() = 0; + virtual IRelatedCompound *toNext() = 0; + virtual IRelatedCompound *toPrev() = 0; + virtual IRelatedCompound *current() const = 0; + virtual void release() = 0; +}; + +/*! \brief The interface to a class in the object model. + */ +class IClass : public ICompound +{ + public: + virtual IGraph *inheritanceGraph() const = 0; + virtual IGraph *collaborationGraph() const = 0; + virtual IRelatedCompoundIterator *baseCompounds() const = 0; + virtual IRelatedCompoundIterator *derivedCompounds() const = 0; + virtual ICompoundIterator *nestedCompounds() const = 0; + virtual IParamIterator *templateParameters() const = 0; + virtual const IString *locationFile() const = 0; + virtual int locationLine() const = 0; + virtual const IString *locationBodyFile() const = 0; + virtual int locationBodyStartLine() const = 0; + virtual int locationBodyEndLine() const = 0; + + // TODO: + // class: + // listOfAllMembers() + // protection() + // isAbstract() +}; + +/*! \brief The interface to a struct in the object model. + */ +class IStruct : public ICompound +{ + public: + virtual ICompoundIterator *nestedCompounds() const = 0; + virtual IRelatedCompoundIterator *baseCompounds() const = 0; + virtual IRelatedCompoundIterator *derivedCompounds() const = 0; + virtual const IString *locationFile() const = 0; + virtual int locationLine() const = 0; + virtual int locationBodyStartLine() const = 0; + virtual int locationBodyEndLine() const = 0; +}; + +/*! \brief The interface to a union in the object model. + */ +class IUnion : public ICompound +{ + public: + virtual ICompoundIterator *nestedCompounds() const = 0; +}; + +/*! \brief The interface to a Java/IDL interface in the object model. + */ +class IInterface : public ICompound +{ + public: + virtual IRelatedCompoundIterator *baseCompounds() const = 0; + virtual IRelatedCompoundIterator *derivedCompounds() const = 0; +}; + + +/*! \brief The interface to a Java/IDL exception in the object model. + */ +class IException : public ICompound +{ +}; + +/*! \brief The interface to a namespace in the object model. + */ +class INamespace : public ICompound +{ + public: + virtual ICompoundIterator *nestedCompounds() const = 0; +}; + +/*! \brief The interface to a file in the object model. + */ +class IFile : public ICompound +{ + public: + virtual IGraph *includeDependencyGraph() const = 0; + virtual IGraph *includedByDependencyGraph() const = 0; + virtual IDocProgramListing *source() const = 0; + virtual ICompoundIterator *nestedCompounds() const = 0; + + virtual IIncludeIterator *includes() const = 0; + virtual IIncludeIterator *includedBy() const = 0; + + // ICompound *innerNamespaces() + // ICompoundIterator *innerClasses() +}; + +/*! \brief The interface to a group in the object model. + */ +class IGroup : public ICompound +{ + public: + virtual ICompoundIterator *nestedCompounds() const = 0; + // group: + // Title() + // innerFile() + // innerPage() +}; + +/*! \brief The interface to a page in the object model. + */ +class IPage : public ICompound +{ + public: + virtual const IDocTitle *title() const = 0; +}; + +/** \brief Interface to a directory in the object model. */ +class IDir : public ICompound +{ + public: + virtual ICompoundIterator *nestedCompounds() const = 0; +}; + +/*! Root node of the object model. */ +class IDoxygen +{ + public: + VIRTUAL_DESTRUCTOR(IDoxygen) + + /*! Returns an iterator that can be used to iterate over the list + * of compounds found in the project. + */ + virtual ICompoundIterator *compounds() const = 0; + + /*! Returns a compound given its unique \a id. If you have a + * compound id this function is much more efficient than iterating + * over the compound list. Returns 0 if the id is not valid. + */ + virtual ICompound *compoundById(const char * id) const = 0; + + /*! Returns a compound given its name (including the scope). + * Returns 0 if the name is not found in the project. + */ + virtual ICompound *compoundByName(const char * name) const = 0; + + /*! Returns an interface to a compound containing a member given it the + * member's id. Given the ICompound interface one can use the same id + * to obtain the IMember interface. + * @param id The member id. + */ + virtual ICompound *memberById(const char * id) const = 0; + + /*! Returns a list of all compounds containing at least one members + * with a certain name. Each compound can be asked to return the + * list of members with that name. + * @param name The name of the member. + */ + virtual ICompoundIterator *memberByName(const char * name) const = 0; + + /*! Releases the memory for the object hierarchy obtained by + * createdObjecModelFromXML(). First release all iterators before calling + * this function. + */ + virtual void release() = 0; + + /*! Sets the debug level. + * - 0 all debugging messages are disabled (the default). + * - 1 display important messages only + * - 2 display any messages. + */ + virtual void setDebugLevel(int level) = 0; + + /*! Reads an XML directory produced by doxygen and builds up a data + * structure representing the contents of the XML files in the directory. + */ + virtual bool readXMLDir(const char *xmlDirName) = 0; +}; + +/*! Factory method that creates an empty object model for a doxygen generated XML file. + * Use the readXMLDir() method to build the model from an XML output + * directory containing doxygen output. + */ +IDoxygen *createObjectModel(); + +#endif diff --git a/addon/doxmlparser/src/CMakeLists.txt b/addon/doxmlparser/src/CMakeLists.txt new file mode 100644 index 0000000..35f6c83 --- /dev/null +++ b/addon/doxmlparser/src/CMakeLists.txt @@ -0,0 +1,18 @@ +include_directories( + . + ../include + ${CMAKE_SOURCE_DIR}/qtools +) +add_library(doxmlparser STATIC + basehandler.cpp + compoundhandler.cpp + debug.cpp + dochandler.cpp + graphhandler.cpp + linkedtexthandler.cpp + loamhandler.cpp + mainhandler.cpp + memberhandler.cpp + paramhandler.cpp + sectionhandler.cpp +) diff --git a/addon/doxmlparser/src/doxmlintf.h b/addon/doxmlparser/src/doxmlintf.h deleted file mode 100644 index 22cecdb..0000000 --- a/addon/doxmlparser/src/doxmlintf.h +++ /dev/null @@ -1,1141 +0,0 @@ -/****************************************************************************** - * - * $Id$ - * - * - * Copyright (C) 1997-2015 by Dimitri van Heesch. - * - * Permission to use, copy, modify, and distribute this software and its - * documentation under the terms of the GNU General Public License is hereby - * granted. No representations are made about the suitability of this software - * for any purpose. It is provided "as is" without express or implied warranty. - * See the GNU General Public License for more details. - * - */ - -#ifndef _DOXMLINTF_H -#define _DOXMLINTF_H - -/*! \file - * \brief The interface to the object model provided by the XML parser - * library. - * - * To start using this library one calls createObjectModel() and then - * uses the returned IDoxygen interface to read doxygen generated - * XML output and navigate through the information contained in it. - * - * @see createObjectModel() - */ - -class IMember; -class IDocIterator; -class ICompound; -class ISection; -class INode; -class IDocInternal; -class IDocRoot; - -#define VIRTUAL_DESTRUCTOR(x) virtual ~x() {} - -/*! \brief Read only interface to a string. - */ -class IString -{ - public: - VIRTUAL_DESTRUCTOR(IString) - /*! Returns a latin1 character representation of the string. */ - virtual const char *latin1() const = 0; - /*! Returns a utf8 character representation of the string. */ - virtual const char *utf8() const = 0; - /*! Returns a 16-bit unicode character representation of the character at - * position \a index in the string. The first character is at index 0. - */ - virtual unsigned short unicodeCharAt(int index) const = 0; - /*! Returns true if this string is empty or false otherwise */ - virtual bool isEmpty() const = 0; - /*! Returns the number of characters in the string. */ - virtual int length() const = 0; -}; - -/*! \brief Base interface for hyperlinked text - * - * Depending on the result of kind() the interface is extended by - * ILT_Text or ILT_Ref. - */ -class ILinkedText -{ - public: - VIRTUAL_DESTRUCTOR(ILinkedText) - enum Kind { Kind_Text, Kind_Ref }; - virtual Kind kind() const = 0; -}; - -/*! \brief Plain text fragment. - */ -class ILT_Text : public ILinkedText -{ - public: - VIRTUAL_DESTRUCTOR(ILT_Text) - virtual const IString *text() const = 0; -}; - -/*! \brief Reference to an object. - */ -class ILT_Ref : public ILinkedText -{ - public: - VIRTUAL_DESTRUCTOR(ILT_Ref) - enum TargetKind { Member, Compound }; - virtual const IString *id() const = 0; - virtual TargetKind targetKind() const = 0; - virtual const IString *external() const = 0; - virtual const IString *text() const = 0; -}; - -/*! \brief Iterates over a list of ILinkedText fragments. - */ -class ILinkedTextIterator -{ - public: - VIRTUAL_DESTRUCTOR(ILinkedTextIterator) - virtual ILinkedText *toFirst() = 0; - virtual ILinkedText *toLast() = 0; - virtual ILinkedText *toNext() = 0; - virtual ILinkedText *toPrev() = 0; - virtual ILinkedText *current() const = 0; - virtual void release() = 0; -}; - -/*! \brief Representation of a parameter of a function. */ -class IParam -{ - public: - VIRTUAL_DESTRUCTOR(IParam) - virtual ILinkedTextIterator *type() const = 0; - virtual const IString * declarationName() const = 0; - virtual const IString * definitionName() const = 0; - virtual const IString * attrib() const = 0; - virtual const IString * arraySpecifier() const = 0; - virtual ILinkedTextIterator *defaultValue() const = 0; - virtual IDocRoot *briefDescription() const = 0; -}; - -class IParamIterator -{ - public: - VIRTUAL_DESTRUCTOR(IParamIterator) - virtual IParam *toFirst() = 0; - virtual IParam *toLast() = 0; - virtual IParam *toNext() = 0; - virtual IParam *toPrev() = 0; - virtual IParam *current() const = 0; - virtual void release() = 0; -}; - -class IMemberReference -{ - public: - VIRTUAL_DESTRUCTOR(IMemberReference) - virtual IMember *member() const = 0; - virtual const IString * name() const = 0; - virtual const IString * scope() const = 0; - virtual const IString * protection() const = 0; - virtual const IString * virtualness() const = 0; - virtual const IString * ambiguityScope() const = 0; -}; - -class IMemberReferenceIterator -{ - public: - VIRTUAL_DESTRUCTOR(IMemberReferenceIterator) - virtual IMemberReference *toFirst() = 0; - virtual IMemberReference *toLast() = 0; - virtual IMemberReference *toNext() = 0; - virtual IMemberReference *toPrev() = 0; - virtual IMemberReference *current() const = 0; - virtual void release() = 0; -}; - -class IDoc -{ - public: - VIRTUAL_DESTRUCTOR(IDoc) - enum Kind - { - Invalid = 0, // 0 - Para, // 1 -> IDocPara - Text, // 2 -> IDocText - MarkupModifier, // 3 -> IDocMarkupModifier - ItemizedList, // 4 -> IDocItemizedList - OrderedList, // 5 -> IDocOrderedList - ListItem, // 6 -> IDocListItem - ParameterList, // 7 -> IDocParameterList - Parameter, // 8 -> IDocParameter - SimpleSect, // 9 -> IDocSimpleSect - Title, // 10 -> IDocTitle - Ref, // 11 -> IDocRef - VariableList, // 12 -> IDocVariableList - VariableListEntry, // 13 -> IDocVariableListEntry - HRuler, // 14 -> IDocHRuler - LineBreak, // 15 -> IDocLineBreak - ULink, // 16 -> IDocULink - EMail, // 17 -> IDocEMail - Link, // 18 -> IDocLink - ProgramListing, // 19 -> IDocProgramListing - CodeLine, // 20 -> IDocCodeLine - Highlight, // 21 -> IDocHighlight - Formula, // 22 -> IDocFormula - Image, // 23 -> IDocImage - DotFile, // 24 -> IDocDotFile - IndexEntry, // 25 -> IDocIndexEntry - Table, // 26 -> IDocTable - Row, // 27 -> IDocRow - Entry, // 28 -> IDocEntry - Section, // 29 -> IDocSection - Verbatim, // 30 -> IDocVerbatim - Copy, // 31 -> IDocCopy - TocList, // 32 -> IDocTocList - TocItem, // 33 -> IDocTocItem - Anchor, // 34 -> IDocAnchor - Symbol, // 35 -> IDocSymbol - Internal, // 36 -> IDocInternal - Root, // 37 -> IDocRoot - ParameterItem // 38 -> IDocParameterItem - }; - virtual Kind kind() const = 0; -}; - -class IDocMarkup : public IDoc -{ - public: - enum Markup - { - Normal = 0x000, - Bold = 0x001, - Emphasis = 0x002, - ComputerOutput = 0x004, - Subscript = 0x008, - Superscript = 0x010, - SmallFont = 0x020, - Center = 0x040, - Preformatted = 0x080, - Heading = 0x100 - }; -}; - -class IDocPara : public IDoc -{ - public: - virtual IDocIterator *contents() const = 0; -}; - -class IDocText : public IDocMarkup -{ - public: - virtual const IString * text() const = 0; - virtual int markup() const = 0; - virtual int headingLevel() const = 0; -}; - -class IDocMarkupModifier : public IDoc -{ - public: - virtual bool enabled() const = 0; - virtual int markup() const = 0; - virtual int headingLevel() const = 0; -}; - -class IDocItemizedList : public IDoc -{ - public: - virtual IDocIterator *elements() const = 0; -}; - -class IDocOrderedList : public IDoc -{ - public: - virtual IDocIterator *elements() const = 0; -}; - -class IDocListItem : public IDoc -{ - public: - virtual IDocIterator *contents() const = 0; -}; - -class IDocParameterList : public IDoc -{ - public: - enum Types { Param, RetVal, Exception }; - virtual Types sectType() const = 0; - virtual IDocIterator *params() const = 0; -}; - -class IDocParameterItem : public IDoc -{ - public: - virtual IDocIterator *paramNames() const = 0; - virtual IDocPara *description() const = 0; -}; - -class IDocParameter : public IDoc -{ - public: - virtual const IString * name() const = 0; -}; - -class IDocTitle : public IDoc -{ - public: - virtual IDocIterator *title() const = 0; -}; - -class IDocSimpleSect : public IDoc -{ - public: - enum Types { Invalid = 0, - See, Return, Author, Version, - Since, Date, Bug, Note, - Warning, Par, Deprecated, Pre, - Post, Invar, Remark, Attention, - Todo, Test, RCS, EnumValues, - Examples - }; - virtual Types type() const = 0; - virtual const IString * typeString() const = 0; - virtual IDocTitle *title() const = 0; - virtual IDocPara *description() const = 0; -}; - -class IDocRef : public IDoc -{ - public: - enum TargetKind { Member, Compound }; - virtual const IString * refId() const = 0; - virtual TargetKind targetKind() const = 0; - virtual const IString * external() const = 0; - virtual const IString * text() const = 0; -}; - -class IDocVariableList : public IDoc -{ - public: - virtual IDocIterator *entries() const = 0; -}; - -class IDocVariableListEntry : public IDoc -{ - public: - virtual ILinkedTextIterator * term() const = 0; - virtual IDocPara *description() const = 0; -}; - -class IDocHRuler : public IDoc -{ -}; - -class IDocLineBreak : public IDoc -{ -}; - -class IDocULink : public IDoc -{ - public: - virtual const IString * url() const = 0; - virtual const IString * text() const = 0; -}; - -class IDocEMail : public IDoc -{ - public: - virtual const IString * address() const = 0; -}; - -class IDocLink : public IDoc -{ - public: - virtual const IString * refId() const = 0; - virtual const IString * text() const = 0; -}; - -class IDocProgramListing : public IDoc -{ - public: - virtual IDocIterator *codeLines() const = 0; -}; - -class IDocCodeLine : public IDoc -{ - public: - virtual int lineNumber() const = 0; - virtual const IString * refId() const = 0; - virtual IDocIterator *codeElements() const = 0; -}; - -class IDocHighlight : public IDoc -{ - public: - enum HighlightKind - { Invalid=0, - Comment, Keyword, - KeywordType, KeywordFlow, CharLiteral, - StringLiteral, Preprocessor - }; - virtual HighlightKind highlightKind() const = 0; - virtual IDocIterator *codeElements() const = 0; -}; - -class IDocFormula : public IDoc -{ - public: - virtual const IString * id() const = 0; - virtual const IString * text() const = 0; -}; - -class IDocImage : public IDoc -{ - public: - virtual const IString * name() const = 0; - virtual const IString * caption() const = 0; -}; - -class IDocDotFile : public IDoc -{ - public: - virtual const IString * name() const = 0; - virtual const IString * caption() const = 0; -}; - -class IDocIndexEntry : public IDoc -{ - public: - virtual const IString * primary() const = 0; - virtual const IString * secondary() const = 0; -}; - -class IDocTable : public IDoc -{ - public: - virtual IDocIterator *rows() const = 0; - virtual int numColumns() const = 0; - virtual const IString * caption() const = 0; -}; - -class IDocRow : public IDoc -{ - public: - virtual IDocIterator *entries() const = 0; -}; - -class IDocEntry : public IDoc -{ - public: - virtual IDocIterator *contents() const = 0; -}; - -class IDocSection : public IDoc -{ - public: - virtual const IString * id() const = 0; - virtual int level() const = 0; - virtual IDocTitle *title() const = 0; - virtual IDocIterator *paragraphs() const = 0; - virtual IDocIterator *subSections() const = 0; - virtual IDocInternal *internal() const = 0; -}; - -class IDocInternal : public IDoc -{ - public: - virtual IDocIterator *paragraphs() const = 0; - virtual IDocIterator *subSections() const = 0; -}; - -class IDocTocList : public IDoc -{ - public: - virtual IDocIterator *elements() const = 0; -}; - -class IDocTocItem : public IDoc -{ - public: - virtual const IString *id() const = 0; - virtual const IString *title() const = 0; -}; - -class IDocCopy : public IDoc -{ - public: - virtual IDocIterator *contents() const = 0; -}; - -class IDocVerbatim : public IDoc -{ - public: - enum Types { Invalid = 0, HtmlOnly, LatexOnly, Verbatim }; - virtual const IString *text() const = 0; - virtual Types type() const = 0; -}; - -class IDocAnchor : public IDoc -{ - public: - virtual const IString *id() const = 0; -}; - -class IDocSymbol : public IDoc -{ - public: - enum Types - { Invalid = 0, - Umlaut, Acute, Grave, Circ, Tilde, Szlig, Cedil, Ring, Nbsp, Copy - }; - virtual Types type() const = 0; - virtual const IString * typeString() const = 0; - virtual char letter() const = 0; -}; - -class IDocRoot : public IDoc -{ - public: - virtual IDocIterator *contents() const = 0; - virtual IDocInternal *internal() const = 0; -}; - -class IDocIterator -{ - public: - VIRTUAL_DESTRUCTOR(IDocIterator) - virtual IDoc *toFirst() = 0; - virtual IDoc *toLast() = 0; - virtual IDoc *toNext() = 0; - virtual IDoc *toPrev() = 0; - virtual IDoc *current() const = 0; - virtual void release() = 0; -}; - -class IEdgeLabel -{ - public: - VIRTUAL_DESTRUCTOR(IEdgeLabel) - virtual const IString * label() const = 0; -}; - -class IEdgeLabelIterator -{ - public: - VIRTUAL_DESTRUCTOR(IEdgeLabelIterator) - virtual IEdgeLabel *toFirst() = 0; - virtual IEdgeLabel *toLast() = 0; - virtual IEdgeLabel *toNext() = 0; - virtual IEdgeLabel *toPrev() = 0; - virtual IEdgeLabel *current() const = 0; - virtual void release() = 0; -}; - -class IChildNode -{ - public: - VIRTUAL_DESTRUCTOR(IChildNode) - enum NodeRelation { PublicInheritance, ProtectedInheritance, - PrivateInheritance, Usage, TemplateInstance - }; - virtual INode * node() const = 0; - virtual NodeRelation relation() const = 0; - virtual const IString * relationString() const = 0; - virtual IEdgeLabelIterator *edgeLabels() const = 0; -}; - -class IChildNodeIterator -{ - public: - VIRTUAL_DESTRUCTOR(IChildNodeIterator) - virtual IChildNode *toFirst() = 0; - virtual IChildNode *toLast() = 0; - virtual IChildNode *toNext() = 0; - virtual IChildNode *toPrev() = 0; - virtual IChildNode *current() const = 0; - virtual void release() = 0; -}; - -class INode -{ - public: - VIRTUAL_DESTRUCTOR(INode) - virtual const IString * id() const = 0; - virtual const IString * label() const = 0; - virtual const IString * linkId() const = 0; - virtual IChildNodeIterator *children() const = 0; -}; - -class INodeIterator -{ - public: - VIRTUAL_DESTRUCTOR(INodeIterator) - virtual INode *toFirst() = 0; - virtual INode *toLast() = 0; - virtual INode *toNext() = 0; - virtual INode *toPrev() = 0; - virtual INode *current() const = 0; - virtual void release() = 0; -}; - -class IGraph -{ - public: - VIRTUAL_DESTRUCTOR(IGraph) - virtual INodeIterator *nodes() const = 0; -}; - -class IMember -{ - public: - VIRTUAL_DESTRUCTOR(IMember) - enum MemberKind { Invalid=0, - Define, Property, Variable, Typedef, Enum, - Function, Signal, Prototype, Friend, DCOP, Slot, - EnumValue - }; - virtual ICompound *compound() const = 0; - virtual ISection *section() const = 0; - virtual MemberKind kind() const = 0; - virtual const IString * kindString() const = 0; - virtual const IString * id() const = 0; - virtual const IString * protection() const = 0; - virtual const IString * virtualness() const = 0; - virtual ILinkedTextIterator *type() const = 0; - virtual const IString * typeString() const = 0; - virtual const IString * name() const = 0; - virtual const IString * readAccessor() const = 0; - virtual const IString * writeAccessor() const = 0; - virtual const IString * definition() const = 0; - virtual const IString * argsstring() const = 0; - virtual bool isConst() const = 0; - virtual bool isVolatile() const = 0; - virtual bool isStatic() const = 0; - virtual bool isExplicit() const = 0; - virtual bool isInline() const = 0; - virtual bool isMutable() const = 0; - virtual bool isReadable() const = 0; - virtual bool isWritable() const = 0; - virtual IParamIterator *parameters() const = 0; - virtual IParamIterator *templateParameters() const = 0; - virtual ILinkedTextIterator *initializer() const = 0; - virtual ILinkedTextIterator *exceptions() const = 0; - virtual IMemberReferenceIterator *references() const = 0; - virtual IMemberReferenceIterator *referencedBy() const = 0; - virtual const IString *bodyFile() const = 0; - virtual int bodyStart() const = 0; - virtual int bodyEnd() const = 0; - virtual const IString * definitionFile() const = 0; - virtual int definitionLine() const = 0; - virtual IMemberReference *reimplements() const = 0; - virtual IMemberReferenceIterator *reimplementedBy() const = 0; - virtual IDocRoot *briefDescription() const = 0; - virtual IDocRoot *detailedDescription() const = 0; - virtual IDocRoot *inbodyDescription() const = 0; -}; - -class IDefine : public IMember -{ - public: -}; - -class IProperty : public IMember -{ - public: -}; - -class IVariable : public IMember -{ - public: -}; - -class ITypedef : public IMember -{ - public: -}; - -class IFunction : public IMember -{ - public: -}; - -class ISignal : public IMember -{ - public: -}; - -class IPrototype : public IMember -{ - public: -}; - -class IFriend : public IMember -{ - public: -}; - -class IDCOP : public IMember -{ - public: -}; - -class ISlot : public IMember -{ - public: -}; - -class IEnumValue : public IMember -{ - public: - virtual const IString * name() const = 0; -}; - -/*! \brief Include relation - */ -class IInclude -{ - public: - VIRTUAL_DESTRUCTOR(IInclude) - virtual const IString * name() const = 0; - virtual const IString * refId() const = 0; - virtual bool isLocal() const = 0; -}; - -class IIncludeIterator -{ - public: - VIRTUAL_DESTRUCTOR(IIncludeIterator) - virtual IInclude *toFirst() = 0; - virtual IInclude *toLast() = 0; - virtual IInclude *toNext() = 0; - virtual IInclude *toPrev() = 0; - virtual IInclude *current() const = 0; - virtual void release() = 0; -}; - -class IMemberIterator -{ - public: - VIRTUAL_DESTRUCTOR(IMemberIterator) - virtual IMember *toFirst() = 0; - virtual IMember *toLast() = 0; - virtual IMember *toNext() = 0; - virtual IMember *toPrev() = 0; - virtual IMember *current() const = 0; - virtual void release() = 0; -}; - -class IEnum : public IMember -{ - public: - virtual IMemberIterator *enumValues() const = 0; -}; - -/*! \brief The interface to a section in the object model. - * - * A compound can have a number of sections, where each - * section contains a set of members with the properties implied by - * the section kind. The kind() method returns the kind of the section. - * The members of the section can be accessed via members(). Apart - * from using kind(), some of the individual properties of the section can - * also be inspected via isStatic(), isPublic(), isProtected() and - * isPrivate(). - */ -class ISection -{ - public: - VIRTUAL_DESTRUCTOR(ISection) - /*! Possible section types */ - enum SectionKind - { Invalid=0, - UserDefined, //!< A user defined member group - PubTypes, //!< Public member typedefs - PubFuncs, //!< Public member functions - PubAttribs, //!< Public member attributes - PubSlots, //!< Public Qt Slots - Signals, //!< Qt Signals - DCOPFuncs, //!< KDE-DCOP interface functions - Properties, //!< IDL properties - Events, //!< C# events - PubStatFuncs, //!< Public static member functions - PubStatAttribs, //!< Public static attributes - ProTypes, //!< Protected member typedefs - ProFuncs, //!< Protected member functions - ProAttribs, //!< Protected member attributes - ProSlots, //!< Protected slots - ProStatFuncs, //!< Protected static member functions - ProStatAttribs, //!< Protected static member attributes - PacTypes, //!< Package member typedefs - PacFuncs, //!< Package member functions - PacAttribs, //!< Package member attributes - PacStatFuncs, //!< Package static member functions - PacStatAttribs, //!< Package static member attributes - PriTypes, //!< Private member typedefs - PriFuncs, //!< Private member functions - PriAttribs, //!< Private member attributes - PriSlots, //!< Private Qt slots - PriStatFuncs, //!< Private static member functions - PriStatAttribs, //!< Private static member attributes - Friend, //!< Friends - Related, //!< Function marked as related - Defines, //!< Preprocessor defines - Prototypes, //!< Global function prototypes - Typedefs, //!< Global typedefs - Enums, //!< Enumerations - Functions, //!< Global functions - Variables //!< Global variables - }; - - /*! Returns a string representation of the value returned by kind() */ - virtual const IString * kindString() const = 0; - - /*! Returns what kind of section this is */ - virtual SectionKind kind() const = 0; - - /*! Returns the description attached to this section (for user defined - * sections, also known as member groups). - */ - virtual IDocRoot *description() const = 0; - - /*! Returns an iterator for the members of this section */ - virtual IMemberIterator *members() const = 0; - - /*! Returns \c true if this section contains statics */ - virtual bool isStatic() const = 0; - - /*! Returns \c true if this section belongs to a - * public section of a class - */ - virtual bool isPublic() const = 0; - - /*! Returns \c true if this section belongs to a - * private section of a class - */ - virtual bool isPrivate() const = 0; - - /*! Returns \c true if this section belongs to a - * protected section of a class - * */ - virtual bool isProtected() const = 0; -}; - -class IUserDefined : public ISection -{ - public: - virtual const IString * header() const = 0; -}; - -class ISectionIterator -{ - public: - VIRTUAL_DESTRUCTOR(ISectionIterator) - virtual ISection *toFirst() = 0; - virtual ISection *toLast() = 0; - virtual ISection *toNext() = 0; - virtual ISection *toPrev() = 0; - virtual ISection *current() const = 0; - virtual void release() = 0; -}; - -/*! \brief The interface to a compound in the object model. - * - * A compound has a name which can be obtained via the name() method - * and a unique id, which is return via the id() method. - * A compound consists zero or more members which are grouped into sections. - * The sections() method can be used to access the individual sections. - * Alternatively, members can be obtained by name or id. There are - * different types of compounds. The kind() method returns what kind of - * compound this is. Depending on the return value one can dynamically - * cast an interface pointer to an more specialised interface that provides - * additional methods. - * Example: - * \code - * ICompound *comp=...; - * if (comp->kind()==ICompound::Class) - * { - * IClass *cls = dynamic_cast(comp); - * // use methods of IClass - * } - * \endcode - * The documentation that is provided by a compound is available via - * the briefDescription() and detailedDescription() methods. - * To avoid excessive memory usage, release() should be called (once) on each - * compound interface pointer that is no longer needed. - */ -class ICompound -{ - public: - VIRTUAL_DESTRUCTOR(ICompound) - /*! Represents the kind of compounds recognised by doxygen. */ - enum CompoundKind { Invalid=0, - Class, Struct, Union, Interface, Protocol, Category, - Exception, File, Namespace, Group, Page, Example, Dir - }; - - /*! Returns the name of this compound */ - virtual const IString * name() const = 0; - - /*! Returns the id of this compound. The id is a - * unique string representing a specific compound object. - */ - virtual const IString * id() const = 0; - - /*! Returns the kind of compound. See #CompoundKind for possible - * values. - */ - virtual CompoundKind kind() const = 0; - - /*! Returns a string representation of the compound kind. - * @see kind() - */ - virtual const IString * kindString() const = 0; - - /*! Returns an iterator for the different member sections in this - * compound. - */ - virtual ISectionIterator *sections() const = 0; - - /*! Returns a tree-structured representation of the brief - * description that is attached to this compound. - */ - virtual IDocRoot *briefDescription() const = 0; - - /*! Returns a tree-structured representation of the detailed - * description that is attached to this compound. - */ - virtual IDocRoot *detailedDescription() const = 0; - - /*! Returns an interface to a member given its id. - * @param id The member id. - */ - virtual IMember *memberById(const char * id) const = 0; - - /*! Returns a list of all members within the compound having a certain - * name. Member overloading is the reason why there can be more than - * one member. - * @param name The name of the member. - */ - virtual IMemberIterator *memberByName(const char * name) const = 0; - - /*! Decreases the reference counter for this compound. If it reaches - * zero, the memory for the compound will be released. - */ - virtual void release() = 0; -}; - -class ICompoundIterator -{ - public: - VIRTUAL_DESTRUCTOR(ICompoundIterator) - virtual void toFirst() = 0; - virtual void toLast() = 0; - virtual void toNext() = 0; - virtual void toPrev() = 0; - virtual ICompound *current() const = 0; - virtual void release() = 0; -}; - -class IRelatedCompound -{ - public: - VIRTUAL_DESTRUCTOR(IRelatedCompound) - enum Protection { Public, Protected, Private }; - enum Kind { Normal, Virtual }; - virtual ICompound *compound() const = 0; - virtual Protection protection() const = 0; - virtual Kind kind() const = 0; - virtual const IString *name() const = 0; - -}; - -class IRelatedCompoundIterator -{ - public: - VIRTUAL_DESTRUCTOR(IRelatedCompoundIterator) - virtual IRelatedCompound *toFirst() = 0; - virtual IRelatedCompound *toLast() = 0; - virtual IRelatedCompound *toNext() = 0; - virtual IRelatedCompound *toPrev() = 0; - virtual IRelatedCompound *current() const = 0; - virtual void release() = 0; -}; - -/*! \brief The interface to a class in the object model. - */ -class IClass : public ICompound -{ - public: - virtual IGraph *inheritanceGraph() const = 0; - virtual IGraph *collaborationGraph() const = 0; - virtual IRelatedCompoundIterator *baseCompounds() const = 0; - virtual IRelatedCompoundIterator *derivedCompounds() const = 0; - virtual ICompoundIterator *nestedCompounds() const = 0; - virtual IParamIterator *templateParameters() const = 0; - virtual const IString *locationFile() const = 0; - virtual int locationLine() const = 0; - virtual const IString *locationBodyFile() const = 0; - virtual int locationBodyStartLine() const = 0; - virtual int locationBodyEndLine() const = 0; - - // TODO: - // class: - // listOfAllMembers() - // protection() - // isAbstract() -}; - -/*! \brief The interface to a struct in the object model. - */ -class IStruct : public ICompound -{ - public: - virtual ICompoundIterator *nestedCompounds() const = 0; - virtual IRelatedCompoundIterator *baseCompounds() const = 0; - virtual IRelatedCompoundIterator *derivedCompounds() const = 0; - virtual const IString *locationFile() const = 0; - virtual int locationLine() const = 0; - virtual int locationBodyStartLine() const = 0; - virtual int locationBodyEndLine() const = 0; -}; - -/*! \brief The interface to a union in the object model. - */ -class IUnion : public ICompound -{ - public: - virtual ICompoundIterator *nestedCompounds() const = 0; -}; - -/*! \brief The interface to a Java/IDL interface in the object model. - */ -class IInterface : public ICompound -{ - public: - virtual IRelatedCompoundIterator *baseCompounds() const = 0; - virtual IRelatedCompoundIterator *derivedCompounds() const = 0; -}; - - -/*! \brief The interface to a Java/IDL exception in the object model. - */ -class IException : public ICompound -{ -}; - -/*! \brief The interface to a namespace in the object model. - */ -class INamespace : public ICompound -{ - public: - virtual ICompoundIterator *nestedCompounds() const = 0; -}; - -/*! \brief The interface to a file in the object model. - */ -class IFile : public ICompound -{ - public: - virtual IGraph *includeDependencyGraph() const = 0; - virtual IGraph *includedByDependencyGraph() const = 0; - virtual IDocProgramListing *source() const = 0; - virtual ICompoundIterator *nestedCompounds() const = 0; - - virtual IIncludeIterator *includes() const = 0; - virtual IIncludeIterator *includedBy() const = 0; - - // ICompound *innerNamespaces() - // ICompoundIterator *innerClasses() -}; - -/*! \brief The interface to a group in the object model. - */ -class IGroup : public ICompound -{ - public: - virtual ICompoundIterator *nestedCompounds() const = 0; - // group: - // Title() - // innerFile() - // innerPage() -}; - -/*! \brief The interface to a page in the object model. - */ -class IPage : public ICompound -{ - public: - virtual const IDocTitle *title() const = 0; -}; - -/** \brief Interface to a directory in the object model. */ -class IDir : public ICompound -{ - public: - virtual ICompoundIterator *nestedCompounds() const = 0; -}; - -/*! Root node of the object model. */ -class IDoxygen -{ - public: - VIRTUAL_DESTRUCTOR(IDoxygen) - - /*! Returns an iterator that can be used to iterate over the list - * of compounds found in the project. - */ - virtual ICompoundIterator *compounds() const = 0; - - /*! Returns a compound given its unique \a id. If you have a - * compound id this function is much more efficient than iterating - * over the compound list. Returns 0 if the id is not valid. - */ - virtual ICompound *compoundById(const char * id) const = 0; - - /*! Returns a compound given its name (including the scope). - * Returns 0 if the name is not found in the project. - */ - virtual ICompound *compoundByName(const char * name) const = 0; - - /*! Returns an interface to a compound containing a member given it the - * member's id. Given the ICompound interface one can use the same id - * to obtain the IMember interface. - * @param id The member id. - */ - virtual ICompound *memberById(const char * id) const = 0; - - /*! Returns a list of all compounds containing at least one members - * with a certain name. Each compound can be asked to return the - * list of members with that name. - * @param name The name of the member. - */ - virtual ICompoundIterator *memberByName(const char * name) const = 0; - - /*! Releases the memory for the object hierarchy obtained by - * createdObjecModelFromXML(). First release all iterators before calling - * this function. - */ - virtual void release() = 0; - - /*! Sets the debug level. - * - 0 all debugging messages are disabled (the default). - * - 1 display important messages only - * - 2 display any messages. - */ - virtual void setDebugLevel(int level) = 0; - - /*! Reads an XML directory produced by doxygen and builds up a data - * structure representing the contents of the XML files in the directory. - */ - virtual bool readXMLDir(const char *xmlDirName) = 0; -}; - -/*! Factory method that creates an empty object model for a doxygen generated XML file. - * Use the readXMLDir() method to build the model from an XML output - * directory containing doxygen output. - */ -IDoxygen *createObjectModel(); - -#endif diff --git a/addon/doxmlparser/test/CMakeLists.txt b/addon/doxmlparser/test/CMakeLists.txt new file mode 100644 index 0000000..c38c8a5 --- /dev/null +++ b/addon/doxmlparser/test/CMakeLists.txt @@ -0,0 +1,15 @@ + +include_directories( + ../include + ${CMAKE_SOURCE_DIR}/qtools +) + +add_executable(doxmlparser_test +main.cpp +) + + +target_link_libraries(doxmlparser_test + doxmlparser + qtools +) diff --git a/addon/doxmlparser/test/Makefile.in b/addon/doxmlparser/test/Makefile.in deleted file mode 100644 index 87b1829..0000000 --- a/addon/doxmlparser/test/Makefile.in +++ /dev/null @@ -1,15 +0,0 @@ -all clean depend: Makefile.xmlparse - $(MAKE) -f Makefile.xmlparse $@ - -distclean: clean - $(RM) -rf Makefile.xmlparse xmlparse.pro Makefile obj - -realclean: distclean - -tmake: - $(ENV) $(PERL) $(TMAKE) xmlparse.pro >Makefile.xmlparse - -Makefile.xmlparse: xmlparse.pro - $(ENV) $(PERL) $(TMAKE) xmlparse.pro >Makefile.xmlparse - -install: diff --git a/addon/doxmlparser/test/xmlparse.pro.in b/addon/doxmlparser/test/xmlparse.pro.in deleted file mode 100644 index 368d499..0000000 --- a/addon/doxmlparser/test/xmlparse.pro.in +++ /dev/null @@ -1,20 +0,0 @@ -TEMPLATE = app.t -CONFIG = console warn_on $extraopts -HEADERS = -SOURCES = main.cpp -unix:LIBS += -L../../../lib -ldoxmlparser -lqtools -win32:INCLUDEPATH += . -win32-mingw:LIBS += -L../../../lib -ldoxmlparser -lqtools -win32-msvc:LIBS += doxmlparser.lib qtools.lib shell32.lib -win32-msvc:TMAKE_LFLAGS += /LIBPATH:..\..\..\lib;..\lib -win32-borland:LIBS += doxmlparser.lib qtools.lib shell32.lib -win32-borland:TMAKE_LFLAGS += -L..\..\..\lib -win32:TMAKE_CXXFLAGS += -DQT_NODLL -DESTDIR = ../../../bin -OBJECTS_DIR = ../../../objects/doxmlparser/test -TARGET = xmlparse -INCLUDEPATH += ../../../qtools ../include -DEPENDPATH += ../include -unix:TARGETDEPS = ../../../lib/libdoxmlparser.a -win32:TARGETDEPS = ..\..\..\lib\doxmlparser.lib - -- cgit v0.12