Definition at line 73 of file TrigTSerializer.cxx.
◆ NO_SANITIZE_UNDEFINED()
static void* doReadObjectAny ROOT8367Workaround::TBufferFileWorkaround::NO_SANITIZE_UNDEFINED |
( |
TBufferFile * |
buf, |
|
|
const TClass * |
cl |
|
) |
| |
|
inlinestatic |
Definition at line 78 of file TrigTSerializer.cxx.
80 TBufferFileWorkaround* ba =
reinterpret_cast<TBufferFileWorkaround*
>(
buf);
81 return ba->ReadObjectAnyNV(
cl);
◆ ReadObjectAnyNV()
void * ROOT8367Workaround::TBufferFileWorkaround::ReadObjectAnyNV |
( |
const TClass * |
clCast | ) |
|
Definition at line 86 of file TrigTSerializer.cxx.
88 R__ASSERT(IsReading());
94 UInt_t startpos = UInt_t(fBufCur-fBuffer);
98 TClass *clRef = ReadClass(clCast, &
tag);
100 Int_t baseOffset = 0;
101 if (clRef && (clRef!=(TClass*)(-1)) && clCast) {
103 baseOffset = clRef->GetBaseClassOffset(clCast);
104 if (baseOffset == -1) {
107 if (!clCast->GetSchemaRules() ||
108 !clCast->GetSchemaRules()->HasRuleWithSourceClass(clRef->GetName()))
111 Error(
"ReadObject",
"got object of wrong class! requested %s but got %s",
112 clCast->GetName(), clRef->GetName());
114 CheckByteCount(startpos,
tag, (TClass*)0);
121 clRef =
const_cast<TClass*
>(clCast);
124 if (clCast->GetState() > TClass::kEmulated && clRef->GetState() <= TClass::kEmulated) {
126 Error(
"ReadObject",
"trying to read an emulated class (%s) to store in a compiled pointer (%s)",
127 clRef->GetName(),clCast->GetName());
128 CheckByteCount(startpos,
tag, (TClass*)0);
138 if (
obj == (
void*) -1)
obj = 0;
140 CheckByteCount(startpos,
tag, (TClass*)0);
141 return (
obj+baseOffset);
146 if (clRef == (TClass*) -1) {
147 if (fBufCur >= fBufMax)
return 0;
149 MapObject((TObject*) -1, startpos+
kMapOffset);
151 MapObject((
void*)0, 0, fMapCount);
152 CheckByteCount(startpos,
tag, (TClass*)0);
160 tag += fDisplacement;
161 tag = CheckObject(
tag, clCast);
163 if (
tag > (UInt_t)fMap->GetSize()) {
164 Error(
"ReadObject",
"object tag too large, I/O buffer corrupted");
169 obj = (
char *) (Long_t)fMap->GetValue(
tag);
170 clRef = (TClass*) (Long_t)fClassMap->GetValue(
tag);
172 if (clRef && (clRef!=(TClass*)(-1)) && clCast) {
174 baseOffset = clRef->GetBaseClassOffset(clCast);
175 if (baseOffset == -1) {
176 Error(
"ReadObject",
"Got object of wrong class (Got %s while expecting %s)",
177 clRef->GetName(),clCast->GetName());
194 obj = (
char*)clRef->New();
196 Error(
"ReadObject",
"could not create object of class %s",
206 MapObject(
obj, clRef, fMapCount);
209 clRef->Streamer(
obj, *
this, clOnfile );
211 CheckByteCount(startpos,
tag, clRef);
214 return obj+baseOffset;
The documentation for this class was generated from the following file: