/* basic_types_bug731017.c generated by valac, the Vala compiler * generated from basic_types_bug731017.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 _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); VALA_EXTERN gchar* foo; gchar* foo = NULL; VALA_EXTERN const gchar** bar (gint* result_length1); static void _vala_main (void); static gchar** _vala_array_dup1 (gchar** self, gssize length); static void _vala_array_destroy (gpointer array, gssize array_length, GDestroyNotify destroy_func); static void _vala_array_free (gpointer array, gssize array_length, GDestroyNotify destroy_func); const gchar** bar (gint* result_length1) { const gchar** ret = NULL; const gchar** _tmp0_; gint ret_length1; gint _ret_size_; const gchar* _tmp1_; const gchar** _tmp2_; gint _tmp2__length1; const gchar** result; _tmp0_ = g_new0 (const gchar*, 1 + 1); ret = _tmp0_; ret_length1 = 1; _ret_size_ = ret_length1; _tmp1_ = foo; ret[0] = _tmp1_; _tmp2_ = ret; _tmp2__length1 = ret_length1; if (result_length1) { *result_length1 = _tmp2__length1; } result = _tmp2_; return result; } static gchar** _vala_array_dup1 (gchar** self, gssize length) { if (length >= 0) { gchar** result; gssize i; result = g_new0 (gchar*, length + 1); for (i = 0; i < length; i++) { gchar* _tmp0_; _tmp0_ = g_strdup (self[i]); result[i] = _tmp0_; } return result; } return NULL; } static void _vala_main (void) { gchar* _tmp0_; gchar** keys = NULL; gint _tmp1_ = 0; const gchar** _tmp2_; gchar** _tmp3_; gint _tmp3__length1; gint keys_length1; gint _keys_size_; gchar** _tmp4_; gint _tmp4__length1; _tmp0_ = g_strdup ("foo"); _g_free0 (foo); foo = _tmp0_; _tmp2_ = bar (&_tmp1_); _tmp3_ = (_tmp2_ != NULL) ? _vala_array_dup1 (_tmp2_, _tmp1_) : _tmp2_; _tmp3__length1 = _tmp1_; _tmp2_ = (g_free (_tmp2_), NULL); keys = _tmp3_; keys_length1 = _tmp3__length1; _keys_size_ = keys_length1; _g_free0 (foo); foo = NULL; _tmp4_ = keys; _tmp4__length1 = keys_length1; { gchar** k_collection = NULL; gint k_collection_length1 = 0; gint _k_collection_size_ = 0; gint k_it = 0; k_collection = _tmp4_; k_collection_length1 = _tmp4__length1; for (k_it = 0; k_it < k_collection_length1; k_it = k_it + 1) { const gchar* k = NULL; k = k_collection[k_it]; { const gchar* _tmp5_; _tmp5_ = k; _vala_assert (g_strcmp0 (_tmp5_, "foo") == 0, "k == \"foo\""); } } } keys = (_vala_array_free (keys, keys_length1, (GDestroyNotify) g_free), NULL); } int main (int argc, char ** argv) { _vala_main (); return 0; } static void _vala_array_destroy (gpointer array, gssize array_length, GDestroyNotify destroy_func) { if ((array != NULL) && (destroy_func != NULL)) { gssize i; for (i = 0; i < array_length; i = i + 1) { if (((gpointer*) array)[i] != NULL) { destroy_func (((gpointer*) array)[i]); } } } } static void _vala_array_free (gpointer array, gssize array_length, GDestroyNotify destroy_func) { _vala_array_destroy (array, array_length, destroy_func); g_free (array); }