40 #ifndef __EST_VAL_DEFS_H__
41 #define __EST_VAL_DEFS_H__
44 #define VAL_REGISTER_CLASS_DCLS(NAME,CLASS) \
45 extern val_type val_type_##NAME; \
46 class CLASS *NAME(const EST_Val &v); \
47 EST_Val est_val(const class CLASS *v);
50 #define VAL_REGISTER_TYPE_DCLS(NAME,CLASS) \
51 extern val_type val_type_##NAME; \
52 CLASS *NAME(const EST_Val &v); \
53 EST_Val est_val(const CLASS *v);
55 #define VAL_REGISTER_FUNCPTR_DCLS(NAME,TYPE) \
56 extern val_type val_type_##NAME; \
57 TYPE NAME(const EST_Val &v); \
58 EST_Val est_val(const TYPE v);
62 #define VAL_REGISTER_CLASS(NAME,CLASS) \
63 val_type val_type_##NAME=#NAME; \
64 class CLASS *NAME(const EST_Val &v) \
66 if (v.type() == val_type_##NAME) \
67 return (class CLASS *)v.internal_ptr(); \
69 EST_error("val not of type val_type_"#NAME); \
73 static void val_delete_##NAME(void *v) \
75 delete (class CLASS *)v; \
78 EST_Val est_val(const class CLASS *v) \
80 return EST_Val(val_type_##NAME, \
81 (void *)v,val_delete_##NAME); \
86 #define VAL_REGISTER_TYPE(NAME,CLASS) \
87 val_type val_type_##NAME=#NAME; \
88 CLASS *NAME(const EST_Val &v) \
90 if (v.type() == val_type_##NAME) \
91 return (CLASS *)v.internal_ptr(); \
93 EST_error("val not of type val_type_"#NAME); \
97 static void val_delete_##NAME(void *v) \
102 EST_Val est_val(const CLASS *v) \
104 return EST_Val(val_type_##NAME, \
105 (void *)v,val_delete_##NAME); \
110 #define VAL_REGISTER_TYPE_NODEL(NAME,CLASS) \
111 val_type val_type_##NAME=#NAME; \
112 CLASS *NAME(const EST_Val &v) \
114 if (v.type() == val_type_##NAME) \
115 return (CLASS *)v.internal_ptr(); \
117 EST_error("val not of type val_type_"#NAME); \
121 static void val_delete_##NAME(void *v) \
126 EST_Val est_val(const CLASS *v) \
128 return EST_Val(val_type_##NAME, \
129 (void *)v,val_delete_##NAME); \
133 #define VAL_REGISTER_CLASS_NODEL(NAME,CLASS) \
134 val_type val_type_##NAME=#NAME; \
135 class CLASS *NAME(const EST_Val &v) \
137 if (v.type() == val_type_##NAME) \
138 return (class CLASS *)v.internal_ptr(); \
140 EST_error("val not of type val_type_"#NAME); \
144 static void val_delete_##NAME(void *v) \
149 EST_Val est_val(const class CLASS *v) \
151 return EST_Val(val_type_##NAME, \
152 (void *)v,val_delete_##NAME); \
156 #define VAL_REGISTER_FUNCPTR(NAME,CLASS) \
157 val_type val_type_##NAME=#NAME; \
158 CLASS NAME(const EST_Val &v) \
160 if (v.type() == val_type_##NAME) \
161 return (CLASS)v.internal_ptr(); \
163 EST_error("val not of type val_type_"#NAME); \
167 static void val_delete_##NAME(void *v) \
172 EST_Val est_val(const CLASS v) \
174 return EST_Val(val_type_##NAME, \
175 (void *)v,val_delete_##NAME); \