package provide xotcl::store::multi 1.0 package require -exact xotcl::store 1.0 package require XOTcl 1 namespace eval ::xotcl::store::multi { namespace import ::xotcl::* Class Storage=multi -superclass Storage Storage=multi instproc add {dbPackage args} { my instvar storages names if {$dbPackage eq ""} { set dbPackage [Storage defaultPackage] } package require xotcl::store::[string tolower $dbPackage] lappend storages [eval Storage=$dbPackage new -childof [self] $args] } Storage=multi instproc init args { my instvar storages set storages {} } Storage=multi instproc names {} { my instvar storages [lindex $storages 0] $names } Storage=multi instproc exists name { my instvar storages [lindex $storages 0] exists $name } Storage=multi instproc unset name { my instvar storages foreach s $storages {$s [self proc] $name} } Storage=multi instproc set args { my instvar storages set l [llength $args] set name [lindex $args 0] if {$l == 1} { [lindex $storages 0] set $name } elseif {$l == 2} { foreach s $storages { $s set $name [lindex $args 1]} } else { eval set $args } } Storage=multi instproc close {} { my instvar storages foreach s $storages {$s [self proc]} } Storage=multi instproc dbOpen {} { my instvar storages foreach s $storages {$s [self proc]} } Storage=multi instproc firstkey {} { my instvar storages [lindex $storages 0] firstkey } Storage=multi instproc nextkey {} { my instvar storages [lindex $storages 0] nextkey } Storage=multi instproc checkdir {} { my instvar storages foreach s $storages {$s [self proc]} } Storage=multi instproc dbOpen {} { my instvar storages foreach s $storages {$s [self proc]} } namespace export Storage=multi } namespace import ::xotcl::store::multi::*