2 Object system implementation
First, to get things clear, what are considered objects here are C
structures containing a properly initialized
structure defined in ioncore/obj.h as the first element (or the
first element of the structure which is the first element and so on which
gives rise to inheritance). The WObj structure contains a pointer
to a WObjDescr class type info structure and
a list of so called ''watches''. The WObjDescr structure simply
lists the class name, a table of dynamic functions and a pointer to
deinitialisation function (or ''destructor'').
Ion does not do any reference counting, garbage collecting or other
fancy things related to automatic safe freeing of objects with its
simplistic object system. Instead special watches (the WWatch
structure) may be used to create safe references to
objects that might be destroyed during the time the specific pointer is
needed. When an object is destroyed, its list of watches is processed,
setting the pointers in the watches to NULL and the watch handlers for
each watch are called.