[HB] Simplify casts

This commit is contained in:
Behdad Esfahbod 2009-05-18 18:01:19 -04:00
parent 9c42f05a5c
commit f6c8a6eacf
4 changed files with 12 additions and 12 deletions

View File

@ -110,7 +110,7 @@ struct CaretValueFormat3 {
private: private:
inline const Device& get_device (void) const { inline const Device& get_device (void) const {
if (HB_UNLIKELY (!deviceTable)) return Null(Device); if (HB_UNLIKELY (!deviceTable)) return Null(Device);
return *(const Device*)((const char*)this + deviceTable); return (const Device&)*((const char*)this + deviceTable);
} }
inline int get_caret_value (int ppem) const { inline int get_caret_value (int ppem) const {

View File

@ -787,7 +787,7 @@ ASSERT_SIZE (PosLookupSubTable, 2);
struct PosLookup : Lookup { struct PosLookup : Lookup {
inline const PosLookupSubTable& get_subtable (unsigned int i) const { inline const PosLookupSubTable& get_subtable (unsigned int i) const {
return *(PosLookupSubTable*)&(((Lookup *)this)->get_subtable (i)); return (const PosLookupSubTable&) Lookup::get_subtable (i);
} }
/* Like get_type(), but looks through extension lookups. /* Like get_type(), but looks through extension lookups.
@ -880,7 +880,7 @@ struct GPOS : GSUBGPOS {
/* XXX check version here? */ /* XXX check version here? */
inline const PosLookup& get_lookup (unsigned int i) const { inline const PosLookup& get_lookup (unsigned int i) const {
return *(PosLookup*)&(((GSUBGPOS *)this)->get_lookup (i)); return (PosLookup&)(((GSUBGPOS *)this)->get_lookup (i));
} }
inline bool position_lookup (hb_ot_layout_t *layout, inline bool position_lookup (hb_ot_layout_t *layout,
@ -902,7 +902,7 @@ inline bool ExtensionPosFormat1::position (LOOKUP_ARGS_DEF) const {
if (HB_UNLIKELY (lookup_type == GPOS_Extension)) if (HB_UNLIKELY (lookup_type == GPOS_Extension))
return false; return false;
return (*(PosLookupSubTable *)(((char *) this) + get_offset ())).position (LOOKUP_ARGS, lookup_type); return ((PosLookupSubTable&)*(((char *) this) + get_offset ())).position (LOOKUP_ARGS, lookup_type);
} }
static inline bool position_lookup (LOOKUP_ARGS_DEF, unsigned int lookup_index) { static inline bool position_lookup (LOOKUP_ARGS_DEF, unsigned int lookup_index) {

View File

@ -667,7 +667,7 @@ ASSERT_SIZE (SubstLookupSubTable, 2);
struct SubstLookup : Lookup { struct SubstLookup : Lookup {
inline const SubstLookupSubTable& get_subtable (unsigned int i) const { inline const SubstLookupSubTable& get_subtable (unsigned int i) const {
return *(SubstLookupSubTable*)&(((Lookup *)this)->get_subtable (i)); return (const SubstLookupSubTable&) Lookup::get_subtable (i);
} }
/* Like get_type(), but looks through extension lookups. /* Like get_type(), but looks through extension lookups.
@ -779,7 +779,7 @@ struct GSUB : GSUBGPOS {
/* XXX check version here? */ /* XXX check version here? */
inline const SubstLookup& get_lookup (unsigned int i) const { inline const SubstLookup& get_lookup (unsigned int i) const {
return *(SubstLookup*)&(((GSUBGPOS *)this)->get_lookup (i)); return (SubstLookup&)(((GSUBGPOS *)this)->get_lookup (i));
} }
inline bool substitute_lookup (hb_ot_layout_t *layout, inline bool substitute_lookup (hb_ot_layout_t *layout,
@ -801,7 +801,7 @@ inline bool ExtensionSubstFormat1::substitute (LOOKUP_ARGS_DEF) const {
if (HB_UNLIKELY (lookup_type == GSUB_Extension)) if (HB_UNLIKELY (lookup_type == GSUB_Extension))
return false; return false;
return (*(SubstLookupSubTable *)(((char *) this) + get_offset ())).substitute (LOOKUP_ARGS, lookup_type); return ((SubstLookupSubTable&)*(((char *) this) + get_offset ())).substitute (LOOKUP_ARGS, lookup_type);
} }
static inline bool substitute_lookup (LOOKUP_ARGS_DEF, unsigned int lookup_index) { static inline bool substitute_lookup (LOOKUP_ARGS_DEF, unsigned int lookup_index) {

View File

@ -70,7 +70,7 @@
inline const Type& operator[] (unsigned int i) const { \ inline const Type& operator[] (unsigned int i) const { \
if (HB_UNLIKELY (i >= num)) return Null(Type); \ if (HB_UNLIKELY (i >= num)) return Null(Type); \
if (HB_UNLIKELY (!array[i])) return Null(Type); \ if (HB_UNLIKELY (!array[i])) return Null(Type); \
return *(const Type *)((const char*)this + array[i]); \ return (const Type&)*((const char*)this + array[i]); \
} }
@ -152,14 +152,14 @@ static const char NullPool[16] = "";
template <typename Type> template <typename Type>
struct Null { struct Null {
ASSERT_STATIC (sizeof (Type) <= sizeof (NullPool)); ASSERT_STATIC (sizeof (Type) <= sizeof (NullPool));
static inline const Type &get () { return (const Type&) *(const Type*) NullPool; } static inline const Type &get () { return (const Type&) *NullPool; }
}; };
/* Specializaiton for arbitrary-content arbitrary-sized Null objects. */ /* Specializaiton for arbitrary-content arbitrary-sized Null objects. */
#define DEFINE_NULL_DATA(Type, size, data) \ #define DEFINE_NULL_DATA(Type, size, data) \
template <> \ template <> \
struct Null <Type> { \ struct Null <Type> { \
static inline const Type &get () { static const char bytes[size] = data; return (const Type&) *(const Type*) bytes; } \ static inline const Type &get () { static const char bytes[size] = data; return (const Type&) *bytes; /* XXX */ } \
} }
/* Accessor macro. */ /* Accessor macro. */
@ -176,10 +176,10 @@ struct Null <Type> { \
#define STATIC_DEFINE_GET_FOR_DATA(Type) \ #define STATIC_DEFINE_GET_FOR_DATA(Type) \
static inline const Type& get_for_data (const char *data) { \ static inline const Type& get_for_data (const char *data) { \
if (HB_UNLIKELY (data == NULL)) return Null(Type); \ if (HB_UNLIKELY (data == NULL)) return Null(Type); \
return *(const Type*)data; \ return (const Type&)*data; \
} \ } \
static inline Type& get_for_data (char *data) { \ static inline Type& get_for_data (char *data) { \
return *(Type*)data; \ return (Type&)*data; \
} }