Here's a quick brain dump of something I'm working on. The specific goal is deal with the problem of parameterized types. In this example, I show how one might define UInt8DynamicArrayProperty as a Property holding a DynamicArray of UInt8.
The idea is to set up "Template" vobjects which have TemplateParameters which are stand-ins for links other objects and are substituted when you actually create a template instance. The "TemplateInstance" vobject links to the template and some set of parameters, and will have an "instantiate" method on it which produces a vobject structure with the appropriate parameter substitution. Nothing coded yet, so this will likely change. Incidentally, this is actually fairly similar to the template system coded for the original hypervos (which runs parts of interreality.org) so this idea of generalized subtree substitution is likely to be useful beyond the specific problem I'm trying to solve. <vobject name="Property" type="/vos/core/Template"> <vobject name="produces" linkTo="/vos/core/Class" /> <vobject name="propertyType" type="/vos/core/TemplateParameter" /> <child name="extends" type="/vos/core/Component" /> <vobject name="value" type="/vos/core/Member"> <child name="param" linkTo="../../propertyType" /> </vobject> </vobject> <vobject name="DynamicArrayProperty" type="/vos/core/Template"> <child name="extendsTemplate" linkTo="/vos/core/Property" /> <vobject name="memberType" type="/vos/core/TemplateParameter" /> <vobject name="propertyType" type="/vos/core/DynamicArray"> <child name="memberType" linkTo="../../memberType" /> </vobject> <vobject name="size" type="/vos/core/Member"> <child name="type" linkTo="/vos/core/UInt32" /> <property name="readOnly" type="/vos/core/BooleanProperty">true</property> </vobject> <vobject name="getSlice" type="/vos/core/Method"> <vobject name="formalParameters" type="/vos/core/Struct"> <vobject name="start" type="/vos/core/Member"> <child name="type" linkTo="/vos/core/UInt32" /> </vobject> <vobject name="length" type="/vos/core/Member"> <child name="type" linkTo="/vos/core/UInt32" /> </vobject> </vobject> <child name="returnType" linkTo="../../../propertyType" /> </vobject> </vobject> <vobject name="UInt8Property" type="/vos/core/TemplateInstance"> <child name="template" linkTo="/vos/core/Property" /> <child name="propertyType" linkTo="/vos/core/UInt8" /> </vobject> <vobject name="UInt8DynamicArrayProperty" type="/vos/core/TemplateInstance"> <child name="template" linkTo="/vos/core/DynamicArrayProperty" /> <child name="memberType" linkTo="/vos/core/UInt8" /> </vobject> -- [ Peter Amstutz ][ [EMAIL PROTECTED] [EMAIL PROTECTED] [Lead Programmer][Interreality Project][Virtual Reality for the Internet] [ VOS: Next Generation Internet Communication][ http://interreality.org ] [ http://interreality.org/~tetron ][ pgpkey: pgpkeys.mit.edu 18C21DF7 ]
signature.asc
Description: Digital signature
_______________________________________________ vos-d mailing list vos-d@interreality.org http://www.interreality.org/cgi-bin/mailman/listinfo/vos-d