/* structs_struct_initializer_list_in_array.c generated by valac, the Vala compiler * generated from structs_struct_initializer_list_in_array.vala, do not modify */ #include #include #include #include #if !defined(VALA_EXTERN) #if defined(_WIN32) || defined(__CYGWIN__) #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_FOO (foo_get_type ()) typedef struct _Foo Foo; #define TYPE_BAR (bar_get_type ()) typedef struct _Bar Bar; #define _g_free0(var) (var = (g_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; }; struct _Foo { gchar* s; Bar b; gboolean* ba; gint ba_length1; gint _ba_size_; gint i; }; VALA_EXTERN GType foo_get_type (void) G_GNUC_CONST ; 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); G_DEFINE_AUTO_CLEANUP_CLEAR_FUNC (Bar, bar_destroy) VALA_EXTERN Foo* foo_dup (const Foo* self); VALA_EXTERN void foo_free (Foo* self); VALA_EXTERN void foo_copy (const Foo* self, Foo* dest); VALA_EXTERN void foo_destroy (Foo* self); G_DEFINE_AUTO_CLEANUP_CLEAR_FUNC (Foo, foo_destroy) static gboolean* _vala_array_dup1 (gboolean* self, gssize length); static void _vala_main (void); static void _vala_Foo_array_free (Foo * array, gssize array_length); static inline gpointer _vala_memdup2 (gconstpointer mem, gsize byte_size); static gboolean* _vala_array_dup1 (gboolean* self, gssize length) { if (length > 0) { return _vala_memdup2 (self, length * sizeof (gboolean)); } return NULL; } void foo_copy (const Foo* self, Foo* dest) { const gchar* _tmp0_; gchar* _tmp1_; Bar _tmp2_; Bar _tmp3_; Bar _tmp4_ = {0}; gboolean* _tmp5_; gint _tmp5__length1; gboolean* _tmp6_; gint _tmp6__length1; _tmp0_ = (*self).s; _tmp1_ = g_strdup (_tmp0_); _g_free0 ((*dest).s); (*dest).s = _tmp1_; _tmp2_ = (*self).b; _tmp3_ = _tmp2_; bar_copy (&_tmp3_, &_tmp4_); bar_destroy (&(*dest).b); (*dest).b = _tmp4_; _tmp5_ = (*self).ba; _tmp5__length1 = (*self).ba_length1; _tmp6_ = (_tmp5_ != NULL) ? _vala_array_dup1 (_tmp5_, _tmp5__length1) : _tmp5_; _tmp6__length1 = _tmp5__length1; (*dest).ba = (g_free ((*dest).ba), NULL); (*dest).ba = _tmp6_; (*dest).ba_length1 = _tmp6__length1; (*dest)._ba_size_ = (*dest).ba_length1; (*dest).i = (*self).i; } void foo_destroy (Foo* self) { _g_free0 ((*self).s); bar_destroy (&(*self).b); (*self).ba = (g_free ((*self).ba), NULL); } Foo* foo_dup (const Foo* self) { Foo* dup; dup = g_new0 (Foo, 1); foo_copy (self, dup); return dup; } void foo_free (Foo* self) { foo_destroy (self); g_free (self); } static GType foo_get_type_once (void) { GType foo_type_id; foo_type_id = g_boxed_type_register_static ("Foo", (GBoxedCopyFunc) foo_dup, (GBoxedFreeFunc) foo_free); return foo_type_id; } GType foo_get_type (void) { static volatile gsize foo_type_id__once = 0; if (g_once_init_enter (&foo_type_id__once)) { GType foo_type_id; foo_type_id = foo_get_type_once (); g_once_init_leave (&foo_type_id__once, foo_type_id); } return foo_type_id__once; } 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__once = 0; if (g_once_init_enter (&bar_type_id__once)) { GType bar_type_id; bar_type_id = bar_get_type_once (); g_once_init_leave (&bar_type_id__once, bar_type_id); } return bar_type_id__once; } static void _vala_Foo_array_free (Foo * array, gssize array_length) { if (array != NULL) { gssize i; for (i = 0; i < array_length; i = i + 1) { foo_destroy (&array[i]); } } g_free (array); } static void _vala_main (void) { Foo* foos = NULL; gchar* _tmp0_; gchar* _tmp1_; Bar _tmp2_ = {0}; gboolean* _tmp3_; Foo _tmp4_ = {0}; gchar* _tmp5_; gchar* _tmp6_; Bar _tmp7_ = {0}; gboolean* _tmp8_; Foo _tmp9_ = {0}; Foo* _tmp10_; gint foos_length1; gint _foos_size_; Foo f = {0}; Foo* _tmp11_; gint _tmp11__length1; Foo _tmp12_; Foo _tmp13_; Foo _tmp14_ = {0}; gboolean _tmp15_ = FALSE; gboolean _tmp16_ = FALSE; gboolean _tmp17_ = FALSE; Foo _tmp18_; Foo* _tmp27_; gint _tmp27__length1; Foo _tmp28_; Foo _tmp29_; Foo _tmp30_ = {0}; gboolean _tmp31_ = FALSE; gboolean _tmp32_ = FALSE; gboolean _tmp33_ = FALSE; Foo _tmp34_; _tmp0_ = g_strdup ("foo"); _tmp1_ = g_strdup ("foo"); _g_free0 (_tmp2_.s); _tmp2_.s = _tmp1_; _tmp2_.i = 42; _tmp3_ = g_new0 (gboolean, 1); _tmp3_[0] = TRUE; memset (&_tmp4_, 0, sizeof (Foo)); _g_free0 (_tmp4_.s); _tmp4_.s = _tmp0_; bar_destroy (&_tmp4_.b); _tmp4_.b = _tmp2_; _tmp4_.ba = (g_free (_tmp4_.ba), NULL); _tmp4_.ba = _tmp3_; _tmp4_.ba_length1 = 1; _tmp4_._ba_size_ = _tmp4_.ba_length1; _tmp4_.i = 23; _tmp5_ = g_strdup ("bar"); _tmp6_ = g_strdup ("bar"); _g_free0 (_tmp7_.s); _tmp7_.s = _tmp6_; _tmp7_.i = 4711; _tmp8_ = g_new0 (gboolean, 1); _tmp8_[0] = FALSE; memset (&_tmp9_, 0, sizeof (Foo)); _g_free0 (_tmp9_.s); _tmp9_.s = _tmp5_; bar_destroy (&_tmp9_.b); _tmp9_.b = _tmp7_; _tmp9_.ba = (g_free (_tmp9_.ba), NULL); _tmp9_.ba = _tmp8_; _tmp9_.ba_length1 = 1; _tmp9_._ba_size_ = _tmp9_.ba_length1; _tmp9_.i = 42; _tmp10_ = g_new0 (Foo, 2); _tmp10_[0] = _tmp4_; _tmp10_[1] = _tmp9_; foos = _tmp10_; foos_length1 = 2; _foos_size_ = foos_length1; _tmp11_ = foos; _tmp11__length1 = foos_length1; _tmp12_ = _tmp11_[0]; _tmp13_ = _tmp12_; foo_copy (&_tmp13_, &_tmp14_); f = _tmp14_; _tmp18_ = f; if (_tmp18_.i == 23) { Foo _tmp19_; const gchar* _tmp20_; _tmp19_ = f; _tmp20_ = _tmp19_.s; _tmp17_ = g_strcmp0 (_tmp20_, "foo") == 0; } else { _tmp17_ = FALSE; } if (_tmp17_) { Foo _tmp21_; Bar _tmp22_; const gchar* _tmp23_; _tmp21_ = f; _tmp22_ = _tmp21_.b; _tmp23_ = _tmp22_.s; _tmp16_ = g_strcmp0 (_tmp23_, "foo") == 0; } else { _tmp16_ = FALSE; } if (_tmp16_) { Foo _tmp24_; gboolean* _tmp25_; gint _tmp25__length1; gboolean _tmp26_; _tmp24_ = f; _tmp25_ = _tmp24_.ba; _tmp25__length1 = _tmp24_.ba_length1; _tmp26_ = _tmp25_[0]; _tmp15_ = _tmp26_; } else { _tmp15_ = FALSE; } _vala_assert (_tmp15_, "f.i == 23 && f.s == \"foo\" && f.b.s == \"foo\" && f.ba[0]"); _tmp27_ = foos; _tmp27__length1 = foos_length1; _tmp28_ = _tmp27_[1]; _tmp29_ = _tmp28_; foo_copy (&_tmp29_, &_tmp30_); foo_destroy (&f); f = _tmp30_; _tmp34_ = f; if (_tmp34_.i == 42) { Foo _tmp35_; const gchar* _tmp36_; _tmp35_ = f; _tmp36_ = _tmp35_.s; _tmp33_ = g_strcmp0 (_tmp36_, "bar") == 0; } else { _tmp33_ = FALSE; } if (_tmp33_) { Foo _tmp37_; Bar _tmp38_; _tmp37_ = f; _tmp38_ = _tmp37_.b; _tmp32_ = _tmp38_.i == 4711; } else { _tmp32_ = FALSE; } if (_tmp32_) { Foo _tmp39_; gboolean* _tmp40_; gint _tmp40__length1; gboolean _tmp41_; _tmp39_ = f; _tmp40_ = _tmp39_.ba; _tmp40__length1 = _tmp39_.ba_length1; _tmp41_ = _tmp40_[0]; _tmp31_ = !_tmp41_; } else { _tmp31_ = FALSE; } _vala_assert (_tmp31_, "f.i == 42 && f.s == \"bar\" && f.b.i == 4711 && !f.ba[0]"); foo_destroy (&f); foos = (_vala_Foo_array_free (foos, foos_length1), NULL); } int main (int argc, char ** argv) { _vala_main (); return 0; } static inline gpointer _vala_memdup2 (gconstpointer mem, gsize byte_size) { gpointer new_mem; if (mem && byte_size != 0) { new_mem = g_malloc (byte_size); memcpy (new_mem, mem, byte_size); } else { new_mem = NULL; } return new_mem; }