LDMX-Software / fire

Event-by-event processing framework using HDF5 and C++17
https://ldmx-software.github.io/fire/
GNU General Public License v3.0
1 stars 0 forks source link

Allow user to define type soft/hard choice #21

Closed tomeichlersmith closed 2 years ago

tomeichlersmith commented 2 years ago

Is your feature request related to a problem? Please describe. Demangling type names may change across systems and may even change across compiler versions. This leads us to want to make fire more future-proof by allowing the users to run fire without the string-based type checking that is done at various points.

Describe the solution you'd like Compile-time or run-time choice allowing users to effectively turn off the string-based type checking that is done. The places these demangled names are required to be effectively persisted across compiler versions is in the Event::add and Event::get methods.

https://github.com/LDMX-Software/fire/blob/9e62a02c909e865f6bf1c5cf9da1c738a4e982aa/include/fire/Event.h#L196-L209

https://github.com/LDMX-Software/fire/blob/9e62a02c909e865f6bf1c5cf9da1c738a4e982aa/include/fire/Event.h#L306-L317

You'll notice that this is only meant to prevent us from trying to coerce the data on disk into a event object class which cannot hold that data. We could allow the user to run in an "unsafe" mode where we just try to load the data without this run-time check - this may lead to very difficult to parse exceptions or undefined behavior in the destination class, so this mode should not be the default.