1 // @(#)root/base:$Id$ 2 // Author: Philippe Canal 23/2/02 3 4 /************************************************************************* 5 * Copyright (C) 1995-2002, Rene Brun, Fons Rademakers and al. * 6 * All rights reserved. * 7 * * 8 * For the licensing terms see $ROOTSYS/LICENSE. * 9 * For the list of contributors see $ROOTSYS/README/CREDITS. * 10 *************************************************************************/ 11 12 #ifndef ROOT_TGenericClassInfo 13 #define ROOT_TGenericClassInfo 14 15 #include <vector> 16 //#ifndef ROOT_TSchemaHelper 17 #include "TSchemaHelper.h" 18 //#endif 19 //#ifndef ROOT_Rtypes 20 //#inlcude "Rtypes.h" 21 //#endif 22 23 // Forward declarations 24 class TVirtualIsAProxy; 25 //class TClass; 26 //class TClassStreamer; 27 //class TVirtualCollectionProxy; 28 //class TCollectionProxyInfo; 29 30 31 namespace ROOT { 32 33 class TCollectionProxyInfo; 34 35 class TGenericClassInfo { 36 // This class in not inlined because it is used is non time critical 37 // section (the dictionaries) and inline would lead to too much 38 // repetition of the code (once per class!). 39 40 const TInitBehavior *fAction; 41 TClass *fClass; 42 const char *fClassName; 43 const char *fDeclFileName; 44 Int_t fDeclFileLine; 45 VoidFuncPtr_t fDictionary; 46 const type_info &fInfo; 47 const char *fImplFileName; 48 Int_t fImplFileLine; 49 TVirtualIsAProxy *fIsA; 50 ShowMembersFunc_t fShowMembers; 51 Int_t fVersion; 52 MergeFunc_t fMerge; 53 ResetAfterMergeFunc_t fResetAfterMerge; 54 NewFunc_t fNew; 55 NewArrFunc_t fNewArray; 56 DelFunc_t fDelete; 57 DelArrFunc_t fDeleteArray; 58 DesFunc_t fDestructor; 59 DirAutoAdd_t fDirAutoAdd; 60 TClassStreamer *fStreamer; 61 ClassStreamerFunc_t fStreamerFunc; 62 TVirtualCollectionProxy *fCollectionProxy; 63 Int_t fSizeof; 64 TCollectionProxyInfo *fCollectionProxyInfo; 65 TCollectionProxyInfo *fCollectionStreamerInfo; 66 std::vector<ROOT::TSchemaHelper> fReadRules; 67 std::vector<ROOT::TSchemaHelper> fReadRawRules; 68 69 public: 70 TGenericClassInfo(const char *fullClassname, 71 const char *declFileName, Int_t declFileLine, 72 const type_info &info, const TInitBehavior *action, 73 ShowMembersFunc_t showmembers, VoidFuncPtr_t dictionary, 74 TVirtualIsAProxy *isa, Int_t pragmabits, Int_t sizof); 75 76 TGenericClassInfo(const char *fullClassname, Int_t version, 77 const char *declFileName, Int_t declFileLine, 78 const type_info &info, const TInitBehavior *action, 79 ShowMembersFunc_t showmembers, VoidFuncPtr_t dictionary, 80 TVirtualIsAProxy *isa, Int_t pragmabits, Int_t sizof); 81 82 TGenericClassInfo(const char *fullClassname, Int_t version, 83 const char *declFileName, Int_t declFileLine, 84 const type_info &info, const TInitBehavior *action, 85 VoidFuncPtr_t dictionary, 86 TVirtualIsAProxy *isa, Int_t pragmabits, Int_t sizof); 87 88 TGenericClassInfo(const char *fullClassname, Int_t version, 89 const char *declFileName, Int_t declFileLine, 90 const TInitBehavior *action, 91 VoidFuncPtr_t dictionary, Int_t pragmabits); 92 93 void Init(Int_t pragmabits); 94 ~TGenericClassInfo(); 95 96 const TInitBehavior &GetAction() const; 97 TClass *GetClass(); 98 const char *GetClassName() const; 99 TCollectionProxyInfo *GetCollectionProxyInfo() const; 100 TCollectionProxyInfo *GetCollectionStreamerInfo() const; 101 const char *GetDeclFileName() const; 102 Int_t GetDeclFileLine() const; 103 DelFunc_t GetDelete() const; 104 DelArrFunc_t GetDeleteArray() const; 105 DesFunc_t GetDestructor() const; 106 DirAutoAdd_t GetDirectoryAutoAdd() const; 107 const char *GetImplFileName(); 108 Int_t GetImplFileLine(); 109 const type_info &GetInfo() const; 110 TVirtualIsAProxy *GetIsA() const; 111 NewFunc_t GetNew() const; 112 NewArrFunc_t GetNewArray() const; 113 const std::vector<ROOT::TSchemaHelper> &GetReadRawRules() const; 114 const std::vector<ROOT::TSchemaHelper> &GetReadRules() const; 115 ShowMembersFunc_t GetShowMembers() const; 116 Int_t GetVersion() const; 117 118 TClass *IsA(const void *obj); 119 120 Short_t AdoptStreamer(TClassStreamer*); 121 Short_t AdoptCollectionProxy(TVirtualCollectionProxy*); 122 void AdoptCollectionProxyInfo(TCollectionProxyInfo*); 123 void AdoptCollectionStreamerInfo(TCollectionProxyInfo*); 124 Int_t SetDeclFile(const char *file, Int_t line); 125 void SetDelete(DelFunc_t deleteFunc); 126 void SetDeleteArray(DelArrFunc_t deleteArrayFunc); 127 void SetDestructor(DesFunc_t destructorFunc); 128 void SetDirectoryAutoAdd(DirAutoAdd_t dirAutoAdd); 129 void SetFromTemplate(); 130 Int_t SetImplFile(const char *file, Int_t line); 131 void SetMerge(MergeFunc_t); 132 void SetResetAfterMerge(ResetAfterMergeFunc_t); 133 void SetNew(NewFunc_t newFunc); 134 void SetNewArray(NewArrFunc_t newArrayFunc); 135 void SetReadRawRules( const std::vector<ROOT::TSchemaHelper>& rules ); 136 void SetReadRules( const std::vector<ROOT::TSchemaHelper>& rules ); 137 Short_t SetStreamer(ClassStreamerFunc_t); 138 void SetStreamerFunc(ClassStreamerFunc_t); 139 Short_t SetVersion(Short_t version); 140 141 // protected: 142 private: 143 void CreateRuleSet( std::vector<ROOT::TSchemaHelper>& vect, Bool_t ProcessReadRules ); 144 TGenericClassInfo(const TGenericClassInfo&); // Not implemented 145 TGenericClassInfo& operator=(const TGenericClassInfo&); // Not implemented 146 147 private: 148 TGenericClassInfo(); 149 150 }; 151 152 } 153 154 #endif 155