#ifndef __HEV_OBJECT_H__
#define __HEV_OBJECT_H__
#ifdef __cplusplus
extern "C" {
#endif
#define HEV_OBJECT(p) ((HevObject *)p)
#define HEV_OBJECT_CLASS(p) ((HevObjectClass *)p)
#define HEV_OBJECT_GET_CLASS(p) ((void *)((HevObject *)p)->klass)
#define HEV_OBJECT_GET_IFACE(p, i) (((HevObject *)p)->klass->iface (p, i))
#define HEV_OBJECT_TYPE (hev_object_class ())
typedef struct _HevObject HevObject;
typedef struct _HevObjectClass HevObjectClass;
struct _HevObject
{
HevObjectClass *klass;
unsigned int ref_count;
};
struct _HevObjectClass
{
const char *name;
void (*finalizer) (HevObject *self);
void *(*iface) (HevObject *self, void *type);
};
HevObjectClass *hev_object_class (void);
int hev_object_construct (HevObject *self);
HevObject *hev_object_ref (HevObject *self);
void hev_object_unref (HevObject *self);
#ifdef __cplusplus
}
#endif
#endif