Index: doc/migration1-2.html =================================================================== diff -u -rc619db7db573de1047ec1810dc0a8dc4d86ce98d -reef622da1b387cfd1dd68babeb0bfecfbae5caa3 --- doc/migration1-2.html (.../migration1-2.html) (revision c619db7db573de1047ec1810dc0a8dc4d86ce98d) +++ doc/migration1-2.html (.../migration1-2.html) (revision eef622da1b387cfd1dd68babeb0bfecfbae5caa3) @@ -9,13 +9,16 @@ color: black; } table i { - font-size: 80%; + font-size: 80%; } table td code i { - font-style: italic; - color: green; + font-style: italic; + color: green; } - +pre i { + font-style: italic; + color: green; +} th {color: #888888;} td hr { color: #FFFFFF; @@ -39,6 +42,7 @@ } table td { width: 400; + padding: 10px; border:1px solid #AAAAAA; } @@ -52,15 +56,48 @@
-... multiple object systems .... -
-::xotcl::use xotcl1
-
-::xotcl::use xotcl2
-
-describe, what ::xotcl::use
does
+
In general, the XOTcl 2 environment supports multiple object +systems concurrently. Effectively, every object system has different +base classes for creating both, objects and classes. Therefore, the +object systems can have different different interfaces and names of +builtin methods. Currently, XOTcl 2 supports primarily XOTcl 1 and +XOTcl 2 (XOTcl 1 provides about twice as many predefined builtin +methods).
+The support for multiple object systems can be used to load XOTcl +1 and XOTcl 2 scripts into the same interpreter. This makes migration +from XOTcl 1 to XOTcl 2 easier. The XOTcl environment provides the +predefined command ::xotcl::use to make switching between these +objects systems convenient. The following example script shows a single +script defining classes of XOTcl 1 and 2:
+ +
+ package require XOTcl + + namespace eval mypackage { + + # Some definitions for XOTcl 1 + ::xotcl::use xotcl1 + + Class C1 + C1 instproc foo {} {puts "hello world"} + + # Some definitions for XOTcl 2 + ::xotcl::use xotcl2 + + Class create C2 { + .method foo {} {puts "hello world"} + } + } ++ +
"Switching" effectively means the load some libraries if needed
+and to import either the XOTcl 1 or XOTcl 2 base classes as
+Object
and Class
into the current namespace.
+If the import is not wanted, just use package require
to
+load the necessary pieces.
+
XOTcl 1 | XOTcl 2 |
---|
XOTcl 1 | XOTcl 2 |
---|---|
Class C |
+ Class create C { |
+
my set varname value |
set .varname value |
XOTcl 1 | XOTcl 2 |
---|---|
obj info filter ?-order? ?-guards? ?pattern? |
+ obj info filter ?-order? ?-guards? ?pattern? |
+
cls info filter ?-order? ?-guards? ?pattern? |
+ cls object info filter ?-order? ?-guards? ?pattern? |
+
cls info instfilter ?-order? ?-guards? ?pattern? |
+ cls info filter ?-order? ?-guards? ?pattern? |
+
obj info mixin ?-order? ?-guards? ?pattern? |
+ obj info mixin ?-order? ?-guards? ?pattern? |
+
cls info mixin ?-order? ?-guards? ?pattern? |
+ cls object info mixin ?-order? ?-guards? ?pattern? |
+
cls info instmixin ?-order? ?-guards? ?pattern? |
+ cls info mixin ?-order? ?-guards? ?pattern? |
+
XOTcl 1 | XOTcl 2 |
---|---|
n.a. | -cls info method definition methodName |
-
cls info method name methodName
cls ?object? info method name methodName
+
cls info method type methodName
cls ?object? info method type methodName
+
XOTcl 1 | XOTcl 2 |
---|---|
cls info mixinof ?-closure? ?pattern? |
+ cls info mixinof -scope object ?-closure? ?pattern? |
+
cls info instmixinof ?-closure? ?pattern? |
+ cls info mixinof -scope class ?-closure? ?pattern? |
+
n.a. | +cls info mixinof -scope all ?-closure? ?pattern? |
+
XOTcl 1 | XOTcl 2 |
---|---|
obj istype sometype |
+
+ ::xotcl::is obj type sometype + + obj info is type sometype
+ |
+
obj ismixin cls |
+
+ ::xotcl::is obj mixin cls + + obj info is mixin cls
+ |
+
obj isclass ?cls? |
+
+ ::xotcl::is obj|cls class + + obj info is class
+ |
+
obj ismetaclass cls |
+ ::xotcl::is obj|cls metaclass
+ + obj info is metaclass
+ |
+
n.a. | +::xotcl::is cls baseclass
+ + cls info is baseclass
+ |
+
obj isobject obj2 |
+ ::xotcl::is obj|obj2 object
+ + obj info is object
+ |
+
The XOTcl 2 namespace resolvers are use as well when XOTcl 1 is used +within XOTcl 2. +
+ +XOTcl 2 performs stronger checking than XOTcl 1. The requiredness +of slots in XOTcl 1 was just a comment, while XOTcl 2 enforces it. +
+ +[self next]
returns [self filterreg]
returns
+The exit hander interface changed from a method of
+::xotcl::Object
into procs in the ::xotcl
+namespace. XOTcl 2 provides now:
+
+ ::xotcl::setExitHandler script + ::xotcl::getExitHandler + ::xotcl::unsetExitHandler ++ +