Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/libdocument/ev-document.h
diff options
context:
space:
mode:
Diffstat (limited to 'libdocument/ev-document.h')
-rw-r--r--libdocument/ev-document.h20
1 files changed, 20 insertions, 0 deletions
diff --git a/libdocument/ev-document.h b/libdocument/ev-document.h
index 367d6e6..e07e3a2 100644
--- a/libdocument/ev-document.h
+++ b/libdocument/ev-document.h
@@ -216,6 +216,26 @@ register_evince_backend (GTypeModule *module) \
#define EV_BACKEND_REGISTER(BackendName, backend_name) \
EV_BACKEND_REGISTER_WITH_CODE(BackendName, backend_name, ;)
+/*
+ * A convenience macro for boxed type implementations, which defines a
+ * type_name_get_type() function registering the boxed type.
+ */
+#define EV_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; \
+}
+
+
G_END_DECLS
#endif /* EV_DOCUMENT_H */