void hb_buffer_reset(hb_buffer_t * buffer) { if (hb_atomic_int32_get(&buffer->ref_cnt) == REF_CNT_INVALID_VAL) return; hb_unicode_funcs_destroy(buffer->unicode); buffer->unicode = hb_unicode_funcs_get_default(); hb_buffer_clear(buffer); }
void hb_buffer_set_unicode_funcs(hb_buffer_t * buffer, hb_unicode_funcs_t * unicode_funcs) { if (hb_atomic_int32_get(&buffer->ref_cnt) == REF_CNT_INVALID_VAL) return; if (!unicode_funcs) unicode_funcs = hb_unicode_funcs_get_default(); hb_unicode_funcs_reference(unicode_funcs); hb_unicode_funcs_destroy(buffer->unicode); buffer->unicode = unicode_funcs; }
void hb_buffer_t::reset (void) { if (unlikely (hb_object_is_inert (this))) return; hb_unicode_funcs_destroy (unicode); unicode = hb_unicode_funcs_get_default (); flags = HB_BUFFER_FLAG_DEFAULT; replacement = HB_BUFFER_REPLACEMENT_CODEPOINT_DEFAULT; clear (); }
/** * hb_buffer_destroy: (skip) * @buffer: an #hb_buffer_t. * * Deallocate the @buffer. * Decreases the reference count on @buffer by one. If the result is zero, then * @buffer and all associated resources are freed. See hb_buffer_reference(). * * Since: 0.9.2 **/ void hb_buffer_destroy (hb_buffer_t *buffer) { if (!hb_object_destroy (buffer)) return; hb_unicode_funcs_destroy (buffer->unicode); free (buffer->info); free (buffer->pos); if (buffer->message_destroy) buffer->message_destroy (buffer->message_data); free (buffer); }
/** * hb_buffer_set_unicode_funcs: * @buffer: an #hb_buffer_t. * @unicode_funcs: * * * * Since: 0.9.2 **/ void hb_buffer_set_unicode_funcs (hb_buffer_t *buffer, hb_unicode_funcs_t *unicode_funcs) { if (unlikely (hb_object_is_inert (buffer))) return; if (!unicode_funcs) unicode_funcs = hb_unicode_funcs_get_default (); hb_unicode_funcs_reference (unicode_funcs); hb_unicode_funcs_destroy (buffer->unicode); buffer->unicode = unicode_funcs; }
void hb_buffer_destroy(hb_buffer_t * buffer) { if (!buffer) return; if (hb_atomic_int32_get(&buffer->ref_cnt) == REF_CNT_INVALID_VAL) return; hb_atomic_int32_add(&buffer->ref_cnt, -1); if (hb_atomic_int32_get(&buffer->ref_cnt) > 0) return; hb_atomic_int32_set(&buffer->ref_cnt, REF_CNT_INVALID_VAL); hb_unicode_funcs_destroy(buffer->unicode); free(buffer->info); free(buffer->pos); free(buffer); }
static void test_buffer_properties (fixture_t *fixture, gconstpointer user_data HB_UNUSED) { hb_buffer_t *b = fixture->buffer; hb_unicode_funcs_t *ufuncs; /* test default properties */ g_assert (hb_buffer_get_unicode_funcs (b) == hb_unicode_funcs_get_default ()); g_assert (hb_buffer_get_direction (b) == HB_DIRECTION_INVALID); g_assert (hb_buffer_get_script (b) == HB_SCRIPT_INVALID); g_assert (hb_buffer_get_language (b) == NULL); /* test property changes are retained */ ufuncs = hb_unicode_funcs_create (NULL); hb_buffer_set_unicode_funcs (b, ufuncs); hb_unicode_funcs_destroy (ufuncs); g_assert (hb_buffer_get_unicode_funcs (b) == ufuncs); hb_buffer_set_direction (b, HB_DIRECTION_RTL); g_assert (hb_buffer_get_direction (b) == HB_DIRECTION_RTL); hb_buffer_set_script (b, HB_SCRIPT_ARABIC); g_assert (hb_buffer_get_script (b) == HB_SCRIPT_ARABIC); hb_buffer_set_language (b, hb_language_from_string ("fa", -1)); g_assert (hb_buffer_get_language (b) == hb_language_from_string ("Fa", -1)); hb_buffer_set_flags (b, HB_BUFFER_FLAG_BOT); g_assert (hb_buffer_get_flags (b) == HB_BUFFER_FLAG_BOT); hb_buffer_set_replacement_codepoint (b, (unsigned int) -1); g_assert (hb_buffer_get_replacement_codepoint (b) == (unsigned int) -1); /* test clear_contents clears all these properties: */ hb_buffer_clear_contents (b); g_assert (hb_buffer_get_unicode_funcs (b) == ufuncs); g_assert (hb_buffer_get_direction (b) == HB_DIRECTION_INVALID); g_assert (hb_buffer_get_script (b) == HB_SCRIPT_INVALID); g_assert (hb_buffer_get_language (b) == NULL); /* but not these: */ g_assert (hb_buffer_get_flags (b) != HB_BUFFER_FLAGS_DEFAULT); g_assert (hb_buffer_get_replacement_codepoint (b) != HB_BUFFER_REPLACEMENT_CODEPOINT_DEFAULT); /* test reset clears all properties */ hb_buffer_set_direction (b, HB_DIRECTION_RTL); g_assert (hb_buffer_get_direction (b) == HB_DIRECTION_RTL); hb_buffer_set_script (b, HB_SCRIPT_ARABIC); g_assert (hb_buffer_get_script (b) == HB_SCRIPT_ARABIC); hb_buffer_set_language (b, hb_language_from_string ("fa", -1)); g_assert (hb_buffer_get_language (b) == hb_language_from_string ("Fa", -1)); hb_buffer_set_flags (b, HB_BUFFER_FLAG_BOT); g_assert (hb_buffer_get_flags (b) == HB_BUFFER_FLAG_BOT); hb_buffer_set_replacement_codepoint (b, (unsigned int) -1); g_assert (hb_buffer_get_replacement_codepoint (b) == (unsigned int) -1); hb_buffer_reset (b); g_assert (hb_buffer_get_unicode_funcs (b) == hb_unicode_funcs_get_default ()); g_assert (hb_buffer_get_direction (b) == HB_DIRECTION_INVALID); g_assert (hb_buffer_get_script (b) == HB_SCRIPT_INVALID); g_assert (hb_buffer_get_language (b) == NULL); g_assert (hb_buffer_get_flags (b) == HB_BUFFER_FLAGS_DEFAULT); g_assert (hb_buffer_get_replacement_codepoint (b) == HB_BUFFER_REPLACEMENT_CODEPOINT_DEFAULT); }