/* arrays_struct_field_length_cname.c generated by valac, the Vala compiler * generated from arrays_struct_field_length_cname.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_BAR (bar_get_type ()) typedef struct _Bar Bar; #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 { gint* foo; gint foo_len; gint _foo_size_; gint foo_length1; }; 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) static gint* _vala_array_dup1 (gint* self, gssize length); static void _vala_main (void); static inline gpointer _vala_memdup2 (gconstpointer mem, gsize byte_size); static gint* _vala_array_dup1 (gint* self, gssize length) { if (length > 0) { return _vala_memdup2 (self, length * sizeof (gint)); } return NULL; } void bar_copy (const Bar* self, Bar* dest) { gint* _tmp0_; gint _tmp0__length1; gint* _tmp1_; gint _tmp1__length1; _tmp0_ = (*self).foo; _tmp0__length1 = (*self).foo_len; _tmp1_ = (_tmp0_ != NULL) ? _vala_array_dup1 (_tmp0_, _tmp0__length1) : _tmp0_; _tmp1__length1 = _tmp0__length1; (*dest).foo = (g_free ((*dest).foo), NULL); (*dest).foo = _tmp1_; (*dest).foo_len = _tmp1__length1; (*dest)._foo_size_ = (*dest).foo_len; (*dest).foo_length1 = (*self).foo_length1; } void bar_destroy (Bar* self) { (*self).foo = (g_free ((*self).foo), NULL); } 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_main (void) { Bar bar = {0}; gint* _tmp0_; Bar _tmp1_ = {0}; Bar _tmp2_; gint* _tmp3_; gint _tmp3__length1; _tmp0_ = g_new0 (gint, 2); _tmp0_[0] = 23; _tmp0_[1] = 42; _tmp1_.foo = (g_free (_tmp1_.foo), NULL); _tmp1_.foo = _tmp0_; _tmp1_.foo_len = 2; _tmp1_._foo_size_ = _tmp1_.foo_len; _tmp1_.foo_length1 = -1; bar = _tmp1_; _tmp2_ = bar; _tmp3_ = _tmp2_.foo; _tmp3__length1 = _tmp2_.foo_len; _vala_assert (_tmp3__length1 == 2, "bar.foo.length == 2"); bar_destroy (&bar); } 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; }