chore: improved mirror macro isolation
parent
eab5961989
commit
172d1ee10e
10
mirror.h
10
mirror.h
|
@ -56,17 +56,17 @@ extern void* mirror_get_function(void* data, IMirror const* tc, const char* type
|
||||||
// example:
|
// example:
|
||||||
// TC_CAST(physics_entity, BehaviourEntity)
|
// TC_CAST(physics_entity, BehaviourEntity)
|
||||||
#define TC_CAST(From_, To_)\
|
#define TC_CAST(From_, To_)\
|
||||||
MIRROR_GET_WRAP_FUNC(From_.data, From_.mirror, To_)(From_.data)
|
(MIRROR_GET_WRAP_FUNC(From_.data, From_.mirror, To_)(From_.data))
|
||||||
|
|
||||||
#define TC_MIRRORS(From_, To_)\
|
#define TC_MIRRORS(From_, To_)\
|
||||||
MIRROR_GET_WRAP_FUNC(From_.data, From_.mirror, To_) != NULL
|
(MIRROR_GET_WRAP_FUNC(From_.data, From_.mirror, To_) != NULL)
|
||||||
|
|
||||||
#define MIRROR_TRY_WRAP(Into_, Mirror_, Typeclass_){\
|
#define MIRROR_TRY_WRAP(Into_, Mirror_, Typeclass_)do{\
|
||||||
MirroredTypeclassWrapFunc fn_ = mirror_get_typeclass(Mirror_, #Typeclass_);\
|
MirroredTypeclassWrapFunc fn_ = mirror_get_typeclass(Mirror_, #Typeclass_);\
|
||||||
if(fn_ != NULL) {\
|
if(fn_ != NULL) {\
|
||||||
Into_ = (TypeClass_)fn(Mirror_->data);\
|
Into_ = (TypeClass_)fn_(Mirror_->data);\
|
||||||
}\
|
}\
|
||||||
}
|
} while(0)
|
||||||
|
|
||||||
#define impl_Mirror_for(T, get_typestring_f, get_typeid_f, get_typeclasses_f)\
|
#define impl_Mirror_for(T, get_typestring_f, get_typeid_f, get_typeclasses_f)\
|
||||||
Mirror T##_as_Mirror(T* x) {\
|
Mirror T##_as_Mirror(T* x) {\
|
||||||
|
|
Loading…
Reference in New Issue