/usr/include/root/TVirtualStreamerInfo.h is in libroot-core-dev 5.34.00-2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 | // @(#)root/meta:$Id: TVirtualStreamerInfo.h 41102 2011-10-03 21:42:02Z pcanal $
// Author: Rene Brun 05/02/2007
/*************************************************************************
* Copyright (C) 1995-2007, Rene Brun and Fons Rademakers. *
* All rights reserved. *
* *
* For the licensing terms see $ROOTSYS/LICENSE. *
* For the list of contributors see $ROOTSYS/README/CREDITS. *
*************************************************************************/
#ifndef ROOT_TVirtualStreamerInfo
#define ROOT_TVirtualStreamerInfo
//////////////////////////////////////////////////////////////////////////
// //
// TVirtualStreamerInfo Abstract Interface class //
// //
// Abstract Interface describing Streamer information for one class. //
// //
//////////////////////////////////////////////////////////////////////////
#ifndef ROOT_TNamed
#include "TNamed.h"
#endif
class TFile;
class TClass;
class TObjArray;
class TStreamerElement;
class TStreamerBasicType;
class TVirtualCollectionProxy;
class TClassStreamer;
namespace ROOT { class TCollectionProxyInfo; }
class TVirtualStreamerInfo : public TNamed {
protected:
Bool_t fOptimized; //! true if the Streamer has been optimized
Bool_t fIsBuilt; //! true if the StreamerInfo has been 'built'
protected:
static Bool_t fgCanDelete; //True if ReadBuffer can delete object
static Bool_t fgOptimize; //True if optimization on
static Bool_t fgStreamMemberWise; //True if the collections are to be stream "member-wise" (when possible).
static TVirtualStreamerInfo *fgInfoFactory;
TVirtualStreamerInfo(const TVirtualStreamerInfo& info);
TVirtualStreamerInfo& operator=(const TVirtualStreamerInfo&);
public:
//status bits
enum { kCannotOptimize = BIT(12),
kIgnoreTObjectStreamer = BIT(13), // eventhough BIT(13) is taken up by TObject (to preserverse forward compatibility)
kRecovered = BIT(14),
kNeedCheck = BIT(15),
kIsCompiled = BIT(16)
};
enum EReadWrite {
kBase = 0, kOffsetL = 20, kOffsetP = 40, kCounter = 6, kCharStar = 7,
kChar = 1, kShort = 2, kInt = 3, kLong = 4, kFloat = 5,
kDouble = 8, kDouble32= 9,
kUChar = 11, kUShort = 12, kUInt = 13, kULong = 14, kBits = 15,
kLong64 = 16, kULong64 = 17, kBool = 18, kFloat16 = 19,
kObject = 61, kAny = 62, kObjectp = 63, kObjectP = 64, kTString = 65,
kTObject = 66, kTNamed = 67, kAnyp = 68, kAnyP = 69, kAnyPnoVT = 70,
kSTLp = 71,
kSkip = 100, kSkipL = 120, kSkipP = 140,
kConv = 200, kConvL = 220, kConvP = 240,
kSTL = 300, kSTLstring = 365,
kStreamer = 500, kStreamLoop = 501,
kCache = 600, // Cache the value in memory than is not part of the object but is accessible via a SchemaRule
kArtificial = 1000,
kCacheNew = 1001,
kCacheDelete = 1002,
kMissing = 99999
};
// Some comments about EReadWrite
// kBase : base class element
// kOffsetL : fixed size array
// kOffsetP : pointer to object
// kCounter : counter for array size
// kCharStar: pointer to array of char
// kBits : TObject::fBits in case of a referenced object
// kObject : Class derived from TObject
// kObjectp : Class* derived from TObject and with comment field //->Class
// kObjectP : Class* derived from TObject and with NO comment field //->Class
// kAny : Class not derived from TObject
// kAnyp : Class* not derived from TObject with comment field //->Class
// kAnyP : Class* not derived from TObject with NO comment field //->Class
// kAnyPnoVT: Class* not derived from TObject with NO comment field //->Class and Class has NO virtual table
// kSTLp : Pointer to STL container.
// kTString : TString, special case
// kTObject : TObject, special case
// kTNamed : TNamed , special case
TVirtualStreamerInfo();
TVirtualStreamerInfo(TClass * /*cl*/);
virtual ~TVirtualStreamerInfo();
virtual void Build() = 0;
virtual void BuildCheck() = 0;
virtual void BuildEmulated(TFile *file) = 0;
virtual void BuildOld() = 0;
virtual Bool_t BuildFor( const TClass *cl ) = 0;
virtual void CallShowMembers(void* obj, TMemberInspector &insp) const = 0;
virtual void Clear(Option_t *) = 0;
virtual Bool_t CompareContent(TClass *cl,TVirtualStreamerInfo *info, Bool_t warn, Bool_t complete) = 0;
virtual void Compile() = 0;
virtual void ForceWriteInfo(TFile *file, Bool_t force=kFALSE) = 0;
virtual Int_t GenerateHeaderFile(const char *dirname, const TList *subClasses = 0, const TList *extrainfos = 0) = 0;
virtual TClass *GetActualClass(const void *obj) const = 0;
virtual TClass *GetClass() const = 0;
virtual UInt_t GetCheckSum() const = 0;
virtual Int_t GetClassVersion() const = 0;
virtual ULong_t *GetElems() const = 0;
virtual TObjArray *GetElements() const = 0;
virtual Int_t GetOffset(const char *) const = 0;
virtual Int_t *GetOffsets() const = 0;
virtual Version_t GetOldVersion() const = 0;
virtual Int_t GetOnFileClassVersion() const = 0;
virtual Int_t GetNumber() const = 0;
virtual Int_t GetSize() const = 0;
virtual TStreamerElement *GetStreamerElement(const char*datamember, Int_t& offset) const = 0;
Bool_t IsBuilt() const { return fIsBuilt; }
Bool_t IsCompiled() const { return TestBit(kIsCompiled); }
Bool_t IsOptimized() const { return fOptimized; }
Int_t IsRecovered() const { return TestBit(kRecovered); }
virtual void ls(Option_t *option="") const = 0;
virtual TVirtualStreamerInfo *NewInfo(TClass *cl) = 0;
virtual void *New(void *obj = 0) = 0;
virtual void *NewArray(Long_t nElements, void* ary = 0) = 0;
virtual void Destructor(void* p, Bool_t dtorOnly = kFALSE) = 0;
virtual void DeleteArray(void* p, Bool_t dtorOnly = kFALSE) = 0;
virtual void SetCheckSum(UInt_t checksum) = 0;
virtual void SetClass(TClass *cl) = 0;
virtual void SetClassVersion(Int_t vers) = 0;
static Bool_t SetStreamMemberWise(Bool_t enable = kTRUE);
virtual void TagFile(TFile *fFile) = 0;
virtual void Update(const TClass *oldClass, TClass *newClass) = 0;
static TStreamerBasicType *GetElementCounter(const char *countName, TClass *cl);
static Bool_t CanOptimize();
static Bool_t GetStreamMemberWise();
static void Optimize(Bool_t opt=kTRUE);
static Bool_t CanDelete();
static void SetCanDelete(Bool_t opt=kTRUE);
static void SetFactory(TVirtualStreamerInfo *factory);
virtual TVirtualCollectionProxy *GenEmulatedProxy(const char* class_name, Bool_t silent) = 0;
virtual TClassStreamer *GenEmulatedClassStreamer(const char* class_name, Bool_t silent) = 0;
virtual TVirtualCollectionProxy *GenExplicitProxy( const ::ROOT::TCollectionProxyInfo &info, TClass *cl ) = 0;
virtual TClassStreamer *GenExplicitClassStreamer( const ::ROOT::TCollectionProxyInfo &info, TClass *cl ) = 0;
static TVirtualStreamerInfo *Factory();
//WARNING this class version must be the same as TStreamerInfo
ClassDef(TVirtualStreamerInfo,6) //Abstract Interface describing Streamer information for one class
};
#endif
|