/* structs_struct_boxed_cast.c generated by valac, the Vala compiler * generated from structs_struct_boxed_cast.vala, do not modify */ #include #include #include #include #if !defined(VALA_EXTERN) #if defined(_MSC_VER) #define VALA_EXTERN __declspec(dllexport) extern #elif __GNUC__ >= 4 #define VALA_EXTERN __attribute__((visibility("default"))) extern #else #define VALA_EXTERN extern #endif #endif #define TYPE_BAR (bar_get_type ()) typedef struct _Bar Bar; #define _g_free0(var) (var = (g_free (var), NULL)) #define _bar_free0(var) ((var == NULL) ? NULL : (var = (bar_free (var), NULL))) #define _vala_assert(expr, msg) if G_LIKELY (expr) ; else g_assertion_message_expr (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, msg); #define _vala_return_if_fail(expr, msg) if G_LIKELY (expr) ; else { g_return_if_fail_warning (G_LOG_DOMAIN, G_STRFUNC, msg); return; } #define _vala_return_val_if_fail(expr, msg, val) if G_LIKELY (expr) ; else { g_return_if_fail_warning (G_LOG_DOMAIN, G_STRFUNC, msg); return val; } #define _vala_warn_if_fail(expr, msg) if G_LIKELY (expr) ; else g_warn_message (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, msg); struct _Bar { gchar* s; gint i; }; VALA_EXTERN void foo (GType t_type, GBoxedCopyFunc t_dup_func, GDestroyNotify t_destroy_func, gconstpointer t); VALA_EXTERN GType bar_get_type (void) G_GNUC_CONST ; VALA_EXTERN Bar* bar_dup (const Bar* self); VALA_EXTERN void bar_free (Bar* self); VALA_EXTERN void bar_copy (const Bar* self, Bar* dest); VALA_EXTERN void bar_destroy (Bar* self); static void _vala_main (void); void foo (GType t_type, GBoxedCopyFunc t_dup_func, GDestroyNotify t_destroy_func, gconstpointer t) { const gchar* _tmp0_; _tmp0_ = (*((Bar*) t)).s; _vala_assert (g_strcmp0 (_tmp0_, "foo") == 0, "((Bar?) t).s == \"foo\""); _vala_assert ((*((Bar*) t)).i == 23, "((Bar?) t).i == 23"); } void bar_copy (const Bar* self, Bar* dest) { const gchar* _tmp0_; gchar* _tmp1_; _tmp0_ = (*self).s; _tmp1_ = g_strdup (_tmp0_); _g_free0 ((*dest).s); (*dest).s = _tmp1_; (*dest).i = (*self).i; } void bar_destroy (Bar* self) { _g_free0 ((*self).s); } Bar* bar_dup (const Bar* self) { Bar* dup; dup = g_new0 (Bar, 1); bar_copy (self, dup); return dup; } void bar_free (Bar* self) { bar_destroy (self); g_free (self); } static GType bar_get_type_once (void) { GType bar_type_id; bar_type_id = g_boxed_type_register_static ("Bar", (GBoxedCopyFunc) bar_dup, (GBoxedFreeFunc) bar_free); return bar_type_id; } GType bar_get_type (void) { static volatile gsize bar_type_id__volatile = 0; if (g_once_init_enter (&bar_type_id__volatile)) { GType bar_type_id; bar_type_id = bar_get_type_once (); g_once_init_leave (&bar_type_id__volatile, bar_type_id); } return bar_type_id__volatile; } static gpointer _bar_dup0 (gpointer self) { return self ? bar_dup (self) : NULL; } static void _vala_main (void) { Bar f = {0}; gchar* _tmp0_; Bar _tmp1_ = {0}; Bar* cast = NULL; Bar _tmp2_; Bar* _tmp3_; const gchar* _tmp4_; Bar arg = {0}; gchar* _tmp5_; Bar _tmp6_ = {0}; Bar _tmp7_; Bar _tmp8_; Bar _tmp9_; _tmp0_ = g_strdup ("bar"); _g_free0 (_tmp1_.s); _tmp1_.s = _tmp0_; _tmp1_.i = 42; f = _tmp1_; _tmp2_ = f; _tmp3_ = _bar_dup0 ((Bar*) (&_tmp2_)); cast = _tmp3_; _tmp4_ = (*cast).s; _vala_assert (g_strcmp0 (_tmp4_, "bar") == 0, "cast.s == \"bar\""); _vala_assert ((*cast).i == 42, "cast.i == 42"); _tmp5_ = g_strdup ("foo"); _g_free0 (_tmp6_.s); _tmp6_.s = _tmp5_; _tmp6_.i = 23; arg = _tmp6_; _tmp7_ = arg; foo (TYPE_BAR, (GBoxedCopyFunc) bar_dup, (GDestroyNotify) bar_free, (Bar*) (&_tmp7_)); _tmp8_ = arg; foo (TYPE_BAR, (GBoxedCopyFunc) bar_dup, (GDestroyNotify) bar_free, &_tmp8_); _tmp9_ = arg; foo (TYPE_BAR, (GBoxedCopyFunc) bar_dup, (GDestroyNotify) bar_free, (Bar*) (&_tmp9_)); bar_destroy (&arg); _bar_free0 (cast); bar_destroy (&f); } int main (int argc, char ** argv) { _vala_main (); return 0; }