diff options
author | Carlos Garcia Campos <carlosgc@gnome.org> | 2009-02-21 12:08:00 +0100 |
---|---|---|
committer | Carlos Garcia Campos <carlosgc@gnome.org> | 2009-02-21 12:08:00 +0100 |
commit | 943fca42b5fa815fad650e42da4ad6e806adc3b1 (patch) | |
tree | fa163031a09eaf50f0aa71d432a67e292d88b2a9 /glib | |
parent | 7406337ed2d38a86308f20f8273a152538e524de (diff) |
[glib] Add a macro to define boxed types
Diffstat (limited to 'glib')
-rw-r--r-- | glib/poppler-action.cc | 26 | ||||
-rw-r--r-- | glib/poppler-annot.cc | 15 | ||||
-rw-r--r-- | glib/poppler-document.cc | 44 | ||||
-rw-r--r-- | glib/poppler-page.cc | 99 | ||||
-rw-r--r-- | glib/poppler-private.h | 20 |
5 files changed, 53 insertions, 151 deletions
diff --git a/glib/poppler-action.cc b/glib/poppler-action.cc index 080eb279..f23b3439 100644 --- a/glib/poppler-action.cc +++ b/glib/poppler-action.cc @@ -19,18 +19,7 @@ #include "poppler.h" #include "poppler-private.h" -GType -poppler_dest_get_type (void) -{ - static GType our_type = 0; - - if (our_type == 0) - our_type = g_boxed_type_register_static ("PopplerDest", - (GBoxedCopyFunc) poppler_dest_copy, - (GBoxedFreeFunc) poppler_dest_free); - - return our_type; -} +POPPLER_DEFINE_BOXED_TYPE (PopplerDest, poppler_dest, poppler_dest_copy, poppler_dest_free) /** * poppler_dest_copy: @@ -73,18 +62,7 @@ poppler_dest_free (PopplerDest *dest) g_free (dest); } -GType -poppler_action_get_type (void) -{ - static GType our_type = 0; - - if (our_type == 0) - our_type = g_boxed_type_register_static ("PopplerAction", - (GBoxedCopyFunc) poppler_action_copy, - (GBoxedFreeFunc) poppler_action_free); - - return our_type; -} +POPPLER_DEFINE_BOXED_TYPE (PopplerAction, poppler_action, poppler_action_copy, poppler_action_free) /** * poppler_action_free: diff --git a/glib/poppler-annot.cc b/glib/poppler-annot.cc index 067afcc1..a2c51e44 100644 --- a/glib/poppler-annot.cc +++ b/glib/poppler-annot.cc @@ -697,18 +697,9 @@ poppler_annot_free_text_get_callout_line (PopplerAnnotFreeText *poppler_annot) } /* PopplerAnnotCalloutLine */ -GType -poppler_annot_callout_line_get_type (void) -{ - static GType our_type = 0; - - if (our_type == 0) - our_type = g_boxed_type_register_static ("PopplerAnnotCalloutLine", - (GBoxedCopyFunc) poppler_annot_callout_line_copy, - (GBoxedFreeFunc) poppler_annot_callout_line_free); - - return our_type; -} +POPPLER_DEFINE_BOXED_TYPE (PopplerAnnotCalloutLine, poppler_annot_callout_line, + poppler_annot_callout_line_copy, + poppler_annot_callout_line_free) /** * poppler_annot_callout_line_new: diff --git a/glib/poppler-document.cc b/glib/poppler-document.cc index 352149bf..6402e698 100644 --- a/glib/poppler-document.cc +++ b/glib/poppler-document.cc @@ -874,18 +874,9 @@ struct _PopplerIndexIter }; -GType -poppler_index_iter_get_type (void) -{ - static GType our_type = 0; - - if (our_type == 0) - our_type = g_boxed_type_register_static ("PopplerIndexIter", - (GBoxedCopyFunc) poppler_index_iter_copy, - (GBoxedFreeFunc) poppler_index_iter_free); - - return our_type; -} +POPPLER_DEFINE_BOXED_TYPE (PopplerIndexIter, poppler_index_iter, + poppler_index_iter_copy, + poppler_index_iter_free) /** * poppler_index_iter_copy: @@ -1122,18 +1113,9 @@ struct _PopplerFontsIter int index; }; -GType -poppler_fonts_iter_get_type (void) -{ - static GType our_type = 0; - - if (our_type == 0) - our_type = g_boxed_type_register_static ("PopplerFontsIter", - (GBoxedCopyFunc) poppler_fonts_iter_copy, - (GBoxedFreeFunc) poppler_fonts_iter_free); - - return our_type; -} +POPPLER_DEFINE_BOXED_TYPE (PopplerFontsIter, poppler_fonts_iter, + poppler_fonts_iter_copy, + poppler_fonts_iter_free) const char * poppler_fonts_iter_get_full_name (PopplerFontsIter *iter) @@ -1557,17 +1539,9 @@ struct _PopplerLayersIter { int index; }; -GType -poppler_layers_iter_get_type (void) -{ - static GType our_type = 0; - - if (our_type == 0) - our_type = g_boxed_type_register_static ("PopplerLayersIter", - (GBoxedCopyFunc) poppler_layers_iter_copy, - (GBoxedFreeFunc) poppler_layers_iter_free); - return our_type; -} +POPPLER_DEFINE_BOXED_TYPE (PopplerLayersIter, poppler_layers_iter, + poppler_layers_iter_copy, + poppler_layers_iter_free) /** * poppler_layers_iter_copy: diff --git a/glib/poppler-page.cc b/glib/poppler-page.cc index 29d124d5..e17d4de1 100644 --- a/glib/poppler-page.cc +++ b/glib/poppler-page.cc @@ -1771,18 +1771,9 @@ poppler_page_free_annot_mapping (GList *list) /* PopplerRectangle type */ -GType -poppler_rectangle_get_type (void) -{ - static GType our_type = 0; - - if (G_UNLIKELY (our_type == 0)) - our_type = g_boxed_type_register_static ("PopplerRectangle", - (GBoxedCopyFunc) poppler_rectangle_copy, - (GBoxedFreeFunc) poppler_rectangle_free); - - return our_type; -} +POPPLER_DEFINE_BOXED_TYPE (PopplerRectangle, poppler_rectangle, + poppler_rectangle_copy, + poppler_rectangle_free) PopplerRectangle * poppler_rectangle_new (void) @@ -1810,18 +1801,7 @@ poppler_rectangle_free (PopplerRectangle *rectangle) } /* PopplerColor type */ -GType -poppler_color_get_type (void) -{ - static GType our_type = 0; - - if (G_UNLIKELY (our_type == 0)) - our_type = g_boxed_type_register_static ("PopplerColor", - (GBoxedCopyFunc) poppler_color_copy, - (GBoxedFreeFunc) poppler_color_free); - - return our_type; -} +POPPLER_DEFINE_BOXED_TYPE (PopplerColor, poppler_color, poppler_color_copy, poppler_color_free) PopplerColor * poppler_color_new (void) @@ -1847,18 +1827,9 @@ poppler_color_free (PopplerColor *color) } /* PopplerLinkMapping type */ -GType -poppler_link_mapping_get_type (void) -{ - static GType our_type = 0; - - if (G_UNLIKELY (our_type == 0)) - our_type = g_boxed_type_register_static ("PopplerLinkMapping", - (GBoxedCopyFunc) poppler_link_mapping_copy, - (GBoxedFreeFunc) poppler_link_mapping_free); - - return our_type; -} +POPPLER_DEFINE_BOXED_TYPE (PopplerLinkMapping, poppler_link_mapping, + poppler_link_mapping_copy, + poppler_link_mapping_free) PopplerLinkMapping * poppler_link_mapping_new (void) @@ -1890,18 +1861,9 @@ poppler_link_mapping_free (PopplerLinkMapping *mapping) } /* Poppler Image mapping type */ -GType -poppler_image_mapping_get_type (void) -{ - static GType our_type = 0; - - if (G_UNLIKELY (our_type == 0)) - our_type = g_boxed_type_register_static ("PopplerImageMapping", - (GBoxedCopyFunc) poppler_image_mapping_copy, - (GBoxedFreeFunc) poppler_image_mapping_free); - - return our_type; -} +POPPLER_DEFINE_BOXED_TYPE (PopplerImageMapping, poppler_image_mapping, + poppler_image_mapping_copy, + poppler_image_mapping_free) PopplerImageMapping * poppler_image_mapping_new (void) @@ -1928,16 +1890,9 @@ poppler_image_mapping_free (PopplerImageMapping *mapping) } /* Page Transition */ -GType -poppler_page_transition_get_type (void) -{ - static GType our_type = 0; - if (G_UNLIKELY (our_type == 0)) - our_type = g_boxed_type_register_static("PopplerPageTransition", - (GBoxedCopyFunc) poppler_page_transition_copy, - (GBoxedFreeFunc) poppler_page_transition_free); - return our_type; -} +POPPLER_DEFINE_BOXED_TYPE (PopplerPageTransition, poppler_page_transition, + poppler_page_transition_copy, + poppler_page_transition_free) PopplerPageTransition * poppler_page_transition_new (void) @@ -1963,16 +1918,9 @@ poppler_page_transition_free (PopplerPageTransition *transition) } /* Form Field Mapping Type */ -GType -poppler_form_field_mapping_get_type (void) -{ - static GType our_type = 0; - if (G_UNLIKELY (our_type == 0)) - our_type = g_boxed_type_register_static("PopplerFormFieldMapping", - (GBoxedCopyFunc) poppler_form_field_mapping_copy, - (GBoxedFreeFunc) poppler_form_field_mapping_free); - return our_type; -} +POPPLER_DEFINE_BOXED_TYPE (PopplerFormFieldMapping, poppler_form_field_mapping, + poppler_form_field_mapping_copy, + poppler_form_field_mapping_free) PopplerFormFieldMapping * poppler_form_field_mapping_new (void) @@ -2007,18 +1955,9 @@ poppler_form_field_mapping_free (PopplerFormFieldMapping *mapping) } /* PopplerAnnot Mapping Type */ -GType -poppler_annot_mapping_get_type (void) -{ - static GType our_type = 0; - - if (our_type == 0) - our_type = g_boxed_type_register_static ("PopplerAnnotMapping", - (GBoxedCopyFunc) poppler_annot_mapping_copy, - (GBoxedFreeFunc) poppler_annot_mapping_free); - - return our_type; -} +POPPLER_DEFINE_BOXED_TYPE (PopplerAnnotMapping, poppler_annot_mapping, + poppler_annot_mapping_copy, + poppler_annot_mapping_free) PopplerAnnotMapping * poppler_annot_mapping_new (void) diff --git a/glib/poppler-private.h b/glib/poppler-private.h index c4380ea0..1cb1eac7 100644 --- a/glib/poppler-private.h +++ b/glib/poppler-private.h @@ -112,4 +112,24 @@ PopplerAnnot *_poppler_annot_free_text_new (Annot *annot); char *_poppler_goo_string_to_utf8(GooString *s); gboolean _poppler_convert_pdf_date_to_gtime (GooString *date, GTime *gdate); + +/* + * A convenience macro for boxed type implementations, which defines a + * type_name_get_type() function registering the boxed type. + */ +#define POPPLER_DEFINE_BOXED_TYPE(TypeName, type_name, copy_func, free_func) \ +GType \ +type_name##_get_type (void) \ +{ \ + static volatile gsize g_define_type_id__volatile = 0; \ + if (g_once_init_enter (&g_define_type_id__volatile)) { \ + GType g_define_type_id = \ + g_boxed_type_register_static (g_intern_static_string (#TypeName), \ + (GBoxedCopyFunc) copy_func, \ + (GBoxedFreeFunc) free_func); \ + g_once_init_leave (&g_define_type_id__volatile, g_define_type_id); \ + } \ + return g_define_type_id__volatile; \ +} + #endif |