Re: [vos-d] templates/macros

2008-03-03 Thread Peter Amstutz
I went ahead and did it already, actually.  I needed the template functionality 
in the core so 
that I could specify VOS classes that are logically templates, such as 
UInt8DynamicArrayProperty 
(which is a property holding an array of bytes).  Without a template feature, I 
would have to do 
a lot of cut and paste to get DynamicStringArrayProperty, 
DynamicVector3ArrayProperty, etc...

The current scheme is somewhat incomplete though, we will need listeners to be 
able to properly 
propagate changes in the base template to all the template instances.

On Sat, Mar 01, 2008 at 02:14:00PM -0500, Reed Hedges wrote:
 Peter Amstutz wrote:
 
  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.
 
 
 This is definitely something we need.  It ought to be very 
 straightforward to implement as a component type, using listeners.
 
 But let's not add any more tasks like this right now, let's get the VOS 
 core working first (including listeners)
 
 Reed
 
 
 ___
 vos-d mailing list
 vos-d@interreality.org
 http://www.interreality.org/cgi-bin/mailman/listinfo/vos-d

-- 
[ 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


[vos-d] templates/macros

2008-02-18 Thread Peter Amstutz
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/BooleanPropertytrue/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