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;
328 bool nameChanged =
false;
331 bool isPointer = nameChanged;
334 if (!nameChanged && intype[intype.length()-1] ==
'*') {
337 if (intype[intype.length()-1] ==
'*') {
340 Warning(
"TGenCollectionProxy::Value::Value",
"I/O not supported for collection of pointer to pointer: %s", inside_type.c_str());
341 fSize =
sizeof(
void*);
347 if ( intype.substr(0,6) ==
"string" || intype.substr(0,11) ==
"std::string" ) {
355 fSize =
sizeof(
void*);
357 fSize =
sizeof(std::string);
372 fSize =
sizeof(
void*);
387 assert(typeTable &&
"The type of the list of type has changed");
389 TDataType *fundType = (
TDataType *)typeTable->THashTable::FindObject( intype.c_str() );
390 if (fundType && fundType->
GetType() < 0x17 && fundType->
GetType() > 0) {
397 fSize =
sizeof(
void*);
408 fSize =
sizeof(
void*);
427 fSize =
sizeof(
void*);
449 fSize =
sizeof(
void*);
458 fSize = std::string::npos;
460 Error(
"TGenCollectionProxy",
"Could not retrieve the TClass for %s", intype.c_str());
468 fundType =
gROOT->GetType( intype.c_str() );
470 if (intype !=
"long double" && !silent) {
471 Error(
"TGenCollectionProxy",
"Unknown fundamental type %s",intype.c_str());
500 if (
fSize == std::string::npos ) {
516 return fSize != std::string::npos;
528 fType->Destructor(ptr);
531 ::operator
delete(ptr);
619 if ( iter_size >
sizeof(
e.fIterator) ) {
620 Fatal(
"TGenCollectionProxy",
621 "%s %s are too large:%ld bytes. Maximum is:%ld bytes",
622 "Iterators for collection",
642 fTypeinfo(info.fInfo), fOnFileClass(0)
671 Fatal(
"TGenCollectionProxy",
672 "%s %s are too large:%ld bytes. Maximum is:%ld bytes",
673 "Iterators for collection",
690 void clearVector(
vec&
v)
694 for(
typename vec::iterator i=
v.begin(); i !=
v.end(); ++i) {
695 typename vec::value_type
e = *i;
718 std::map<std::string, TObjArray*>::iterator it;
744 if ((*fValue).fKind ==
kBool_t) {
775 return p->InitializeEx(silent);
797 Fatal(
"TGenCollectionProxy",
"No 'size' function pointer for class %s present.",
fName.c_str());
800 Fatal(
"TGenCollectionProxy",
"No 'resize' function for class %s present.",
fName.c_str());
803 Fatal(
"TGenCollectionProxy",
"No 'next' function for class %s present.",
fName.c_str());
806 Fatal(
"TGenCollectionProxy",
"No 'begin' function for class %s present.",
fName.c_str());
809 Fatal(
"TGenCollectionProxy",
"No 'clear' function for class %s present.",
fName.c_str());
812 Fatal(
"TGenCollectionProxy",
"No 'block constructor' function for class %s present.",
fName.c_str());
815 Fatal(
"TGenCollectionProxy",
"No 'block destructor' function for class %s present.",
fName.c_str());
818 Fatal(
"TGenCollectionProxy",
"No 'data feed' function for class %s present.",
fName.c_str());
821 Fatal(
"TGenCollectionProxy",
"No 'data collect' function for class %s present.",
fName.c_str());
824 Fatal(
"TGenCollectionProxy",
"No 'environment creation' function for class %s present.",
fName.c_str());
832 size_t hint_pair_offset = 0,
size_t hint_pair_size = 0)
836 Fatal(
"TGenCollectionProxy",
"Could not find %s!",
name.c_str());
847 if (
fValue.load())
return this;
855 std::vector<std::string> inside;
859 Value* newfValue =
nullptr;
860 if ( inside[0].find(
"stdext::hash_") != std::string::npos )
861 inside[0].replace(3,10,
"::");
862 if ( inside[0].find(
"__gnu_cxx::hash_") != std::string::npos )
863 inside[0].replace(0,16,
"std::");
876 if (num > 3 && !inside[3].empty()) {
884 int slong =
sizeof(
void*);
890 nam =
"pair<"+inside[1]+
","+inside[2];
891 nam += (nam[nam.length()-1]==
'>') ?
" >" :
">";
899 if (paircl ==
nullptr) {
903 Fatal(
"InitializeEx",
904 "Could not load nor generate the dictionary for \"%s\", some element might be missing their dictionary (eg. enums)",
910 Fatal(
"InitializeEx",
911 "The %s for %s reports a class size that is inconsistent with the one registered "
912 "through the CollectionProxy for %s: %d vs %d\n",
913 paircl->
IsLoaded() ?
"dictionary" :
"interpreter information for", nam.c_str(),
916 gROOT->GetListOfClasses()->Remove(paircl);
919 Fatal(
"InitializeEx",
920 "The TClass creation for %s did not get the right size: %d instead of%d\n",
954 if (num > 2 && !inside[2].empty()) {
963 Error(
"TGenCollectionProxy::InitializeEx",
964 "The TClass for %s used as the value type of the compiled collection proxy %s is not loaded.",
977 Fatal(
"TGenCollectionProxy",
"Components of %s not analysed!",cl->
GetName());
979 Fatal(
"TGenCollectionProxy",
"Collection class %s not found!",
fTypeinfo.name());
996 if (!
fValue.load(std::memory_order_relaxed)) {
1006 if (!
fValue.load(std::memory_order_relaxed)) {
1026 if( !
fValue.load(std::memory_order_relaxed) )
1041 auto value =
fValue.load(std::memory_order_relaxed);
1046 return value ? (*value).fType.GetClass() : 0;
1054 auto value =
fValue.load(std::memory_order_relaxed);
1070 if ((*fValue).fKind ==
kBool_t) {
1099 typedef ROOT::TCollectionProxyInfo::Environ <std::pair<size_t, Bool_t>> EnvType_t;
1100 EnvType_t *
e = (EnvType_t *)
fEnv;
1101 return &(
e->fIterator.second);
1130 Fatal(
"TGenCollectionProxy",
"At> Logic error - no proxy object set.");
1163 Fatal(
"TGenCollectionProxy",
"Size> Logic error - no proxy object set.");
1176 for (i=
n; i<nold; ++i)
1185 Fatal(
"TGenCollectionProxy",
"Resize> Logic error - no proxy object set.");
1287 if (
s->GetTarget() ) {
1288 fFeed(
s->GetContent(),
s->GetTarget(),
s->GetSize());
1305 if ( back->
fObject == objstart ) {
1324 e->fObject = objstart;
1339 if ( --
e->fRefCount <= 0 ) {
1353 if ( force && ptr ) {
1362 TPushPop helper(proxy,*(
void**)ptr);
1363 proxy->
Clear(
"force");
1370 proxy->
Clear(
"force");
1377 TPushPop helper(proxy,*(
void**)addr);
1378 proxy->
Clear(
"force");
1385 proxy->
Clear(
"force");
1394 TPushPop helper(proxy,*(
void**)ptr);
1395 proxy->
Clear(
"force");
1402 proxy->
Clear(
"force");
1415 MayNotUse(
"TGenCollectionProxy::ReadBuffer(TBuffer &, void *, const TClass *)");
1422 MayNotUse(
"TGenCollectionProxy::ReadBuffer(TBuffer &, void *)");
1434 Fatal(
"TGenCollectionProxy",
"Streamer> Logic error - no proxy object set.");
1512 std::vector<char> *
vec = (std::vector<char>*)obj;
1518 *begin_arena = &(*
vec->begin());
1519#ifdef R__VISUAL_CPLUSPLUS
1520 *end_arena = &(*(
vec->end()-1)) + 1;
1523 *end_arena = &(*
vec->end());
1541 *(
void**)
dest = *(
void**)source;
1566 *begin_arena =
s->GetContent();
1567 *end_arena =
s->GetEnd();
1583 *(
void**)
dest = *(
void**)source;
1750 if (oldClass == 0) {
1756 std::map<std::string, TObjArray*>::iterator it;
1774 if (valueClass == 0) {
1788 (*fConversionReadMemberWise)[oldClass->
GetName()] = arr;
size_t size(const MatrixT &matrix)
retrieve the size of a square matrix
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 b
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 ThiObject.
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)
virtual ~TGenBitsetProxy()
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'.
void * invoke(void *obj) const
Small helper to stage the content of an associative container when reading and before inserting it in...
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...
virtual ~TGenCollectionProxy()
Standard destructor.
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
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.
virtual 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
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'.
virtual ~TGenVectorBoolProxy()
TGenVectorBoolProxy(const TGenCollectionProxy &c)
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'.
virtual ~TGenVectorProxy()
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 '...
virtual Int_t GetProperties() const
void(* CreateIterators_t)(void *collection, void **begin_arena, void **end_arena, TVirtualCollectionProxy *proxy)
void *(* CopyIterator_t)(void *dest, const void *source)
virtual void Clear(const char *opt="")=0
void *(* Next_t)(void *iter, const void *end)
virtual void * At(UInt_t idx)=0
virtual UInt_t Size() const =0
void(* DeleteTwoIterators_t)(void *begin, void *end)
void(* DeleteIterator_t)(void *iter)
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'
static constexpr double s
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)