View · Search · Index
No registered users in community xowiki
in last 10 minutes

[Xotcl] Weird behaviour

From: Murr, Florian <florian.murr_at_siemens.com>
Date: Thu, 5 Jan 2006 14:04:26 +0100

I extracted the code below from a very large XOTcl program that I am
developing right now.
The output of the last line 'puts "uuuuu guest_bathroom3
[guest_bathroom3 currTemp]"' puzzles me!
If I uncomment the line 'set temp [Celsius2Kelvin 20]' the output is
even weirder (an error message).
Any helpful comments?

Regards,
 - Florian


My code:


package require XOTcl
namespace import xotcl::my xotcl::self xotcl::next xotcl::Class
xotcl::_at_
namespace eval tih {
    Class Floor -parameter {
         {cubicles {}}
    }
    Class Room -parameter {
         {cubicles {}}
    }
    Room instparametercmd currTemp
    # --- 'unknown'-mechanism.
    Floor proc createRoom01 {floor aName args} {
        #set temp [Celsius2Kelvin 20]
        set room [eval {Room create $aName} $args]
        $floor lappend cubicles $aName
        $room set Floor $floor
    }
    Floor instproc rooms {{a {}}} { ;# getter/setter
        my instvar cubicles
        if {[llength $a]} {
            set itp [self]_createRoom01
            interp create $itp
            interp alias $itp unknown {} ::tih::Floor createRoom01
[self]
            set rval [$itp eval $a]
            interp delete $itp
            return
        }
        set rval [list]
        foreach i $cubicles {
            # xxx verbessern!
            if {[$i istype Room]} { lappend rval $i }
        }
        set rval
    }
    proc Celsius2Kelvin {a} { expr {$a+273.15} }
    Floor floor3 -rooms {
        guest_room
        guest_bathroom3 -currTemp [Celsius2Kelvin 30]
    }
    #puts "uuuuu guest_room [guest_room currTemp]"
    puts "uuuuu guest_bathroom3 [guest_bathroom3 currTemp]"
}