⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 entry.h

📁 doxygen(一个自动从源代码生成文档的工具)的源代码
💻 H
字号:
/****************************************************************************** * * $Id: entry.h,v 1.36 2001/03/19 19:27:40 root Exp $ * * Copyright (C) 1997-2001 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. * * Documents produced by Doxygen are derivative works derived from the * input used in their production; they are not affected by this license. * */#ifndef ENTRY_H#define ENTRY_H#include "qtbc.h"#include <qlist.h>enum Protection { Public, Protected, Private } ;enum Specifier { Normal, Virtual, Pure } ;enum MethodTypes { Method, Signal, Slot, DCOP, Property };/*! \brief This class stores information about an inheritance relation */ struct BaseInfo {  /*! Creates an object representing an inheritance relation */  BaseInfo(const char *n,Protection p,Specifier v) : name(n),prot(p),virt(v) {}  QCString   name; //!< the name of the base class  Protection prot; //!< inheritance type  Specifier  virt; //!< virtualness};/*! \brief This class contains the information about the argument of a *         function or template * */struct Argument{  /*! Construct a new argument. */  Argument() {}  /*! Copy an argument (does a deep copy of all strings). */  Argument(const Argument &a)   {     attrib=a.attrib.copy();    type=a.type.copy();     name=a.name.copy();     defval=a.defval.copy();     docs=a.docs.copy();    array=a.array.copy();  }  /*! Assignment of an argument (does a deep copy of all strings). */  Argument &operator=(const Argument &a)  {    if (this!=&a)    {      attrib=a.attrib.copy();      type=a.type.copy();       name=a.name.copy();       defval=a.defval.copy();       docs=a.docs.copy();      array=a.array.copy();    }    return *this;  }  /*! return TRUE if this argument is documentation and the argument has a   *  non empty name.   */  bool hasDocumentation() const   {     return !name.isEmpty() && !docs.isEmpty();   }    QCString attrib;   /*!< Argument's attribute (IDL only) */  QCString type;     /*!< Argument's type */  QCString name;     /*!< Argument's name (may be empty) */  QCString array;    /*!< Argument's array specifier (may be empty) */  QCString defval;   /*!< Argument's default value (may be empty) */  QCString docs;     /*!< Argument's documentation (may be empty) */};/*! \brief This class represents an function or template argument list.  * *  This class also stores some information about member that is typically *  put after the argument list, such as wether the member is const,  *  volatile or pure virtual. */class ArgumentList : public QList<Argument> {  public:    /*! Creates an empty argument list */    ArgumentList() : QList<Argument>(),                      constSpecifier(FALSE),                     volatileSpecifier(FALSE),                     pureSpecifier(FALSE) {}    /*! Destroys the argument list */   ~ArgumentList() {}    bool hasDocumentation() const;    /*! Does the member modify the state of the class? default: FALSE. */    bool constSpecifier;    /*! Is the member volatile? default: FALSE. */    bool volatileSpecifier;    /*! Is this a pure virtual member? default: FALSE */    bool pureSpecifier;};typedef QListIterator<Argument> ArgumentListIterator;/*! \brief This struct is used to capture the tag file information  *         for an Entry.  */struct TagInfo {  QCString tagName;  QCString fileName;  QCString anchor;};struct Grouping {  enum GroupPri_t   {    GROUPING_LOWEST,    GROUPING_AUTO_WEAK =      GROUPING_LOWEST,   //!< membership in group was defined via @weakgroup @{ @}    GROUPING_AUTO_ADD,    //!< membership in group was defined via @add[to]group @{ @}    GROUPING_AUTO_DEF,    //!< membership in group was defined via @defgroup @{ @}    GROUPING_AUTO_HIGHEST =      GROUPING_AUTO_DEF,    GROUPING_INGROUP,      //!< membership in group was defined by @ingroup    GROUPING_HIGHEST =      GROUPING_INGROUP  };  static const char *getGroupPriName( GroupPri_t priority )  {    switch( priority )    {      case GROUPING_AUTO_WEAK:        return "@weakgroup";      case GROUPING_AUTO_ADD:        return "@addtogroup";      case GROUPING_AUTO_DEF:        return "@defgroup";      case GROUPING_INGROUP:        return "@ingroup";    }	        return "???";  }  Grouping( const char *gn, GroupPri_t p ) : groupname(gn), pri(p) {}  Grouping( const Grouping &g ) : groupname(g.groupname), pri(g.pri) {}  QCString groupname;   //!< name of the group  GroupPri_t pri;       //!< priority of this definition};/*! \brief Represents an unstructured piece of information, about an *         entity found in the sources.  * *  parseMain() in scanner.l will generate a tree of these *  entries. */class Entry{  public:    /*! Kind of entries that are supported */    enum Sections {       CLASS_SEC        = 0x00000001,       STRUCT_SEC       = 0x00000002,      UNION_SEC        = 0x00000004,       EXCEPTION_SEC    = 0x00000008,      NAMESPACE_SEC    = 0x00000010,      INTERFACE_SEC    = 0x00000020,      COMPOUND_MASK    = CLASS_SEC | STRUCT_SEC | UNION_SEC |                          INTERFACE_SEC | EXCEPTION_SEC,      SCOPE_MASK       = COMPOUND_MASK | NAMESPACE_SEC,            CLASSDOC_SEC     = 0x00000100,       STRUCTDOC_SEC    = 0x00000200,      UNIONDOC_SEC     = 0x00000400,      EXCEPTIONDOC_SEC = 0x00000800,      NAMESPACEDOC_SEC = 0x00001000,      INTERFACEDOC_SEC = 0x00002000,      COMPOUNDDOC_MASK = CLASSDOC_SEC | STRUCTDOC_SEC | UNIONDOC_SEC |                          INTERFACEDOC_SEC | EXCEPTIONDOC_SEC,      SOURCE_SEC       = 0x00010000,      HEADER_SEC       = 0x00020000,      FILE_MASK        = SOURCE_SEC | HEADER_SEC,      ENUMDOC_SEC      = 0x00100000,      ENUM_SEC         = 0x00200000,      EMPTY_SEC        = 0x00300000,       PAGEDOC_SEC      = 0x00400000,       VARIABLE_SEC     = 0x00500000,      FUNCTION_SEC     = 0x00600000,      TYPEDEF_SEC      = 0x00700000,      MEMBERDOC_SEC    = 0x00800000,       OVERLOADDOC_SEC  = 0x00900000,      EXAMPLE_SEC      = 0x00a00000,       VARIABLEDOC_SEC  = 0x00b00000,      FILEDOC_SEC      = 0x00c00000,      DEFINEDOC_SEC    = 0x00d00000,      INCLUDE_SEC      = 0x00e00000,      DEFINE_SEC       = 0x00f00000,      GROUPDOC_SEC     = 0x01000000,      USINGDIR_SEC     = 0x01100000,      MAINPAGEDOC_SEC  = 0x01200000,      MEMBERGRP_SEC    = 0x01300000,      USINGDECL_SEC    = 0x01400000,      PACKAGE_SEC      = 0x01500000,      PACKAGEDOC_SEC   = 0x01600000    };    enum MemberSpecifier    {      Inline    = 0x1,      Explicit  = 0x2,      Mutable   = 0x4    };    Entry();    Entry(const Entry &);    ~Entry();    int getSize();    /*! Adds entry \e as a child to this entry */    void	addSubEntry (Entry* e) ;    /*! Restore the state of this Entry to the default value it has     *  at construction time.      */    void        reset();    int        section;       //!< entry type (see Sections);    Protection protection;    //!< class protection    MethodTypes mtype;        //!< signal, slot, (dcop) method, or property?    bool stat;                //!< static ?    bool explicitExternal;    //!< explicitly defined as external?    bool proto;               //!< prototype ?    int  memSpec;             //!< member specifiers    int  initLines;           //!< define/variable initializer lines to show     bool subGrouping;         //!< automatically group class members?    Specifier    virt;        //!< virtualness of the entry     Entry       *parent;      //!< parent node in the tree    QCString	 type;        //!< member type     QCString	 name;        //!< member name    QCString     args;        //!< member argument string    QCString     bitfields;   //!< member's bit fields    ArgumentList *argList;    //!< member arguments as a list    QList<ArgumentList> *tArgLists; //!< template argument declarations    //ArgumentList *tArgList;   //!< template argument lists (for each scope)    //ArgumentList *mtArgList;  //!< member template argument list    QCString     scopeSpec;   //!< template specialization of the scope    QCString     memberSpec;  //!< template specialization of the member    QCString	 program;     //!< the program text    QCString     initializer; //!< initial value (for variables)    QCString     includeFile; //!< include file (2 arg of \class, must be unique)    QCString     includeName; //!< include name (3 arg of \class)    QCString     doc;         //!< documentation block (partly parsed)    QCString     relates;     //!< related class (doc block)    QCString     brief;       //!< brief description (doc block)    QCString     inside;      //!< name of the class in which documents are found    QCString     exception;   //!< throw specification    int          bodyLine;    //!< line number of the definition in the source    int          endBodyLine; //!< line number where the definition ends    int          mGrpId;      //!< member group id    QList<Entry>    *sublist; //!< entries that are children of this one    QList<BaseInfo> *extends; //!< list of base classes        QList<Grouping> *groups;  //!< list of groups this entry belongs to    QList<QCString> *anchors; //!< list of anchors defined in this entry    QCString	fileName;     //!< file this entry was extracted from    int		startLine;    //!< start line of entry in the source    int         todoId;       //!< id of the todo list item of this entry    int         testId;       //!< id of the test list item of this entry    int         bugId;        //!< id of the bug list item of this entry    TagInfo    *tagInfo;      //!< tag file info    static int  num;          //!< counts the total number of entries    enum {	GROUPDOC_NORMAL,      //<! @defgroup	GROUPDOC_ADD,         //<! @addgroup	GROUPDOC_WEAK         //<! @weakgroup    } groupdoctype;           //!< kind of group    /// return the command name used to define GROUPDOC_SEC    const char *groupdoccmd() const    {	switch( this->groupdoctype ) {	case GROUPDOC_NORMAL: return "\\defgroup"; break;	case GROUPDOC_ADD: return "\\addgroup"; break;	case GROUPDOC_WEAK: return "\\weakgroup"; break;	default: return "unknown group command";	}    }    Grouping::GroupPri_t groupingpri() const    {	if( this->section != GROUPDOC_SEC ) {	    return Grouping::GROUPING_LOWEST;	}        switch( this->groupdoctype ) {	case GROUPDOC_NORMAL: return Grouping::GROUPING_AUTO_DEF; break;	case GROUPDOC_ADD: return Grouping::GROUPING_AUTO_ADD; break;	case GROUPDOC_WEAK: return Grouping::GROUPING_AUTO_WEAK; break;	default: return Grouping::GROUPING_LOWEST;	}    }  private:    Entry &operator=(const Entry &); } ;typedef QList<Entry> EntryList;typedef QListIterator<Entry> EntryListIterator;#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -