summaryrefslogtreecommitdiffstats
path: root/tcllib/modules/virtchannel_base/zero.tcl
diff options
context:
space:
mode:
Diffstat (limited to 'tcllib/modules/virtchannel_base/zero.tcl')
-rw-r--r--tcllib/modules/virtchannel_base/zero.tcl54
1 files changed, 54 insertions, 0 deletions
diff --git a/tcllib/modules/virtchannel_base/zero.tcl b/tcllib/modules/virtchannel_base/zero.tcl
new file mode 100644
index 0000000..fae27f3
--- /dev/null
+++ b/tcllib/modules/virtchannel_base/zero.tcl
@@ -0,0 +1,54 @@
+# -*- tcl -*-
+# # ## ### ##### ######## #############
+# (C) 2009 Andreas Kupries
+
+# @@ Meta Begin
+# Package tcl::chan::zero 1
+# Meta as::author {Andreas Kupries}
+# Meta as::copyright 2009
+# Meta as::license BSD
+# Meta description Re-implementation of Memchan's zero
+# Meta description channel. Based on Tcl 8.5's channel
+# Meta description reflection support. Exports a single
+# Meta description command for the creation of new
+# Meta description channels. No arguments. Result is the
+# Meta description handle of the new channel.
+# Meta platform tcl
+# Meta require TclOO
+# Meta require tcl::chan::events
+# Meta require {Tcl 8.5}
+# @@ Meta End
+
+# # ## ### ##### ######## #############
+
+package require Tcl 8.5
+package require TclOO
+package require tcl::chan::events
+
+# # ## ### ##### ######## #############
+
+namespace eval ::tcl::chan {}
+
+proc ::tcl::chan::zero {} {
+ return [::chan create {read} [zero::implementation new]]
+}
+
+oo::class create ::tcl::chan::zero::implementation {
+ superclass tcl::chan::events ; # -> initialize, finalize, watch
+
+ method initialize {args} {
+ my allow read
+ next {*}$args
+ }
+
+ # Generate and return a block of N null bytes, as requested.
+ # Zero device.
+
+ method read {c n} {
+ return [binary format @$n]
+ }
+}
+
+# # ## ### ##### ######## #############
+package provide tcl::chan::zero 1
+return