Initial commit of OpenSPARC T2 design and verification files.
[OpenSPARC-T2-DV] / tools / perl-5.8.0 / lib / site_perl / 5.8.0 / sun4-solaris / Tk / Event / IO.pm
CommitLineData
86530b38
AT
1package Tk::Event::IO;
2
3use vars qw($VERSION @EXPORT_OK);
4$VERSION = '3.036'; # $Id: //depot/Tk8/Event/Event/IO.pm#12 $ +24
5
6use base qw(Exporter);
7use Symbol ();
8
9@EXPORT_OK = qw(READABLE WRITABLE);
10
11sub PrintArgs
12{
13 my $func = (caller(1))[3];
14 print "$func(",join(',',@_),")\n";
15}
16
17sub PRINT
18{
19 my $obj = shift;
20 $obj->wait(WRITABLE);
21 my $h = $obj->handle;
22 return print $h @_;
23}
24
25sub PRINTF
26{
27 my $obj = shift;
28 $obj->wait(WRITABLE);
29 my $h = $obj->handle;
30 return printf $h @_;
31}
32
33sub WRITE
34{
35 my $obj = $_[0];
36 $obj->wait(WRITABLE);
37 return syswrite($obj->handle,$_[1],$_[2]);
38}
39
40my $depth = 0;
41sub READLINE
42{
43 my $obj = shift;
44 $obj->wait(READABLE);
45 my $h = $obj->handle;
46 my $w = <$h>;
47 return $w;
48}
49
50sub READ
51{
52 my $obj = $_[0];
53 $obj->wait(READABLE);
54 my $h = $obj->handle;
55 return sysread($h,$_[1],$_[2],defined $_[3] ? $_[3] : 0);
56}
57
58sub GETC
59{
60 my $obj = $_[0];
61 $obj->wait(READABLE);
62 my $h = $obj->handle;
63 return getc($h);
64}
65
66sub CLOSE
67{
68 my $obj = shift;
69 $obj->unwatch;
70 my $h = $obj->handle;
71 return close($h);
72}
73
74sub EOF
75{
76 my $obj = shift;
77 my $h = $obj->handle;
78 return eof($h);
79}
80
81sub FILENO
82{
83 my $obj = shift;
84 my $h = $obj->handle;
85 return fileno($h);
86}
87
88sub imode
89{
90 my $mode = shift;
91 my $imode = ${{'readable' => READABLE(),
92 'writable' => WRITABLE()}}{$mode};
93 croak("Invalid handler type '$mode'") unless (defined $imode);
94 return $imode;
95}
96
97sub fileevent
98{
99 my ($widget,$file,$mode,$cb) = @_;
100 my $imode = imode($mode);
101 unless (ref $file)
102 {
103 no strict 'refs';
104 $file = Symbol::qualify($file,(caller)[0]);
105 $file = \*{$file};
106 }
107 my $obj = tied(*$file);
108 $obj = tie *$file,'Tk::Event::IO', $file unless $obj && $obj->isa('Tk::Event::IO');
109 if (@_ == 3)
110 {
111 return $obj->handler($imode);
112 }
113 else
114 {
115 my $h = $obj->handler($imode,$cb);
116 undef $obj;
117 untie *$file unless $h;
118 }
119}
120
1211;
122__END__