27#define MESSAGE(which,text)
62 Fatal(
"TGenVectorProxy",
"At> Logic error - no proxy object set.");
72 proxy->
Clear(
"force");
111 Fatal(
"TGenVectorProxy",
"At> Logic error - no proxy object set.");
118 if ( force && ptr ) {
163 typedef ROOT::TCollectionProxyInfo::Environ<std::pair<size_t,Bool_t> > EnvType_t;
164 EnvType_t *
e = (EnvType_t*)
fEnv;
165 return &(
e->fIterator.second);
167 Fatal(
"TGenVectorProxy",
"At> Logic error - no proxy object set.");
174 if ( force && ptr ) {
217 Fatal(
"TGenListProxy",
"At> Logic error - no proxy object set.");
262 Fatal(
"TGenSetProxy",
"At> Logic error - no proxy object set.");
294 proxy->
Clear(
"force");
300 proxy->
Clear(
"force");
318 std::string inside = (inside_type.find(
"const ")==0) ? inside_type.substr(6) : inside_type;
324 fSize = std::string::npos;
330 bool isPointer =
false;
333 if (intype.back() ==
'*') {
336 if (intype.back() ==
'*') {
339 Warning(
"TGenCollectionProxy::Value::Value",
"I/O not supported for collection of pointer to pointer: %s", inside_type.c_str());
340 fSize =
sizeof(
void*);
346 if ( intype.substr(0,6) ==
"string" || intype.substr(0,11) ==
"std::string" ) {
354 fSize =
sizeof(
void*);
356 fSize =
sizeof(std::string);
371 fSize =
sizeof(
void*);
386 assert(typeTable &&
"The type of the list of type has changed");
388 TDataType *fundType = (
TDataType *)typeTable->THashTable::FindObject( intype.c_str() );
389 if (fundType && fundType->
GetType() < 0x17 && fundType->
GetType() > 0) {
396 fSize =
sizeof(
void*);
407 fSize =
sizeof(
void*);
426 fSize =
sizeof(
void*);
448 fSize =
sizeof(
void*);
457 fSize = std::string::npos;
459 Error(
"TGenCollectionProxy",
"Could not retrieve the TClass for %s", intype.c_str());
469 if (intype !=
"long double" && !silent) {
470 Error(
"TGenCollectionProxy",
"Unknown fundamental type %s",intype.c_str());
499 if (
fSize == std::string::npos ) {
515 return fSize != std::string::npos;
527 fType->Destructor(ptr);
530 ::operator
delete(ptr);
618 if ( iter_size >
sizeof(
e.fIterator) ) {
619 Fatal(
"TGenCollectionProxy",
620 "%s %s are too large:%ld bytes. Maximum is:%ld bytes",
621 "Iterators for collection",
641 fTypeinfo(info.fInfo), fOnFileClass(0)
670 Fatal(
"TGenCollectionProxy",
671 "%s %s are too large:%ld bytes. Maximum is:%ld bytes",
672 "Iterators for collection",
689 void clearVector(
vec&
v)
693 for(
typename vec::iterator i=
v.begin(); i !=
v.end(); ++i) {
694 typename vec::value_type
e = *i;
717 std::map<std::string, TObjArray*>::iterator it;
743 if ((*fValue).fKind ==
kBool_t) {
774 return p->InitializeEx(silent);
796 Fatal(
"TGenCollectionProxy",
"No 'size' function pointer for class %s present.",
fName.c_str());
799 Fatal(
"TGenCollectionProxy",
"No 'resize' function for class %s present.",
fName.c_str());
802 Fatal(
"TGenCollectionProxy",
"No 'next' function for class %s present.",
fName.c_str());
805 Fatal(
"TGenCollectionProxy",
"No 'begin' function for class %s present.",
fName.c_str());
808 Fatal(
"TGenCollectionProxy",
"No 'clear' function for class %s present.",
fName.c_str());
811 Fatal(
"TGenCollectionProxy",
"No 'block constructor' function for class %s present.",
fName.c_str());
814 Fatal(
"TGenCollectionProxy",
"No 'block destructor' function for class %s present.",
fName.c_str());
817 Fatal(
"TGenCollectionProxy",
"No 'data feed' function for class %s present.",
fName.c_str());
820 Fatal(
"TGenCollectionProxy",
"No 'data collect' function for class %s present.",
fName.c_str());
823 Fatal(
"TGenCollectionProxy",
"No 'environment creation' function for class %s present.",
fName.c_str());
831 size_t hint_pair_offset = 0,
size_t hint_pair_size = 0)
835 Fatal(
"TGenCollectionProxy",
"Could not find %s!",
name.c_str());
846 if (
fValue.load())
return this;
854 std::vector<std::string> inside;
858 Value* newfValue =
nullptr;
859 if ( inside[0].find(
"stdext::hash_") != std::string::npos )
860 inside[0].replace(3,10,
"::");
861 if ( inside[0].find(
"__gnu_cxx::hash_") != std::string::npos )
862 inside[0].replace(0,16,
"std::");
875 if (num > 3 && !inside[3].empty()) {
883 int slong =
sizeof(
void*);
889 nam =
"pair<"+inside[1]+
","+inside[2];
890 nam += (nam[nam.length()-1]==
'>') ?
" >" :
">";
898 if (paircl ==
nullptr) {
902 Fatal(
"InitializeEx",
903 "Could not load nor generate the dictionary for \"%s\", some element might be missing their dictionary (eg. enums)",
909 Fatal(
"InitializeEx",
910 "The %s for %s reports a class size that is inconsistent with the one registered "
911 "through the CollectionProxy for %s: %d vs %d\n",
912 paircl->
IsLoaded() ?
"dictionary" :
"interpreter information for", nam.c_str(),
915 gROOT->GetListOfClasses()->Remove(paircl);
918 Fatal(
"InitializeEx",
919 "The TClass creation for %s did not get the right size: %d instead of%d\n",
953 if (num > 2 && !inside[2].empty()) {
962 Error(
"TGenCollectionProxy::InitializeEx",
963 "The TClass for %s used as the value type of the compiled collection proxy %s is not loaded.",
976 Fatal(
"TGenCollectionProxy",
"Components of %s not analysed!",cl->
GetName());
978 Fatal(
"TGenCollectionProxy",
"Collection class %s not found!",
fTypeinfo.name());
995 if (!
fValue.load(std::memory_order_relaxed)) {
1005 if (!
fValue.load(std::memory_order_relaxed)) {
1025 if( !
fValue.load(std::memory_order_relaxed) )
1040 auto value =
fValue.load(std::memory_order_relaxed);
1045 return value ? (*value).fType.GetClass() : 0;
1053 auto value =
fValue.load(std::memory_order_relaxed);
1069 if ((*fValue).fKind ==
kBool_t) {
1098 typedef ROOT::TCollectionProxyInfo::Environ <std::pair<size_t, Bool_t>> EnvType_t;
1099 EnvType_t *
e = (EnvType_t *)
fEnv;
1100 return &(
e->fIterator.second);
1129 Fatal(
"TGenCollectionProxy",
"At> Logic error - no proxy object set.");
1162 Fatal(
"TGenCollectionProxy",
"Size> Logic error - no proxy object set.");
1175 for (i=
n; i<nold; ++i)
1184 Fatal(
"TGenCollectionProxy",
"Resize> Logic error - no proxy object set.");
1304 if ( back->
fObject == objstart ) {
1323 e->fObject = objstart;
1338 if ( --
e->fRefCount <= 0 ) {
1352 if ( force && ptr ) {
1361 TPushPop helper(proxy,*(
void**)ptr);
1362 proxy->
Clear(
"force");
1369 proxy->
Clear(
"force");
1376 TPushPop helper(proxy,*(
void**)addr);
1377 proxy->
Clear(
"force");
1384 proxy->
Clear(
"force");
1393 TPushPop helper(proxy,*(
void**)ptr);
1394 proxy->
Clear(
"force");
1401 proxy->
Clear(
"force");
1414 MayNotUse(
"TGenCollectionProxy::ReadBuffer(TBuffer &, void *, const TClass *)");
1421 MayNotUse(
"TGenCollectionProxy::ReadBuffer(TBuffer &, void *)");
1433 Fatal(
"TGenCollectionProxy",
"Streamer> Logic error - no proxy object set.");
1511 std::vector<char> *
vec = (std::vector<char>*)obj;
1517 *begin_arena = &(*
vec->begin());
1518#ifdef R__VISUAL_CPLUSPLUS
1519 *end_arena = &(*(
vec->end()-1)) + 1;
1522 *end_arena = &(*
vec->end());
1540 *(
void**)
dest = *(
void**)source;
1566 *end_arena = s->
GetEnd();
1582 *(
void**)
dest = *(
void**)source;
1749 if (oldClass == 0) {
1755 std::map<std::string, TObjArray*>::iterator it;
1773 if (valueClass == 0) {
1787 (*fConversionReadMemberWise)[oldClass->
GetName()] = arr;
size_t size(const MatrixT &matrix)
retrieve the size of a square matrix
#define R__ASSERT(e)
Checks condition e and reports a fatal error if it's false.
void Error(const char *location, const char *msgfmt,...)
Use this function in case an error occurred.
void MayNotUse(const char *method)
This function can be used in classes that should override a certain function, but in the inherited cl...
void Warning(const char *location, const char *msgfmt,...)
Use this function in warning situations.
void Fatal(const char *location, const char *msgfmt,...)
Use this function in case of a fatal error. It will abort the program.
winID h TVirtualViewer3D TVirtualGLPainter p
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void data
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t dest
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h prop
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t result
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void value
#define MESSAGE(which, text)
void * TGenCollectionProxy__VectorCopyIterator(void *dest, const void *source)
void TGenCollectionProxy__StagingDeleteTwoIterators(void *, void *)
Nothing to do.
void * TGenCollectionProxy__VectorNext(void *, const void *)
Should not be used.
static TGenCollectionProxy::Value * R__CreateValue(const std::string &name, Bool_t silent, size_t hint_pair_offset=0, size_t hint_pair_size=0)
Utility routine to issue a Fatal error is the Value object is not valid.
void TGenCollectionProxy__StagingDeleteSingleIterators(void *)
Nothing to do.
void TGenCollectionProxy__SlowCreateIterators(void *, void **begin_arena, void **end_arena, TVirtualCollectionProxy *proxy)
void * TGenCollectionProxy__SlowNext(void *iter, const void *end)
void TGenCollectionProxy__VectorCreateIterators(void *obj, void **begin_arena, void **end_arena, TVirtualCollectionProxy *)
We can safely assume that the std::vector layout does not really depend on the content!
void * TGenCollectionProxy__StagingCopyIterator(void *dest, const void *source)
void * TGenCollectionProxy__StagingNext(void *, const void *)
Should not be used.
void TGenCollectionProxy__VectorDeleteSingleIterators(void *)
Nothing to do.
void * TGenCollectionProxy__SlowCopyIterator(void *dest, const void *source)
void TGenCollectionProxy__StagingCreateIterators(void *obj, void **begin_arena, void **end_arena, TVirtualCollectionProxy *)
void TGenCollectionProxy__SlowDeleteTwoIterators(void *, void *)
Nothing to do.
void TGenCollectionProxy__VectorDeleteTwoIterators(void *, void *)
Nothing to do.
void TGenCollectionProxy__SlowDeleteSingleIterators(void *)
Nothing to do.
R__EXTERN TVirtualMutex * gInterpreterMutex
R__EXTERN TInterpreter * gCling
#define R__LOCKGUARD(mutex)
void *(* fCopyIterator)(void *dest, const void *source)
void *(* fConstructFunc)(void *, size_t)
void *(* fClearFunc)(void *)
void *(* fFirstFunc)(void *)
void(* fDestructFunc)(void *, size_t)
void(* fDeleteTwoIterators)(void *begin, void *end)
void *(* fCollectFunc)(void *, void *)
void *(* fSizeFunc)(void *)
void *(* fNextFunc)(void *)
void *(* fFeedFunc)(void *, void *, size_t)
void(* fDeleteSingleIterator)(void *iter)
void(* fResizeFunc)(void *, size_t)
void(* fCreateIterators)(void *collection, void **begin_arena, void **end_arena, TVirtualCollectionProxy *proxy)
void *(* fNext)(void *iter, const void *end)
Buffer base class used for serializing objects.
TClass * GetClass() const
TClass instances represent classes, structs and namespaces in the ROOT type system.
Bool_t IsSyntheticPair() const
void Streamer(void *obj, TBuffer &b, const TClass *onfile_class=nullptr) const
void ForceReload(TClass *oldcl)
we found at least one equivalent.
ROOT::DesFunc_t GetDestructor() const
Return the wrapper around the destructor.
ROOT::NewFunc_t GetNew() const
Return the wrapper around new ThisClass().
Bool_t HasInterpreterInfo() const
Int_t Size() const
Return size of object of this class.
Bool_t IsLoaded() const
Return true if the shared library of this class is currently in the a process's memory.
TVirtualStreamerInfo * GetStreamerInfo(Int_t version=0, Bool_t isTransient=kFALSE) const
returns a pointer to the TVirtualStreamerInfo object for version If the object does not exist,...
TVirtualCollectionProxy * GetCollectionProxy() const
Return the proxy describing the collection (if any).
Int_t GetClassSize() const
TVirtualStreamerInfo * GetConversionStreamerInfo(const char *onfile_classname, Int_t version) const
Return a Conversion StreamerInfo from the class 'classname' for version number 'version' to this clas...
ROOT::DelFunc_t GetDelete() const
Return the wrapper around delete ThisObject.
static TClass * GetClass(const char *name, Bool_t load=kTRUE, Bool_t silent=kFALSE)
Static method returning pointer to TClass of the specified class name.
virtual Int_t GetSize() const
Return the capacity of the collection, i.e.
Basic data type descriptor (datatype information is obtained from CINT).
Int_t Size() const
Get size of basic typedef'ed type.
static TEnum * GetEnum(const std::type_info &ti, ESearchAction sa=kALoadAndInterpLookup)
TGenBitsetProxy(const TGenCollectionProxy &c)
void DeleteItem(Bool_t force, void *ptr) const override
Call to delete/destruct individual item.
void * At(UInt_t idx) override
Return the address of the value at index idx
~TGenBitsetProxy() override
void * invoke(void *obj) const
Small helper to stage the content of an associative container when reading and before inserting it in...
void Resize(size_t nelement)
void SetTarget(void *target)
Proxy around an arbitrary container, which implements basic functionality and iteration.
TStreamerInfoActions::TActionSequence * GetReadMemberWiseActions(Int_t version) override
Return the set of action necessary to stream in this collection member-wise coming from the old value...
Method fFirst
Container accessors: generic iteration: first.
std::atomic< Value * > fValue
Descriptor of the container value type.
Next_t fFunctionNextIterator
void Insert(const void *data, void *container, size_t size) override
Insert data into the container where data is a C-style array of the actual type contained in the coll...
Bool_t fPointers
Flag to indicate if containee has pointers (key or value)
Method fNext
Container accessors: generic iteration: next.
virtual void Streamer(TBuffer &refBuffer)
Streamer Function.
TStreamerInfoActions::TActionSequence * fWriteMemberWise
void * Allocate(UInt_t n, Bool_t forceDelete) override
Allocate the needed space.
Bool_t Reset() override
Reset the info gathered from StreamerInfos and value's TClass.
Info_t fTypeinfo
Type information.
int fValOffset
Offset from key to value (in maps)
TClass * GetValueClass() const override
Return a pointer to the TClass representing the content.
EnvironBase_t * fEnv
Address of the currently proxied object.
DeleteIterator_t fFunctionDeleteIterator
Collectfunc_t fCollect
Method to collect objects from container.
void PushProxy(void *objstart) override
Add an object.
void PopProxy() override
Remove the last object.
EDataType GetType() const override
If the content is a simple numerical value, return its type (see TDataType)
TGenCollectionProxy * Initialize(Bool_t silent) const
Proxy initializer.
virtual TGenCollectionProxy * InitializeEx(Bool_t silent)
Proxy initializer.
void Commit(void *env) override
Commit the change.
std::string fName
Name of the class being proxied.
CopyIterator_t GetFunctionCopyIterator(Bool_t read=kTRUE) override
See typedef void (*CopyIterator_t)(void *&dest, const void *source); Copy the iterator source,...
int fSTL_type
STL container type.
CopyIterator_t fFunctionCopyIterator
~TGenCollectionProxy() override
Standard destructor.
ULong_t GetIncrement() const override
Return the offset between two consecutive value_types (memory layout).
Value * fKey
Descriptor of the key_type.
virtual void Resize(UInt_t n, Bool_t force_delete)
Resize the container.
Int_t GetCollectionType() const override
Return the type of collection see TClassEdit::ESTLType.
void Clear(const char *opt="") override
Clear the emulated collection.
Proxies_t fProxyList
Stack of recursive proxies.
DeleteIterator_t GetFunctionDeleteIterator(Bool_t read=kTRUE) override
See typedef void (*DeleteIterator_t)(void *iter); If the sizeof iterator is greater than fgIteratorAr...
UInt_t Size() const override
Return the current size of the container.
Sizing_t fDestruct
Container accessors: block destruct.
Method0 fCreateEnv
Method to allocate an Environment holder.
Value * fVal
Descriptor of the Value_type.
Next_t GetFunctionNext(Bool_t read=kTRUE) override
See typedef void* (*Next_t)(void *iter, void *end); iter and end should be pointer to respectively an...
virtual void operator()(TBuffer &refBuffer, void *pObject)
TClassStreamer IO overload.
TClass * fOnFileClass
On file class.
Sizing_t fResize
Container accessors: resize container.
ArrIterfunc_t fConstruct
Container accessors: block construct.
void * At(UInt_t idx) override
Return the address of the value at index 'idx'.
DeleteTwoIterators_t GetFunctionDeleteTwoIterators(Bool_t read=kTRUE) override
See typedef void (*DeleteTwoIterators_t)(void *begin, void *end); If the sizeof iterator is greater t...
std::map< std::string, TObjArray * > * fConversionReadMemberWise
Array of bundle of TStreamerInfoActions to stream out (read) derived from another class.
void CheckFunctions() const
Check existence of function pointers.
TVirtualCollectionProxy * Generate() const override
Virtual copy constructor.
DeleteTwoIterators_t fFunctionDeleteTwoIterators
TStreamerInfoActions::TActionSequence * GetWriteMemberWiseActions() override
Return the set of action necessary to stream out this collection member-wise.
Bool_t HasPointers() const override
Return true if the content is of type 'pointer to'.
CreateIterators_t fFunctionCreateIterators
TStreamerInfoActions::TActionSequence * GetConversionReadMemberWiseActions(TClass *oldClass, Int_t version) override
Return the set of action necessary to stream in this collection member-wise coming from the old value...
TObjArray * fReadMemberWise
Array of bundle of TStreamerInfoActions to stream out (read)
virtual void DeleteItem(Bool_t force, void *ptr) const
Call to delete/destruct individual item.
TClass * GetCollectionClass() const override
Return a pointer to the TClass representing the container.
Staged_t fStaged
Optimization: Keep staged array once they were created.
Method fSize
Container accessors: size of container.
Method fClear
Method cache for container accessors: clear container.
Feedfunc_t fFeed
Container accessors: block feed.
CreateIterators_t GetFunctionCreateIterators(Bool_t read=kTRUE) override
See typedef void (*CreateIterators_t)(void *collection, void *&begin_arena, void *&end_arena); begin_...
int fValDiff
Offset between two consecutive value_types (memory layout).
virtual void ReadBuffer(TBuffer &b, void *obj)
Proxies_t fProxyKept
Optimization: Keep proxies once they were created.
UInt_t Sizeof() const override
Return the sizeof the collection object.
const std::type_info & Info_t
~TGenListProxy() override
void * At(UInt_t idx) override
Return the address of the value at index 'idx'.
TGenListProxy(const TGenCollectionProxy &c)
TGenMapProxy(const TGenCollectionProxy &c)
void DeleteItem(Bool_t force, void *ptr) const override
Call to delete/destruct individual item.
void * At(UInt_t idx) override
Return the address of the value at index 'idx'.
TGenSetProxy(const TGenCollectionProxy &c)
Local optimization class.
void * At(UInt_t idx) override
Return the address of the value at index 'idx'.
TGenVectorBoolProxy(const TGenCollectionProxy &c)
~TGenVectorBoolProxy() override
void DeleteItem(Bool_t force, void *ptr) const override
Call to delete/destruct individual item.
Local optimization class.
void DeleteItem(Bool_t force, void *ptr) const override
Call to delete/destruct individual item.
void * At(UInt_t idx) override
Return the address of the value at index 'idx'.
~TGenVectorProxy() override
TGenVectorProxy(const TGenCollectionProxy &c)
THashTable implements a hash table to store TObject's.
virtual void TypeInfo_Init(TypeInfo_t *, const char *) const
virtual void TypeInfo_Delete(TypeInfo_t *) const
virtual TypeInfo_t * TypeInfo_Factory() const
virtual Long_t TypeInfo_Property(TypeInfo_t *) const
virtual int TypeInfo_Size(TypeInfo_t *) const
virtual Bool_t TypeInfo_IsValid(TypeInfo_t *) const
const char * GetName() const override
Returns name of object.
void Clear(Option_t *option="") override
Remove all objects from the array.
virtual void AddAtAndExpand(TObject *obj, Int_t idx)
Add object at position idx.
TObject * At(Int_t idx) const override
static TActionSequence * CreateReadMemberWiseActions(TVirtualStreamerInfo *info, TVirtualCollectionProxy &proxy)
Create the bundle of the actions necessary for the streaming memberwise of the content described by '...
static TActionSequence * CreateWriteMemberWiseActions(TVirtualStreamerInfo *info, TVirtualCollectionProxy &proxy)
Create the bundle of the actions necessary for the streaming memberwise of the content described by '...
RAII helper class that ensures that PushProxy() / PopProxy() are called when entering / leaving a C++...
Defines a common interface to inspect/change the contents of an object that represents a collection.
virtual Int_t GetProperties() const
Return miscallenous properties of the proxy (see TVirtualCollectionProxy::EProperty)
void(* CreateIterators_t)(void *collection, void **begin_arena, void **end_arena, TVirtualCollectionProxy *proxy)
*begin_arena and *end_arena should contain the location of a memory arena of size fgIteratorArenaSize...
@ kCustomAlloc
The collection has a custom allocator.
@ kNeedDelete
The collection contains directly or indirectly (via other collection) some pointers that need explici...
void *(* CopyIterator_t)(void *dest, const void *source)
Copy the iterator source into dest.
virtual void Clear(const char *opt="")=0
Clear the container.
void *(* Next_t)(void *iter, const void *end)
iter and end should be pointers to an iterator to be incremented and an iterator that points to the e...
virtual void * At(UInt_t idx)=0
Return the address of the value at index idx
virtual UInt_t Size() const =0
Return the current number of elements in the container.
void(* DeleteTwoIterators_t)(void *begin, void *end)
void(* DeleteIterator_t)(void *iter)
If the size of the iterator is greater than fgIteratorArenaSize, call delete on the addresses; otherw...
Abstract Interface class describing Streamer information for one class.
virtual TVirtualStreamerInfo * GenerateInfoForPair(const std::string &pairclassname, bool silent, size_t hint_pair_offset, size_t hint_pair_size)=0
Generate the TClass and TStreamerInfo for the requested pair.
static TVirtualStreamerInfo * Factory()
Static function returning a pointer to a new TVirtualStreamerInfo object.
ROOT::ESTLType STLKind(std::string_view type)
Converts STL container name to number.
std::string GetNameForIO(const std::string &templateInstanceName, TClassEdit::EModType mode=TClassEdit::kNone, bool *hasChanged=nullptr)
int GetSplit(const char *type, std::vector< std::string > &output, int &nestedLoc, EModType mode=TClassEdit::kNone)
Stores in output (after emptying it) the split type.
bool IsDefAlloc(const char *alloc, const char *classname)
return whether or not 'allocname' is the STL default allocator for type 'classname'
Small helper to save proxy environment in the event of recursive calls.
Small helper to describe the Value_type or the key_type of an STL container.
void DeleteItem(void *ptr)
UInt_t fCase
type of data of Value_type
TClassRef fType
TClass reference of Value_type in collection.
UInt_t fProperties
Additional properties of the value type (kNeedDelete)
size_t fSize
fSize of the contained object
ROOT::DelFunc_t fDelete
Method cache for containee delete.
ROOT::DesFunc_t fDtor
Method cache for containee destructor.
ROOT::NewFunc_t fCtor
Method cache for containee constructor.
Value(const std::string &info, Bool_t silent, size_t hint_pair_offset=0, size_t hint_pair_size=0)
Constructor.
EDataType fKind
kind of ROOT-fundamental type
Bool_t IsValid()
Return true if the Value has been properly initialized.
TVirtualCollectionProxy * fProxy
TGenCollectionProxy__SlowIterator(TVirtualCollectionProxy *proxy)