Blame src/memberlist.h

Packit 1c1d7e
/******************************************************************************
Packit 1c1d7e
 *
Packit 1c1d7e
 * 
Packit 1c1d7e
 *
Packit 1c1d7e
 * Copyright (C) 1997-2015 by Dimitri van Heesch.
Packit 1c1d7e
 *
Packit 1c1d7e
 * Permission to use, copy, modify, and distribute this software and its
Packit 1c1d7e
 * documentation under the terms of the GNU General Public License is hereby 
Packit 1c1d7e
 * granted. No representations are made about the suitability of this software 
Packit 1c1d7e
 * for any purpose. It is provided "as is" without express or implied warranty.
Packit 1c1d7e
 * See the GNU General Public License for more details.
Packit 1c1d7e
 *
Packit 1c1d7e
 * Documents produced by Doxygen are derivative works derived from the
Packit 1c1d7e
 * input used in their production; they are not affected by this license.
Packit 1c1d7e
 *
Packit 1c1d7e
 */
Packit 1c1d7e
Packit 1c1d7e
#ifndef MEMBERLIST_H
Packit 1c1d7e
#define MEMBERLIST_H
Packit 1c1d7e
Packit 1c1d7e
#include <qlist.h>
Packit 1c1d7e
#include "memberdef.h"
Packit 1c1d7e
#include "sortdict.h"
Packit 1c1d7e
#include "types.h"
Packit 1c1d7e
Packit 1c1d7e
class GroupDef;
Packit 1c1d7e
class MemberGroup;
Packit 1c1d7e
class MemberGroupList;
Packit 1c1d7e
class StorageIntf;
Packit 1c1d7e
Packit 1c1d7e
/** A list of MemberDef objects. */
Packit 1c1d7e
class MemberList : private QList<MemberDef>
Packit 1c1d7e
{
Packit 1c1d7e
    friend class MemberListIterator;
Packit 1c1d7e
  public:
Packit 1c1d7e
    MemberList();
Packit 1c1d7e
    MemberList(MemberListType lt);
Packit 1c1d7e
   ~MemberList();
Packit 1c1d7e
    MemberListType listType() const { return m_listType; }
Packit 1c1d7e
    static QCString listTypeAsString(MemberListType type);
Packit 1c1d7e
Packit 1c1d7e
    /* ---- standard QList methods ---- */
Packit 1c1d7e
    void inSort(const MemberDef *md);
Packit 1c1d7e
    void append(const MemberDef *md);
Packit 1c1d7e
    void remove(const MemberDef *md);
Packit 1c1d7e
    void sort();
Packit 1c1d7e
    uint count() const;
Packit 1c1d7e
    int findRef(const MemberDef *md) const;
Packit 1c1d7e
    MemberDef *getFirst() const;
Packit 1c1d7e
    MemberDef *take(uint index);
Packit 1c1d7e
Packit 1c1d7e
Packit 1c1d7e
    int varCount() const       { ASSERT(m_numDecMembers!=-1); return m_varCnt;     }
Packit 1c1d7e
    int funcCount() const      { ASSERT(m_numDecMembers!=-1); return m_funcCnt;    }
Packit 1c1d7e
    int enumCount() const      { ASSERT(m_numDecMembers!=-1); return m_enumCnt;    }
Packit 1c1d7e
    int enumValueCount() const { ASSERT(m_numDecMembers!=-1); return m_enumValCnt; }
Packit 1c1d7e
    int typedefCount() const   { ASSERT(m_numDecMembers!=-1); return m_typeCnt;    }
Packit 1c1d7e
    int protoCount() const     { ASSERT(m_numDecMembers!=-1); return m_protoCnt;   }
Packit 1c1d7e
    int defineCount() const    { ASSERT(m_numDecMembers!=-1); return m_defCnt;     }
Packit 1c1d7e
    int friendCount() const    { ASSERT(m_numDecMembers!=-1); return m_friendCnt;  }
Packit 1c1d7e
    int numDecMembers() const  { ASSERT(m_numDecMembers!=-1); return m_numDecMembers; }
Packit 1c1d7e
    int numDocMembers() const  { ASSERT(m_numDocMembers!=-1); return m_numDocMembers; }
Packit 1c1d7e
    bool needsSorting() const  { return m_needsSorting; }
Packit 1c1d7e
    void countDecMembers(bool countEnumValues=FALSE,GroupDef *gd=0);
Packit 1c1d7e
    void countDocMembers(bool countEnumValues=FALSE);
Packit 1c1d7e
    int countInheritableMembers(ClassDef *inheritedFrom) const;
Packit 1c1d7e
    void writePlainDeclarations(OutputList &ol,
Packit 1c1d7e
               ClassDef *cd,NamespaceDef *nd,FileDef *fd, GroupDef *gd,
Packit 1c1d7e
               ClassDef *inheritedFrom,const char *inheritId);
Packit 1c1d7e
    void writeDeclarations(OutputList &ol,
Packit 1c1d7e
               ClassDef *cd,NamespaceDef *nd,FileDef *fd,GroupDef *gd,
Packit 1c1d7e
               const char *title,const char *subtitle,
Packit 1c1d7e
               bool showEnumValues=FALSE,bool showInline=FALSE,
Packit 1c1d7e
               ClassDef *inheritedFrom=0,MemberListType lt=MemberListType_pubMethods);
Packit 1c1d7e
    void writeDocumentation(OutputList &ol,const char *scopeName,
Packit 1c1d7e
               Definition *container,const char *title,bool showEnumValues=FALSE,bool showInline=FALSE);
Packit 1c1d7e
    void writeSimpleDocumentation(OutputList &ol,Definition *container);
Packit 1c1d7e
    void writeDocumentationPage(OutputList &ol,
Packit 1c1d7e
               const char *scopeName, Definition *container);
Packit 1c1d7e
    void writeTagFile(FTextStream &);
Packit 1c1d7e
    bool declVisible() const;
Packit 1c1d7e
    void addMemberGroup(MemberGroup *mg);
Packit 1c1d7e
    void setInGroup(bool inGroup) { m_inGroup=inGroup; }
Packit 1c1d7e
    void setInFile(bool inFile) { m_inFile=inFile; }
Packit 1c1d7e
    void addListReferences(Definition *def);
Packit 1c1d7e
    void findSectionsInDocumentation();
Packit 1c1d7e
    void setNeedsSorting(bool b);
Packit 1c1d7e
    MemberGroupList *getMemberGroupList() const { return memberGroupList; }
Packit 1c1d7e
Packit 1c1d7e
    void marshal(StorageIntf *s);
Packit 1c1d7e
    void unmarshal(StorageIntf *s);
Packit 1c1d7e
Packit 1c1d7e
  private:
Packit 1c1d7e
    int compareValues(const MemberDef *item1,const MemberDef *item2) const;
Packit 1c1d7e
    int countEnumValues(MemberDef *md,bool setAnonEnumType) const;
Packit 1c1d7e
    int m_varCnt;
Packit 1c1d7e
    int m_funcCnt;
Packit 1c1d7e
    int m_enumCnt;
Packit 1c1d7e
    int m_enumValCnt;
Packit 1c1d7e
    int m_typeCnt;
Packit 1c1d7e
    int m_protoCnt;
Packit 1c1d7e
    int m_defCnt;
Packit 1c1d7e
    int m_friendCnt; 
Packit 1c1d7e
    int m_numDecMembers; // number of members in the brief part of the memberlist
Packit 1c1d7e
    int m_numDocMembers; // number of members in the detailed part of the memberlist
Packit 1c1d7e
    MemberGroupList *memberGroupList;
Packit 1c1d7e
    bool m_inGroup; // is this list part of a group definition
Packit 1c1d7e
    bool m_inFile;  // is this list part of a file definition
Packit 1c1d7e
    MemberListType m_listType;
Packit 1c1d7e
    bool m_needsSorting;
Packit 1c1d7e
    QDict<int> m_overloadCount;
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
/** An iterator for MemberDef objects in a MemberList. */
Packit 1c1d7e
class MemberListIterator : public QListIterator<MemberDef>
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
    MemberListIterator(const MemberList &list);
Packit 1c1d7e
    virtual ~MemberListIterator() {}
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
/** An unsorted dictionary of MemberDef objects. */
Packit 1c1d7e
class MemberDict : public QDict<MemberDef>
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
    MemberDict(int size) : QDict<MemberDef>(size) {}
Packit 1c1d7e
    virtual ~MemberDict() {}
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
/** A sorted dictionary of MemberDef objects. */
Packit 1c1d7e
class MemberSDict : public SDict<MemberDef>
Packit 1c1d7e
{
Packit 1c1d7e
  public:
Packit 1c1d7e
    MemberSDict(int size=17) : SDict<MemberDef>(size) {}
Packit 1c1d7e
    virtual ~MemberSDict() {}
Packit 1c1d7e
  private:
Packit 1c1d7e
    int compareValues(const MemberDef *item1,const MemberDef *item2) const;
Packit 1c1d7e
};
Packit 1c1d7e
Packit 1c1d7e
Packit 1c1d7e
#endif