Definition at line 79 of file TrigTSerializer.cxx.
◆ NO_SANITIZE_UNDEFINED()
static void* doReadObjectAny ROOT8367Workaround::TBufferFileWorkaround::NO_SANITIZE_UNDEFINED |
( |
TBufferFile * |
buf, |
|
|
const TClass * |
cl |
|
) |
| |
|
inlinestatic |
Definition at line 84 of file TrigTSerializer.cxx.
86 TBufferFileWorkaround* ba =
reinterpret_cast<TBufferFileWorkaround*
>(
buf);
87 return ba->ReadObjectAnyNV(
cl);
◆ ReadObjectAnyNV()
void * ROOT8367Workaround::TBufferFileWorkaround::ReadObjectAnyNV |
( |
const TClass * |
clCast | ) |
|
Definition at line 92 of file TrigTSerializer.cxx.
94 R__ASSERT(IsReading());
100 UInt_t startpos = UInt_t(fBufCur-fBuffer);
104 TClass *clRef = ReadClass(clCast, &
tag);
105 TClass *clOnfile = 0;
106 Int_t baseOffset = 0;
107 if (clRef && (clRef!=invalidPtr) && clCast) {
109 baseOffset = clRef->GetBaseClassOffset(clCast);
110 if (baseOffset == -1) {
113 if (!clCast->GetSchemaRules() ||
114 !clCast->GetSchemaRules()->HasRuleWithSourceClass(clRef->GetName()))
117 Error(
"ReadObject",
"got object of wrong class! requested %s but got %s",
118 clCast->GetName(), clRef->GetName());
120 CheckByteCount(startpos,
tag, (TClass*)0);
127 clRef =
const_cast<TClass*
>(clCast);
130 if (clCast->GetState() > TClass::kEmulated && clRef->GetState() <= TClass::kEmulated) {
132 Error(
"ReadObject",
"trying to read an emulated class (%s) to store in a compiled pointer (%s)",
133 clRef->GetName(),clCast->GetName());
134 CheckByteCount(startpos,
tag, (TClass*)0);
144 if (
obj == (
void*) -1)
obj = 0;
146 CheckByteCount(startpos,
tag, (TClass*)0);
147 return (
obj+baseOffset);
152 if (clRef == invalidPtr) {
153 if (fBufCur >= fBufMax)
return 0;
155 MapObject((TObject*) -1, startpos+
kMapOffset);
157 MapObject((
void*)0, 0, fMapCount);
158 CheckByteCount(startpos,
tag, (TClass*)0);
166 tag += fDisplacement;
167 tag = CheckObject(
tag, clCast);
169 if (
tag > (UInt_t)fMap->GetSize()) {
170 Error(
"ReadObject",
"object tag too large, I/O buffer corrupted");
175 obj = (
char *) (Long_t)fMap->GetValue(
tag);
176 clRef = (TClass*) (Long_t)fClassMap->GetValue(
tag);
178 if (clRef && (clRef!=invalidPtr) && clCast) {
180 baseOffset = clRef->GetBaseClassOffset(clCast);
181 if (baseOffset == -1) {
182 Error(
"ReadObject",
"Got object of wrong class (Got %s while expecting %s)",
183 clRef->GetName(),clCast->GetName());
200 obj = (
char*)clRef->New();
202 Error(
"ReadObject",
"could not create object of class %s",
212 MapObject(
obj, clRef, fMapCount);
215 clRef->Streamer(
obj, *
this, clOnfile );
217 CheckByteCount(startpos,
tag, clRef);
220 return obj+baseOffset;
The documentation for this class was generated from the following file: