#ifndef __{NAMESPACE}_{TEMPLATE}_H__ #define __{NAMESPACE}_{TEMPLATE}_H__ #include #include G_BEGIN_DECLS /* * Type checking and casting macros */ #define {NAMESPACE}_TYPE_{TEMPLATE} ({namespace}_{template_}_get_type()) #define {NAMESPACE}_{TEMPLATE}(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), \ {NAMESPACE}_TYPE_{TEMPLATE}, {Namespace}{Template})) #define {NAMESPACE}_{TEMPLATE}_CONST(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj),\ {NAMESPACE}_TYPE_{TEMPLATE}, {Namespace}{Template} const)) #define {NAMESPACE}_{TEMPLATE}_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), \ {NAMESPACE}_TYPE_{TEMPLATE}, {Namespace}{Template}Class)) #define {NAMESPACE}_IS_{TEMPLATE}(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), \ {NAMESPACE}_TYPE_{TEMPLATE})) #define {NAMESPACE}_IS_{TEMPLATE}_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), \ {NAMESPACE}_TYPE_{TEMPLATE})) #define {NAMESPACE}_{TEMPLATE}_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), \ {NAMESPACE}_TYPE_{TEMPLATE}, {Namespace}{Template}Class)) /* Private structure type */ typedef struct _{Namespace}{Template}Private {Namespace}{Template}Private; /* * Main object structure */ typedef struct _{Namespace}{Template} {Namespace}{Template}; struct _{Namespace}{Template} { {Parent_Namespace}{Parent} parent; /*< private > */ {Namespace}{Template}Private *priv; }; /* * Class definition */ typedef struct _{Namespace}{Template}Class {Namespace}{Template}Class; struct _{Namespace}{Template}Class { {Parent_Namespace}{Parent}Class parent_class; /* Signals void (* proto) ({Namespace}{Template} *obj); */ }; GType {namespace}_{template_}_get_type(void) G_GNUC_CONST; {Namespace}{Template} *{namespace}_{template_}_new(void); G_END_DECLS #endif /* __{NAMESPACE}_{TEMPLATE}_H__ */