Lines Matching refs:object

68 #define HB_SHAPER_DATA_TYPE(shaper, object)		struct hb_##shaper##_shaper_##object##_data_t
69 #define HB_SHAPER_DATA_INSTANCE(shaper, object, instance) (* (HB_SHAPER_DATA_TYPE(shaper, object) **) &(instance)->shaper_data.shaper)
70 #define HB_SHAPER_DATA(shaper, object) HB_SHAPER_DATA_INSTANCE (shaper, object, object)
71 #define HB_SHAPER_DATA_CREATE_FUNC(shaper, object) _hb_##shaper##_shaper_##object##_data_create
72 #define HB_SHAPER_DATA_DESTROY_FUNC(shaper, object) _hb_##shaper##_shaper_##object##_data_destroy
74 #define HB_SHAPER_DATA_PROTOTYPE(shaper, object) \
75 HB_SHAPER_DATA_TYPE (shaper, object); /* Type forward declaration. */ \
76 extern "C" HB_INTERNAL HB_SHAPER_DATA_TYPE (shaper, object) * \
77 HB_SHAPER_DATA_CREATE_FUNC (shaper, object) (hb_##object##_t *object HB_SHAPER_DATA_CREATE_FUNC_EXTRA_ARGS); \
79 HB_SHAPER_DATA_DESTROY_FUNC (shaper, object) (HB_SHAPER_DATA_TYPE (shaper, object) *data)
81 #define HB_SHAPER_DATA_DESTROY(shaper, object) \
82 if (object->shaper_data.shaper && \
83 object->shaper_data.shaper != HB_SHAPER_DATA_INVALID && \
84 object->shaper_data.shaper != HB_SHAPER_DATA_SUCCEEDED) \
85 HB_SHAPER_DATA_DESTROY_FUNC (shaper, object) (HB_SHAPER_DATA (shaper, object));
87 #define HB_SHAPER_DATA_ENSURE_DECLARE(shaper, object) \
89 hb_##shaper##_shaper_##object##_data_ensure (hb_##object##_t *object) \
92 HB_SHAPER_DATA_TYPE (shaper, object) *data = (HB_SHAPER_DATA_TYPE (shaper, object) *) hb_atomic_ptr_get (&HB_SHAPER_DATA (shaper, object)); \
94 data = HB_SHAPER_DATA_CREATE_FUNC (shaper, object) (object); \
96 data = (HB_SHAPER_DATA_TYPE (shaper, object) *) HB_SHAPER_DATA_INVALID; \
97 if (!hb_atomic_ptr_cmpexch (&HB_SHAPER_DATA (shaper, object), NULL, data)) { \
101 HB_SHAPER_DATA_DESTROY_FUNC (shaper, object) (data); \