No registered users in community xowiki
in last 10 minutes
in last 10 minutes
[Xotcl] parameters vs slots and use of "-initcmd"
From: Nico L'INSALATA (UniPI) <"Nico>
Date: Tue, 03 Jul 2007 16:48:44 +0200
Hi everybody,
my name is Nico and I'm new to XOTcl.
After spending few weeks in understanding the basic concepts of the
language, I decided to use it to model one component of the software I'm
developing as part of my PhD project (basically, configuration of
complex digital hardware macrocells). I've been attracted by XOTcl due
to its "aspect oriented" features which are today very common in the
hardware design industry.
I need some clarifications regarding the use of Class parameters and
Class slots (I will refer to v.1.5.2 of the XOTcl tutorial).
Parameters are used throughout the introduction of the tutorial to model
Class attributes, then slots are introduced in a later section. Are
slots and parameters actually the same thing? Is there some reason to
prefer one over the other?
Anyway, I've started using slots and I got lost using the -initcmd feature.
This is a "simplified" version of the code that "doesn't work" (i.e.
I'm not able to make it work :-) )
Class my_class \
-slots {
Attribute one -type integer -default { 0 }
Attribute two -type integer -default { 0 }
Attribute three -type integer -initcmd {
if { [my one] > [my two]} {
set _ 100
} else {
set _ 101010
}
}
}
The code doesn't work (of course!!) since [self] within initcmd has
value "::my_class::slot::three". So, the question is: how do I refer to
other attributes of the same class from within -initcmd { }?
And secondarily, is it possible to associate -initcmd with an instproc
of the class in which the attribute is being defined? e.g. an instproc
of Class my_class
Note that, to ensure things work properly, when instances of my_class
are created both attributes "one" and "two" are initialized, while
attribute "three" will also be refereed in a subsequent part of the
script. This behavior is bizarre and potentially unsafe, but is dictated
by another software components over which I have no control.
Thank you very much for your attention!
Nico
Date: Tue, 03 Jul 2007 16:48:44 +0200
Hi everybody,
my name is Nico and I'm new to XOTcl.
After spending few weeks in understanding the basic concepts of the
language, I decided to use it to model one component of the software I'm
developing as part of my PhD project (basically, configuration of
complex digital hardware macrocells). I've been attracted by XOTcl due
to its "aspect oriented" features which are today very common in the
hardware design industry.
I need some clarifications regarding the use of Class parameters and
Class slots (I will refer to v.1.5.2 of the XOTcl tutorial).
Parameters are used throughout the introduction of the tutorial to model
Class attributes, then slots are introduced in a later section. Are
slots and parameters actually the same thing? Is there some reason to
prefer one over the other?
Anyway, I've started using slots and I got lost using the -initcmd feature.
This is a "simplified" version of the code that "doesn't work" (i.e.
I'm not able to make it work :-) )
Class my_class \
-slots {
Attribute one -type integer -default { 0 }
Attribute two -type integer -default { 0 }
Attribute three -type integer -initcmd {
if { [my one] > [my two]} {
set _ 100
} else {
set _ 101010
}
}
}
The code doesn't work (of course!!) since [self] within initcmd has
value "::my_class::slot::three". So, the question is: how do I refer to
other attributes of the same class from within -initcmd { }?
And secondarily, is it possible to associate -initcmd with an instproc
of the class in which the attribute is being defined? e.g. an instproc
of Class my_class
Note that, to ensure things work properly, when instances of my_class
are created both attributes "one" and "two" are initialized, while
attribute "three" will also be refereed in a subsequent part of the
script. This behavior is bizarre and potentially unsafe, but is dictated
by another software components over which I have no control.
Thank you very much for your attention!
Nico