58#define FZ_STAGE_CONCAT_(a, b) a##b
59#define FZ_STAGE_CONCAT(a, b) FZ_STAGE_CONCAT_(a, b)
68#define FZ_REGISTER_STAGE_FACTORY(TYPE, FN) \
70 const ::fz::detail::StageFactoryRegistrar \
71 FZ_STAGE_CONCAT(FZ_STAGE_FACTORY_REGISTRAR_, __LINE__){(TYPE), (FN)}; \
80#define FZ_REGISTER_SIMPLE_STAGE(TYPE, STAGE_CLASS) \
82 ::fz::Stage* FZ_STAGE_CONCAT(FZ_STAGE_SIMPLE_FACTORY_, __LINE__)(const uint8_t* config, \
83 size_t config_size) { \
84 auto* s = new STAGE_CLASS(); \
85 s->deserializeHeader(config, config_size); \
88 const ::fz::detail::StageFactoryRegistrar \
89 FZ_STAGE_CONCAT(FZ_STAGE_SIMPLE_REGISTRAR_, __LINE__){(TYPE), \
90 &FZ_STAGE_CONCAT(FZ_STAGE_SIMPLE_FACTORY_, __LINE__)}; \
Stage * createStage(StageType type, const uint8_t *config, size_t config_size)
bool hasStageHeaderFactory(StageType type)
StageType
Stage type identifiers written into the FZM header.
Definition fzm_format.h:88
void registerStageHeaderFactory(StageType type, StageHeaderFactory fn)
Stage *(*)(const uint8_t *config, size_t config_size) StageHeaderFactory
Definition stage_registry.h:31
Base class interface for all compression stages.
Definition stage_registry.h:48