Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Expansion of the TStreamerInfo actions. #16995

Open
wants to merge 46 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
46 commits
Select commit Hold shift + click to select a range
b2d242e
meta: Add TClass::HasDirectStreamerInfoUse
pcanal Nov 15, 2024
7f17b54
io: Correct setting of element's fNewType for pointer to STL collection
pcanal Sep 16, 2024
97bcf46
io: Correct the class used for ReadVersion for kStreamer case.
pcanal Nov 13, 2024
d07c11f
io: TStreamerSTL: set fNewClass/fClassObject for collection of enums
pcanal Sep 19, 2024
d5c4482
io actions: Delete unused TActionSequence default ctor
pcanal Nov 13, 2024
e34e08f
io actions: Add support for writing collections, including simple con…
pcanal Sep 13, 2024
81255e5
io actions: Add TConfObject
pcanal Nov 20, 2024
6102003
io actions: Add binary read action for kStreamer.
pcanal Nov 20, 2024
6c5d490
io actions: Add binary read action for kStreamerLoop
pcanal Nov 20, 2024
39b1a43
io actions: Add read actions for kBase
pcanal Nov 20, 2024
6d5f71e
io actions: Add read actions for kAny
pcanal Nov 20, 2024
4ecfe57
io actions: Add write case kObject, kTNamed, kTString
pcanal Nov 14, 2024
b639760
io actions: Remove implemented sketch/comment for kSTL
pcanal Nov 14, 2024
6616f27
io actions: Add write action for kBase
pcanal Nov 14, 2024
aa133fd
io actions: Add write action for kStreamLoop
pcanal Nov 14, 2024
30c2fec
io actions: Add write action for kAny
pcanal Nov 14, 2024
826dda3
io actions: Add write action for kStreamer
pcanal Nov 14, 2024
0841eed
io actions: Remove unused sketch/comment
pcanal Nov 14, 2024
6e11b3c
io actions: rename Looper's ReadAction to LoopOverCollection
pcanal Nov 14, 2024
141ff2c
io actions: Add looper write actions for kTObject, kTNamed and kTString
pcanal Nov 14, 2024
0bf9820
io actions: Remove unreachable break statement
pcanal Nov 15, 2024
938dc25
io actions: Add EMode to distinguish read and write instantiation.
pcanal Nov 15, 2024
b516e80
io actions: Add GenericLooper.
pcanal Nov 15, 2024
94e7d5f
io actions: Add ScalarLooper
pcanal Nov 19, 2024
bba479f
io actions: Add kStreamer to memberwise streaming
pcanal Nov 15, 2024
b625392
io actions: Add kAny to memberwise streaming
pcanal Nov 15, 2024
cbfda96
io actions: Move StreamerLooper from global to Looper
pcanal Nov 19, 2024
421255b
io actions: Correct class used for StreamerLoop version read
pcanal Nov 19, 2024
99df53e
io actions: Add kStreamLoop to memberwise streaming
pcanal Nov 15, 2024
f4736f7
NFC: remove trailing semi colon
pcanal Nov 20, 2024
35cebb3
io actions: Add creation of subsequence.
pcanal Nov 20, 2024
63c711b
io actions: add kBase to memberwise streaming
pcanal Nov 20, 2024
520b946
io actions: Rename CreateActionSquence to CreateReadActionSquence
pcanal Nov 20, 2024
46749af
io actions: Remove unused comments
pcanal Nov 20, 2024
128d8ff
NFC: Correct indentation
pcanal Nov 20, 2024
b168e37
io actions: Add creation of write subsequence.
pcanal Nov 20, 2024
74f5825
io actions: add kBase to write memberwise streaming
pcanal Nov 20, 2024
0dd2f6c
io actions: add kStreamer to write memberwise streaming
pcanal Nov 20, 2024
f0c362b
io actions: add kStreamLoop to write memberwise streaming
pcanal Nov 20, 2024
8fa3a86
io actions: add kAny to write memberwise streaming
pcanal Nov 20, 2024
fad599c
io actions: memberwise write add support for conv and missing
pcanal Nov 20, 2024
dbd368e
io actions: Remove unreachable break statement
pcanal Nov 21, 2024
c9d3c07
io actions: add ability to write zero for missing field
pcanal Nov 21, 2024
138bc65
io: Swith ReadBuffer's kSTL and kSTp to call actions sequence
pcanal Nov 21, 2024
0b5f8b5
io actions: Simplify Read/Write kSTLp for text buffer
pcanal Nov 21, 2024
17097bc
io actions: Remove redundant code in TextWriting.
pcanal Oct 1, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 12 additions & 4 deletions core/meta/src/TStreamerElement.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -480,8 +480,10 @@ void TStreamerElement::ls(Option_t *) const
void TStreamerElement::SetArrayDim(Int_t dim)
{
fArrayDim = dim;
if (dim) fType += TVirtualStreamerInfo::kOffsetL;
fNewType = fType;
if (dim) {
fType += TVirtualStreamerInfo::kOffsetL;
fNewType += TVirtualStreamerInfo::kOffsetL;
}
pcanal marked this conversation as resolved.
Show resolved Hide resolved
pcanal marked this conversation as resolved.
Show resolved Hide resolved
}

////////////////////////////////////////////////////////////////////////////////
Expand Down Expand Up @@ -1715,7 +1717,10 @@ TStreamerSTL::TStreamerSTL(const char *name, const char *title, Int_t offset,
fCtype = proxy.GetType();
if (proxy.HasPointers()) fCtype += TVirtualStreamerInfo::kOffsetP;
}
if (TStreamerSTL::IsaPointer()) fType = TVirtualStreamerInfo::kSTLp;
if (TStreamerSTL::IsaPointer()) {
fType = TVirtualStreamerInfo::kSTLp;
fNewType = fType;
}
}

////////////////////////////////////////////////////////////////////////////////
Expand Down Expand Up @@ -1794,7 +1799,10 @@ TStreamerSTL::TStreamerSTL(const char *name, const char *title, Int_t offset,
}
}

if (TStreamerSTL::IsaPointer()) fType = TVirtualStreamerInfo::kSTLp;
if (TStreamerSTL::IsaPointer()) {
fType = TVirtualStreamerInfo::kSTLp;
fNewType = fType;
}
}

////////////////////////////////////////////////////////////////////////////////
Expand Down
6 changes: 4 additions & 2 deletions io/io/src/TStreamerInfo.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -535,8 +535,10 @@ void TStreamerInfo::Build(Bool_t isTransient)
element = new TStreamerSTLstring(dmName, dmTitle, offset, dmFull, dmIsPtr);
} else if (dm->IsSTLContainer()) {
TVirtualCollectionProxy *proxy = TClass::GetClass(dmType /* the underlying type */)->GetCollectionProxy();
if (proxy) element = new TStreamerSTL(dmName, dmTitle, offset, dmFull, *proxy, dmIsPtr);
else element = new TStreamerSTL(dmName, dmTitle, offset, dmFull, dmFull, dmIsPtr);
if (proxy)
element = new TStreamerSTL(dmName, dmTitle, offset, dmFull, *proxy, dmIsPtr);
else
element = new TStreamerSTL(dmName, dmTitle, offset, dmFull, dmFull, dmIsPtr);
bool hasCustomAlloc = proxy ? proxy->GetProperties() & TVirtualCollectionProxy::kCustomAlloc : kFALSE;
if (((TStreamerSTL*)element)->GetSTLtype() != ROOT::kSTLvector || hasCustomAlloc) {
auto printErrorMsg = [&](const char* category)
Expand Down