40#ifndef __EST_VAL_DEFS_H__
41#define __EST_VAL_DEFS_H__
44#define VAL_REGISTER_CLASS_DCLS(NAME,CLASS) \
45extern val_type val_type_##NAME; \
46class CLASS *NAME(const EST_Val &v); \
47EST_Val est_val(const class CLASS *v);
50#define VAL_REGISTER_TYPE_DCLS(NAME,CLASS) \
51extern val_type val_type_##NAME; \
52CLASS *NAME(const EST_Val &v); \
53EST_Val est_val(const CLASS *v);
55#define VAL_REGISTER_FUNCPTR_DCLS(NAME,TYPE) \
56extern val_type val_type_##NAME; \
57TYPE NAME(const EST_Val &v); \
58EST_Val est_val(const TYPE v);
62#define VAL_REGISTER_CLASS(NAME,CLASS) \
63val_type val_type_##NAME=#NAME; \
64class 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); \
73static void val_delete_##NAME(void *v) \
75 delete (class CLASS *)v; \
78EST_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) \
87val_type val_type_##NAME=#NAME; \
88CLASS *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); \
97static void val_delete_##NAME(void *v) \
102EST_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) \
111val_type val_type_##NAME=#NAME; \
112CLASS *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); \
121static void val_delete_##NAME(void *v) \
126EST_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) \
134val_type val_type_##NAME=#NAME; \
135class 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); \
144static void val_delete_##NAME(void *v) \
149EST_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) \
157val_type val_type_##NAME=#NAME; \
158CLASS 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); \
167static void val_delete_##NAME(void *v) \
172EST_Val est_val(const CLASS v) \
174 return EST_Val(val_type_##NAME, \
175 (void *)v,val_delete_##NAME); \