File indexing completed on 2025-01-18 10:11:50
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012 #ifndef ROOT_Rtypes
0013
0014
0015 #include "Rtypes.h"
0016 #endif
0017
0018 #ifndef ROOT_TGenericClassInfo
0019 #define ROOT_TGenericClassInfo
0020
0021 #include "TSchemaHelper.h"
0022 #include <vector>
0023 #include <string>
0024
0025
0026 class TVirtualIsAProxy;
0027
0028
0029 namespace ROOT {
0030
0031 namespace Internal {
0032
0033 std::string GetDemangledTypeName(const std::type_info&);
0034 }
0035
0036 namespace Detail {
0037 class TCollectionProxyInfo;
0038 }
0039
0040 class TGenericClassInfo {
0041
0042
0043
0044
0045 const Internal::TInitBehavior *fAction;
0046 TClass *fClass;
0047 const char *fClassName;
0048 const char *fDeclFileName;
0049 Int_t fDeclFileLine;
0050 DictFuncPtr_t fDictionary;
0051 const std::type_info &fInfo;
0052 const char *fImplFileName;
0053 Int_t fImplFileLine;
0054 TVirtualIsAProxy *fIsA;
0055 Int_t fVersion;
0056 MergeFunc_t fMerge;
0057 ResetAfterMergeFunc_t fResetAfterMerge;
0058 NewFunc_t fNew;
0059 NewArrFunc_t fNewArray;
0060 DelFunc_t fDelete;
0061 DelArrFunc_t fDeleteArray;
0062 DesFunc_t fDestructor;
0063 DirAutoAdd_t fDirAutoAdd;
0064 TClassStreamer *fStreamer;
0065 ClassStreamerFunc_t fStreamerFunc;
0066 ClassConvStreamerFunc_t fConvStreamerFunc;
0067 TVirtualCollectionProxy *fCollectionProxy;
0068 Int_t fSizeof;
0069 Int_t fPragmaBits;
0070 Detail::TCollectionProxyInfo *fCollectionProxyInfo;
0071 Detail::TCollectionProxyInfo *fCollectionStreamerInfo;
0072 std::vector<ROOT::Internal::TSchemaHelper> fReadRules;
0073 std::vector<ROOT::Internal::TSchemaHelper> fReadRawRules;
0074 std::vector<ROOT::TClassAlt*> fAlternate;
0075
0076 public:
0077 TGenericClassInfo(const char *fullClassname,
0078 const char *declFileName, Int_t declFileLine,
0079 const std::type_info &info, const Internal::TInitBehavior *action,
0080 DictFuncPtr_t dictionary,
0081 TVirtualIsAProxy *isa, Int_t pragmabits, Int_t sizof);
0082
0083 TGenericClassInfo(const char *fullClassname, Int_t version,
0084 const char *declFileName, Int_t declFileLine,
0085 const std::type_info &info, const Internal::TInitBehavior *action,
0086 DictFuncPtr_t dictionary,
0087 TVirtualIsAProxy *isa, Int_t pragmabits, Int_t sizof);
0088
0089 TGenericClassInfo(const char *fullClassname, Int_t version,
0090 const char *declFileName, Int_t declFileLine,
0091 const Internal::TInitBehavior *action,
0092 DictFuncPtr_t dictionary, Int_t pragmabits);
0093
0094 void Init(Int_t pragmabits);
0095 ~TGenericClassInfo();
0096
0097 const Internal::TInitBehavior &GetAction() const;
0098 TClass *GetClass();
0099 const char *GetClassName() const;
0100 Detail::TCollectionProxyInfo *GetCollectionProxyInfo() const;
0101 Detail::TCollectionProxyInfo *GetCollectionStreamerInfo() const;
0102 const char *GetDeclFileName() const;
0103 Int_t GetDeclFileLine() const;
0104 DelFunc_t GetDelete() const;
0105 DelArrFunc_t GetDeleteArray() const;
0106 DesFunc_t GetDestructor() const;
0107 DirAutoAdd_t GetDirectoryAutoAdd() const;
0108 const char *GetImplFileName();
0109 Int_t GetImplFileLine();
0110 const std::type_info &GetInfo() const;
0111 TVirtualIsAProxy *GetIsA() const;
0112 NewFunc_t GetNew() const;
0113 NewArrFunc_t GetNewArray() const;
0114 const std::vector<ROOT::Internal::TSchemaHelper> &GetReadRawRules() const;
0115 const std::vector<ROOT::Internal::TSchemaHelper> &GetReadRules() const;
0116 Int_t GetVersion() const;
0117
0118 TClass *IsA(const void *obj);
0119
0120 void AdoptAlternate(ROOT::TClassAlt *alt);
0121 Short_t AdoptStreamer(TClassStreamer*);
0122 Short_t AdoptCollectionProxy(TVirtualCollectionProxy*);
0123 void AdoptCollectionProxyInfo(Detail::TCollectionProxyInfo*);
0124 void AdoptCollectionStreamerInfo(Detail::TCollectionProxyInfo*);
0125 Int_t SetDeclFile(const char *file, Int_t line);
0126 void SetDelete(DelFunc_t deleteFunc);
0127 void SetDeleteArray(DelArrFunc_t deleteArrayFunc);
0128 void SetDestructor(DesFunc_t destructorFunc);
0129 void SetDirectoryAutoAdd(DirAutoAdd_t dirAutoAdd);
0130 void SetFromTemplate();
0131 Int_t SetImplFile(const char *file, Int_t line);
0132 void SetMerge(MergeFunc_t);
0133 void SetResetAfterMerge(ResetAfterMergeFunc_t);
0134 void SetNew(NewFunc_t newFunc);
0135 void SetNewArray(NewArrFunc_t newArrayFunc);
0136 void SetReadRawRules( const std::vector<ROOT::Internal::TSchemaHelper>& rules );
0137 void SetReadRules( const std::vector<ROOT::Internal::TSchemaHelper>& rules );
0138 Short_t SetStreamer(ClassStreamerFunc_t);
0139 void SetStreamerFunc(ClassStreamerFunc_t);
0140 void SetConvStreamerFunc(ClassConvStreamerFunc_t);
0141 Short_t SetVersion(Short_t version);
0142
0143
0144 private:
0145 void CreateRuleSet( std::vector<ROOT::Internal::TSchemaHelper>& vect, Bool_t ProcessReadRules );
0146 TGenericClassInfo(const TGenericClassInfo &) = delete;
0147 TGenericClassInfo& operator=(const TGenericClassInfo &) = delete;
0148
0149 private:
0150 TGenericClassInfo();
0151
0152 };
0153
0154 }
0155
0156 #endif