67#define objIfTmplName(iface) iface##_tmpl
73#define objIfImport(iface) extern iface objIfTmplName(iface)
80#define objIfCheck(iface) static_assert(((iface)->_implements, (iface)->_size, offsetof(*(iface), _parent) == offsetof(ObjIface, _parent)), "Not an interface")
88#define objIfBase(iface) ((ObjIface*)((iface)->_implements, (iface)->_parent, (iface)->_size, (iface)))
#define saDeclarePtr(name)
Dynamic arrays with type-safe generic programming.
size_t _size
Size of the entire interface structure including method pointers.
ObjIface * _implements
Implementation only: pointer to interface template being implemented.
ObjIface * _parent
Template only: parent interface for inheritance (NULL if no parent)