Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-01-18 10:12:30

0001 // @(#)root/treeplayer:$Id$
0002 // Author: Philippe Canal 01/06/2004
0003 
0004 /*************************************************************************
0005  * Copyright (C) 1995-2004, Rene Brun and Fons Rademakers and al.        *
0006  * All rights reserved.                                                  *
0007  *                                                                       *
0008  * For the licensing terms see $ROOTSYS/LICENSE.                         *
0009  * For the list of contributors see $ROOTSYS/README/CREDITS.             *
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