Back to home page

EIC code displayed by LXR

 
 

    


Warning, file /include/root/TBranchProxyClassDescriptor.h was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).

0001 // @(#)root/treeplayer:$Id$
0002 // Author: Philippe Canal 06/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_TBranchProxyClassDescriptor
0013 #define ROOT_TBranchProxyClassDescriptor
0014 
0015 #include "TList.h"
0016 #include "TNamed.h"
0017 
0018 class TTree;
0019 class TVirtualStreamerInfo;
0020 
0021 namespace ROOT {
0022 namespace Internal {
0023 
0024    class TBranchProxyDescriptor;
0025 
0026    class TBranchProxyClassDescriptor : public TNamed {
0027 
0028    public:
0029       enum ELocation { kOut=0, kClones, kSTL, kInsideClones, kInsideSTL }; // for IsClones
0030    private:
0031       TList          fListOfSubProxies;
0032       TList          fListOfBaseProxies;
0033       ELocation      fIsClones;      // 0 for the general case, 1 when this a split clases inside a TClonesArray, 2 when this is a split classes inside an STL container.
0034       TString        fContainerName; // Name of the container if any
0035       bool           fIsLeafList;    // true if the branch was constructed from a leaf list.
0036       UInt_t         fSplitLevel;
0037 
0038       TString        fRawSymbol;
0039       TString        fBranchName;
0040       TString        fSubBranchPrefix;
0041       TVirtualStreamerInfo *fInfo;     // TVirtualStreamerInfo describing this class
0042 
0043       UInt_t  fMaxDatamemberType;
0044 
0045       void NameToSymbol();
0046 
0047       TBranchProxyClassDescriptor(const TBranchProxyClassDescriptor &b) :TNamed(b){}
0048       TBranchProxyClassDescriptor& operator=(const TBranchProxyClassDescriptor&) {return *this;}
0049 
0050    public:
0051 
0052       TBranchProxyClassDescriptor(const char *type, TVirtualStreamerInfo *info, const char *branchname,
0053                                   ELocation isclones, UInt_t splitlevel, const TString &containerName);
0054       TBranchProxyClassDescriptor(const char *branchname);
0055 
0056       TBranchProxyClassDescriptor(const char *type, TVirtualStreamerInfo *info, const char *branchname,
0057                                   const char *branchPrefix, ELocation isclones,
0058                                   UInt_t splitlevel, const TString &containerName);
0059 
0060       const char* GetBranchName() const;
0061       const char* GetSubBranchPrefix() const;
0062 
0063       const char* GetRawSymbol() const;
0064 
0065       TVirtualStreamerInfo *GetInfo() const { return fInfo; }
0066 
0067       UInt_t GetSplitLevel() const;
0068 
0069       virtual bool IsEquivalent(const TBranchProxyClassDescriptor* other);
0070 
0071       void AddDescriptor(TBranchProxyDescriptor *desc, bool isBase);
0072       bool IsLoaded() const;
0073       static bool IsLoaded(const char*);
0074       bool IsClones() const;
0075       bool IsSTL() const;
0076       ELocation GetIsClones() const;
0077       TString GetContainerName() const;
0078 
0079       void OutputDecl(FILE *hf, int offset, UInt_t /* maxVarname */);
0080 
0081       ClassDefOverride(TBranchProxyClassDescriptor,0); // Class to cache the information we gathered about the branch and its content
0082    };
0083 
0084 } // namespace Internal
0085 } // namespace ROOT
0086 
0087 #endif