/* voidtype.c generated by valac 0.12.1.1-323029-dirty, the Vala compiler
 * generated from voidtype.vala, do not modify */

/* voidtype.vala
 *
 * Copyright (C) 2009  Andrea Del Signore
 *
 * This library is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Lesser General Public License as published by
 * the Free Software Foundation, either version 2.1 of the License, or
 * (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with this library.  If not, see <http://www.gnu.org/licenses/>.
 *
 * Author:
 * 	Andrea Del Signore <sejerpz@tin.it>
 */

#include <glib.h>
#include <glib-object.h>
#include <valagee.h>
#include <stdlib.h>
#include <string.h>


#define AFRODITE_TYPE_SYMBOL (afrodite_symbol_get_type ())
#define AFRODITE_SYMBOL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), AFRODITE_TYPE_SYMBOL, AfroditeSymbol))
#define AFRODITE_SYMBOL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), AFRODITE_TYPE_SYMBOL, AfroditeSymbolClass))
#define AFRODITE_IS_SYMBOL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), AFRODITE_TYPE_SYMBOL))
#define AFRODITE_IS_SYMBOL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), AFRODITE_TYPE_SYMBOL))
#define AFRODITE_SYMBOL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), AFRODITE_TYPE_SYMBOL, AfroditeSymbolClass))

typedef struct _AfroditeSymbol AfroditeSymbol;
typedef struct _AfroditeSymbolClass AfroditeSymbolClass;
typedef struct _AfroditeSymbolPrivate AfroditeSymbolPrivate;

#define AFRODITE_TYPE_MEMBER_BINDING (afrodite_member_binding_get_type ())

#define AFRODITE_TYPE_VOID_TYPE (afrodite_void_type_get_type ())
#define AFRODITE_VOID_TYPE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), AFRODITE_TYPE_VOID_TYPE, AfroditeVoidType))
#define AFRODITE_VOID_TYPE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), AFRODITE_TYPE_VOID_TYPE, AfroditeVoidTypeClass))
#define AFRODITE_IS_VOID_TYPE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), AFRODITE_TYPE_VOID_TYPE))
#define AFRODITE_IS_VOID_TYPE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), AFRODITE_TYPE_VOID_TYPE))
#define AFRODITE_VOID_TYPE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), AFRODITE_TYPE_VOID_TYPE, AfroditeVoidTypeClass))

typedef struct _AfroditeVoidType AfroditeVoidType;
typedef struct _AfroditeVoidTypeClass AfroditeVoidTypeClass;
typedef struct _AfroditeVoidTypePrivate AfroditeVoidTypePrivate;

#define AFRODITE_TYPE_MEMBER_TYPE (afrodite_member_type_get_type ())

typedef enum  {
	AFRODITE_MEMBER_BINDING_INSTANCE = 1,
	AFRODITE_MEMBER_BINDING_CLASS = 1 << 1,
	AFRODITE_MEMBER_BINDING_STATIC = 1 << 2,
	AFRODITE_MEMBER_BINDING_ANY = (AFRODITE_MEMBER_BINDING_INSTANCE | AFRODITE_MEMBER_BINDING_CLASS) | AFRODITE_MEMBER_BINDING_STATIC
} AfroditeMemberBinding;

struct _AfroditeSymbol {
	GObject parent_instance;
	AfroditeSymbolPrivate * priv;
	ValaList* _resolved_targets;
	ValaList* resolve_targets;
	AfroditeMemberBinding binding;
	gboolean is_virtual;
	gboolean is_abstract;
	gboolean overrides;
	gint _static_child_count;
	gint _creation_method_child_count;
};

struct _AfroditeSymbolClass {
	GObjectClass parent_class;
};

struct _AfroditeVoidType {
	AfroditeSymbol parent_instance;
	AfroditeVoidTypePrivate * priv;
};

struct _AfroditeVoidTypeClass {
	AfroditeSymbolClass parent_class;
};

