--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/Orb/Doxygen/src/memberdef.h Thu Jan 21 17:29:01 2010 +0000
@@ -0,0 +1,381 @@
+/******************************************************************************
+ *
+ *
+ *
+ * Copyright (C) 1997-2008 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 MEMBERDEF_H
+#define MEMBERDEF_H
+
+#include "qtbc.h"
+#include <qlist.h>
+#include <qdict.h>
+#include <qstack.h>
+
+#include "entry.h"
+#include "definition.h"
+#include "sortdict.h"
+
+class ClassDef;
+class NamespaceDef;
+class GroupDef;
+class FileDef;
+class MemberList;
+class MemberGroup;
+class ExampleSDict;
+class OutputList;
+class GroupDef;
+class QTextStream;
+class ArgumentList;
+class MemberDefImpl;
+
+struct SourceReference
+{
+ FileDef *fd;
+ QCString anchor;
+};
+
+class MemberDef : public Definition
+{
+ public:
+
+ enum MemberType {
+ Define,
+ Function,
+ Variable,
+ Typedef,
+ Enumeration,
+ EnumValue,
+ Signal,
+ Slot,
+ Friend,
+ DCOP,
+ Property,
+ Event
+ };
+
+ MemberDef(const char *defFileName,int defLine,
+ const char *type,const char *name,const char *args,
+ const char *excp,Protection prot,Specifier virt,bool stat,
+ Relationship related,MemberType t,const ArgumentList *tal,
+ const ArgumentList *al);
+ ~MemberDef();
+ DefType definitionType() const { return TypeMember; }
+ // move this member into a different scope
+ void moveTo(Definition *);
+
+ //-----------------------------------------------------------------------------------
+ // ---- getters -----
+ //-----------------------------------------------------------------------------------
+
+ // link id
+ QCString getOutputFileBase() const;
+ QCString getReference() const;
+ QCString anchor() const;
+
+ const char *declaration() const;
+ const char *definition() const;
+ const char *typeString() const;
+ const char *argsString() const;
+ const char *excpString() const;
+ const char *bitfieldString() const;
+ const char *extraTypeChars() const;
+ const QCString &initializer() const;
+ int initializerLines() const;
+ int getMemberSpecifiers() const;
+ MemberList *getSectionList(Definition *d) const;
+
+ // scope query members
+ ClassDef *getClassDef() const;
+ FileDef *getFileDef() const;
+ NamespaceDef* getNamespaceDef() const;
+
+ // grabbing the property read/write accessor names
+ const char *getReadAccessor() const;
+ const char *getWriteAccessor() const;
+
+ // querying the grouping definition
+ GroupDef *getGroupDef() const;
+ Grouping::GroupPri_t getGroupPri() const;
+ const char *getGroupFileName() const;
+ int getGroupStartLine() const;
+ bool getGroupHasDocs() const;
+ QCString qualifiedName() const;
+ QCString objCMethodName(bool localLink,bool showStatic) const;
+
+ // direct kind info
+ Protection protection() const;
+ Specifier virtualness(int count=0) const;
+ MemberType memberType() const;
+ QCString memberTypeName() const;
+
+ // getter methods
+ bool isSignal() const;
+ bool isSlot() const;
+ bool isVariable() const;
+ bool isEnumerate() const;
+ bool isEnumValue() const;
+ bool isTypedef() const;
+ bool isFunction() const;
+ bool isDefine() const;
+ bool isFriend() const;
+ bool isDCOP() const;
+ bool isProperty() const;
+ bool isEvent() const;
+ bool isRelated() const;
+ bool isForeign() const;
+ bool isStatic() const;
+ bool isInline() const;
+ bool isExplicit() const;
+ bool isMutable() const;
+ bool isGettable() const;
+ bool isSettable() const;
+ bool isReadable() const;
+ bool isWritable() const;
+ bool isAddable() const;
+ bool isRemovable() const;
+ bool isRaisable() const;
+ bool isFinal() const;
+ bool isAbstract() const;
+ bool isOverride() const;
+ bool isInitonly() const;
+ bool isOptional() const;
+ bool isRequired() const;
+ bool isNonAtomic() const;
+ bool isCopy() const;
+ bool isAssign() const;
+ bool isRetain() const;
+ bool isNew() const;
+ bool isSealed() const;
+ bool isImplementation() const;
+ bool isExternal() const;
+ bool isTemplateSpecialization() const;
+ bool hasDocumentedParams() const;
+ bool hasDocumentedReturnType() const;
+ bool isObjCMethod() const;
+ bool isObjCProperty() const;
+ bool isConstructor() const;
+ bool isDestructor() const;
+ bool hasOneLineInitializer() const;
+ bool hasMultiLineInitializer() const;
+ bool protectionVisible() const;
+
+ // output info
+ bool isLinkableInProject() const;
+ bool isLinkable() const;
+ bool hasDocumentation() const; // overrides hasDocumentation in definition.h
+ //bool hasUserDocumentation() const; // overrides hasUserDocumentation
+ bool isBriefSectionVisible() const;
+ bool isDetailedSectionVisible(bool inGroup,bool inFile) const;
+ bool isDetailedSectionLinkable() const;
+ bool isFriendClass() const;
+ bool isDocumentedFriendClass() const;
+
+ MemberDef *reimplements() const;
+ LockingPtr<MemberList> reimplementedBy() const;
+
+ //int inbodyLine() const;
+ //QCString inbodyFile() const;
+ //const QCString &inbodyDocumentation() const;
+
+ ClassDef *relatedAlso() const;
+
+ bool hasDocumentedEnumValues() const;
+ MemberDef *getAnonymousEnumType() const;
+ bool isDocsForDefinition() const;
+ MemberDef *getEnumScope() const;
+ LockingPtr<MemberList> enumFieldList() const;
+
+ bool hasExamples();
+ LockingPtr<ExampleSDict> getExamples() const;
+ bool isPrototype() const;
+
+ // argument related members
+ LockingPtr<ArgumentList> argumentList() const;
+ LockingPtr<ArgumentList> declArgumentList() const;
+ LockingPtr<ArgumentList> templateArguments() const;
+ LockingPtr< QList<ArgumentList> > definitionTemplateParameterLists() const;
+
+ // member group related members
+ int getMemberGroupId() const;
+ MemberGroup *getMemberGroup() const;
+
+ bool fromAnonymousScope() const;
+ bool anonymousDeclShown() const;
+
+ // callgraph related members
+ bool hasCallGraph() const;
+ bool hasCallerGraph() const;
+ bool visibleMemberGroup(bool hideNoHeader);
+
+ MemberDef *templateMaster() const;
+ QCString getScopeString() const;
+ ClassDef *getClassDefOfAnonymousType();
+
+ // cached typedef functions
+ bool isTypedefValCached() const;
+ ClassDef *getCachedTypedefVal() const;
+ QCString getCachedTypedefTemplSpec() const;
+ QCString getCachedResolvedTypedef() const;
+
+ MemberDef *memberDefinition() const;
+ MemberDef *memberDeclaration() const;
+ MemberDef *inheritsDocsFrom() const;
+ MemberDef *getGroupAlias() const;
+
+ ClassDef *category() const;
+
+ //-----------------------------------------------------------------------------------
+ // ---- setters -----
+ //-----------------------------------------------------------------------------------
+
+ // set functions
+ void setMemberType(MemberType t);
+ void setDefinition(const char *d);
+ void setFileDef(FileDef *fd);
+ void setAnchor(const char *a);
+ void setProtection(Protection p);
+ void setMemberSpecifiers(int s);
+ void mergeMemberSpecifiers(int s);
+ void setInitializer(const char *i);
+ void setBitfields(const char *s);
+ void setMaxInitLines(int lines);
+ void setMemberClass(ClassDef *cd);
+ void setSectionList(Definition *d,MemberList *sl);
+ void setGroupDef(GroupDef *gd,Grouping::GroupPri_t pri,
+ const QCString &fileName,int startLine,bool hasDocs,
+ MemberDef *member=0);
+ void setExplicitExternal(bool b);
+ void setReadAccessor(const char *r);
+ void setWriteAccessor(const char *w);
+ void setTemplateSpecialization(bool b);
+
+ void makeRelated();
+ void makeForeign();
+ void setHasDocumentedParams(bool b);
+ void setHasDocumentedReturnType(bool b);
+ void setInheritsDocsFrom(MemberDef *md);
+ void setTagInfo(TagInfo *i);
+ void setArgsString(const char *as);
+
+ // relation to other members
+ void setReimplements(MemberDef *md);
+ void insertReimplementedBy(MemberDef *md);
+
+ // in-body documentation
+ //void setInbodyDocumentation(const char *docs,const char *file,int line);
+
+ void setRelatedAlso(ClassDef *cd);
+
+ // enumeration specific members
+ void insertEnumField(MemberDef *md);
+ void setEnumScope(MemberDef *md);
+ void setEnumClassScope(ClassDef *cd);
+ void setDocumentedEnumValues(bool value);
+ void setAnonymousEnumType(MemberDef *md);
+
+ // example related members
+ bool addExample(const char *anchor,const char *name,const char *file);
+
+ // prototype related members
+ void setPrototype(bool p);
+
+ // argument related members
+ void setArgumentList(ArgumentList *al);
+ void setDeclArgumentList(ArgumentList *al);
+ void setDefinitionTemplateParameterLists(QList<ArgumentList> *lists);
+ void setTypeConstraints(ArgumentList *al);
+
+ // namespace related members
+ void setNamespace(NamespaceDef *nd);
+
+ // member group related members
+ void setMemberGroup(MemberGroup *grp);
+ void setMemberGroupId(int id);
+ void makeImplementationDetail();
+
+ // anonymous scope members
+ void setFromAnonymousScope(bool b);
+ void setFromAnonymousMember(MemberDef *m);
+
+ void enableCallGraph(bool e);
+ void enableCallerGraph(bool e);
+
+ void setTemplateMaster(MemberDef *mt);
+ void addListReference(Definition *d);
+ void setDocsForDefinition(bool b);
+ void setGroupAlias(MemberDef *md);
+
+ void cacheTypedefVal(ClassDef *val,const QCString &templSpec,const QCString &resolvedType);
+ void invalidateTypedefValCache();
+
+ void invalidateCachedArgumentTypes();
+
+ // declaration <-> definition relation
+ void setMemberDefinition(MemberDef *md);
+ void setMemberDeclaration(MemberDef *md);
+
+ void setAnonymousUsed();
+ void copyArgumentNames(MemberDef *bmd);
+
+ void setCategory(ClassDef *);
+
+ //-----------------------------------------------------------------------------------
+ // --- actions ----
+ //-----------------------------------------------------------------------------------
+
+ // output generation
+ void writeDeclaration(OutputList &ol,
+ ClassDef *cd,NamespaceDef *nd,FileDef *fd,GroupDef *gd,
+ bool inGroup);
+ void writeDocumentation(MemberList *ml,OutputList &ol,
+ const char *scopeName,Definition *container,
+ bool inGroup,bool showEnumValues=FALSE);
+ void warnIfUndocumented();
+
+ MemberDef *createTemplateInstanceMember(ArgumentList *formalArgs,
+ ArgumentList *actualArgs);
+
+ void writeEnumDeclaration(OutputList &typeDecl,
+ ClassDef *cd,NamespaceDef *nd,FileDef *fd,GroupDef *gd);
+
+ void findSectionsInDocumentation();
+
+ bool visited;
+
+ protected:
+ void flushToDisk() const;
+ void loadFromDisk() const;
+ private:
+ void lock() const;
+ void unlock() const;
+ void saveToDisk() const;
+ void makeResident() const;
+
+ static int s_indentLevel;
+ // disable copying of member defs
+ MemberDef(const MemberDef &);
+ MemberDef &operator=(const MemberDef &);
+
+ void writeLink(OutputList &ol,
+ ClassDef *cd,NamespaceDef *nd,FileDef *fd,GroupDef *gd,
+ bool onlyText=FALSE);
+
+ MemberDefImpl *m_impl;
+ int m_cacheHandle;
+ off_t m_storagePos; // location where the item is stored in file (if impl==0)
+ bool m_flushPending;
+};
+
+#endif