Introduction

... general text, maybe partly from slides/paper ....

Supporting XOTcl 1 in XOTcl 2

... multiple object systems ....

::xotcl::use xotcl1

::xotcl::use xotcl2

describe, what ::xotcl::use does

XOTcl 1 Idioms in XOTcl 2

Defining Objects and Classes

XOTcl 1XOTcl 2
Class ClassName Class create ClassName
Object ObjectName Object create ObjectName
::xotcl::Class ClassName ::xotcl2::Class create ClassName
::xotcl::Object ObjectName ::xotcl2::Object create ObjectName

Defining Methods

XOTcl 1XOTcl 2
Class C
C instproc foo args {...}
C proc bar args {...}
Class create C {
  .method foo args {...}
  .object method bar args {...}
}

Class create C
C method foo args {...}
C object method bar args {...}
Object o
o set x 1
o proc foo args {...}
Object create o {
  set .x 1
  .method foo args {...}
}

Object create o
o eval {set .x 1}
#    ::xotcl::setinstvar o x 1
o method foo args {...}

Invoking Methods

XOTcl 1XOTcl 2
Class C
C instproc foo args {...}
C instproc bar args {
  my foo 1 2 3 ;# invoke own method
  o baz        ;# invoke others method
}
Object o
o proc baz {} {...}
Class create C {
  .method foo args {...}
  .method bar args {
     .foo 1 2 3 ;# invoke own method
     o baz      ;# invoke others method
  }
}
Object create o {
  .method baz {} {...}
}

Accessing Instance Variables from Method Bodies

XOTcl 1XOTcl 2
my set varname value set .varname value
set newVar [my set otherVar] set newVar [set .otherVar]

set newVar ${.otherVar}
my instvar newVar
set newVar value
set .newVar value
my exists varname info .varname

Accessing Instance Variables of other Objects

XOTcl 1XOTcl 2
obj set varname value obj eval [list set .varname value]
set newVar [obj set otherVar] set newVar [obj eval {set .otherVar}]
obj instvar newVar
set newVar value
::xotcl::importvar obj newVar
set newVar value
obj exists varname obj eval {info exists .varname}

Object Parameters

Method Parameters

Introspection

List methods defined by objects

XOTcl 1XOTcl 2
obj info commands ?pattern? obj info methods ?pattern?
obj info parametercmd ?pattern? obj info methods -methodtype setter ?pattern?
obj info procs ?pattern? obj info methods -methodtype scripted ?pattern?
n.a. obj info methods -methodtype alias ?pattern?
n.a. obj info methods -methodtype forwarder ?pattern?
n.a. obj info methods -methodtype object ?pattern?
n.a. obj info methods -callprotection public|protected ...

List methods defined by classes

cls info instcommands ?pattern? cls info methods ?pattern?
cls info instparametercmd ?pattern? cls info methods -methodtype setter ?pattern?
cls info instprocs ?pattern? cls info methods -methodtype scripted ?pattern?
n.a. cls info methods -methodtype alias ?pattern?
n.a. cls info methods -methodtype forwarder ?pattern?
n.a. cls info methods -methodtype object ?pattern?
n.a. cls info methods -callprotection public|protected ...

List class object specific methods

cls info commands ?pattern? cls object info methods ?pattern?
cls info parametercmd ?pattern? cls object info methods -methodtype setter ?pattern?
cls info procs ?pattern? cls object info methods -methodtype scripted ?pattern?
n.a. cls object info methods -methodtype alias ?pattern?
n.a. cls object info methods -methodtype forwarder ?pattern?
n.a. cls object info methods -methodtype object ?pattern?
n.a. cls object info methods -callprotection public|protected ...

List callable methods

XOTcl 1XOTcl 2
obj info methods ?pattern? obj info callable ?pattern?
n.a. # list only application specific methods
obj info callable -application

List object/class where some method is defined

XOTcl 1XOTcl 2
obj procsearch methodName obj info callable -which methodName

Predefined Methods

Dispatch, Aliases, etc.

Assertions

Method Protection


Last modified: Tue Jan 5 18:26:03 CET 2010
XOTcl 1XOTcl 2
obj check checkptions ::xotcl::assertion obj check checkptions
obj info check ::xotcl::assertion obj check
obj invar conditions ::xotcl::assertion obj object-invar conditions
obj info invar ::xotcl::assertion obj object-invar
cls instinvar conditions ::xotcl::assertion cls class-invar conditions
cls info instinvar ::xotcl::assertion cls class-invar
cls invar conditions ::xotcl::assertion cls object-invar conditions
cls info invar ::xotcl::assertion cls object-invar