// Detect how many regional blocks we expect. If we have no idea then
// just use what the maximum setting is.
- switch (EventHandler::GetDarcType(*darcHeader))
+ UInt_t darkType = EventHandler::GetDarcType(*darcHeader);
+ if (darkType == fgkDarcVadorhType)
{
- case fgkDarcVadorhType: fNoRegionals = 1; break;
- case fgkDarcDefaultType: fNoRegionals = 8; break;
- default: fNoRegionals = fMaxRegionals; break;
+ fNoRegionals = 1;
+ }
+ else if (darkType == fgkDarcDefaultType)
+ {
+ fNoRegionals = 8;
+ }
+ else
+ {
+ fNoRegionals = fMaxRegionals;
}
// Check if the DARC header indicates we expect more regionals than we
// Tell the handler that we have a new regional block and decode it.
// When done, tell the handler again.
+ // We call both versions of OnNewRegionalStruct so that user event
+ // handlers can implement the one they prefer to use.
const UChar_t* startOfLocals = current;
fHandler.OnNewRegionalStruct(regionalHeader, regionalScalars, startOfLocals);
+ fHandler.OnNewRegionalStructV2(iReg, regionalHeader, regionalScalars, startOfLocals);
current = DecodeLocalStructs(current, end, scalarEvent);
fHandler.OnEndOfRegionalStruct(regionalHeader, regionalScalars, startOfLocals);
+ fHandler.OnEndOfRegionalStructV2(iReg, regionalHeader, regionalScalars, startOfLocals);
}
// Now just check that there is no extra rubbish at the end of the DDL.
}
}
+ // Call both handlers for local structures so that the user decoder event
+ // handler class can implement the one it prefers to use.
fHandler.OnLocalStruct(localStruct, localScalars);
+ fHandler.OnLocalStructV2(iLocal, localStruct, localScalars);
}
return current;