00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #ifndef ROOT_TGenericClassInfo
00013 #define ROOT_TGenericClassInfo
00014
00015 #include <vector>
00016
00017 #include "TSchemaHelper.h"
00018
00019
00020
00021
00022
00023
00024 class TVirtualIsAProxy;
00025
00026
00027
00028
00029
00030
00031 namespace ROOT {
00032
00033 class TCollectionProxyInfo;
00034
00035 class TGenericClassInfo {
00036
00037
00038
00039
00040 const TInitBehavior *fAction;
00041 TClass *fClass;
00042 const char *fClassName;
00043 const char *fDeclFileName;
00044 Int_t fDeclFileLine;
00045 VoidFuncPtr_t fDictionary;
00046 const type_info &fInfo;
00047 const char *fImplFileName;
00048 Int_t fImplFileLine;
00049 TVirtualIsAProxy *fIsA;
00050 ShowMembersFunc_t fShowMembers;
00051 Int_t fVersion;
00052 NewFunc_t fNew;
00053 NewArrFunc_t fNewArray;
00054 DelFunc_t fDelete;
00055 DelArrFunc_t fDeleteArray;
00056 DesFunc_t fDestructor;
00057 DirAutoAdd_t fDirAutoAdd;
00058 TClassStreamer *fStreamer;
00059 ClassStreamerFunc_t fStreamerFunc;
00060 TVirtualCollectionProxy *fCollectionProxy;
00061 Int_t fSizeof;
00062 TCollectionProxyInfo *fCollectionProxyInfo;
00063 TCollectionProxyInfo *fCollectionStreamerInfo;
00064 std::vector<ROOT::TSchemaHelper> fReadRules;
00065 std::vector<ROOT::TSchemaHelper> fReadRawRules;
00066
00067 public:
00068 TGenericClassInfo(const char *fullClassname,
00069 const char *declFileName, Int_t declFileLine,
00070 const type_info &info, const TInitBehavior *action,
00071 ShowMembersFunc_t showmembers, VoidFuncPtr_t dictionary,
00072 TVirtualIsAProxy *isa, Int_t pragmabits, Int_t sizof);
00073
00074 TGenericClassInfo(const char *fullClassname, Int_t version,
00075 const char *declFileName, Int_t declFileLine,
00076 const type_info &info, const TInitBehavior *action,
00077 ShowMembersFunc_t showmembers, VoidFuncPtr_t dictionary,
00078 TVirtualIsAProxy *isa, Int_t pragmabits, Int_t sizof);
00079
00080 TGenericClassInfo(const char *fullClassname, Int_t version,
00081 const char *declFileName, Int_t declFileLine,
00082 const type_info &info, const TInitBehavior *action,
00083 VoidFuncPtr_t dictionary,
00084 TVirtualIsAProxy *isa, Int_t pragmabits, Int_t sizof);
00085
00086 TGenericClassInfo(const char *fullClassname, Int_t version,
00087 const char *declFileName, Int_t declFileLine,
00088 const TInitBehavior *action,
00089 VoidFuncPtr_t dictionary, Int_t pragmabits);
00090
00091 void Init(Int_t pragmabits);
00092 ~TGenericClassInfo();
00093
00094 const TInitBehavior &GetAction() const;
00095 TClass *GetClass();
00096 const char *GetClassName() const;
00097 TCollectionProxyInfo *GetCollectionProxyInfo() const;
00098 TCollectionProxyInfo *GetCollectionStreamerInfo() const;
00099 const char *GetDeclFileName() const;
00100 Int_t GetDeclFileLine() const;
00101 DelFunc_t GetDelete() const;
00102 DelArrFunc_t GetDeleteArray() const;
00103 DesFunc_t GetDestructor() const;
00104 DirAutoAdd_t GetDirectoryAutoAdd() const;
00105 const char *GetImplFileName();
00106 Int_t GetImplFileLine();
00107 const type_info &GetInfo() const;
00108 TVirtualIsAProxy *GetIsA() const;
00109 NewFunc_t GetNew() const;
00110 NewArrFunc_t GetNewArray() const;
00111 const std::vector<ROOT::TSchemaHelper> &GetReadRawRules() const;
00112 const std::vector<ROOT::TSchemaHelper> &GetReadRules() const;
00113 ShowMembersFunc_t GetShowMembers() const;
00114 Int_t GetVersion() const;
00115
00116 TClass *IsA(const void *obj);
00117
00118 Short_t AdoptStreamer(TClassStreamer*);
00119 Short_t AdoptCollectionProxy(TVirtualCollectionProxy*);
00120 void AdoptCollectionProxyInfo(TCollectionProxyInfo*);
00121 void AdoptCollectionStreamerInfo(TCollectionProxyInfo*);
00122 Int_t SetDeclFile(const char *file, Int_t line);
00123 void SetDelete(DelFunc_t deleteFunc);
00124 void SetDeleteArray(DelArrFunc_t deleteArrayFunc);
00125 void SetDestructor(DesFunc_t destructorFunc);
00126 void SetDirectoryAutoAdd(DirAutoAdd_t dirAutoAdd);
00127 void SetFromTemplate();
00128 Int_t SetImplFile(const char *file, Int_t line);
00129 void SetNew(NewFunc_t newFunc);
00130 void SetNewArray(NewArrFunc_t newArrayFunc);
00131 void SetReadRawRules( const std::vector<ROOT::TSchemaHelper>& rules );
00132 void SetReadRules( const std::vector<ROOT::TSchemaHelper>& rules );
00133 Short_t SetStreamer(ClassStreamerFunc_t);
00134 void SetStreamerFunc(ClassStreamerFunc_t);
00135 Short_t SetVersion(Short_t version);
00136
00137
00138 private:
00139 void CreateRuleSet( std::vector<ROOT::TSchemaHelper>& vect, Bool_t ProcessReadRules );
00140 TGenericClassInfo(const TGenericClassInfo&);
00141 TGenericClassInfo& operator=(const TGenericClassInfo&);
00142
00143 private:
00144 TGenericClassInfo();
00145
00146 };
00147
00148 }
00149
00150 #endif