/* methods_bug710862.c generated by valac, the Vala compiler
 * generated from methods_bug710862.vala, do not modify */

#include <glib-object.h>
#include <stdlib.h>
#include <string.h>
#include <glib.h>
#include <stdarg.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(_MSC_VER)
#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 ())
#define FOO(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_FOO, Foo))
#define FOO_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_FOO, FooClass))
#define IS_FOO(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_FOO))
#define IS_FOO_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_FOO))
#define FOO_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_FOO, FooClass))

typedef struct _Foo Foo;
typedef struct _FooClass FooClass;
typedef struct _FooPrivate FooPrivate;
enum  {
	FOO_0_PROPERTY,
	FOO_NUM_PROPERTIES
};
static GParamSpec* foo_properties[FOO_NUM_PROPERTIES];
#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))

struct _Foo {
	GObject parent_instance;
	FooPrivate * priv;
};

struct _FooClass {
	GObjectClass parent_class;
	void (*print_vfunc_vargs) (Foo* self, const gchar* format, va_list vargs)  G_GNUC_PRINTF(2,0) ;
	void (*print_vfunc_shift_vargs) (Foo* self, const gchar* format, gint shift, va_list vargs)  G_GNUC_PRINTF(2,0) ;
	void (*scan_vfunc_vargs) (Foo* self, const gchar* input, const gchar* format, va_list vargs) G_GNUC_SCANF(3,0) ;
};

static gpointer foo_parent_class = NULL;

VALA_EXTERN GType foo_get_type (void) G_GNUC_CONST ;
G_DEFINE_AUTOPTR_CLEANUP_FUNC (Foo, g_object_unref)
VALA_EXTERN void foo_print (Foo* self,
                const gchar* format,
                ...)  G_GNUC_PRINTF(2,3) ;
VALA_EXTERN void foo_print_vargs (Foo* self,
                      const gchar* format,
                      va_list vargs)  G_GNUC_PRINTF(2,0) ;
VALA_EXTERN void foo_print_shift (Foo* self,
                      const gchar* format,
                      gint shift,
                      ...)  G_GNUC_PRINTF(2,4) ;
VALA_EXTERN void foo_print_shift_vargs (Foo* self,
                            const gchar* format,
                            gint shift,
                            va_list vargs)  G_GNUC_PRINTF(2,0) ;
static void foo_real_print_vfunc_vargs (Foo* self,
                                 const gchar* format,
                                 va_list vargs)  G_GNUC_PRINTF(2,0) ;
static void foo_real_print_vfunc_shift_vargs (Foo* self,
                                       const gchar* format,
                                       gint shift,
                                       va_list vargs)  G_GNUC_PRINTF(2,0) ;
VALA_EXTERN void foo_scan (Foo* self,
               const gchar* input,
               const gchar* format,
               ...) G_GNUC_SCANF(3,4) ;
static void foo_real_scan_vfunc_vargs (Foo* self,
                                const gchar* input,
                                const gchar* format,
                                va_list vargs) G_GNUC_SCANF(3,0) ;
VALA_EXTERN Foo* foo_new (void);
VALA_EXTERN Foo* foo_construct (GType object_type);
static GType foo_get_type_once (void);
VALA_EXTERN void print_something (const gchar* format,
                      ...)  G_GNUC_PRINTF(1,2) ;
VALA_EXTERN void print_something_vargs (const gchar* format,
                            va_list vargs)  G_GNUC_PRINTF(1,0) ;
VALA_EXTERN void print_something_shift (const gchar* format,
                            gint shift,
                            ...)  G_GNUC_PRINTF(1,3) ;
VALA_EXTERN void print_something_shift_vargs (const gchar* format,
                                  gint shift,
                                  va_list vargs)  G_GNUC_PRINTF(1,0) ;
VALA_EXTERN void scan_something (const gchar* input,
                     const gchar* format,
                     ...) G_GNUC_SCANF(2,3) ;
static void _vala_main (void);

void
foo_print (Foo* self,
           const gchar* format,
           ...)
{
	va_list vargs = {0};
	g_return_if_fail (IS_FOO (self));
	g_return_if_fail (format != NULL);
	va_start (vargs, format);
	foo_print_vargs (self, format, vargs);
	va_end (vargs);
}

void
foo_print_shift (Foo* self,
                 const gchar* format,
                 gint shift,
                 ...)
{
	va_list vargs = {0};
	g_return_if_fail (IS_FOO (self));
	g_return_if_fail (format != NULL);
	va_start (vargs, shift);
	foo_print_shift_vargs (self, format, shift, vargs);
	va_end (vargs);
}

