#ifndef COMPOST_DEF_LOAD_SOURCE_IDENTIFIER # error should define COMPOST_DEF_LOAD_SOURCE_IDENTIFIER. #endif #ifndef COMPOST_DEF_LOAD_SOURCE_FILE # error should define COMPOST_DEF_LOAD_SOURCE_FILE. #endif #define COMPOST_LOAD_IDENTIFIER_DETAIL_CAT(id, suffix) COMPOST_LOAD_IDENTIFIER_DETAIL_CAT_I(id, suffix) #define COMPOST_LOAD_IDENTIFIER_DETAIL_CAT_I(id, suffix) COMPOST_LOAD_IDENTIFIER_DETAIL_CAT_II(id ## suffix) #define COMPOST_LOAD_IDENTIFIER_DETAIL_CAT_II(res) res #define COMPOST_LOAD_DETAIL_IDENTIFIER(id) COMPOST_LOAD_IDENTIFIER_DETAIL_CAT( \ COMPOST_LOAD_IDENTIFIER_DETAIL_CAT(COMPOST_DEF_LOAD_SOURCE_IDENTIFIER, id), \ _compost_load_source_detail \ ) #define COMPOST_LOAD_IDENTIFIER COMPOST_DEF_LOAD_SOURCE_IDENTIFIER #ifdef COMPOST_DEF_LOAD_INFO_IDENTIFIER # define COMPOST_LOAD_INFO_IDENTIFIER COMPOST_DEF_LOAD_INFO_IDENTIFIER #else # define COMPOST_LOAD_INFO_IDENTIFIER COMPOST_LOAD_DETAIL_IDENTIFIER(info) #endif #ifdef COMPOST_DEF_LOAD_SOURCE_INDEX # define COMPOST_LOAD_SOURCE_INDEX COMPOST_DEF_LOAD_SOURCE_INDEX #else # define COMPOST_LOAD_SOURCE_INDEX 0 #endif SPROUT_STATIC_CONSTEXPR sprout::compost::sources::version_type COMPOST_LOAD_DETAIL_IDENTIFIER(version) = # define COMPOST_LOADING_SOURCE_VERSION # include COMPOST_DEF_LOAD_SOURCE_FILE # undef COMPOST_LOADING_SOURCE_VERSION ; static_assert(COMPOST_LOAD_DETAIL_IDENTIFIER(version) <= 0, "Unsupported compost src version"); SPROUT_STATIC_CONSTEXPR sprout::compost::sources::info_type COMPOST_LOAD_INFO_IDENTIFIER = { # define COMPOST_LOADING_SOURCE_INFO # include COMPOST_DEF_LOAD_SOURCE_FILE # undef COMPOST_LOADING_SOURCE_INFO }; SPROUT_STATIC_CONSTEXPR sprout::compost::sources::sound_type< COMPOST_LOAD_INFO_IDENTIFIER.size > COMPOST_LOAD_IDENTIFIER( COMPOST_LOAD_INFO_IDENTIFIER, # define COMPOST_LOADING_SOURCE_DATA # include COMPOST_DEF_LOAD_SOURCE_FILE # undef COMPOST_LOADING_SOURCE_DATA ); #undef COMPOST_LOAD_IDENTIFIER #undef COMPOST_LOAD_INFO_IDENTIFIER #undef COMPOST_LOAD_SOURCE_INDEX #undef COMPOST_LOAD_DETAIL_IDENTIFIER #undef COMPOST_LOAD_IDENTIFIER_DETAIL_CAT #undef COMPOST_LOAD_IDENTIFIER_DETAIL_CAT_I #undef COMPOST_LOAD_IDENTIFIER_DETAIL_CAT_II #undef COMPOST_DEF_LOAD_SOURCE_IDENTIFIER #undef COMPOST_DEF_LOAD_SOURCE_FILE #ifdef COMPOST_DEF_LOAD_INFO_IDENTIFIER # undef COMPOST_DEF_LOAD_INFO_IDENTIFIER #endif #ifdef COMPOST_DEF_LOAD_SOURCE_INDEX # undef COMPOST_DEF_LOAD_SOURCE_INDEX #endif