Commit 74576b2abc2e0a7c35de363aafde675adf5ed766

Authored by Perry Werneck
1 parent 4a39f052
Exists in master and in 1 other branch develop

Adding compatibility macros.

Showing 2 changed files with 34 additions and 9 deletions   Show diff stats
src/include/internals.h
@@ -43,15 +43,7 @@ @@ -43,15 +43,7 @@
43 #include <lib3270/log.h> 43 #include <lib3270/log.h>
44 #include <v3270.h> 44 #include <v3270.h>
45 45
46 - #if ! GLIB_CHECK_VERSION(2,44,0)  
47 -  
48 - G_GNUC_INTERNAL void v3270_autoptr_cleanup_generic_gfree(void *p);  
49 -  
50 - #define g_autofree __attribute__((cleanup(v3270_autoptr_cleanup_generic_gfree)))  
51 -  
52 - #endif // ! GLIB(2,44,0)  
53 -  
54 - G_BEGIN_DECLS 46 + G_BEGIN_DECLS
55 47
56 /*--[ Structures ]-----------------------------------------------------------------------------------*/ 48 /*--[ Structures ]-----------------------------------------------------------------------------------*/
57 49
src/include/v3270.h
@@ -37,6 +37,39 @@ @@ -37,6 +37,39 @@
37 #include <lib3270/popup.h> 37 #include <lib3270/popup.h>
38 #include <lib3270/filetransfer.h> 38 #include <lib3270/filetransfer.h>
39 39
  40 +#if ! GLIB_CHECK_VERSION(2,44,0)
  41 +
  42 + LIB3270_EXPORT void v3270_autoptr_cleanup_generic_gfree(void *p);
  43 +
  44 + #define g_autofree __attribute__((cleanup(v3270_autoptr_cleanup_generic_gfree)))
  45 + #define g_autoptr(TypeName) _GLIB_CLEANUP(_GLIB_AUTOPTR_FUNC_NAME(TypeName)) _GLIB_AUTOPTR_TYPENAME(TypeName)
  46 +
  47 + static inline void v3270_autoptr_cleanup_GError(GError **error) {
  48 + if(*error) {
  49 + g_error_free(*error);
  50 + *error = NULL;
  51 + }
  52 + }
  53 +
  54 + static inline void v3270_autoptr_cleanup_GObject(GObject **object) {
  55 + if(*object) {
  56 + g_object_unref(*object);
  57 + *object = NULL;
  58 + }
  59 + }
  60 +
  61 + static inline void v3270_autoptr_cleanup_GVariant(GVariant **variant) {
  62 + if(*variant) {
  63 + g_variant_unref(*variant)
  64 + *variant = NULL;
  65 + }
  66 + }
  67 +
  68 + #define V3270_AUTOPTR_FUNC_NAME(TypeName) v3270_autoptr_cleanup_##TypeName
  69 + #define v3270_autoptr(TypeName) TypeName * __attribute__ ((__cleanup__(V3270_AUTOPTR_FUNC_NAME(TypeName))))
  70 +
  71 +#endif // ! GLIB(2,44,0)
  72 +
40 G_BEGIN_DECLS 73 G_BEGIN_DECLS
41 74
42 #define GTK_TYPE_V3270 (v3270_get_type ()) 75 #define GTK_TYPE_V3270 (v3270_get_type ())