void
foo_print_vargs (Foo* self,
                 const gchar* format,
                 va_list vargs)
{
	g_return_if_fail (IS_FOO (self));
	g_return_if_fail (format != NULL);
}

void
foo_print_shift_vargs (Foo* self,
                       const gchar* format,
                       gint shift,
                       va_list vargs)
{
	g_return_if_fail (IS_FOO (self));
	g_return_if_fail (format != NULL);
}

static void
foo_real_print_vfunc_vargs (Foo* self,
                            const gchar* format,
                            va_list vargs)
{
	g_return_if_fail (format != NULL);
}

static void
foo_real_print_vfunc_shift_vargs (Foo* self,
                                  const gchar* format,
                                  gint shift,
                                  va_list vargs)
{
	g_return_if_fail (format != NULL);
}

void
foo_scan (Foo* self,
          const gchar* input,
          const gchar* format,
          ...)
{
	g_return_if_fail (IS_FOO (self));
	g_return_if_fail (input != NULL);
	g_return_if_fail (format != NULL);
}

static void
foo_real_scan_vfunc_vargs (Foo* self,
                           const gchar* input,
                           const gchar* format,
                           va_list vargs)
{
	g_return_if_fail (input != NULL);
	g_return_if_fail (format != NULL);
}

Foo*
foo_construct (GType object_type)
{
	Foo * self = NULL;
	self = (Foo*) g_object_new (object_type, NULL);
	return self;
}

Foo*
foo_new (void)
{
	return foo_construct (TYPE_FOO);
}

static void
foo_class_init (FooClass * klass,
                gpointer klass_data)
{
	foo_parent_class = g_type_class_peek_parent (klass);
	((FooClass *) klass)->print_vfunc_vargs = (void (*) (Foo*, const gchar*, va_list)) foo_real_print_vfunc_vargs;
	((FooClass *) klass)->print_vfunc_shift_vargs = (void (*) (Foo*, const gchar*, gint, va_list)) foo_real_print_vfunc_shift_vargs;
	((FooClass *) klass)->scan_vfunc_vargs = (void (*) (Foo*, const gchar*, const gchar*, va_list)) foo_real_scan_vfunc_vargs;
}

static void
foo_instance_init (Foo * self,
                   gpointer klass)
{
}

static GType
foo_get_type_once (void)
{
	static const GTypeInfo g_define_type_info = { sizeof (FooClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) foo_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (Foo), 0, (GInstanceInitFunc) foo_instance_init, NULL };
	GType foo_type_id;
	foo_type_id = g_type_register_static (G_TYPE_OBJECT, "Foo", &g_define_type_info, 0);
	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
print_something (const gchar* format,
                 ...)
{
	va_list vargs = {0};
	g_return_if_fail (format != NULL);
	va_start (vargs, format);
	print_something_vargs (format, vargs);
	va_end (vargs);
}

void
print_something_shift (const gchar* format,
                       gint shift,
                       ...)
{
	va_list vargs = {0};
	g_return_if_fail (format != NULL);
	va_start (vargs, shift);
	print_something_vargs (format, vargs);
	va_end (vargs);
}

void
print_something_vargs (const gchar* format,
                       va_list vargs)
{
	g_return_if_fail (format != NULL);
}

void
print_something_shift_vargs (const gchar* format,
                             gint shift,
                             va_list vargs)
{
	g_return_if_fail (format != NULL);
}

void
scan_something (const gchar* input,
                const gchar* format,
                ...)
{
	g_return_if_fail (input != NULL);
	g_return_if_fail (format != NULL);
}

static void
_vala_main (void)
{
	gint i = 0;
	gint _tmp0_ = 0;
	Foo* foo = NULL;
	Foo* _tmp1_;
	gint _tmp2_ = 0;
	print_something ("%d", 42);
	print_something_shift ("%d", 0, 42);
	scan_something ("42", "%d", &_tmp0_);
	i = _tmp0_;
	_tmp1_ = foo_new ();
	foo = _tmp1_;
	foo_print (foo, "%d", 42);
	foo_scan (foo, "42", "%d", &_tmp2_);
	i = _tmp2_;
	_g_object_unref0 (foo);
}

int
main (int argc,
      char ** argv)
{
	_vala_main ();
	return 0;
}

