From: Behdad Esfahbod Date: Wed, 11 May 2011 22:14:44 +0000 (-0400) Subject: [API] Add hb_*_get_empty() for all objects X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=80a6833b032bc63b4e8c3da6489d3767af1168f3;p=platform%2Fupstream%2FlibHarfBuzzSharp.git [API] Add hb_*_get_empty() for all objects --- diff --git a/src/hb-buffer.cc b/src/hb-buffer.cc index 6d0d4d4..7e79eef 100644 --- a/src/hb-buffer.cc +++ b/src/hb-buffer.cc @@ -153,6 +153,12 @@ hb_buffer_create (unsigned int pre_alloc_size) } hb_buffer_t * +hb_buffer_get_empty (void) +{ + return &_hb_buffer_nil; +} + +hb_buffer_t * hb_buffer_reference (hb_buffer_t *buffer) { return hb_object_reference (buffer); diff --git a/src/hb-buffer.h b/src/hb-buffer.h index 47a2123..020a120 100644 --- a/src/hb-buffer.h +++ b/src/hb-buffer.h @@ -63,6 +63,9 @@ hb_buffer_t * hb_buffer_create (unsigned int pre_alloc_size); hb_buffer_t * +hb_buffer_get_empty (void); + +hb_buffer_t * hb_buffer_reference (hb_buffer_t *buffer); void diff --git a/src/hb-font.cc b/src/hb-font.cc index 6cd436d..bb8f84c 100644 --- a/src/hb-font.cc +++ b/src/hb-font.cc @@ -160,6 +160,12 @@ hb_font_funcs_create (void) } hb_font_funcs_t * +hb_font_funcs_get_empty (void) +{ + return &_hb_font_funcs_nil; +} + +hb_font_funcs_t * hb_font_funcs_reference (hb_font_funcs_t *ffuncs) { return hb_object_reference (ffuncs); @@ -404,6 +410,12 @@ hb_face_create_for_data (hb_blob_t *blob, (hb_destroy_func_t) _hb_face_for_data_closure_destroy); } +hb_face_t * +hb_face_get_empty (void) +{ + return &_hb_face_nil; +} + hb_face_t * hb_face_reference (hb_face_t *face) @@ -534,6 +546,12 @@ hb_font_create_sub_font (hb_font_t *parent) } hb_font_t * +hb_font_get_empty (void) +{ + return &_hb_font_nil; +} + +hb_font_t * hb_font_reference (hb_font_t *font) { return hb_object_reference (font); diff --git a/src/hb-font.h b/src/hb-font.h index ce81985..7f05144 100644 --- a/src/hb-font.h +++ b/src/hb-font.h @@ -53,6 +53,9 @@ hb_face_create_for_tables (hb_get_table_func_t get_table, hb_destroy_func_t destroy); hb_face_t * +hb_face_get_empty (void); + +hb_face_t * hb_face_reference (hb_face_t *face); void @@ -88,6 +91,9 @@ hb_font_funcs_t * hb_font_funcs_create (void); hb_font_funcs_t * +hb_font_funcs_get_empty (void); + +hb_font_funcs_t * hb_font_funcs_reference (hb_font_funcs_t *ffuncs); void @@ -207,6 +213,9 @@ hb_font_t * hb_font_create_sub_font (hb_font_t *parent); hb_font_t * +hb_font_get_empty (void); + +hb_font_t * hb_font_reference (hb_font_t *font); void diff --git a/src/hb-unicode.cc b/src/hb-unicode.cc index 943d7a7..c2d7311 100644 --- a/src/hb-unicode.cc +++ b/src/hb-unicode.cc @@ -126,6 +126,12 @@ hb_unicode_funcs_create (hb_unicode_funcs_t *parent) } hb_unicode_funcs_t * +hb_unicode_funcs_get_empty (void) +{ + return &_hb_unicode_funcs_nil; +} + +hb_unicode_funcs_t * hb_unicode_funcs_reference (hb_unicode_funcs_t *ufuncs) { return hb_object_reference (ufuncs); diff --git a/src/hb-unicode.h b/src/hb-unicode.h index 9e590d8..e7a2005 100644 --- a/src/hb-unicode.h +++ b/src/hb-unicode.h @@ -54,6 +54,9 @@ hb_unicode_funcs_t * hb_unicode_funcs_create (hb_unicode_funcs_t *parent); hb_unicode_funcs_t * +hb_unicode_funcs_get_empty (void); + +hb_unicode_funcs_t * hb_unicode_funcs_reference (hb_unicode_funcs_t *ufuncs); void diff --git a/test/test-object.c b/test/test-object.c index 1abe65c..1ad3b88 100644 --- a/test/test-object.c +++ b/test/test-object.c @@ -43,7 +43,7 @@ create_blob (void) static void * create_blob_inert (void) { - return hb_blob_get_empty (); + return hb_blob_create (NULL, 0, HB_MEMORY_MODE_DUPLICATE, NULL, NULL); } static void * @@ -68,7 +68,7 @@ create_face (void) static void * create_face_inert (void) { - return hb_face_create_for_data ((hb_blob_t *) create_blob_inert (), 0); + return hb_face_create_for_data (hb_blob_get_empty (), 0); } static void * @@ -82,7 +82,7 @@ create_font (void) static void * create_font_inert (void) { - return hb_font_create (create_face_inert ()); + return hb_font_create (hb_face_get_empty ()); } static void * @@ -124,6 +124,7 @@ typedef hb_bool_t (*is_immutable_func_t) (void *obj); typedef struct { create_func_t create; create_func_t create_inert; + create_func_t get_empty; reference_func_t reference; destroy_func_t destroy; set_user_data_func_t set_user_data; @@ -137,6 +138,7 @@ typedef struct { { \ (create_func_t) create_##name, \ (create_func_t) create_##name##_inert, \ + (create_func_t) hb_##name##_get_empty, \ (reference_func_t) hb_##name##_reference, \ (destroy_func_t) hb_##name##_destroy, \ (set_user_data_func_t) hb_##name##_set_user_data, \ @@ -149,6 +151,7 @@ typedef struct { { \ (create_func_t) create_##name, \ (create_func_t) create_##name##_inert, \ + (create_func_t) hb_##name##_get_empty, \ (reference_func_t) hb_##name##_reference, \ (destroy_func_t) hb_##name##_destroy, \ (set_user_data_func_t) hb_##name##_set_user_data, \ @@ -308,10 +311,37 @@ test_object (void) { data_t data[2] = {{MAGIC0, FALSE}, {MAGIC1, FALSE}}; + g_test_message ("->get_empty()"); + obj = o->get_empty (); + g_assert (obj); + + g_assert (obj == o->reference (obj)); + o->destroy (obj); + + if (o->is_immutable) + g_assert (o->is_immutable (obj)); + + g_assert (!o->set_user_data (obj, &key[0], &data[0], free_up0)); + g_assert (!o->get_user_data (obj, &key[0])); + + o->destroy (obj); + o->destroy (obj); + o->destroy (obj); + o->destroy (obj); + o->destroy (obj); + + g_assert (!data[0].freed); + } + + { + data_t data[2] = {{MAGIC0, FALSE}, {MAGIC1, FALSE}}; + g_test_message ("->create_inert()"); obj = o->create_inert (); if (!obj) continue; + if (obj == o->get_empty ()) + continue; /* Tested already */ g_assert (obj == o->reference (obj)); o->destroy (obj);