提交 ffd321af 编写于 作者: B Behdad Esfahbod

Simplify Tag struct

上级 00e23fcc
...@@ -84,7 +84,8 @@ typedef struct OffsetTable ...@@ -84,7 +84,8 @@ typedef struct OffsetTable
} }
inline bool find_table_index (hb_tag_t tag, unsigned int *table_index) const inline bool find_table_index (hb_tag_t tag, unsigned int *table_index) const
{ {
const Tag t = tag; Tag t;
t.set (tag);
// TODO bsearch // TODO bsearch
unsigned int count = numTables; unsigned int count = numTables;
for (unsigned int i = 0; i < count; i++) for (unsigned int i = 0; i < count; i++)
......
...@@ -360,7 +360,7 @@ struct Sanitizer ...@@ -360,7 +360,7 @@ struct Sanitizer
struct NAME \ struct NAME \
{ \ { \
static inline unsigned int get_size () { return BYTES; } \ static inline unsigned int get_size () { return BYTES; } \
inline NAME& set (TYPE i) { BIG_ENDIAN##_put_unaligned(v, i); return *this; } \ inline void set (TYPE i) { BIG_ENDIAN##_put_unaligned(v, i); } \
inline operator TYPE(void) const { return BIG_ENDIAN##_get_unaligned (v); } \ inline operator TYPE(void) const { return BIG_ENDIAN##_get_unaligned (v); } \
inline bool operator == (const NAME &o) const { return BIG_ENDIAN##_cmp_unaligned (v, o.v); } \ inline bool operator == (const NAME &o) const { return BIG_ENDIAN##_cmp_unaligned (v, o.v); } \
inline bool sanitize (SANITIZE_ARG_DEF) { \ inline bool sanitize (SANITIZE_ARG_DEF) { \
...@@ -384,10 +384,6 @@ DEFINE_INT_TYPE (LONG, , 32); /* 32-bit signed integer. */ ...@@ -384,10 +384,6 @@ DEFINE_INT_TYPE (LONG, , 32); /* 32-bit signed integer. */
* system, feature, or baseline */ * system, feature, or baseline */
struct Tag : ULONG struct Tag : ULONG
{ {
inline Tag (const Tag &o) { *(ULONG*)this = (ULONG&) o; }
inline Tag (uint32_t i) { (*(ULONG*)this).set (i); }
inline Tag (const char *c) { *(ULONG*)this = *(ULONG*)c; }
inline bool operator == (const char *c) const { return *(ULONG*)this == *(ULONG*)c; }
/* What the char* converters return is NOT nul-terminated. Print using "%.4s" */ /* What the char* converters return is NOT nul-terminated. Print using "%.4s" */
inline operator const char* (void) const { return CONST_CHARP(this); } inline operator const char* (void) const { return CONST_CHARP(this); }
inline operator char* (void) { return CHARP(this); } inline operator char* (void) { return CHARP(this); }
......
...@@ -85,7 +85,8 @@ struct RecordArrayOf : ArrayOf<Record<Type> > { ...@@ -85,7 +85,8 @@ struct RecordArrayOf : ArrayOf<Record<Type> > {
} }
inline bool find_index (hb_tag_t tag, unsigned int *index) const inline bool find_index (hb_tag_t tag, unsigned int *index) const
{ {
const Tag t = tag; Tag t;
t.set (tag);
// TODO bsearch // TODO bsearch
const Record<Type> *a = this->const_array(); const Record<Type> *a = this->const_array();
unsigned int count = this->len; unsigned int count = this->len;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册