--- /dev/null
+/* delegates_scope_async.c generated by valac, the Vala compiler
+ * generated from delegates_scope_async.vala, do not modify */
+
+#include <glib.h>
+
+#if !defined(VALA_STRICT_C)
+#if !defined(__clang__) && defined(__GNUC__) && (__GNUC__ >= 14)
+#pragma GCC diagnostic warning "-Wincompatible-pointer-types"
+#elif defined(__clang__) && (__clang_major__ >= 16)
+#pragma clang diagnostic ignored "-Wincompatible-function-pointer-types"
+#pragma clang diagnostic ignored "-Wincompatible-pointer-types"
+#endif
+#endif
+#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
+
+typedef void (*FooFunc) (gpointer user_data);
+typedef void (*BarFunc) (gpointer user_data);
+typedef struct _Block1Data Block1Data;
+typedef struct _Block2Data Block2Data;
+#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 _Block1Data {
+ int _ref_count_;
+ gint i;
+};
+
+struct _Block2Data {
+ int _ref_count_;
+ gint j;
+};
+
+VALA_EXTERN void foo (FooFunc f,
+ gpointer f_target);
+VALA_EXTERN void bar (BarFunc f,
+ gpointer f_target);
+static void _vala_main (void);
+static Block1Data* block1_data_ref (Block1Data* _data1_);
+static void block1_data_unref (void * _userdata_);
+static void _vala_lambda0_ (Block1Data* _data1_);
+static void __vala_lambda0__foo_func (gpointer self);
+static Block2Data* block2_data_ref (Block2Data* _data2_);
+static void block2_data_unref (void * _userdata_);
+static void _vala_lambda1_ (Block2Data* _data2_);
+static void __vala_lambda1__bar_func (gpointer self);
+
+void
+foo (FooFunc f,
+ gpointer f_target)
+{
+ f (f_target);
+}
+
+void
+bar (BarFunc f,
+ gpointer f_target)
+{
+ f (f_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_slice_free (Block1Data, _data1_);
+ }
+}
+
+static void
+_vala_lambda0_ (Block1Data* _data1_)
+{
+ gint _tmp0_;
+ _tmp0_ = _data1_->i;
+ _data1_->i = _tmp0_ + 1;
+}
+
+static void
+__vala_lambda0__foo_func (gpointer self)
+{
+ _vala_lambda0_ (self);
+ block1_data_unref (self);
+}
+
+static Block2Data*
+block2_data_ref (Block2Data* _data2_)
+{
+ g_atomic_int_inc (&_data2_->_ref_count_);
+ return _data2_;
+}
+
+static void
+block2_data_unref (void * _userdata_)
+{
+ Block2Data* _data2_;
+ _data2_ = (Block2Data*) _userdata_;
+ if (g_atomic_int_dec_and_test (&_data2_->_ref_count_)) {
+ g_slice_free (Block2Data, _data2_);
+ }
+}
+
+static void
+_vala_lambda1_ (Block2Data* _data2_)
+{
+ gint _tmp0_;
+ _tmp0_ = _data2_->j;
+ _data2_->j = _tmp0_ + 1;
+}
+
+static void
+__vala_lambda1__bar_func (gpointer self)
+{
+ _vala_lambda1_ (self);
+ block2_data_unref (self);
+}
+
+static void
+_vala_main (void)
+{
+ {
+ Block1Data* _data1_;
+ _data1_ = g_slice_new0 (Block1Data);
+ _data1_->_ref_count_ = 1;
+ _data1_->i = 0;
+ foo (__vala_lambda0__foo_func, block1_data_ref (_data1_));
+ _vala_assert (_data1_->i == 1, "i == 1");
+ block1_data_unref (_data1_);
+ _data1_ = NULL;
+ }
+ {
+ Block2Data* _data2_;
+ _data2_ = g_slice_new0 (Block2Data);
+ _data2_->_ref_count_ = 1;
+ _data2_->j = 0;
+ bar (__vala_lambda1__bar_func, block2_data_ref (_data2_));
+ _vala_assert (_data2_->j == 1, "j == 1");
+ block2_data_unref (_data2_);
+ _data2_ = NULL;
+ }
+}
+
+int
+main (int argc,
+ char ** argv)
+{
+ _vala_main ();
+ return 0;
+}
+