ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/rxvt-unicode/src/iom_perl.xs
Revision: 1.3
Committed: Thu Dec 14 17:33:53 2006 UTC (17 years, 5 months ago) by root
Branch: MAIN
CVS Tags: rel-8_2, rel-8_4, rel-8_3
Changes since 1.2: +40 -37 lines
Log Message:
*** empty log message ***

File Contents

# User Rev Content
1 root 1.1 #############################################################################
2 root 1.2 # IOM_CLASS constants
3     #############################################################################
4    
5     BOOT:
6     {
7 root 1.3 {
8     HV *stash = gv_stashpv ("IOM_CLASS", 1);
9     SV *baseclass = newSVpv ("IOM_CLASS::watcher", 0);
10    
11     static const struct {
12     const char *name;
13     IV iv;
14     } *civ, iom_const_iv[] = {
15     # define iom_const_iv(name) { # name, (IV)name }
16     iom_const_iv (EVENT_NONE),
17     iom_const_iv (EVENT_READ),
18     iom_const_iv (EVENT_WRITE),
19     # undef iom_const
20     };
21    
22     for (civ = iom_const_iv + sizeof (iom_const_iv) / sizeof (iom_const_iv [0]); civ-- > iom_const_iv; )
23     newCONSTSUB (stash, (char *)civ->name, newSViv (civ->iv));
24    
25     /* slightly dirty to put the same scalar into all those arrays, but */
26     /* we do not expect users to modify them anyways */
27     av_push (get_av ("IOM_CLASS" "::timer::ISA", 1), SvREFCNT_inc (baseclass));
28     av_push (get_av ("IOM_CLASS" "::iow::ISA", 1), SvREFCNT_inc (baseclass));
29     av_push (get_av ("IOM_CLASS" "::pw::ISA", 1), SvREFCNT_inc (baseclass));
30     av_push (get_av ("IOM_CLASS" "::iw::ISA", 1), SvREFCNT_inc (baseclass));
31 root 1.2
32 root 1.3 SvREFCNT_dec (baseclass);
33     }
34 root 1.2 }
35    
36     #############################################################################
37 root 1.1 # IOM_CLASS::watcher
38     #############################################################################
39    
40     MODULE = IOM_MODULE PACKAGE = IOM_CLASS::watcher
41    
42 root 1.3 IOM_CHAINED
43 root 1.1 perl_watcher::cb (SV *cb)
44     CODE:
45     THIS->cb (cb);
46     OUTPUT:
47     RETVAL
48    
49     #############################################################################
50     # IOM_CLASS::timer
51     #############################################################################
52    
53     MODULE = IOM_MODULE PACKAGE = IOM_CLASS::timer
54    
55     SV *
56     timer::new ()
57     CODE:
58     timer *w = new timer;
59     w->start (NOW);
60     RETVAL = newSVptr ((void *)(perl_watcher *)w, "IOM_CLASS::timer");
61     w->self = (HV *)SvRV (RETVAL);
62     OUTPUT:
63     RETVAL
64    
65     NV
66     timer::at ()
67     CODE:
68     RETVAL = THIS->at;
69     OUTPUT:
70     RETVAL
71    
72 root 1.3 IOM_CHAINED
73 root 1.1 timer::interval (NV interval)
74     CODE:
75     THIS->interval = interval;
76     OUTPUT:
77     RETVAL
78    
79 root 1.3 IOM_CHAINED
80 root 1.1 timer::set (NV tstamp)
81     CODE:
82     THIS->set (tstamp);
83     OUTPUT:
84     RETVAL
85    
86 root 1.3 IOM_CHAINED
87 root 1.1 timer::start (NV tstamp = THIS->at)
88     CODE:
89     THIS->start (tstamp);
90     OUTPUT:
91     RETVAL
92    
93 root 1.3 IOM_CHAINED
94 root 1.1 timer::after (NV delay)
95     CODE:
96     THIS->start (NOW + delay);
97     OUTPUT:
98     RETVAL
99    
100 root 1.3 IOM_CHAINED
101 root 1.1 timer::stop ()
102     CODE:
103     THIS->stop ();
104     OUTPUT:
105     RETVAL
106    
107     void
108     timer::DESTROY ()
109    
110     #############################################################################
111     # IOM_CLASS::iow
112     #############################################################################
113    
114     MODULE = IOM_MODULE PACKAGE = IOM_CLASS::iow
115    
116     SV *
117     iow::new ()
118     CODE:
119     iow *w = new iow;
120     RETVAL = newSVptr ((void *)(perl_watcher *)w, "IOM_CLASS::iow");
121     w->self = (HV *)SvRV (RETVAL);
122     OUTPUT:
123     RETVAL
124    
125 root 1.3 IOM_CHAINED
126 root 1.1 iow::fd (int fd)
127     CODE:
128     THIS->fd = fd;
129     OUTPUT:
130     RETVAL
131    
132 root 1.3 IOM_CHAINED
133 root 1.1 iow::events (short events)
134     CODE:
135     THIS->events = events;
136     OUTPUT:
137     RETVAL
138    
139 root 1.3 IOM_CHAINED
140 root 1.1 iow::start ()
141     CODE:
142     THIS->start ();
143     OUTPUT:
144     RETVAL
145    
146 root 1.3 IOM_CHAINED
147 root 1.1 iow::stop ()
148     CODE:
149     THIS->stop ();
150     OUTPUT:
151     RETVAL
152    
153     void
154     iow::DESTROY ()
155    
156     #############################################################################
157     # IOM_CLASS::iw
158     #############################################################################
159    
160     MODULE = IOM_MODULE PACKAGE = IOM_CLASS::iw
161    
162     SV *
163     iw::new ()
164     CODE:
165     iw *w = new iw;
166     RETVAL = newSVptr ((void *)(perl_watcher *)w, "IOM_CLASS::iw");
167     w->self = (HV *)SvRV (RETVAL);
168     OUTPUT:
169     RETVAL
170    
171 root 1.3 IOM_CHAINED
172 root 1.1 iw::start ()
173     CODE:
174     THIS->start ();
175     OUTPUT:
176     RETVAL
177    
178 root 1.3 IOM_CHAINED
179 root 1.1 iw::stop ()
180     CODE:
181     THIS->stop ();
182     OUTPUT:
183     RETVAL
184    
185     void
186     iw::DESTROY ()
187    
188     #############################################################################
189     # IOM_CLASS::pw
190     #############################################################################
191    
192     MODULE = IOM_MODULE PACKAGE = IOM_CLASS::pw
193    
194     SV *
195     pw::new ()
196     CODE:
197     pw *w = new pw;
198     RETVAL = newSVptr ((void *)(perl_watcher *)w, "IOM_CLASS::pw");
199     w->self = (HV *)SvRV (RETVAL);
200     OUTPUT:
201     RETVAL
202    
203 root 1.3 IOM_CHAINED
204 root 1.1 pw::start (int pid)
205     CODE:
206     THIS->start (pid);
207     OUTPUT:
208     RETVAL
209    
210 root 1.3 IOM_CHAINED
211 root 1.1 pw::stop ()
212     CODE:
213     THIS->stop ();
214     OUTPUT:
215     RETVAL
216    
217     void
218     pw::DESTROY ()
219    
220