|
|
@ -334,6 +334,12 @@ struct lua_State { |
|
|
|
|
|
|
|
/*
|
|
|
|
** Union of all collectable objects (only for conversions) |
|
|
|
** ISO C99, 6.5.2.3 p.5: |
|
|
|
** "if a union contains several structures that share a common initial |
|
|
|
** sequence [...], and if the union object currently contains one |
|
|
|
** of these structures, it is permitted to inspect the common initial |
|
|
|
** part of any of them anywhere that a declaration of the complete type |
|
|
|
** of the union is visible." |
|
|
|
*/ |
|
|
|
union GCUnion { |
|
|
|
GCObject gc; /* common header */ |
|
|
@ -347,6 +353,11 @@ union GCUnion { |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
** ISO C99, 6.7.2.1 p.14: |
|
|
|
** "A pointer to a union object, suitably converted, points to each of |
|
|
|
** its members [...], and vice versa." |
|
|
|
*/ |
|
|
|
#define cast_u(o) cast(union GCUnion *, (o)) |
|
|
|
|
|
|
|
/* macros to convert a GCObject into a specific value */ |
|
|
|