diff --git a/src/hb-machinery.hh b/src/hb-machinery.hh index 0197f6191..602269081 100644 --- a/src/hb-machinery.hh +++ b/src/hb-machinery.hh @@ -305,38 +305,22 @@ struct hb_table_lazy_loader_t : hb_lazy_loader_tget_stored (); } }; -template -struct hb_font_funcs_lazy_loader_t : hb_lazy_loader_t -{ - static void destroy (hb_font_funcs_t *p) - { hb_font_funcs_destroy (p); } - static const hb_font_funcs_t *get_null () - { return hb_font_funcs_get_empty (); } -}; -template -struct hb_unicode_funcs_lazy_loader_t : hb_lazy_loader_t -{ - static void destroy (hb_unicode_funcs_t *p) - { hb_unicode_funcs_destroy (p); } - static const hb_unicode_funcs_t *get_null () - { return hb_unicode_funcs_get_empty (); } -}; -template -struct hb_draw_funcs_lazy_loader_t : hb_lazy_loader_t -{ - static void destroy (hb_draw_funcs_t *p) - { hb_draw_funcs_destroy (p); } - static const hb_draw_funcs_t *get_null () - { return hb_draw_funcs_get_empty (); } -}; -template -struct hb_paint_funcs_lazy_loader_t : hb_lazy_loader_t -{ - static void destroy (hb_paint_funcs_t *p) - { hb_paint_funcs_destroy (p); } - static const hb_paint_funcs_t *get_null () - { return hb_paint_funcs_get_empty (); } -}; +#define HB_DEFINE_TYPE_FUNCS_LAZY_LOADER_T(Type) \ + template \ + struct hb_##Type##_funcs_lazy_loader_t : hb_lazy_loader_t \ + { \ + static void destroy (hb_##Type##_funcs_t *p) \ + { hb_##Type##_funcs_destroy (p); } \ + static const hb_##Type##_funcs_t *get_null () \ + { return hb_##Type##_funcs_get_empty (); } \ + } + +HB_DEFINE_TYPE_FUNCS_LAZY_LOADER_T (font); +HB_DEFINE_TYPE_FUNCS_LAZY_LOADER_T (unicode); +HB_DEFINE_TYPE_FUNCS_LAZY_LOADER_T (draw); +HB_DEFINE_TYPE_FUNCS_LAZY_LOADER_T (paint); + +#undef HB_DEFINE_TYPE_FUNCS_LAZY_LOADER_T #endif /* HB_MACHINERY_HH */