typedef enum  {
	AFRODITE_MEMBER_TYPE_NONE,
	AFRODITE_MEMBER_TYPE_VOID,
	AFRODITE_MEMBER_TYPE_CONSTANT,
	AFRODITE_MEMBER_TYPE_ENUM,
	AFRODITE_MEMBER_TYPE_ENUM_VALUE,
	AFRODITE_MEMBER_TYPE_FIELD,
	AFRODITE_MEMBER_TYPE_PROPERTY,
	AFRODITE_MEMBER_TYPE_LOCAL_VARIABLE,
	AFRODITE_MEMBER_TYPE_SIGNAL,
	AFRODITE_MEMBER_TYPE_CREATION_METHOD,
	AFRODITE_MEMBER_TYPE_CONSTRUCTOR,
	AFRODITE_MEMBER_TYPE_DESTRUCTOR,
	AFRODITE_MEMBER_TYPE_METHOD,
	AFRODITE_MEMBER_TYPE_DELEGATE,
	AFRODITE_MEMBER_TYPE_PARAMETER,
	AFRODITE_MEMBER_TYPE_TYPE_PARAMETER,
	AFRODITE_MEMBER_TYPE_ERROR_DOMAIN,
	AFRODITE_MEMBER_TYPE_ERROR_CODE,
	AFRODITE_MEMBER_TYPE_NAMESPACE,
	AFRODITE_MEMBER_TYPE_STRUCT,
	AFRODITE_MEMBER_TYPE_CLASS,
	AFRODITE_MEMBER_TYPE_INTERFACE,
	AFRODITE_MEMBER_TYPE_SCOPED_CODE_NODE
} AfroditeMemberType;


static gpointer afrodite_void_type_parent_class = NULL;

GType afrodite_symbol_get_type (void) G_GNUC_CONST;
GType afrodite_member_binding_get_type (void) G_GNUC_CONST;
GType afrodite_void_type_get_type (void) G_GNUC_CONST;
enum  {
	AFRODITE_VOID_TYPE_DUMMY_PROPERTY
};
AfroditeVoidType* afrodite_void_type_new (void);
AfroditeVoidType* afrodite_void_type_construct (GType object_type);
GType afrodite_member_type_get_type (void) G_GNUC_CONST;
AfroditeSymbol* afrodite_symbol_new (const gchar* symbol_name, AfroditeMemberType type);
AfroditeSymbol* afrodite_symbol_construct (GType object_type, const gchar* symbol_name, AfroditeMemberType type);


AfroditeVoidType* afrodite_void_type_construct (GType object_type) {
	AfroditeVoidType * self = NULL;
	self = (AfroditeVoidType*) afrodite_symbol_construct (object_type, "void", AFRODITE_MEMBER_TYPE_VOID);
	return self;
}


AfroditeVoidType* afrodite_void_type_new (void) {
	return afrodite_void_type_construct (AFRODITE_TYPE_VOID_TYPE);
}


static void afrodite_void_type_class_init (AfroditeVoidTypeClass * klass) {
	afrodite_void_type_parent_class = g_type_class_peek_parent (klass);
}


static void afrodite_void_type_instance_init (AfroditeVoidType * self) {
}


GType afrodite_void_type_get_type (void) {
	static volatile gsize afrodite_void_type_type_id__volatile = 0;
	if (g_once_init_enter (&afrodite_void_type_type_id__volatile)) {
		static const GTypeInfo g_define_type_info = { sizeof (AfroditeVoidTypeClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) afrodite_void_type_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (AfroditeVoidType), 0, (GInstanceInitFunc) afrodite_void_type_instance_init, NULL };
		GType afrodite_void_type_type_id;
		afrodite_void_type_type_id = g_type_register_static (AFRODITE_TYPE_SYMBOL, "AfroditeVoidType", &g_define_type_info, 0);
		g_once_init_leave (&afrodite_void_type_type_id__volatile, afrodite_void_type_type_id);
	}
	return afrodite_void_type_type_id__volatile;
}



