s5 vobject properties
Things have been quiet lately, but I assure you, we are still working!
Anyway, something I've been mulling over --
One of the planned changes in the design of s5 as compared to s4 is the
integration of plain-old-data properties as part of the vobject class
definition. In s3 and s4, property data (simple stuff like integers,
strings, position vectors, etc) is stored by special vobjects with a
special "property" type. This has some nice advantages in that the
properties describing a vobject are just child links to other vobjects,
so browsing and editing vobject structures is very straightforward.
The disadvantage of this scheme is that it is very inefficient. It
results in vast amounts of overhead for storing what amounts to a field
in a data structure, and it also introduces coordination issues among
property vobjects that should otherwise be logically tied closely
together. It would be much better (more memory efficient among other
things) to be able to store simple data as part of the vobject class
directly.
So, for s5, the idea I originally had was to try and meet these goals
halfway and have "embedded children". These would be sort of "virtual
vobjects" (hah) that would appear to be child vobjects, but be managed
entirely by the parent vobject they are embedded in. This would combine
the benefits of the "everything is a vobject" abstraction with the
advantages of storing things more efficiently.
As always, though, the devil is in the details:
* For the "embedded child" concept to work (or even make sense), these
(Continue reading)