/* structs_bug622422.c generated by valac, the Vala compiler * generated from structs_bug622422.vala, do not modify */ #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; typedef void (*TestDelegate) (gpointer user_data); typedef struct _Block1Data Block1Data; struct _Foo { gint i; }; struct _Block1Data { int _ref_count_; Foo foo; GValue value; }; VALA_EXTERN GType foo_get_type (void) G_GNUC_CONST ; VALA_EXTERN Foo* foo_dup (const Foo* self); VALA_EXTERN void foo_free (Foo* self); VALA_EXTERN void do_foo (TestDelegate d, gpointer d_target); VALA_EXTERN void do_foo_lambda (Foo* foo, GValue* value); static Block1Data* block1_data_ref (Block1Data* _data1_); static void block1_data_unref (void * _userdata_); static void __lambda4_ (Block1Data* _data1_); static void ___lambda4__test_delegate (gpointer self); static void _vala_main (void); Foo* foo_dup (const Foo* self) { Foo* dup; dup = g_new0 (Foo, 1); memcpy (dup, self, sizeof (Foo)); return dup; } void foo_free (Foo* 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 do_foo (TestDelegate d, gpointer d_target) { } static Block1Data* block1_data_ref (Block1Data* _data1_) { g_atomic_int_inc (&_data1_->_ref_count_); return _data1_; } static void block1_data_unref (void * _userdata_) { Block1Data* _data1_; _data1_ = (Block1Data*) _userdata_; if (g_atomic_int_dec_and_test (&_data1_->_ref_count_)) { G_IS_VALUE (&_data1_->value) ? (g_value_unset (&_data1_->value), NULL) : NULL; g_slice_free (Block1Data, _data1_); } } static void __lambda4_ (Block1Data* _data1_) { GValue _tmp0_ = {0}; GValue _tmp1_; GValue _tmp2_ = {0}; _data1_->foo.i = 1; g_value_init (&_tmp0_, G_TYPE_INT); g_value_set_int (&_tmp0_, (gint) 2); _tmp1_ = _tmp0_; if (G_IS_VALUE (&_tmp1_)) { g_value_init (&_tmp2_, G_VALUE_TYPE (&_tmp1_)); g_value_copy (&_tmp1_, &_tmp2_); } else { _tmp2_ = _tmp1_; } G_IS_VALUE (&_data1_->value) ? (g_value_unset (&_data1_->value), NULL) : NULL; _data1_->value = _tmp2_; G_IS_VALUE (&_tmp0_) ? (g_value_unset (&_tmp0_), NULL) : NULL; } static void ___lambda4__test_delegate (gpointer self) { __lambda4_ (self); } void do_foo_lambda (Foo* foo, GValue* value) { Block1Data* _data1_; Foo _tmp0_; GValue _tmp1_; GValue _tmp2_; GValue _tmp3_ = {0}; g_return_if_fail (foo != NULL); g_return_if_fail (value != NULL); _data1_ = g_slice_new0 (Block1Data); _data1_->_ref_count_ = 1; _tmp0_ = *foo; _data1_->foo = _tmp0_; _tmp1_ = *value; _tmp2_ = _tmp1_; if (G_IS_VALUE (&_tmp2_)) { g_value_init (&_tmp3_, G_VALUE_TYPE (&_tmp2_)); g_value_copy (&_tmp2_, &_tmp3_); } else { _tmp3_ = _tmp2_; } G_IS_VALUE (&_data1_->value) ? (g_value_unset (&_data1_->value), NULL) : NULL; _data1_->value = _tmp3_; do_foo (___lambda4__test_delegate, _data1_); block1_data_unref (_data1_); _data1_ = NULL; } static void _vala_main (void) { } int main (int argc, char ** argv) { _vala_main (); return 0; }