[Xotcl] Problem With Forwarding Defaults
MichaelL at frogware.com
MichaelL at frogware.com
Mon Sep 20 17:33:19 CEST 2004
I have a class I use to manage collections of aggregated objects. I'm
trying to use it with the -Class parameter option and instforwarding so
that I can do things like this:
Test x
x apples add Z
x apples items
*That* part I can get to work as expected. But I can't get the default
option of instforwarding to work for this case:
x apples
Some (simplified) sample code follows.
================================
package require XOTcl 1.3
namespace import ::xotcl::*
# Collection
Class Collection
Collection instproc new {className args} {
eval $className [self]::[[self] autoname -instance $className] $args
}
Collection instproc add {args} {
foreach objName $args {
$objName move [self]::[[self] autoname -instance [namespace tail
[$objName info class]]]
}
}
Collection instproc items {} {
return [[self] info children]
}
Collection instproc remove {objName} {
[self]::$objName destroy
}
# CollectionParameter
::xotcl::Class::Parameter CollectionParameter -superclass Collection
# Test
Class Test -parameter {
{_apples_ -Class CollectionParameter -default 1}
{_oranges_ -Class CollectionParameter -default 1}
}
# TestItem
Class TestItem
# Examples
Test instforward apples {%my _apples_}
Test instforward oranges {%my _oranges_}
Test x
x apples new TestItem
x apples new TestItem
# this works
puts [x apples items]
Test instforward apples -default {items add} {%my _apples_}
Test instforward oranges -default {items add} {%my _oranges_}
Test z
z apples new TestItem
z apples new TestItem
# this works
puts [z apples items]
# this doesn't
puts [z apples]
More information about the Xotcl
mailing list