#ifndef __JABYENGINE_OVERLAY_DECLARATION__HPP__ #define __JABYENGINE_OVERLAY_DECLARATION__HPP__ // No include here because this header should be included in a namespace and we don't want multiple namespace definitions of OverlayHeader and OverlayLBA extern const JabyEngine::OverlayHeader overlay_header; extern const JabyEngine::OverlayLBA overlay_lba[]; #define __declare_overlay_header(function, enum_struct) \ [[gnu::used]] \ const JabyEngine::OverlayHeader __section(".header") overlay_header = {.execute = &function, .lba_size = static_cast(enum_struct::EndOfRequest)}; \ [[gnu::used]] \ const JabyEngine::OverlayLBA __section(".header.lbas") overlay_lba[static_cast(enum_struct::EndOfRequest)] = {0} #endif //!__JABYENGINE_OVERLAY_DECLARATION__HPP__