/* objects_bug741465.c generated by valac, the Vala compiler * generated from objects_bug741465.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 typedef struct _AbstractFoo AbstractFoo; typedef AbstractFoo Foo; typedef Foo Bar; typedef struct _Manam Manam; typedef Manam Baz; #define _manam_free0(var) ((var == NULL) ? NULL : (var = (manam_free (var), NULL))) #define _abstract_foo_free0(var) ((var == NULL) ? NULL : (var = (abstract_foo_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 _AbstractFoo { const gchar* (*foo) (AbstractFoo* self); gint (*get_prop) (AbstractFoo* self); void (*set_prop) (AbstractFoo* self, gint value); gint field; }; struct _Manam { const gchar* (*foo) (Manam* self); gint (*foo_plain) (Manam* self); gint (*get_prop) (Manam* self); void (*set_prop) (Manam* self, gint value); gint field; }; VALA_EXTERN void abstract_foo_free (AbstractFoo * self); G_DEFINE_AUTOPTR_CLEANUP_FUNC (AbstractFoo, abstract_foo_free) static void abstract_foo_instance_init (AbstractFoo * self); VALA_EXTERN const gchar* abstract_foo_foo (AbstractFoo* self); static const gchar* abstract_foo_real_foo (AbstractFoo* self); VALA_EXTERN AbstractFoo* abstract_foo_new (void); VALA_EXTERN gint abstract_foo_get_prop (AbstractFoo* self); VALA_EXTERN void abstract_foo_set_prop (AbstractFoo* self, gint value); G_DEFINE_AUTOPTR_CLEANUP_FUNC (Foo, abstract_foo_free) static void foo_instance_init (Foo * self); VALA_EXTERN Foo* foo_new (void); static const gchar* foo_real_foo (AbstractFoo* base); G_DEFINE_AUTOPTR_CLEANUP_FUNC (Bar, abstract_foo_free) static void bar_instance_init (Bar * self); VALA_EXTERN Bar* bar_new (void); static const gchar* bar_real_foo (AbstractFoo* base); VALA_EXTERN void manam_free (Manam * self); G_DEFINE_AUTOPTR_CLEANUP_FUNC (Manam, manam_free) static void manam_instance_init (Manam * self); VALA_EXTERN const gchar* manam_foo (Manam* self); VALA_EXTERN gint manam_get_prop (Manam* self); VALA_EXTERN void manam_set_prop (Manam* self, gint value); static const gchar* manam_real_foo (Manam* self); static gint manam_real_foo_plain (Manam* self); VALA_EXTERN Manam* manam_new (void); G_DEFINE_AUTOPTR_CLEANUP_FUNC (Baz, manam_free) static void baz_instance_init (Baz * self); static const gchar* baz_real_foo (Manam* base); static gint baz_real_foo_plain (Manam* base); VALA_EXTERN Baz* baz_new (void); static void _vala_main (void); static const gchar* abstract_foo_real_foo (AbstractFoo* self) { g_critical ("Abstract method `abstract_foo_foo' is not implemented"); return NULL; } const gchar* abstract_foo_foo (AbstractFoo* self) { g_return_val_if_fail (self != NULL, NULL); if (self->foo) { return self->foo (self); } return NULL; } AbstractFoo* abstract_foo_new (void) { AbstractFoo* self; self = g_slice_new0 (AbstractFoo); abstract_foo_instance_init (self); return self; } gint abstract_foo_get_prop (AbstractFoo* self) { g_return_val_if_fail (self != NULL, 0); if (self->get_prop) { return self->get_prop (self); } return -1; } void abstract_foo_set_prop (AbstractFoo* self, gint value) { g_return_if_fail (self != NULL); if (self->set_prop) { self->set_prop (self, value); } } static void abstract_foo_instance_init (AbstractFoo * self) { ((AbstractFoo *) self)->foo = (const gchar* (*) (AbstractFoo*)) abstract_foo_real_foo; self->field = 23; } void abstract_foo_free (AbstractFoo * self) { g_slice_free (AbstractFoo, self); } Foo* foo_new (void) { Foo* self; gint _tmp0_; gint _tmp1_; self = (Foo*) abstract_foo_new (); foo_instance_init (self); _vala_assert (((AbstractFoo*) self)->field == 23, "field == 23"); ((AbstractFoo*) self)->field = 37; _tmp0_ = abstract_foo_get_prop ((AbstractFoo*) self); _tmp1_ = _tmp0_; _vala_assert (_tmp1_ == 38, "prop == 38"); return self; } static const gchar* foo_real_foo (AbstractFoo* base) { Foo * self; const gchar* result; self = (Foo*) base; result = "Foo"; return result; } static gint foo_real_get_prop (AbstractFoo* base) { gint result; Foo* self; self = (Foo*) base; result = ((AbstractFoo*) self)->field + 1; return result; } static void foo_real_set_prop (AbstractFoo* base, gint value) { Foo* self; self = (Foo*) base; ((AbstractFoo*) self)->field = value - 1; } static void foo_instance_init (Foo * self) { ((AbstractFoo *) self)->foo = (const gchar* (*) (AbstractFoo*)) foo_real_foo; ((AbstractFoo *) self)->get_prop = (gint (*) (AbstractFoo*)) foo_real_get_prop; ((AbstractFoo *) self)->set_prop = (void (*) (AbstractFoo*, gint)) foo_real_set_prop; } Bar* bar_new (void) { Bar* self; gint _tmp0_; gint _tmp1_; self = (Bar*) foo_new (); bar_instance_init (self); _vala_assert (((AbstractFoo*) self)->field == 37, "field == 37"); ((AbstractFoo*) self)->field = 42; _tmp0_ = abstract_foo_get_prop ((AbstractFoo*) self); _tmp1_ = _tmp0_; _vala_assert (_tmp1_ == 84, "prop == 84"); return self; } static const gchar* bar_real_foo (AbstractFoo* base) { Bar * self; const gchar* result; self = (Bar*) base; result = "Bar"; return result; } static gint bar_real_get_prop (AbstractFoo* base) { gint result; Bar* self; self = (Bar*) base; result = ((AbstractFoo*) self)->field * 2; return result; } static void bar_real_set_prop (AbstractFoo* base, gint value) { Bar* self; self = (Bar*) base; ((AbstractFoo*) self)->field = value / 2; } static void bar_instance_init (Bar * self) { ((AbstractFoo *) self)->foo = (const gchar* (*) (AbstractFoo*)) bar_real_foo; ((AbstractFoo *) self)->get_prop = (gint (*) (AbstractFoo*)) bar_real_get_prop; ((AbstractFoo *) self)->set_prop = (void (*) (AbstractFoo*, gint)) bar_real_set_prop; } static const gchar* manam_real_foo (Manam* self) { const gchar* result; result = "Manam"; return result; } const gchar* manam_foo (Manam* self) { g_return_val_if_fail (self != NULL, NULL); if (self->foo) { return self->foo (self); } return NULL; } static gint manam_real_foo_plain (Manam* self) { gint result; result = 13; return result; } Manam* manam_new (void) { Manam* self; self = g_slice_new0 (Manam); manam_instance_init (self); return self; } gint manam_get_prop (Manam* self) { g_return_val_if_fail (self != NULL, 0); if (self->get_prop) { return self->get_prop (self); } return -1; } static gint manam_real_get_prop (Manam* base) { gint result; Manam* self; self = base; result = self->field + 1; return result; } void manam_set_prop (Manam* self, gint value) { g_return_if_fail (self != NULL); if (self->set_prop) { self->set_prop (self, value); } } static void manam_real_set_prop (Manam* base, gint value) { Manam* self; self = base; self->field = value - 1; } static void manam_instance_init (Manam * self) { ((Manam *) self)->foo = (const gchar* (*) (Manam*)) manam_real_foo; ((Manam *) self)->foo_plain = (gint (*) (Manam*)) manam_real_foo_plain; ((Manam *) self)->get_prop = (gint (*) (Manam*)) manam_real_get_prop; ((Manam *) self)->set_prop = (void (*) (Manam*, gint)) manam_real_set_prop; self->field = 23; } void manam_free (Manam * self) { g_slice_free (Manam, self); } static const gchar* baz_real_foo (Manam* base) { Baz * self; const gchar* result; self = (Baz*) base; result = "Baz"; return result; } static gint baz_real_foo_plain (Manam* base) { Baz * self; gint result; self = (Baz*) base; result = 23; return result; } Baz* baz_new (void) { Baz* self; self = (Baz*) manam_new (); baz_instance_init (self); return self; } static void baz_instance_init (Baz * self) { ((Manam *) self)->foo = (const gchar* (*) (Manam*)) baz_real_foo; ((Manam *) self)->foo_plain = (gint (*) (Manam*)) baz_real_foo_plain; } static void _vala_main (void) { Foo* foo = NULL; Foo* _tmp0_; const gchar* _tmp1_; gint _tmp2_; gint _tmp3_; Bar* bar = NULL; Bar* _tmp4_; const gchar* _tmp5_; gint _tmp6_; gint _tmp7_; Manam* manam = NULL; Manam* _tmp8_; const gchar* _tmp9_; gint _tmp10_; gint _tmp11_; Baz* baz = NULL; Baz* _tmp12_; const gchar* _tmp13_; gint _tmp14_; gint _tmp15_; _tmp0_ = foo_new (); foo = _tmp0_; _tmp1_ = abstract_foo_foo ((AbstractFoo*) foo); _vala_assert (g_strcmp0 (_tmp1_, "Foo") == 0, "foo.foo () == \"Foo\""); _tmp2_ = abstract_foo_get_prop ((AbstractFoo*) foo); _tmp3_ = _tmp2_; _vala_assert (_tmp3_ == 38, "foo.prop == 38"); abstract_foo_set_prop ((AbstractFoo*) foo, 4711); _vala_assert (((AbstractFoo*) foo)->field == 4710, "foo.field == 4710"); _tmp4_ = bar_new (); bar = _tmp4_; _tmp5_ = abstract_foo_foo ((AbstractFoo*) bar); _vala_assert (g_strcmp0 (_tmp5_, "Bar") == 0, "bar.foo () == \"Bar\""); _tmp6_ = abstract_foo_get_prop ((AbstractFoo*) bar); _tmp7_ = _tmp6_; _vala_assert (_tmp7_ == 84, "bar.prop == 84"); abstract_foo_set_prop ((AbstractFoo*) bar, 32); _vala_assert (((AbstractFoo*) bar)->field == 16, "bar.field == 16"); _tmp8_ = manam_new (); manam = _tmp8_; _tmp9_ = manam_foo (manam); _vala_assert (g_strcmp0 (_tmp9_, "Manam") == 0, "manam.foo () == \"Manam\""); _tmp10_ = manam_get_prop (manam); _tmp11_ = _tmp10_; _vala_assert (_tmp11_ == 24, "manam.prop == 24"); _vala_assert (manam->foo_plain (manam) == 13, "manam.foo_plain () == 13"); _tmp12_ = baz_new (); baz = _tmp12_; _tmp13_ = manam_foo ((Manam*) baz); _vala_assert (g_strcmp0 (_tmp13_, "Baz") == 0, "baz.foo () == \"Baz\""); manam_set_prop ((Manam*) baz, 42); _tmp14_ = manam_get_prop ((Manam*) baz); _tmp15_ = _tmp14_; _vala_assert (_tmp15_ == 42, "baz.prop == 42"); _vala_assert (((Manam*) baz)->foo_plain ((Manam*) baz) == 23, "baz.foo_plain () == 23"); _manam_free0 (baz); _manam_free0 (manam); _abstract_foo_free0 (bar); _abstract_foo_free0 (foo); } int main (int argc, char ** argv) { _vala_main (); return 0; }