#ifndef ROOT_TDictionary
#define ROOT_TDictionary
#ifndef ROOT_TNamed
#include "TNamed.h"
#endif
#ifndef ROOT_ESTLType
#include "ESTLType.h"
#endif
class CallFunc_t;
class ClassInfo_t;
class BaseClassInfo_t;
class DataMemberInfo_t;
class FuncTempInfo_t;
class MethodInfo_t;
class MethodArgInfo_t;
class MethodArgInfo_t;
class TypeInfo_t;
class TypedefInfo_t;
class TDictAttributeMap;
enum EProperty {
kIsClass = 0x00000001,
kIsStruct = 0x00000002,
kIsUnion = 0x00000004,
kIsEnum = 0x00000008,
kIsTypedef = 0x00000010,
kIsFundamental = 0x00000020,
kIsAbstract = 0x00000040,
kIsVirtual = 0x00000080,
kIsPureVirtual = 0x00000100,
kIsPublic = 0x00000200,
kIsProtected = 0x00000400,
kIsPrivate = 0x00000800,
kIsPointer = 0x00001000,
kIsArray = 0x00002000,
kIsStatic = 0x00004000,
kIsDefault = 0x00008000,
kIsReference = 0x00010000,
kIsDirectInherit = 0x00020000,
kIsCCompiled = 0x00040000,
kIsCPPCompiled = 0x00080000,
kIsCompiled = 0x000C0000,
kIsConstant = 0x00100000,
kIsVirtualBase = 0x00200000,
kIsConstPointer = 0x00400000,
kIsExplicit = 0x04000000,
kIsNamespace = 0x08000000,
kIsConstMethod = 0x10000000,
kIsUsingVariable = 0x20000000,
kIsDefinedInStd = 0x40000000
};
enum EFunctionProperty {
kIsConstructor = 0x00000001,
kIsConversion = 0x00000002,
kIsDestructor = 0x00000004,
kIsOperator = 0x00000008
};
enum EClassProperty {
kClassIsValid = 0x00000001,
kClassHasExplicitCtor = 0x00000010,
kClassHasImplicitCtor = 0x00000020,
kClassHasCtor = 0x00000030,
kClassHasDefaultCtor = 0x00000040,
kClassHasAssignOpr = 0x00000080,
kClassHasExplicitDtor = 0x00000100,
kClassHasImplicitDtor = 0x00000200,
kClassHasDtor = 0x00000300,
kClassHasVirtual = 0x00001000,
kClassIsAbstract = 0x00002000
};
enum ERefTypeValues {
kParaNormal = 0,
kParaReference = 1,
kParaP2P = 2,
kParaP2P2P = 3,
kParaRef = 100,
kParaRefP2P = 102,
kParaRefP2P2P = 103
};
namespace ROOT {
enum EFunctionMatchMode {
kExactMatch = 0,
kConversionMatch = 1
};
}
class TDictionary : public TNamed {
private:
TDictAttributeMap *fAttributeMap;
ULong64_t fUpdatingTransactionCount;
protected:
Bool_t UpdateInterpreterStateMarker();
public:
TDictionary(): fAttributeMap(0), fUpdatingTransactionCount(0) { }
TDictionary(const char* name): TNamed(name, ""), fAttributeMap(0), fUpdatingTransactionCount(0) { }
TDictionary(const TDictionary& dict);
virtual ~TDictionary();
TDictionary& operator=(const TDictionary& other);
void CreateAttributeMap();
TDictAttributeMap *GetAttributeMap() const
{
return fAttributeMap;
}
virtual Long_t Property() const = 0;
static TDictionary* GetDictionary(const char* name);
static TDictionary* GetDictionary(const type_info &typeinfo);
enum ESTLType {
kNone = ROOT::kNotSTL,
kVector = ROOT::kSTLvector,
kList = ROOT::kSTLlist,
kDeque = ROOT::kSTLdeque,
kMap = ROOT::kSTLmap,
kMultimap = ROOT::kSTLmultimap,
kSet = ROOT::kSTLset,
kMultiset = ROOT::kSTLmultiset,
kBitset = ROOT::kSTLbitset
};
typedef const void *DeclId_t;
ClassDef(TDictionary,2)
};
#endif