Index: generic/aol-xotcl.tcl =================================================================== diff -u -r46f02e4868e118466d888b35d6b281b3f2ba31ac -ra88e8894ecb881ed3fb320c30701f34725714329 --- generic/aol-xotcl.tcl (.../aol-xotcl.tcl) (revision 46f02e4868e118466d888b35d6b281b3f2ba31ac) +++ generic/aol-xotcl.tcl (.../aol-xotcl.tcl) (revision a88e8894ecb881ed3fb320c30701f34725714329) @@ -8,7 +8,7 @@ # the "lib" directory within the AOLserver tree. # -package require XOTcl; namespace import ::xotcl::* +package require XOTcl; xotcl::use xotcl1 package require xotcl::serializer ns_log notice "XOTcl version $::xotcl::version$::xotcl::patchlevel loaded" Index: library/serialize/Serializer.xotcl =================================================================== diff -u -re5b7b9261b0de87bf7a45ff7416ecd967037fa0b -ra88e8894ecb881ed3fb320c30701f34725714329 --- library/serialize/Serializer.xotcl (.../Serializer.xotcl) (revision e5b7b9261b0de87bf7a45ff7416ecd967037fa0b) +++ library/serialize/Serializer.xotcl (.../Serializer.xotcl) (revision a88e8894ecb881ed3fb320c30701f34725714329) @@ -2,6 +2,15 @@ package require XOTcl package provide xotcl::serializer 1.0 +# For the time being, we require xotcl1. + +# TODO: separate into two packages (i.e. make one xotcl1 specific +# serializer package, and (a) load this package on a load of this +# package (when ::xotcl::Object is defined), and (b) load it from +# "xotcl::use xotcl1", when the serializer is alreaded loaded. + +package require xotcl1 + namespace eval ::xotcl::serializer { ::xotcl::use xotcl2 @@ -133,9 +142,9 @@ Class create Serializer -parameter {ignoreVarsRE} { - #todo: copy to oss? use ignorePattern? .method ignore args { - # ignore the objects passed via args + # Ignore the objects passed via args. + # .skip is used for filtering only in the topological sort. foreach element $args { foreach o [Serializer allChildren $element] { set .skip($o) 1 @@ -144,7 +153,7 @@ } .method init {} { - # never serialize the (volatile) serializer object + # Never serialize the (volatile) serializer object .ignore [self] } @@ -301,11 +310,7 @@ } .object method exportObjects list { - foreach element $list { - foreach o [Serializer allChildren $element] { - set .exportObjects($o) 1 - } - } + foreach o $list {set .exportObjects($o) 1} } .object method exportedMethods {} {array names .exportMethods} @@ -330,6 +335,20 @@ } } + .object method checkExportedObject {} { + foreach o [array names .exportObjects] { + if {![::xotcl::is $o object]} { + puts stderr "Serializer exportObject: ignore non-existing object $o" + unset .exportObjects($o) + } else { + # add all child objects + foreach o [.allChildren $element] { + set .exportObjects($o) 1 + } + } + } + } + .object method all {-ignoreVarsRE -ignore} { # don't filter anything during serialization