00001 #ifndef __EH_TYPES_H__
00002 #define __EH_TYPES_H__
00003
00004 #define API_ENTRY
00005
00006
00007
00008
00009
00010
00011
00012 typedef char* Class_Desc;
00013
00014 #define _CD( type ) type##_Class_Desc
00015 #define CLASS( type ) \
00016 static Class_Desc _CD( type ) = G_STRINGIFY(type) ; typedef struct tag_##type
00017
00018
00019
00020 #define DERIVED_CLASS( base_type , type ) \
00021 static Class_Desc _CD( type ) = G_STRINGIFY(type) ; typedef struct tag##base_type type
00022
00023
00024
00025 #define USE_MY_VTABLE
00026 #if defined( USE_MY_VTABLE )
00027
00028 #define NEW_OBJECT( type , obj ) \
00029 ( obj = (type)eh_malloc( sizeof(*obj),G_STRINGIFY(type),__FILE__ , __LINE__ ) )
00030
00031 #define FREE_OBJECT( obj ) ( *(void**)&obj = eh_free( obj ) )
00032
00033 #else
00034
00035 #define NEW_OBJECT( type , obj ) ( obj = g_new( type , 1 ) )
00036 #define FREE_OBJECT( obj ) ( g_free( obj ) )
00037
00038 #endif
00039
00040 #define new_handle( Handle ) typedef struct tag_##Handle *Handle
00041 #define derived_handle( Base_handle , Handle ) typedef struct tag_##Base_handle *Handle
00042
00043 #endif
00044