File indexing completed on 2025-01-18 10:12:30
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012 #ifndef ROOT_TTreeProxyGenerator
0013 #define ROOT_TTreeProxyGenerator
0014
0015 #include "TTreeGeneratorBase.h"
0016
0017 class TBranch;
0018 class TBranchElement;
0019 class TLeaf;
0020 class TStreamerElement;
0021
0022 namespace ROOT {
0023 namespace Internal {
0024 class TFriendProxyDescriptor;
0025 class TBranchProxyDescriptor;
0026 class TBranchProxyClassDescriptor;
0027
0028 class TTreeProxyGenerator : public TTreeGeneratorBase
0029 {
0030 public:
0031 enum EContainer { kNone, kClones, kSTL };
0032 enum EOption { kNoOption, kNoHist };
0033 UInt_t fMaxDatamemberType;
0034 TString fScript;
0035 TString fCutScript;
0036 TString fPrefix;
0037 TString fHeaderFileName;
0038 UInt_t fOptions;
0039 UInt_t fMaxUnrolling;
0040 TList fListOfClasses;
0041 TList fListOfFriends;
0042 TList fListOfPragmas;
0043 TList fListOfTopProxies;
0044 TList *fCurrentListOfTopProxies;
0045 TList fListOfForwards;
0046 TTreeProxyGenerator(TTree* tree, const char *script, const char *fileprefix,
0047 const char *option, UInt_t maxUnrolling);
0048 TTreeProxyGenerator(TTree* tree, const char *script, const char *cutscript,
0049 const char *fileprefix, const char *option, UInt_t maxUnrolling);
0050
0051 TBranchProxyClassDescriptor* AddClass(TBranchProxyClassDescriptor *desc);
0052 void AddDescriptor(TBranchProxyDescriptor *desc);
0053 void AddForward(TClass *cl);
0054 void AddForward(const char *classname);
0055 void AddFriend(TFriendProxyDescriptor *desc);
0056 void AddMissingClassAsEnum(const char *clname, bool isscope);
0057 void AddPragma(const char *pragma_text);
0058 void CheckForMissingClass(const char *clname);
0059
0060 bool NeedToEmulate(TClass *cl, UInt_t level);
0061
0062 void ParseOptions();
0063
0064 UInt_t AnalyzeBranches(UInt_t level, TBranchProxyClassDescriptor *topdesc, TBranchElement *branch, TVirtualStreamerInfo *info = nullptr);
0065 UInt_t AnalyzeBranches(UInt_t level, TBranchProxyClassDescriptor *topdesc, TIter &branches, TVirtualStreamerInfo *info);
0066 UInt_t AnalyzeOldBranch(TBranch *branch, UInt_t level, TBranchProxyClassDescriptor *desc);
0067 UInt_t AnalyzeOldLeaf(TLeaf *leaf, UInt_t level, TBranchProxyClassDescriptor *topdesc);
0068 void AnalyzeElement(TBranch *branch, TStreamerElement *element, UInt_t level, TBranchProxyClassDescriptor *desc, const char* path);
0069 void AnalyzeTree(TTree *tree);
0070 void WriteProxy();
0071
0072 const char *GetFileName() { return fHeaderFileName; }
0073 };
0074
0075 }
0076 }
0077
0078 #endif