59 && (str.Data()[prefix.
Length()] ==
'.' || (prefix[prefix.
Length()-1]==
'.')))
61 if (!str.Index(prefix))
62 str.Remove(0, prefix.
Length());
73 fBuffer.PushDataCache( fOnfileObject );
77 if (fOnfileObject)
fBuffer.PopDataCache();
110 br->ResetReadEntry();
111 for (
auto sub : *
br->GetListOfBranches())
123 switch (
br->GetType()) {
124 case 31:
br->SetType(41);
break;
127 br->fCollProxy =
nullptr;
131 br->SetReadLeavesPtr();
132 br->SetFillLeavesPtr();
179, fSTLtype(
ROOT::kNotSTL)
181, fBranchCount(nullptr)
182, fBranchCount2(nullptr)
185, fOnfileObject(nullptr)
194, fBranchOffset(nullptr)
196, fReadActionSequence(nullptr)
197, fFillActionSequence(nullptr)
199, fWriteIterators(nullptr)
200, fPtrIterators(nullptr)
214, fClassName(
sinfo->GetName())
218, fCheckSum(
sinfo->GetCheckSum())
219, fClassVersion(
sinfo->GetClass()->GetClassVersion())
224, fSTLtype(
ROOT::kNotSTL)
226, fBranchCount(nullptr)
227, fBranchCount2(nullptr)
230, fOnfileObject(nullptr)
234, fTargetClass(fClassName)
237, fBranchClass(
sinfo->GetClass())
239, fBranchOffset(nullptr)
241, fReadActionSequence(nullptr)
242, fFillActionSequence(nullptr)
244, fWriteIterators(nullptr)
245, fPtrIterators(nullptr)
261, fClassName(
sinfo->GetName())
265, fCheckSum(
sinfo->GetCheckSum())
266, fClassVersion(
sinfo->GetClass()->GetClassVersion())
271, fSTLtype(
ROOT::kNotSTL)
273, fBranchCount(nullptr)
274, fBranchCount2(nullptr)
277, fOnfileObject(nullptr)
281, fTargetClass( fClassName )
284, fBranchClass(
sinfo->GetClass())
286, fBranchOffset(nullptr)
288, fReadActionSequence(nullptr)
289, fFillActionSequence(nullptr)
291, fWriteIterators(nullptr)
292, fPtrIterators(nullptr)
315 if (
fTree ==
nullptr)
return;
543 char **
ppointer =
reinterpret_cast<char**
>(pointer);
586 leaf->SetRange(
true);
607 }
else if (
valueClass->GetCollectionProxy()) {
640 leaf->SetRange(
true);
698, fClassName(
"TClonesArray")
704, fTargetClass( fClassName )
709, fReadActionSequence(nullptr)
710, fFillActionSequence(nullptr)
712, fWriteIterators(nullptr)
713, fPtrIterators(nullptr)
725, fClassName(
"TClonesArray")
731, fTargetClass( fClassName )
736, fReadActionSequence(nullptr)
737, fFillActionSequence(nullptr)
739, fWriteIterators(nullptr)
740, fPtrIterators(nullptr)
806 Error(
"Init",
"Missing class object of the TClonesArray %s\n",
clones->GetName());
853, fClassName(
cont->GetCollectionClass()->GetName())
858, fTargetClass( fClassName )
861, fBranchClass(
cont->GetCollectionClass())
863, fReadActionSequence(nullptr)
864, fFillActionSequence(nullptr)
866, fWriteIterators(nullptr)
867, fPtrIterators(nullptr)
879, fClassName(
cont->GetCollectionClass()->GetName())
884, fTargetClass( fClassName )
887, fBranchClass(
cont->GetCollectionClass())
889, fReadActionSequence(nullptr)
890, fFillActionSequence(nullptr)
892, fWriteIterators(nullptr)
893, fPtrIterators(nullptr)
1091 &&
info->IsCompiled()
1197 }
else if (
fType == 4) {
1200 Error(
"BuildTitle",
"This cannot happen, fType of parent is not 3 or 4!");
1205 if (
fin ==
nullptr) {
1209 bre->SetBranchCount(
this);
1235 Int_t stype =
bre->GetStreamerType();
1237 if ((stype > 40) && (stype < 61)) {
1247 bre->SetBranchCount2(
bc2);
1249 bre->SetReadLeavesPtr();
1250 bre->SetFillLeavesPtr();
1279 Error(
"Fill",
"attempt to fill branch %s while address is not set",
GetName());
1375 b.ForceWriteInfo(
si,
false);
1378 }
else if (
fType == 31) {
1399 Error(
"FillLeaves",
"The branch counter address was zero!");
1405 Error(
"FillLeaves",
"Clonesa: %s, n=%d, sorry not supported yet",
GetName(),
n);
1411 n =
n *
leaf->GetLenStatic();
1429 b.WriteDouble32(&(
xx[
ii]),
se);
1521 Error(
"FillLeaves",
"Cannot get streamer info for branch '%s'",
GetName());
1552 Error(
"FillLeaves",
"Cannot get streamer info for branch '%s'",
GetName());
1582 Error(
"FillLeaves",
"Cannot get streamer info for branch '%s'",
GetName());
1613 Error(
"FillLeaves",
"Cannot get streamer info for branch '%s'",
GetName());
1668 Error(
"FillLeaves",
"Cannot get streamer info for branch '%s'",
GetName());
1672 char **
arr =
reinterpret_cast<char **
>(
clones->GetObjectRef(
nullptr));
1673 char **end =
arr +
n;
1750 Error(
"FillLeaves",
"Cannot get streamer info for branch '%s'",
GetName());
1794 Error(
"FillLeaves",
"Cannot get streamer info for branch '%s'",
GetName());
1809 std::size_t dim =
name.find_first_of(
'[');
1810 if (dim != std::string::npos) {
1833 if (
se &&
se->IsBase()) {
1862 if (namelen ==
brlen
1889 if(obj->
IsA() != TBranchElement :: Class() )
1893 if (
si &&
br->GetID() >= 0) {
1895 if (
se &&
se->IsBase()) {
1917 if (parent==
this || parent->
GetID()<0 )
return nullptr;
1922 if (!
se->IsBase() )
return nullptr;
1985 if (file && file->GetSeekInfo()) {
2024 for (
size_t i =0; i <
ndata; ++i) {
2047 ids.back().fElement =
nextel;
2048 ids.back().fInfo =
info;
2113 &&
subbe->GetOnfileObject()
2135 ids.back().fNestedIDs->fOwnOnfileObject =
true;
2139 if (ids.back().fNestedIDs->fIDs.empty())
2174 Error(
"InitInfo",
"Branch '%s': missing dictionary for target class '%s'!",
2189 if (parent && parent !=
this && !parent->
GetClass()->IsLoaded() ) {
2259 Error(
"InitInfo",
"StreamerInfo is not compiled.");
2373 Error(
"SetOnfileObject (lambda)",
"2 distincts fOnfileObject are in the hierarchy of %s for type %s",
2396 size_t pos = s.rfind(
'.');
2397 if (pos != std::string::npos) {
2398 s = s.substr(pos+1);
2400 while ((pos = s.rfind(
'[')) != std::string::npos) {
2401 s = s.substr(0, pos);
2408 for (
size_t i = 0; i <
ndata; ++i) {
2444 if (
ename[0] ==
'*')
2447 while ((pos =
ename.rfind(
'[')) != std::string::npos) {
2462 &&
nextel->GetClassPointer()->CanSplit())
2487 for (
size_t i = 0; i <
ndata; ++i) {
2517 auto start = prefix.
Length();
2518 if (prefix[start - 1] ==
'.')
2520 std::string_view view(prefix.
Data(), start);
2521 auto cutoff = view.find_last_of(
'.');
2522 if (
cutoff != std::string::npos) {
2526 if (prefix[prefix.
Length()-1] !=
'.') {
2570 const char* className =
nullptr;
2589 cl =
se->GetClassPointer();
2613 Fatal(
"GetCollectionProxy",
2614 "Can not create a Collection Proxy of any kind for the class \"%s\" needed by the branch \"%s\" of the TTree \"%s\"!",
2618 "Fixing the collection proxy of the class \"%s\" \n"
2619 "\tneeded by the branch \"%s\" of the TTree \"%s\" to be similar to \"%s\".",
2625 }
else if (
fType == 41) {
2650 if (
motherCl->GetCollectionProxy()) {
2651 cl =
motherCl->GetCollectionProxy()->GetCollectionClass();
2770 if (
clones->IsZombie()) {
2775 char **
arr =
reinterpret_cast<char **
>(
clones->GetObjectRef());
2779 }
else if (
fType == 4) {
2847 if ((
type == -1) || (
fID == -1)) {
2859 Error(
"GetExpectedType",
"Did not find the type number for %s",
element->GetTypeNameBasic());
2866 Error(
"GetExpectedType",
"Did not find the type for %s",
GetName());
2893 return "TBranchElement-folder";
2895 return "TBranchElement-leaf";
2956 const char *
types[20] = {
2988template <
typename T>
3039 }
else if (
fType <= 2) {
3051 if (
object ==
nullptr)
3064 }
else if (
fType == 41) {
3120 }
else if (
fType == 4) {
3123 }
else if (
fType == 31) {
3128 }
else if (
fType == 41) {
3133 }
else if (
fType <= 2) {
3148 }
else if (
fType == 41) {
3150 }
else if (
prID < 0) {
3156 if (!
info || !
object)
return nullptr;
3157 char **val =
reinterpret_cast<char **
>(
object+
info->TStreamerInfo::GetElementOffset(
prID));
3212 Warning(
"InitializeOffsets",
"No branch class set for branch: %s",
GetName());
3241 if (!
info->IsCompiled()) {
3242 Warning(
"InitializeOffsets",
"Streamer info for branch: %s has no elements array!",
GetName());
3249 Warning(
"InitializeOffsets",
"Cannot get streamer element for branch: %s!",
GetName());
3255 if (
info->GetElement(
fID+1)) {
3270 Error(
"InitializeOffsets",
"Could not find class for branch: %s",
GetName());
3312 Warning(
"InitializeOffsets",
"No streamer info for branch: %s subbranch: %s",
GetName(),
subBranch->GetName());
3316 if (!
sinfo->IsCompiled()) {
3317 Warning(
"InitializeOffsets",
"No elements array for branch: %s subbranch: %s",
GetName(),
subBranch->GetName());
3324 Warning(
"InitializeOffsets",
"No streamer element for branch: %s subbranch: %s",
GetName(),
subBranch->GetName());
3337 if (
subBranch->fReadActionSequence &&
subBranch->fReadActionSequence->fActions.size() > 1) {
3338 typedef TStreamerInfoActions::ActionContainer_t::iterator iterator;
3339 iterator end =
subBranch->fReadActionSequence->fActions.
end();
3340 for(iterator iter =
subBranch->fReadActionSequence->fActions.
begin();
3341 iter != end; ++iter) {
3361 &&
subBranch->GetListOfBranches()->GetEntriesFast()==0
3378 Warning(
"InitializeOffsets",
"Branch '%s' has no mother!",
GetName());
3440 }
else if (
fType == 4) {
3619 if (parent && parent !=
this && !parent->
GetClass()->IsLoaded() ) {
3641 Warning(
"InitializeOffsets",
"subBranch: '%s' has no parent class, and cannot get class for clones class: '%s'!",
subBranch->GetName(),
GetClonesName());
3645 Warning(
"InitializeOffsets",
"subBranch: '%s' has no parent class! Assuming parent class is: '%s'.",
subBranch->GetName(),
pClass->GetName());
3649 Warning(
"InitializeOffsets",
"subBranch: '%s' has no parent class! Assuming parent class is: '%s'.",
subBranch->GetName(),
pClass ?
pClass->GetName() :
"unknown class");
3706 if (
pClass->GetListOfRealData()->GetEntries() == 0) {
3709 Error(
"InitializeOffsets",
3710 "Could not find the real data member '%s' when constructing the branch '%s' [Likely missing ShowMember].",
3715 Info(
"InitializeOffsets",
3716 "TTree created with an older schema, some data might not be copied in 'slow-cloning' mode; fast-cloning should have the correct result. '%s' is missing when constructing the branch '%s'. ",
3720 Fatal(
"InitializeOffsets",
3721 "Could not find the real data member '%s' when constructing the branch '%s' [Likely an internal error, please report to the developers].",
3732 Warning(
"InitializeOffsets",
"Could not find the data member name for branch '%s' with parent branch '%s', assuming offset is zero!",
subBranch->GetName(),
GetName());
3866 if (
basket->GetNevBufSize() == 0) {
3880 for(
auto &
cursor : ids) {
3881 auto id =
cursor.fElemID;
3883 auto el =
info->GetElement(
id);
3887 Error(
"TBranchElement::Print",
"Element for id #%d not found in StreamerInfo for %s",
3888 id,
info->GetName());
3891 }
else if (
cursor.fNestedIDs) {
3892 Printf(
" Within subobject of type %s offset = %d",
cursor.fNestedIDs->fInfo->GetName(),
cursor.fNestedIDs->fOffset);
3900 constexpr auto length = std::char_traits<char>::length;
3904 Printf(
"%-24s %-16s %2s %4s %-16s %-16s %8s %8s %s %s\n",
3905 "Branch Name",
"Streamer Class",
"ID",
"Type",
"Class",
"Parent",
"pOffset",
"fOffset",
"fObject",
"fOnfileObject");
3914 Printf(
"%-16s %2d %4d %-16s %-16s %8x %8x %p %p%s\n",
3937 Printf(
" With elements:");
3941 Printf(
" with read actions:");
3943 Printf(
" with write actions:");
3951 Printf(
" with read actions:");
3953 Printf(
" with write actions:");
3973 Printf(
"*............................................................................*");
4031 n =
n *
leaf->GetLenStatic();
4037 }
else if (
fType <= 2) {
4054 }
else if (
fType == 3) {
4056 }
else if (
fType == 31) {
4061 }
else if (
fType == 41) {
4078 Fatal(
"ReadLeaves",
"The ReadLeaves function has not been configured for %s",
GetName());
4096 b.SetBufferOffset(
b.Length() -
sizeof(
n));
4098 Error(
"ReadLeaves",
"Incorrect size read for the container in %s\nThe size read is %d when the maximum is %d\nThe size is reset to 0 for this entry (%lld)",
GetName(),
n[0],
fMaximum,
GetReadEntry());
4118 if (
atype > 54)
return;
4132 for( k=0; k<
n; k++) {
4151 case 18: {
length = (
reinterpret_cast<const bool*
>(
len_where))[k];
break;}
4155 if (
length <= 0)
continue;
4180 n *=
leaf->GetLenStatic();
4185 case 3: {
b.ReadFastArray(
reinterpret_cast<Int_t*
>(
fAddress),
n);
break;}
4188 case 6: {
b.ReadFastArray(
reinterpret_cast<Int_t*
>(
fAddress),
n);
break;}
4197 case 18: {
b.ReadFastArray(
reinterpret_cast<bool*
>(
fAddress),
n);
break;}
4218 }
else if (
fType <= 2) {
4248 Warning(
"ReadLeaves",
"Missing fBranchCount for %s. Data will not be read correctly by the MakeClass mode.",
GetName());
4257 case 3: {
b.ReadFastArray(
reinterpret_cast<Int_t*
>(
fAddress),
n);
break;}
4260 case 6: {
b.ReadFastArray(
reinterpret_cast<Int_t*
>(
fAddress),
n);
break;}
4269 case 18: {
b.ReadFastArray(
reinterpret_cast<bool*
>(
fAddress),
n);
break;}
4336 b.SetBufferOffset(
b.Length()-
sizeof(
n));
4338 Error(
"ReadLeaves",
"Incorrect size read for the container in %s\n\tThe size read is %d while the maximum is %d\n\tThe size is reset to 0 for this entry (%lld)",
GetName(),
n,
fMaximum,
GetReadEntry());
4393 if( !
fNdata || *
reinterpret_cast<void**
>(
proxy->At( 0 )) !=
nullptr )
4398 void **
el =
reinterpret_cast<void**
>(
proxy->At( i ));
4430 if (
info ==
nullptr)
return;
4462 if (
info ==
nullptr)
return;
4493 if (
info ==
nullptr)
return;
4524 b.SetBufferOffset(
b.Length()-
sizeof(
n));
4526 Error(
"ReadLeaves",
"Incorrect size read for the container in %s\n\tThe size read is %d while the maximum is %d\n\tThe size is reset to 0 for this entry (%lld)",
GetName(),
n,
fMaximum,
GetReadEntry());
4532 if (
clones->IsZombie()) {
4561 if (
clones->IsZombie()) {
4565 if (
info==
nullptr)
return;
4572 char **
arr =
reinterpret_cast<char **
>(
clones->GetObjectRef());
4713 Fatal(
"FillLeaves",
"The FillLeaves function has not been configured for %s",
GetName());
4723 *(
reinterpret_cast<char**
>(
fAddress)) =
nullptr;
4734 *(
reinterpret_cast<char**
>(
fAddress)) =
nullptr;
4736 }
else if (
fType == 4) {
4741 Warning(
"ReleaseObject",
"Cannot delete allocated STL container because I do not have a proxy! branch: %s",
GetName());
4752 proxy->Clear(
"force");
4760 *(
reinterpret_cast<char**
>(
fAddress)) =
nullptr;
4777 proxy->Clear(
"force");
4781 proxy->Clear(
"force");
4832 leaf->SetAddress(
nullptr);
4841 if (
br)
br->ResetAddress();
4865 for (
Int_t i = 0; i <
nb; ++i) {
5045 fAddress =
reinterpret_cast<char*
>(-1);
5046 fObject =
reinterpret_cast<char*
>(-1);
5125 clm->BuildRealData();
5126 clm->GetStreamerInfo();
5134 if (
newType->GetCollectionProxy()) {
5142 Warning(
"SetAddress",
"The type of the %s was changed from TClonesArray to %s but we do not have a TVirtualCollectionProxy for that container type!",
GetName(),
newType->GetName());
5169 }
else if (
fType == 4) {
5183 br->fCollProxy =
nullptr;
5184 if (
br->fReadActionSequence) {
5185 br->SetReadActionSequence();
5187 if (
br->fFillActionSequence) {
5188 br->SetFillActionSequence();
5208 if (
newType->GetSchemaRules()->HasRuleWithSourceClass(
oldProxy->GetCollectionClass()->GetName())) {
5216 br->fCollProxy =
nullptr;
5220 if (
br->fReadActionSequence) {
5221 br->SetReadActionSequence();
5223 if (
br->fFillActionSequence) {
5224 br->SetFillActionSequence();
5242 Error(
"SetAddress",
"For %s, we can not convert %s into %s\n",
5284 clm->BuildRealData();
5285 clm->GetStreamerInfo();
5342 if (!
clones->GetClass()) {
5359 fObject =
reinterpret_cast<char*
>(*pp);
5369 fObject =
reinterpret_cast<char*
>(*pp);
5377 Error(
"SetAddress",
"Embedded TClonesArray given a zero address for branch '%s'",
GetName());
5393 Error(
"SetAddress",
"Embedded pointer to a TClonesArray given a zero address for branch '%s'",
GetName());
5397 }
else if (
fType == 4) {
5417 "Branch %s is a split STL container (fStreamerType is: %d), the address can not be set directly.",
5421 void** pp =
reinterpret_cast<void**
>(
fAddress);
5426 Error(
"SetAddress",
"Failed to allocate STL container for branch '%s'",
GetName());
5434 fObject =
reinterpret_cast<char*
>(*pp);
5439 void** pp =
reinterpret_cast<void**
>(
fAddress);
5444 Error(
"SetAddress",
"Failed to allocate STL container for branch '%s'",
GetName());
5452 fObject =
reinterpret_cast<char*
>(*pp);
5464 Error(
"SetAddress",
"Embedded STL container given a zero address for branch '%s'",
GetName());
5470 "Branch %s is a split STL container (fStreamerType is: %d), the address can not be set directly.",
5479 Error(
"SetAddress",
"Failed to allocate STL container for branch '%s'",
GetName());
5488 Error(
"SetAddress",
"Embedded pointer to an STL container given a zero address for branch '%s'",
GetName());
5492 }
else if (
fType == 41) {
5498 }
else if (
fID < 0) {
5500 char** pp =
reinterpret_cast<char**
>(
fAddress);
5518 Error(
"SetAddress",
"I have no TClass for branch %s, so I cannot allocate an I/O buffer!",
GetName());
5597 Warning(
"SetBranchCount",
"Branch %s has no leaves!",
GetName());
5634 fObject =
reinterpret_cast<char*
>(obj);
5719 if (
fInfo ==
nullptr) {
5744 }
else if (
fType == 31) {
5769 }
else if (
fType == 4) {
5771 }
else if (
fType == 41) {
5781 }
else if (
fType == 3) {
5783 }
else if (
fType == 31) {
5785 }
else if (
fType < 0) {
5787 }
else if (
fType == 0 &&
fID == -1) {
5798 }
else if (
fType <= 2) {
5819 if (
fInfo ==
nullptr) {
5844 }
else if (
fType == 31) {
5869 }
else if (
fType == 4) {
5871 }
else if (
fType == 41) {
5883 }
else if (
fType == 3) {
5885 }
else if (
fType == 31) {
5887 }
else if (
fType < 0) {
5889 }
else if (
fType <=2) {
5911 if (
name ==
nullptr)
return;
6005 if (!
mother->GetAddress()) {
6010 mother->SetAddress(
nullptr);
6020 if (
R__b.IsReading()) {
6083 else if (
fType == 4) {
6103 if (!
dirsav->IsWritable()) {
6119 dirsav->WriteTObject(
this);
6180 if (
clbase->GetListOfRealData()->GetSize() == 0) {
6214 element->GetClass()->GetCollectionProxy() &&
6215 element->GetClass()->GetCollectionProxy()->HasPointers() )
6223 bre->SetParentClass(cl);
6292 bool dotlast = (namelen && (
name[namelen-1] ==
'.'));
6325 if ((btype == 31) || (btype == 41)) {
6350 }
else if (
clOfBase->GetListOfRealData()->GetSize()) {
6389 if (
elem->CannotSplit()) {
6397 if (btype == 31 || btype == 41 ||
elem->CannotSplit()) {
6421 else if(
elem->GetClassPointer() &&
6422 elem->GetClassPointer()->GetCollectionProxy() &&
6423 elem->GetClassPointer()->GetCollectionProxy()->HasPointers() &&
6428 elem->GetClassPointer()->GetCollectionProxy(),
6438 if ((btype == 31) || (btype == 41) ||
elem->CannotSplit()) {
static void unroll(CPyCppyy_PyArgs_t packed_args, CPyCppyy_PyArgs_t unrolled, Py_ssize_t nArgs)
#define R__unlikely(expr)
size_t size(const MatrixT &matrix)
retrieve the size of a square matrix
unsigned short UShort_t
Unsigned Short integer 2 bytes (unsigned short)
int Int_t
Signed integer 4 bytes (int)
float Size_t
Attribute size (float)
long Longptr_t
Integer large enough to hold a pointer (platform-dependent)
unsigned char UChar_t
Unsigned Character 1 byte (unsigned char)
int Ssiz_t
String size (currently int)
char Char_t
Character 1 byte (char)
unsigned long ULong_t
Unsigned long integer 4 bytes (unsigned long). Size depends on architecture.
long Long_t
Signed long integer 4 bytes (long). Size depends on architecture.
unsigned int UInt_t
Unsigned integer 4 bytes (unsigned int)
float Float_t
Float 4 bytes (float)
short Short_t
Signed Short integer 2 bytes (short)
double Double_t
Double 8 bytes.
long double LongDouble_t
Long Double (not portable)
constexpr Ssiz_t kNPOS
The equivalent of std::string::npos for the ROOT class TString.
long long Long64_t
Portable signed long integer 8 bytes.
unsigned long long ULong64_t
Portable unsigned long integer 8 bytes.
const char Option_t
Option string (const char)
static void PrintElements(const TStreamerInfo *info, const TStreamerInfoActions::TIDs &ids)
Print branch parameters.
static void R__CleanName(std::string &name)
Remove trailing dimensions and make sure there is a trailing dot.
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
#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.
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 cursor
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 offset
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 Atom_t Int_t ULong_t ULong_t unsigned char prop_list Atom_t Atom_t target
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 char Point_t Rectangle_t WindowAttributes_t index
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 length
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize id
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 Atom_t Int_t ULong_t ULong_t unsigned char prop_list Atom_t Atom_t Atom_t Time_t UChar_t len
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 Atom_t Int_t ULong_t ULong_t unsigned char prop_list Atom_t Atom_t Atom_t Time_t type
R__EXTERN TVirtualMutex * gInterpreterMutex
Int_t gDebug
Global variable setting the debug level. Set to 0 to disable, increase it in steps of 1 to increase t...
R__EXTERN TVirtualMutex * gROOTMutex
void Printf(const char *fmt,...)
Formats a string in a circular formatting buffer and prints the string.
#define R__LOCKGUARD_IMT(mutex)
#define R__LOCKGUARD(mutex)
A helper class for managing IMT work during TTree:Fill operations.
const_iterator begin() const
const_iterator end() const
TIOFeatures provides the end-user with the ability to change the IO behavior of data written via a TT...
Manages buffers for branches of a Tree.
A Branch for the case of an object.
void ReadLeavesClonesMember(TBuffer &b)
Read leaves into i/o buffers for this branch.
void SetActionSequence(TClass *originalClass, TStreamerInfo *localInfo, TStreamerInfoActions::TActionSequence::SequenceGetter_t create, TStreamerInfoActions::TActionSequence *&actionSequence)
Set the sequence of actions needed to read the data out of the buffer.
char * fObject
! Pointer to object at *fAddress
TStreamerInfo * fInfo
! Pointer to StreamerInfo
Int_t fSTLtype
! STL container type
void ReadLeavesCustomStreamer(TBuffer &b)
Read leaves into i/o buffers for this branch.
void Reset(Option_t *option="") override
Reset a Branch.
void SetParentClass(TClass *clparent)
TBranchElement * fBranchCount2
pointer to secondary branchcount branch
Int_t fNdata
! Number of data in this branch
~TBranchElement() override
Destructor.
void SetOffset(Int_t offset) override
Set offset of the object (to which the data member represented by this branch belongs) inside its con...
void FillLeavesCollectionMember(TBuffer &b)
Write leaves into i/o buffers for this branch.
TString fClassName
Class name of referenced object.
TStreamerInfoActions::TActionSequence * fFillActionSequence
! Set of actions to be executed to write the data to the basket.
void Print(Option_t *option="") const override
Print TBranch parameters.
void SetAddressImpl(void *addr, bool implied, Int_t offset) override
See TBranchElement::SetAddress.
const char * GetClassName() const override
Return the name of the user class whose content is stored in this branch, if any.
TStreamerInfo * GetInfo() const
Get streamer info for the branch class.
void ReadLeavesCollection(TBuffer &b)
Read leaves into i/o buffers for this branch.
void SetupAddresses() override
If the branch address is not set, we set all addresses starting with the top level parent branch.
void ResetAddress() override
Set branch address to zero and free all allocated memory.
virtual void SetType(Int_t btype)
void FillLeavesMember(TBuffer &b)
Write leaves into i/o buffers for this branch.
void SetBranchCount(TBranchElement *bre)
Set the branch counter for this branch.
static void SwitchContainer(TObjArray *)
Modify the container type of the branches.
void SetReadActionSequence()
Set the sequence of actions needed to read the data out of the buffer.
bool IsMissingCollection() const
Detect a collection written using a zero pointer in old versions of root.
Int_t FillImpl(ROOT::Internal::TBranchIMTHelper *) override
Loop on all leaves of this branch to fill the basket buffer.
TVirtualCollectionProxy * GetCollectionProxy()
Return the collection proxy describing the branch content, if any.
@ kOwnOnfileObj
We are the owner of fOnfileObject.
@ kAddressSet
The addressing set have been called for this branch.
@ kDecomposedObj
More explicit alias for kMakeClass.
@ kDeleteObject
We are the owner of fObject.
@ kCache
Need to pushd/pop fOnfileObject.
void SetupAddressesImpl()
If the branch address is not set, we set all addresses starting with the top level parent branch.
void SetBasketSize(Int_t bufsize) override
Reset the basket size for all sub-branches of this branch element.
Int_t GetEntry(Long64_t entry=0, Int_t getall=0) override
Read all branches of a BranchElement and return total number of bytes.
TClassRef fParentClass
! Reference to class definition in fParentName
Double_t GetValue(Int_t i, Int_t len, bool subarr=false) const
bool fInInitInfo
! True during the 2nd part of InitInfo (cut recursion).
void BuildTitle(const char *name)
Set branch and leaf name and title in the case of a container sub-branch.
virtual Int_t GetMaximum() const
Return maximum count value of the branchcount if any.
TString fParentName
Name of parent class.
void ReadLeavesCollectionSplitPtrMember(TBuffer &b)
Read leaves into i/o buffers for this branch.
TClassRef fBranchClass
! Reference to class definition in fClassName
TStreamerInfoActions::TIDs fNewIDs
! Nested List of the serial number of all the StreamerInfo to be used.
Int_t GetStreamerType() const
TClass * GetCurrentClass()
Return a pointer to the current type of the data member corresponding to branch element.
UInt_t fCheckSum
CheckSum of class.
void ResetAfterMerge(TFileMergeInfo *) override
Reset a Branch after a Merge operation (drop data but keep customizations)
TStreamerInfoActions::TActionSequence * fReadActionSequence
! Set of actions to be executed to extract the data from the basket.
void FillLeavesClones(TBuffer &b)
Write leaves into i/o buffers for this branch.
void ReadLeavesMemberBranchCount(TBuffer &b)
Read leaves into i/o buffers for this branch.
void SetReadLeavesPtr()
Set the ReadLeaves pointer to execute the expected operations.
Int_t Unroll(const char *name, TClass *cltop, TClass *cl, char *ptr, Int_t basketsize, Int_t splitlevel, Int_t btype)
Split class cl into sub-branches of this branch.
void FillLeavesMakeClass(TBuffer &b)
Write leaves into i/o buffers for this branch.
void FillLeavesCollectionSplitVectorPtrMember(TBuffer &b)
Write leaves into i/o buffers for this branch.
void FillLeavesCollection(TBuffer &b)
Write leaves into i/o buffers for this branch.
Int_t fID
element serial number in fInfo
char * GetAddress() const override
Get the branch address.
void FillLeavesMemberCounter(TBuffer &b)
Write leaves into i/o buffers for this branch.
void FillLeavesCollectionSplitPtrMember(TBuffer &b)
Write leaves into i/o buffers for this branch.
void SetAddress(void *addobj) override
Point this branch at an object.
TStreamerInfo * GetInfoImp() const
Get streamer info for the branch class.
virtual void SetTargetClass(const char *name)
Set the name of the class of the in-memory object into which the data will loaded.
virtual void ResetDeleteObject()
Release ownership of any allocated objects.
virtual const char * GetParentName() const
void ValidateAddress() const
TVirtualCollectionIterators * fWriteIterators
! holds the read (non-staging) iterators when the branch is of fType==4 and associative containers.
void PrintValue(Int_t i) const
Prints values of leaves.
TVirtualArray * fOnfileObject
! Place holder for the onfile representation of data members.
virtual const char * GetTypeName() const
Return type name of element in the branch.
void FillLeavesAssociativeCollectionMember(TBuffer &b)
Write leaves into i/o buffers for this branch.
void Init(TTree *tree, TBranch *parent, const char *name, TStreamerInfo *sinfo, Int_t id, char *pointer, Int_t basketsize=32000, Int_t splitlevel=0, Int_t btype=0)
Init when the branch object is not a TClonesArray nor an STL container.
T GetTypedValue(Int_t i, Int_t len, bool subarr=false) const
TClassRef fClonesClass
! Reference to class definition in fClonesName
virtual void * GetValuePointer() const
Returns pointer to first data element of this branch.
void ReadLeavesImpl(TBuffer &b)
Unconfiguration Read Leave function.
bool fInitOffsets
! Initialization flag to not endlessly recalculate offsets
void SetupInfo()
Set the value of fInfo.
void FillLeavesImpl(TBuffer &b)
Unconfiguration Fill Leave function.
void FillLeavesClonesMember(TBuffer &b)
Write leaves into i/o buffers for this branch.
TClassRef fCurrentClass
! Reference to current (transient) class definition
char * GetObject() const
Return a pointer to our object.
void UpdateFile() override
Refresh the value of fDirectory (i.e.
TStreamerInfo * FindOnfileInfo(TClass *valueClass, const TObjArray &branches) const
bool SetMakeClass(bool decomposeObj=true) override
Set the branch in a mode where the object are decomposed (Also known as MakeClass mode).
void ReadLeavesClones(TBuffer &b)
Read leaves into i/o buffers for this branch.
Int_t * fBranchOffset
! Sub-Branch offsets with respect to current transient class
virtual void ResetInitInfo(bool recurse)
Reset offset and StreamerInfo information from this branch.
friend class TLeafElement
TString GetFullName() const override
Return the 'full' name of the branch.
void ReadLeavesMakeClass(TBuffer &b)
Read leaves into i/o buffers for this branch.
TBranchElement()
Default and I/O constructor.
void FillLeavesCustomStreamer(TBuffer &b)
Write leaves into i/o buffers for this branch.
virtual const char * GetClonesName() const
virtual TClass * GetClass() const
Int_t fMaximum
Maximum entries for a TClonesArray or variable array.
void ReadLeavesMemberCounter(TBuffer &b)
Read leaves into i/o buffers for this branch.
Int_t fBranchID
! ID number assigned by a TRefTable.
TLeaf * FindLeaf(const char *name) override
Find the leaf corresponding to the name 'searchname'.
TVirtualCollectionIterators * fIterators
! holds the iterators when the branch is of fType==4.
void ReleaseObject()
Delete any object we may have allocated on a previous call to SetAddress.
TClassRef fTargetClass
! Reference to the target in-memory class
void Browse(TBrowser *b) override
Browse the branch content.
void FillLeavesMemberBranchCount(TBuffer &b)
Write leaves into i/o buffers for this branch.
bool IsFolder() const override
Return true if more than one leaf, false otherwise.
virtual void SetMissing()
Set offset of the object (to which the data member represented by this branch belongs) inside its con...
TString fClonesName
Name of class in TClonesArray (if any)
TBranchElement * fBranchCount
pointer to primary branchcount branch
void ReadLeavesMember(TBuffer &b)
Read leaves into i/o buffers for this branch.
Version_t fClassVersion
Version number of class.
TVirtualCollectionPtrIterators * fPtrIterators
! holds the iterators when the branch is of fType==4 and it is a split collection of pointers.
TBranch * FindBranch(const char *name) override
Find the immediate sub-branch with passed name.
void Streamer(TBuffer &) override
Stream an object of class TBranchElement.
virtual void InitInfo()
Init the streamer info for the branch class, try to compensate for class code unload/reload and schem...
virtual void InitializeOffsets()
Initialize the base class subobjects offsets of our sub-branches and set fOffset if we are a containe...
const char * GetIconName() const override
Return icon name depending on type of branch element.
TClass * GetParentClass()
Return a pointer to the parent class of the branch element.
Int_t GetExpectedType(TClass *&clptr, EDataType &type) override
Fill expectedClass and expectedType with information on the data type of the object/values contained ...
bool fInit
! Initialization flag for branch assignment
TVirtualCollectionProxy * fCollProxy
! collection interface (if any)
void SetFillActionSequence()
Set the sequence of actions needed to write the data out from the buffer.
void SetObject(void *objadd) override
Set object this branch is pointing to.
Int_t fStreamerType
branch streamer type
void ReadLeavesCollectionSplitVectorPtrMember(TBuffer &b)
Read leaves into i/o buffers for this branch.
bool GetMakeClass() const override
Return whether this branch is in a mode where the object are decomposed or not (Also known as MakeCla...
void SetFillLeavesPtr()
Set the FillLeaves pointer to execute the expected operations.
void ReadLeavesCollectionMember(TBuffer &b)
Read leaves into i/o buffers for this branch.
A branch containing and managing a TRefTable for TRef autoloading.
A Branch handling STL collection of pointers (vectors, lists, queues, sets and multisets) while stori...
A TTree is a list of TBranches.
TString fFileName
Name of file where buffers are stored ("" if in same file as Tree header)
Int_t fEntryOffsetLen
Initial Length of fEntryOffset table in the basket buffers.
Int_t fMaxBaskets
Maximum number of Baskets so far.
FillLeaves_t fFillLeaves
! Pointer to the FillLeaves implementation to use.
virtual TString GetFullName() const
Return the 'full' name of the branch.
void(TBranch::* ReadLeaves_t)(TBuffer &b)
@ kBranchAny
Branch is an object*.
@ kBranchObject
Branch is a TObject*.
@ kDoNotProcess
Active bit for branches.
TObjArray fLeaves
-> List of leaves of this branch
char * fAddress
! Address of 1st leaf (variable or object)
TObjArray * GetListOfBranches()
virtual TList * GetBrowsables()
Returns (and, if 0, creates) browsable objects for this branch See TVirtualBranchBrowsable::FillListO...
Int_t fOffset
Offset of this branch.
Long64_t * fBasketEntry
[fMaxBaskets] Table of first entry in each basket
virtual Int_t GetEntry(Long64_t entry=0, Int_t getall=0)
Read all leaves of entry and return total number of bytes read.
TIOFeatures GetIOFeatures() const
Returns the IO settings currently in use for this branch.
Long64_t fReadEntry
! Current entry number when reading
void Print(Option_t *option="") const override
Print TBranch parameters.
TBranch * GetSubBranch(const TBranch *br) const
Find the parent branch of child.
ReadLeaves_t fReadLeaves
! Pointer to the ReadLeaves implementation to use.
void(TBranch::* FillLeaves_t)(TBuffer &b)
virtual void SetAutoDelete(bool autodel=true)
Set the automatic delete bit.
virtual TLeaf * FindLeaf(const char *name)
Find the leaf corresponding to the name 'searchname'.
Long64_t GetReadEntry() const
Long64_t GetEntries() const
Int_t fNleaves
! Number of leaves
Int_t fSplitLevel
Branch split level.
virtual void UpdateFile()
Refresh the value of fDirectory (i.e.
Int_t * fBasketBytes
[fMaxBaskets] Length of baskets on file
bool IsAutoDelete() const
Return true if an existing object in a TBranchObject must be deleted.
TObjArray fBranches
-> List of Branches of this branch
virtual void ResetAfterMerge(TFileMergeInfo *)
Reset a Branch.
virtual TBranch * FindBranch(const char *name)
Find the immediate sub-branch with passed name.
TDirectory * fDirectory
! Pointer to directory where this branch buffers are stored
TObjArray fBaskets
-> List of baskets of this branch
void SetIOFeatures(TIOFeatures &features)
TBranch * fMother
! Pointer to top-level parent branch in the tree.
TBranch * fParent
! Pointer to parent branch.
Int_t fWriteBasket
Last basket number written.
Long64_t * fBasketSeek
[fMaxBaskets] Addresses of baskets on file
TObjArray * GetListOfLeaves()
Int_t fReadBasket
! Current basket number when reading
Int_t fBasketSize
Initial Size of Basket Buffer.
virtual void Reset(Option_t *option="")
Reset a Branch.
virtual void SetBasketSize(Int_t bufsize)
Set the basket size The function makes sure that the basket size is greater than fEntryOffsetlen.
Long64_t fEntryNumber
Current entry number (last one filled in this branch)
TBranch * GetMother() const
Get our top-level parent branch in the tree.
Int_t fCompress
Compression level and algorithm.
virtual Int_t FillImpl(ROOT::Internal::TBranchIMTHelper *)
Loop on all leaves of this branch to fill Basket buffer.
Long64_t fEntries
Number of entries.
TTree * fTree
! Pointer to Tree header
Using a TBrowser one can browse all ROOT objects.
The concrete implementation of TBuffer for writing/reading to/from a ROOT file or socket.
Buffer base class used for serializing objects.
TClassRef is used to implement a permanent reference to a TClass object.
void SetName(const char *new_name)
TClass * GetClass() const
const char * GetClassName()
TClass instances represent classes, structs and namespaces in the ROOT type system.
void Streamer(void *obj, TBuffer &b, const TClass *onfile_class=nullptr) const
TDataMember * GetDataMember(const char *datamember) const
Return pointer to datamember object with name "datamember".
Bool_t CanSplit() const
Return true if the data member of this TClass can be saved separately.
TVirtualStreamerInfo * GetStreamerInfoAbstractEmulated(Int_t version=0) const
For the case where the requestor class is emulated and this class is abstract, returns a pointer to t...
void CopyCollectionProxy(const TVirtualCollectionProxy &)
Replaces the collection proxy for this class.
Bool_t HasCustomStreamerMember() const
The class has a Streamer method and it is implemented by the user or an older (not StreamerInfo based...
void Destructor(void *obj, Bool_t dtorOnly=kFALSE)
Explicitly call destructor for object.
TClassStreamer * GetStreamer() const
Return the Streamer Class allowing streaming (if any).
Bool_t CanIgnoreTObjectStreamer()
const TObjArray * GetStreamerInfos() const
Bool_t IsLoaded() const
Return true if the shared library of this class is currently in the a process's memory.
Bool_t IsTObject() const
Return kTRUE is the class inherits from TObject.
Bool_t IsForeign() const
Return kTRUE is the class is Foreign (the class does not have a Streamer method).
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,...
Bool_t InheritsFrom(const char *cl) const override
Return kTRUE if this class inherits from a class with name "classname".
TVirtualCollectionProxy * GetCollectionProxy() const
Return the proxy describing the collection (if any).
Long_t Property() const override
Returns the properties of the TClass as a bit field stored as a Long_t value.
TVirtualStreamerInfo * FindStreamerInfo(TObjArray *arr, UInt_t checksum) const
Find the TVirtualStreamerInfo in the StreamerInfos corresponding to checksum.
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.
An array of clone (identical) objects.
All ROOT classes may have RTTI (run time type identification) support added.
const char * GetTypeName() const
Get the decayed type name of this data member, removing const and volatile qualifiers,...
Basic data type descriptor (datatype information is obtained from CINT).
Describe directory structure in memory.
virtual TFile * GetFile() const
A ROOT file is an on-disk file, usually with extension .root, that stores objects in a file-system-li...
A TLeaf for the general case when using the branches created via a TStreamerInfo (i....
A TLeaf describes individual elements of a TBranch See TBranch structure in TTree.
virtual void SetTitle(const char *title="")
Set the title of the TNamed.
const char * GetName() const override
Returns name of object.
const char * GetTitle() const override
Returns title of object.
virtual void SetName(const char *name)
Set the name of the TNamed.
Int_t GetEntriesFast() const
Int_t IndexOf(const TObject *obj) const override
Int_t GetEntries() const override
Return the number of objects in array (i.e.
TObject * At(Int_t idx) const override
TObject * UncheckedAt(Int_t i) const
Bool_t IsEmpty() const override
TObject * FindObject(const char *name) const override
Find an object in this collection using its name.
void Add(TObject *obj) override
Mother of all ROOT objects.
friend class TClonesArray
R__ALWAYS_INLINE Bool_t TestBit(UInt_t f) const
virtual void Warning(const char *method, const char *msgfmt,...) const
Issue warning message.
void SetBit(UInt_t f, Bool_t set)
Set or unset the user status bits as specified in f.
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
virtual void Fatal(const char *method, const char *msgfmt,...) const
Issue fatal error message.
virtual TClass * IsA() const
virtual void Info(const char *method, const char *msgfmt,...) const
Issue info message.
The TRealData class manages the effective list of all data members for a given class.
Describe one element (data member) to be Streamed.
const char * GetTypeName() const
static SequencePtr WriteMemberWiseActionsViaProxyGetter(TStreamerInfo *, TVirtualCollectionProxy *collectionProxy, TClass *)
static SequencePtr WriteMemberWiseActionsGetter(TStreamerInfo *info, TVirtualCollectionProxy *, TClass *)
static SequencePtr ConversionReadMemberWiseActionsViaProxyGetter(TStreamerInfo *info, TVirtualCollectionProxy *collectionProxy, TClass *originalClass)
void Print(Option_t *="") const override
This method must be overridden when a class wants to print itself.
static SequencePtr WriteMemberWiseActionsCollectionCreator(TStreamerInfo *info, TVirtualCollectionProxy *collectionProxy, TClass *)
static SequencePtr ReadMemberWiseActionsCollectionCreator(TStreamerInfo *info, TVirtualCollectionProxy *collectionProxy, TClass *)
static SequencePtr ReadMemberWiseActionsGetter(TStreamerInfo *info, TVirtualCollectionProxy *, TClass *)
SequencePtr(*)(TStreamerInfo *info, TVirtualCollectionProxy *collectionProxy, TClass *originalClass) SequenceGetter_t
static SequencePtr WriteMemberWiseActionsCollectionGetter(TStreamerInfo *info, TVirtualCollectionProxy *, TClass *)
ActionContainer_t fActions
static SequencePtr ReadMemberWiseActionsCollectionGetter(TStreamerInfo *info, TVirtualCollectionProxy *, TClass *)
void AddToOffset(Int_t delta)
static SequencePtr ReadMemberWiseActionsViaProxyGetter(TStreamerInfo *info, TVirtualCollectionProxy *collectionProxy, TClass *)
Base class of the Configurations.
TVirtualStreamerInfo * fInfo
TStreamerInfo form which the action is derived.
UInt_t fElemId
Identifier of the TStreamerElement.
Describes a persistent version of a class.
TStreamerElement * GetElement(Int_t id) const override
T GetTypedValue(char *pointer, Int_t i, Int_t j, Int_t len) const
Return value of element i in object at pointer.
Int_t GetNelement() const
T GetTypedValueSTLP(TVirtualCollectionProxy *cont, Int_t i, Int_t j, Int_t k, Int_t eoffset) const
Return value of element i in object number j in a pointer to STL container and eventually element k i...
T GetTypedValueSTL(TVirtualCollectionProxy *cont, Int_t i, Int_t j, Int_t k, Int_t eoffset) const
Return value of element i in object number j in an STL container and eventually element k in a sub-ar...
TClass * GetClass() const override
T GetTypedValueClones(TClonesArray *clones, Int_t i, Int_t j, Int_t k, Int_t eoffset) const
TStreamerElement * GetStreamerElement(const char *datamember, Int_t &offset) const override
Return the StreamerElement of "datamember" inside our class or any of its base classes.
UInt_t GetCheckSum() const override
static constexpr Ssiz_t kNPOS
const char * Data() const
Ssiz_t Last(char c) const
Find last occurrence of a character c.
TString & Remove(Ssiz_t pos)
static TString Format(const char *fmt,...)
Static method which formats a string using a printf style format descriptor and return a TString.
void Form(const char *fmt,...)
Formats a string using a printf style format descriptor.
Ssiz_t Index(const char *pat, Ssiz_t i=0, ECaseCompare cmp=kExact) const
A TTree represents a columnar dataset.
TStreamerInfo * BuildStreamerInfo(TClass *cl, void *pointer=nullptr, bool canOptimize=true)
Build StreamerInfo for class cl.
virtual TBranch * GetBranch(const char *name)
Return pointer to the branch with the given name in this tree or its friends.
Int_t GetDefaultEntryOffsetLen() const
virtual TObjArray * GetListOfLeaves()
void Draw(Option_t *opt) override
Default Draw method for all objects.
TDirectory * GetDirectory() const
@ kSplitCollectionOfPointers
virtual TBranchRef * GetBranchRef() const
virtual Long64_t GetReadEntry() const
Long64_t GetDebugMin() const
Wrapper around an object and giving indirect access to its content even if the object is not of a cla...
char * GetObjectAt(UInt_t ind) const
void SetSize(UInt_t size)
Small helper class to generically acquire and release iterators.
void CreateIterators(void *collection, TVirtualCollectionProxy *proxy)
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.
@ kNeedDelete
The collection contains directly or indirectly (via other collection) some pointers that need explici...
virtual TClass * GetValueClass() const =0
If the value type is a user-defined class, return a pointer to the TClass representing the value type...
virtual Int_t GetCollectionType() const =0
Return the type of the proxied collection (see enumeration TClassEdit::ESTLType)
virtual Bool_t HasPointers() const =0
Return true if the content is of type 'pointer to'.
void CreateIterators(void *collection, TVirtualCollectionProxy *proxy)
Abstract Interface class describing Streamer information for one class.
Bool_t IsCompiled() const
virtual UInt_t GetCheckSum() const =0
@ kUChar
Equal to TDataType's kchar.
virtual TObjArray * GetElements() const =0
Short_t Min(Short_t a, Short_t b)
Returns the smallest of a and b.
std::vector< TIDNode > TIDs