src/hb-machinery.hh | 39 ++++++++++++++++++++++----------------- src/hb-null.hh | 4 ++-- src/hb-ot-layout-common.hh | 8 ++++---- src/hb-ot-post-table.hh | 6 +++--- 4 files changed, 31 insertions(+), 26 deletions(-)
New commits: commit 8d778877b88155dec1808a994416ead0b3d98ae7 Author: Behdad Esfahbod <beh...@behdad.org> Date: Wed Nov 21 23:46:09 2018 -0500 .. diff --git a/src/hb-machinery.hh b/src/hb-machinery.hh index 24e45441..2f57fb6b 100644 --- a/src/hb-machinery.hh +++ b/src/hb-machinery.hh @@ -100,24 +100,28 @@ static inline Type& StructAfter(TObject &X) DEFINE_INSTANCE_ASSERTION (alignof (*this) == 1 && \ sizeof (*this) == (size)); \ inline unsigned int get_size (void) const { return (size); } \ - enum { static_size = (size) }; \ - enum { min_size = (size) } + enum { null_size = (size) }; \ + enum { min_size = (size) }; \ + enum { static_size = (size) } #define DEFINE_SIZE_UNION(size, _member) \ DEFINE_COMPILES_ASSERTION ((void) this->u._member.static_size); \ DEFINE_INSTANCE_ASSERTION (alignof (*this) == 1 && \ sizeof(this->u._member) == (size)); \ + enum { null_size = (size) }; \ enum { min_size = (size) } #define DEFINE_SIZE_MIN(size) \ DEFINE_INSTANCE_ASSERTION (alignof (*this) == 1 && \ sizeof (*this) >= (size)); \ + enum { null_size = (size) }; \ enum { min_size = (size) } #define DEFINE_SIZE_ARRAY(size, array) \ DEFINE_COMPILES_ASSERTION ((void) (array)[0].static_size); \ DEFINE_INSTANCE_ASSERTION (alignof (*this) == 1 && \ sizeof (*this) == (size) + VAR * sizeof ((array)[0])); \ + enum { null_size = (size) }; \ enum { min_size = (size) } #define DEFINE_SIZE_ARRAY_SIZED(size, array) \ diff --git a/src/hb-null.hh b/src/hb-null.hh index 25a24f05..51f653d2 100644 --- a/src/hb-null.hh +++ b/src/hb-null.hh @@ -52,7 +52,7 @@ static inline Type const & Null (void) { /* Specializations for arbitrary-content Null objects expressed in bytes. */ #define DECLARE_NULL_NAMESPACE_BYTES(Namespace, Type) \ } /* Close namespace. */ \ - extern HB_INTERNAL const unsigned char _hb_Null_##Namespace##_##Type[Namespace::Type::min_size]; \ + extern HB_INTERNAL const unsigned char _hb_Null_##Namespace##_##Type[Namespace::Type::null_size]; \ template <> \ /*static*/ inline const Namespace::Type& Null<Namespace::Type> (void) { \ return *reinterpret_cast<const Namespace::Type *> (_hb_Null_##Namespace##_##Type); \ @@ -60,7 +60,7 @@ static inline Type const & Null (void) { namespace Namespace { \ static_assert (true, "Just so we take semicolon after.") #define DEFINE_NULL_NAMESPACE_BYTES(Namespace, Type) \ - const unsigned char _hb_Null_##Namespace##_##Type[Namespace::Type::min_size] + const unsigned char _hb_Null_##Namespace##_##Type[Namespace::Type::null_size] /* Specializations for arbitrary-content Null objects expressed as struct initializer. */ #define DECLARE_NULL_INSTANCE(Type) \ commit 8cfeed99486e87c3217dc141bc24b7768a460f32 Author: Behdad Esfahbod <beh...@behdad.org> Date: Wed Nov 21 23:42:31 2018 -0500 Minor diff --git a/src/hb-machinery.hh b/src/hb-machinery.hh index c209efe2..24e45441 100644 --- a/src/hb-machinery.hh +++ b/src/hb-machinery.hh @@ -107,12 +107,12 @@ static inline Type& StructAfter(TObject &X) DEFINE_COMPILES_ASSERTION ((void) this->u._member.static_size); \ DEFINE_INSTANCE_ASSERTION (alignof (*this) == 1 && \ sizeof(this->u._member) == (size)); \ - static const unsigned int min_size = (size) + enum { min_size = (size) } #define DEFINE_SIZE_MIN(size) \ DEFINE_INSTANCE_ASSERTION (alignof (*this) == 1 && \ sizeof (*this) >= (size)); \ - static const unsigned int min_size = (size) + enum { min_size = (size) } #define DEFINE_SIZE_ARRAY(size, array) \ DEFINE_COMPILES_ASSERTION ((void) (array)[0].static_size); \ commit e5d954a2fb0c390ea67e83763e3c3a47caa2eb50 Author: Behdad Esfahbod <beh...@behdad.org> Date: Wed Nov 21 23:30:50 2018 -0500 Minor diff --git a/src/hb-machinery.hh b/src/hb-machinery.hh index df5023bd..c209efe2 100644 --- a/src/hb-machinery.hh +++ b/src/hb-machinery.hh @@ -104,8 +104,8 @@ static inline Type& StructAfter(TObject &X) enum { min_size = (size) } #define DEFINE_SIZE_UNION(size, _member) \ + DEFINE_COMPILES_ASSERTION ((void) this->u._member.static_size); \ DEFINE_INSTANCE_ASSERTION (alignof (*this) == 1 && \ - 0*sizeof(this->u._member.static_size) + \ sizeof(this->u._member) == (size)); \ static const unsigned int min_size = (size) @@ -115,9 +115,9 @@ static inline Type& StructAfter(TObject &X) static const unsigned int min_size = (size) #define DEFINE_SIZE_ARRAY(size, array) \ + DEFINE_COMPILES_ASSERTION ((void) (array)[0].static_size); \ DEFINE_INSTANCE_ASSERTION (alignof (*this) == 1 && \ sizeof (*this) == (size) + VAR * sizeof ((array)[0])); \ - DEFINE_COMPILES_ASSERTION ((void) (array)[0].static_size); \ enum { min_size = (size) } #define DEFINE_SIZE_ARRAY_SIZED(size, array) \ commit e987059c618e03d2346c31ed64429d67ce0e367a Author: Behdad Esfahbod <beh...@behdad.org> Date: Wed Nov 21 23:25:06 2018 -0500 Minor diff --git a/src/hb-machinery.hh b/src/hb-machinery.hh index acd3aedd..df5023bd 100644 --- a/src/hb-machinery.hh +++ b/src/hb-machinery.hh @@ -90,7 +90,8 @@ static inline Type& StructAfter(TObject &X) /* Check that _code compiles in a method environment */ #define _DEFINE_COMPILES_ASSERTION1(_line, _code) \ inline void _compiles_assertion_on_line_##_line (void) const \ - { _code; } + { _code; } \ + static_assert (true, "") /* So we require semicolon here. */ # define _DEFINE_COMPILES_ASSERTION0(_line, _code) _DEFINE_COMPILES_ASSERTION1 (_line, _code) # define DEFINE_COMPILES_ASSERTION(_code) _DEFINE_COMPILES_ASSERTION0 (__LINE__, _code) @@ -116,7 +117,7 @@ static inline Type& StructAfter(TObject &X) #define DEFINE_SIZE_ARRAY(size, array) \ DEFINE_INSTANCE_ASSERTION (alignof (*this) == 1 && \ sizeof (*this) == (size) + VAR * sizeof ((array)[0])); \ - DEFINE_COMPILES_ASSERTION ((void) (array)[0].static_size) \ + DEFINE_COMPILES_ASSERTION ((void) (array)[0].static_size); \ enum { min_size = (size) } #define DEFINE_SIZE_ARRAY_SIZED(size, array) \ commit a2b6d308a40d737f54a79f00bc7ace226bad5aaf Author: Behdad Esfahbod <beh...@behdad.org> Date: Wed Nov 21 23:23:49 2018 -0500 Remove DEFINE_SIZE_ARRAY2 diff --git a/src/hb-machinery.hh b/src/hb-machinery.hh index ccd66d1a..acd3aedd 100644 --- a/src/hb-machinery.hh +++ b/src/hb-machinery.hh @@ -123,12 +123,6 @@ static inline Type& StructAfter(TObject &X) inline unsigned int get_size (void) const { return (size - (array).min_size + (array).get_size ()); } \ DEFINE_SIZE_ARRAY(size, array) -#define DEFINE_SIZE_ARRAY2(size, array1, array2) \ - DEFINE_INSTANCE_ASSERTION (alignof (*this) == 1 && \ - sizeof (*this) == (size) + sizeof (this->array1[0]) + sizeof (this->array2[0])); \ - DEFINE_COMPILES_ASSERTION ((void) (array1)[0].static_size; (void) (array2)[0].static_size) \ - static const unsigned int min_size = (size) - /* * Dispatch diff --git a/src/hb-ot-layout-common.hh b/src/hb-ot-layout-common.hh index 55b05b51..46c2f182 100644 --- a/src/hb-ot-layout-common.hh +++ b/src/hb-ot-layout-common.hh @@ -802,11 +802,11 @@ struct Lookup HBUINT16 lookupFlag; /* Lookup qualifiers */ ArrayOf<Offset16> subTable; /* Array of SubTables */ - HBUINT16 markFilteringSetX[VAR]; /* Index (base 0) into GDEF mark glyph sets +/*HBUINT16 markFilteringSetX[VAR];*//* Index (base 0) into GDEF mark glyph sets * structure. This field is only present if bit * UseMarkFilteringSet of lookup flags is set. */ public: - DEFINE_SIZE_ARRAY2 (6, subTable, markFilteringSetX); + DEFINE_SIZE_ARRAY (6, subTable); }; typedef OffsetListOf<Lookup> LookupList; @@ -1568,9 +1568,9 @@ struct VarData HBUINT16 itemCount; HBUINT16 shortCount; ArrayOf<HBUINT16> regionIndices; - UnsizedArrayOf<HBUINT8>bytesX; +/*UnsizedArrayOf<HBUINT8>bytesX;*/ public: - DEFINE_SIZE_ARRAY2 (6, regionIndices, bytesX); + DEFINE_SIZE_ARRAY (6, regionIndices); }; struct VariationStore diff --git a/src/hb-ot-post-table.hh b/src/hb-ot-post-table.hh index f80303cc..98df3e78 100644 --- a/src/hb-ot-post-table.hh +++ b/src/hb-ot-post-table.hh @@ -61,12 +61,12 @@ struct postV2Tail ArrayOf<HBUINT16> glyphNameIndex; /* This is not an offset, but is the * ordinal number of the glyph in 'post' * string tables. */ - UnsizedArrayOf<HBUINT8> - namesX; /* Glyph names with length bytes [variable] +/*UnsizedArrayOf<HBUINT8> + namesX;*/ /* Glyph names with length bytes [variable] * (a Pascal string). */ public: - DEFINE_SIZE_ARRAY2 (2, glyphNameIndex, namesX); + DEFINE_SIZE_ARRAY (2, glyphNameIndex); }; struct post commit 2656644887e77a9d814bb12374af3c26b42fd935 Author: Behdad Esfahbod <beh...@behdad.org> Date: Wed Nov 21 23:23:21 2018 -0500 Check alignof() structs are 1 diff --git a/src/hb-machinery.hh b/src/hb-machinery.hh index 3a180a3b..ccd66d1a 100644 --- a/src/hb-machinery.hh +++ b/src/hb-machinery.hh @@ -96,21 +96,26 @@ static inline Type& StructAfter(TObject &X) #define DEFINE_SIZE_STATIC(size) \ - DEFINE_INSTANCE_ASSERTION (sizeof (*this) == (size)); \ + DEFINE_INSTANCE_ASSERTION (alignof (*this) == 1 && \ + sizeof (*this) == (size)); \ inline unsigned int get_size (void) const { return (size); } \ enum { static_size = (size) }; \ enum { min_size = (size) } #define DEFINE_SIZE_UNION(size, _member) \ - DEFINE_INSTANCE_ASSERTION (0*sizeof(this->u._member.static_size) + sizeof(this->u._member) == (size)); \ + DEFINE_INSTANCE_ASSERTION (alignof (*this) == 1 && \ + 0*sizeof(this->u._member.static_size) + \ + sizeof(this->u._member) == (size)); \ static const unsigned int min_size = (size) #define DEFINE_SIZE_MIN(size) \ - DEFINE_INSTANCE_ASSERTION (sizeof (*this) >= (size)); \ + DEFINE_INSTANCE_ASSERTION (alignof (*this) == 1 && \ + sizeof (*this) >= (size)); \ static const unsigned int min_size = (size) #define DEFINE_SIZE_ARRAY(size, array) \ - DEFINE_INSTANCE_ASSERTION (sizeof (*this) == (size) + VAR * sizeof ((array)[0])); \ + DEFINE_INSTANCE_ASSERTION (alignof (*this) == 1 && \ + sizeof (*this) == (size) + VAR * sizeof ((array)[0])); \ DEFINE_COMPILES_ASSERTION ((void) (array)[0].static_size) \ enum { min_size = (size) } @@ -119,7 +124,8 @@ static inline Type& StructAfter(TObject &X) DEFINE_SIZE_ARRAY(size, array) #define DEFINE_SIZE_ARRAY2(size, array1, array2) \ - DEFINE_INSTANCE_ASSERTION (sizeof (*this) == (size) + sizeof (this->array1[0]) + sizeof (this->array2[0])); \ + DEFINE_INSTANCE_ASSERTION (alignof (*this) == 1 && \ + sizeof (*this) == (size) + sizeof (this->array1[0]) + sizeof (this->array2[0])); \ DEFINE_COMPILES_ASSERTION ((void) (array1)[0].static_size; (void) (array2)[0].static_size) \ static const unsigned int min_size = (size) commit 6321fdf7040ce48e3de8d34fdcc57caa6433cb66 Author: Behdad Esfahbod <beh...@behdad.org> Date: Wed Nov 21 23:19:00 2018 -0500 Whitespace diff --git a/src/hb-machinery.hh b/src/hb-machinery.hh index 3c11243f..3a180a3b 100644 --- a/src/hb-machinery.hh +++ b/src/hb-machinery.hh @@ -115,8 +115,8 @@ static inline Type& StructAfter(TObject &X) enum { min_size = (size) } #define DEFINE_SIZE_ARRAY_SIZED(size, array) \ - inline unsigned int get_size (void) const { return (size - (array).min_size + (array).get_size ()); } \ - DEFINE_SIZE_ARRAY(size, array) + inline unsigned int get_size (void) const { return (size - (array).min_size + (array).get_size ()); } \ + DEFINE_SIZE_ARRAY(size, array) #define DEFINE_SIZE_ARRAY2(size, array1, array2) \ DEFINE_INSTANCE_ASSERTION (sizeof (*this) == (size) + sizeof (this->array1[0]) + sizeof (this->array2[0])); \ _______________________________________________ HarfBuzz mailing list HarfBuzz@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/harfbuzz