diff --git a/src/hb-open-type-private.hh b/src/hb-open-type-private.hh index 56a8baeb5..f45351e57 100644 --- a/src/hb-open-type-private.hh +++ b/src/hb-open-type-private.hh @@ -89,9 +89,14 @@ inline Type& StructAfter(TObject &X) * Size checking */ +#define ASSERT_SIZE(_thing, _size) ASSERT_STATIC (sizeof (_thing) == (_size)) + +#define _DEFINE_SIZE_ASSERTION(_size) \ + inline void _size_assertion (void) const { ASSERT_SIZE (*this, _size); } + + #define DEFINE_SIZE_STATIC(size) \ - inline void _size_assertion (void) const \ - { ASSERT_STATIC (sizeof (*this) == (size)); } \ + _DEFINE_SIZE_ASSERTION (size); \ static inline unsigned int get_size (void) { return (size); } \ static const unsigned int static_size = (size); \ static const unsigned int min_size = (size) @@ -101,18 +106,15 @@ inline Type& StructAfter(TObject &X) #define VAR0 (VAR+0) #define DEFINE_SIZE_VAR0(size) \ - inline void _size_assertion (void) const \ - { ASSERT_STATIC (sizeof (*this) == (size)); } \ + _DEFINE_SIZE_ASSERTION (size); \ static const unsigned int min_size = (size) #define DEFINE_SIZE_VAR(size, _var_type) \ - inline void _size_assertion (void) const \ - { ASSERT_STATIC (sizeof (*this) == (size) + VAR0 * sizeof (_var_type)); } \ + _DEFINE_SIZE_ASSERTION ((size) + VAR0 * sizeof (_var_type)); \ static const unsigned int min_size = (size) #define DEFINE_SIZE_VAR2(size, _var_type1, _var_type2) \ - inline void _size_assertion (void) const \ - { ASSERT_STATIC (sizeof (*this) == (size) + VAR0 * sizeof (_var_type1) + VAR0 * sizeof (_var_type2)); } \ + _DEFINE_SIZE_ASSERTION ((size) + VAR0 * sizeof (_var_type1) + VAR0 * sizeof (_var_type2)); \ static const unsigned int min_size = (size)