TGenericClassInfo.h

Go to the documentation of this file.
00001 // @(#)root/base:$Id: TGenericClassInfo.h 36954 2010-11-25 19:19:46Z pcanal $
00002 // Author: Philippe Canal   23/2/02
00003 
00004 /*************************************************************************
00005  * Copyright (C) 1995-2002, Rene Brun, Fons Rademakers and al.           *
00006  * All rights reserved.                                                  *
00007  *                                                                       *
00008  * For the licensing terms see $ROOTSYS/LICENSE.                         *
00009  * For the list of contributors see $ROOTSYS/README/CREDITS.             *
00010  *************************************************************************/
00011 
00012 #ifndef ROOT_TGenericClassInfo
00013 #define ROOT_TGenericClassInfo
00014 
00015 #include <vector>
00016 //#ifndef ROOT_TSchemaHelper
00017 #include "TSchemaHelper.h"
00018 //#endif
00019 //#ifndef ROOT_Rtypes
00020 //#inlcude "Rtypes.h"
00021 //#endif
00022 
00023 // Forward declarations
00024 class TVirtualIsAProxy;
00025 //class TClass;
00026 //class TClassStreamer;
00027 //class TVirtualCollectionProxy;
00028 //class TCollectionProxyInfo;
00029 
00030 
00031 namespace ROOT {
00032 
00033    class TCollectionProxyInfo;
00034 
00035    class TGenericClassInfo {
00036       // This class in not inlined because it is used is non time critical
00037       // section (the dictionaries) and inline would lead to too much
00038       // repetition of the code (once per class!).
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       //   protected:
00138    private:
00139       void CreateRuleSet( std::vector<ROOT::TSchemaHelper>& vect, Bool_t ProcessReadRules );
00140       TGenericClassInfo(const TGenericClassInfo&); // Not implemented
00141       TGenericClassInfo& operator=(const TGenericClassInfo&); // Not implemented
00142 
00143    private:
00144       TGenericClassInfo();
00145 
00146    };
00147 
00148 }
00149 
00150 #endif

Generated on Tue Jul 5 14:11:40 2011 for ROOT_528-00b_version by  doxygen 1.5.1