# ACTIVESTATE TEAPOT-PKG BEGIN TM -*- tcl -*- # -- Tcl Module # @@ Meta Begin # Package tcl::chan::core 1 # Meta as::build::date 2015-05-25 # Meta as::origin http://sourceforge.net/projects/tcllib # Meta category Reflected/virtual channel support # Meta description Basic reflected/virtual channel support # Meta license BSD # Meta platform tcl # Meta require {Tcl 8.5} # Meta require TclOO # Meta subject {virtual channel} {tip 219} {reflected channel} # Meta summary tcl::chan::core # @@ Meta End # ACTIVESTATE TEAPOT-PKG BEGIN REQUIREMENTS package require Tcl 8.5 package require TclOO # ACTIVESTATE TEAPOT-PKG END REQUIREMENTS # ACTIVESTATE TEAPOT-PKG BEGIN DECLARE package provide tcl::chan::core 1 # ACTIVESTATE TEAPOT-PKG END DECLARE # ACTIVESTATE TEAPOT-PKG END TM # -*- tcl -*- # # ## ### ##### ######## ############# # (C) 2009 Andreas Kupries # @@ Meta Begin # Package tcl::chan::core 1 # Meta as::author {Andreas Kupries} # Meta as::copyright 2009 # Meta as::license BSD # Meta description Support package handling a core # Meta description aspect of reflected base channels # Meta description (initialization, finalization). # Meta description It is expected that this class # Meta description is used as either one superclass of the # Meta description class C for a specific channel, or is # Meta description mixed into C. # Meta platform tcl # Meta require TclOO # Meta require {Tcl 8.5} # @@ Meta End # # ## ### ##### ######## ############# package require Tcl 8.5 package require TclOO # # ## ### ##### ######## ############# oo::class create ::tcl::chan::core { destructor { if {$channel eq {}} return close $channel return } # # ## ### ##### ######## ############# method initialize {thechannel mode} { set methods [info object methods [self] -all] # Note: Checking of the mode against the supported methods is # done by the caller. set channel $thechannel set supported {} foreach m { initialize finalize watch read write seek configure cget cgetall blocking } { if {$m in $methods} { lappend supported $m } } return $supported } method finalize {c} { set channel {} ; # Prevent destroctor from calling close. my destroy return } # # ## ### ##### ######## ############# variable channel # channel The channel the handler belongs to. # # ## ### ##### ######## ############# } # # ## ### ##### package provide tcl::chan::core 1 return