#ifndef {{HEADER_DEFINE}}
#define {{HEADER_DEFINE}}

#include <glib.h>
#include <glib-object.h>

G_BEGIN_DECLS

#define {{GTYPE_PREFIX}}_TYPE_{{GTYPE_NAME}}         ({{FUNCTION_PREFIX}}_get_type ())
#define {{GTYPE_PREFIX}}_{{GTYPE_NAME}}(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), {{GTYPE_PREFIX}}_TYPE_{{GTYPE_NAME}}, {{BASE_CLASS}}))
#define {{GTYPE_PREFIX}}_{{GTYPE_NAME}}_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), {{GTYPE_PREFIX}}_TYPE_{{GTYPE_NAME}}, {{BASE_CLASS}}Class))
#define {{GTYPE_PREFIX}}_IS_{{GTYPE_NAME}}(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), {{GTYPE_PREFIX}}_TYPE_{{GTYPE_NAME}}))
#define {{GTYPE_PREFIX}}_IS_{{GTYPE_NAME}}_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), {{GTYPE_PREFIX}}_TYPE_{{GTYPE_NAME}}))
#define {{GTYPE_PREFIX}}_{{GTYPE_NAME}}_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), {{GTYPE_PREFIX}}_TYPE_{{GTYPE_NAME}}, {{BASE_CLASS}}Class))

typedef struct _{{BASE_CLASS}} {{BASE_CLASS}};
typedef struct _{{BASE_CLASS}}Private {{BASE_CLASS}}Private;
typedef struct _{{BASE_CLASS}}Class {{BASE_CLASS}}Class;

struct _{{BASE_CLASS}} {
	{{PARENT_CLASS}} parent;
	{{BASE_CLASS}}Private *priv;
};

struct _{{BASE_CLASS}}Class {
	{{PARENT_CLASS}}Class parent_class;
	/* Add Signal Functions Here */
};

GType {{FUNCTION_PREFIX}}_get_type();
{{BASE_CLASS}} *{{FUNCTION_PREFIX}}_new();

G_END_DECLS

#endif /* {{HEADER_DEFINE}} */
