www.pudn.com > ANSI_C_OOP.rar > Object.r


#ifndef OBJECT_R
#define OBJECT_R

struct Object {
	const struct Class * class;	/* object's description */
};

struct Class {
	const struct Object _;			/* class' description */
	const char * name;				/* class' name */
	const struct Class * super;		/* class' super class */
	size_t size;					/* class' object's size */
	void * (* ctor) (void * self, va_list * app);
	void * (* dtor) (void * self);
	int (* differ) (const void * self, const void * b);
	int (* puto) (const void * self, FILE * fp);
};

void * super_ctor (const void * class, void * self, va_list * app);
void * super_dtor (const void * class, void * self);
int super_differ (const void * class, const void * self, const void * b);
int super_puto (const void * class, const void * self, FILE * fp);

#endif