9#ifndef TRIGGERALGS_INCLUDE_TRIGGERALGS_TRIGGEROBJECTOVERLAY_HPP_
10#define TRIGGERALGS_INCLUDE_TRIGGERALGS_TRIGGEROBJECTOVERLAY_HPP_
51template<class Object, class Overlay = typename TypeToOverlayType<Object>::overlay_t,
56 Overlay* overlay =
reinterpret_cast<Overlay*
>(buffer);
57 overlay->data =
static_cast<Data
>(object);
58 overlay->n_inputs =
object.inputs.size();
59 for (
size_t i = 0; i <
object.inputs.size(); ++i) {
60 overlay->inputs[i] =
object.inputs[i];
66template<class Object, class Overlay = typename TypeToOverlayType<Object>::overlay_t>
73 return sizeof(Overlay) +
object.inputs.size() *
sizeof(
typename Overlay::input_t);
79template<class Object, class Overlay = typename TypeToOverlayType<Object>::overlay_t,
80 class Data =
typename TypeToOverlayType<Object>::data_t>
91 *
static_cast<Data*
>(&ret) = overlay.data;
92 for (uint64_t i = 0; i < overlay.n_inputs; ++i) {
93 ret.inputs.push_back(overlay.inputs[i]);
106template<class Object, class Overlay = typename TypeToOverlayType<Object>::overlay_t>
Object read_overlay_from_buffer(const void *buffer)
void write_overlay(const Object &object, void *buffer)
Object read_overlay(const Overlay &overlay)
size_t get_overlay_nbytes(const Object &object)