*** empty log message ***
[chuck-blob.git] / v2 / chuck_lang.h
blob85d61ed15e36ba66c4400411b42219c689b236b2
1 /*----------------------------------------------------------------------------
2 ChucK Concurrent, On-the-fly Audio Programming Language
3 Compiler and Virtual Machine
5 Copyright (c) 2004 Ge Wang and Perry R. Cook. All rights reserved.
6 http://chuck.cs.princeton.edu/
7 http://soundlab.cs.princeton.edu/
9 This program is free software; you can redistribute it and/or modify
10 it under the terms of the GNU General Public License as published by
11 the Free Software Foundation; either version 2 of the License, or
12 (at your option) any later version.
14 This program is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 GNU General Public License for more details.
19 You should have received a copy of the GNU General Public License
20 along with this program; if not, write to the Free Software
21 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
22 U.S.A.
23 -----------------------------------------------------------------------------*/
25 //-----------------------------------------------------------------------------
26 // name: chuck_lang.h
27 // desc: chuck class library base
29 // authors: Ge Wang (gewang@cs.princeton.edu)
30 // Perry R. Cook (prc@cs.princeton.edu)
31 // Ananya Misra (amisra@cs.princeton.edu)
32 // date: spring 2005
33 //-----------------------------------------------------------------------------
34 #ifndef __CHUCK_LANG_H__
35 #define __CHUCK_LANG_H__
37 #include "chuck_def.h"
38 #include "chuck_oo.h"
39 #include "chuck_dl.h"
40 #include <queue>
43 // forward reference
44 struct Chuck_UAna;
46 // query
47 DLL_QUERY lang_query( Chuck_DL_Query * QUERY );
49 // base class initialization
50 t_CKBOOL init_class_object( Chuck_Env * env, Chuck_Type * type );
51 t_CKBOOL init_class_ugen( Chuck_Env * env, Chuck_Type * type );
52 t_CKBOOL init_class_uana( Chuck_Env * env, Chuck_Type * type );
53 t_CKBOOL init_class_blob( Chuck_Env * env, Chuck_Type * type );
54 t_CKBOOL init_class_event( Chuck_Env * env, Chuck_Type * type );
55 t_CKBOOL init_class_shred( Chuck_Env * env, Chuck_Type * type );
56 t_CKBOOL init_class_io( Chuck_Env * env, Chuck_Type * type );
57 t_CKBOOL init_class_fileio( Chuck_Env * env, Chuck_Type * type );
58 t_CKBOOL init_class_string( Chuck_Env * env, Chuck_Type * type );
59 t_CKBOOL init_class_array( Chuck_Env * env, Chuck_Type * type );
60 t_CKBOOL init_class_Midi( Chuck_Env * env );
61 t_CKBOOL init_class_MidiRW( Chuck_Env * env );
62 t_CKBOOL init_class_HID( Chuck_Env * env );
67 //-----------------------------------------------------------------------------
68 // object API
69 //-----------------------------------------------------------------------------
70 CK_DLL_CTOR( object_ctor );
71 CK_DLL_DTOR( object_dtor );
72 CK_DLL_MFUN( object_equals );
73 CK_DLL_MFUN( object_getType );
74 CK_DLL_MFUN( object_hashCode );
75 CK_DLL_MFUN( object_toString );
78 //-----------------------------------------------------------------------------
79 // ugen API
80 //-----------------------------------------------------------------------------
81 CK_DLL_CTOR( ugen_ctor );
82 CK_DLL_DTOR( ugen_dtor );
83 CK_DLL_MFUN( ugen_op );
84 CK_DLL_MFUN( ugen_cget_op );
85 CK_DLL_MFUN( ugen_last );
86 CK_DLL_MFUN( ugen_cget_last );
87 CK_DLL_MFUN( ugen_next );
88 CK_DLL_MFUN( ugen_cget_next );
89 CK_DLL_MFUN( ugen_gain );
90 CK_DLL_MFUN( ugen_cget_gain );
91 CK_DLL_MFUN( ugen_numChannels );
92 CK_DLL_MFUN( ugen_cget_numChannels );
93 CK_DLL_MFUN( ugen_chan );
94 CK_DLL_MFUN( ugen_connected );
97 //-----------------------------------------------------------------------------
98 // uana API
99 //-----------------------------------------------------------------------------
100 CK_DLL_CTOR( uana_ctor );
101 CK_DLL_DTOR( uana_dtor );
102 CK_DLL_MFUN( uana_upchuck );
103 CK_DLL_MFUN( uana_blob );
104 CK_DLL_MFUN( uana_fvals );
105 CK_DLL_MFUN( uana_cvals );
106 CK_DLL_MFUN( uana_fval );
107 CK_DLL_MFUN( uana_cval );
108 CK_DLL_MFUN( uana_connected );
111 //-----------------------------------------------------------------------------
112 // uanablob API
113 //-----------------------------------------------------------------------------
114 CK_DLL_CTOR( uanablob_ctor );
115 CK_DLL_DTOR( uanablob_dtor );
116 CK_DLL_MFUN( uanablob_fvals );
117 CK_DLL_MFUN( uanablob_cvals );
118 CK_DLL_MFUN( uanablob_fval );
119 CK_DLL_MFUN( uanablob_cval );
120 CK_DLL_MFUN( uanablob_when );
123 //-----------------------------------------------------------------------------
124 // name: Chuck_UAnaBlobProxy
125 // desc: proxy for interfacing with UAnaBlob, which is a Chuck class
126 //-----------------------------------------------------------------------------
127 struct Chuck_UAnaBlobProxy
129 public:
130 Chuck_UAnaBlobProxy( Chuck_Object * blob );
131 virtual ~Chuck_UAnaBlobProxy();
133 public:
134 t_CKTIME & when();
135 Chuck_Array8 & fvals();
136 Chuck_Array16 & cvals();
138 public:
139 Chuck_Object * realblob() { return m_blob; }
141 protected:
142 Chuck_Object * m_blob;
145 // get proxy
146 Chuck_UAnaBlobProxy * getBlobProxy( const Chuck_UAna * uana );
149 //-----------------------------------------------------------------------------
150 // shred API
151 //-----------------------------------------------------------------------------
152 CK_DLL_CTOR( shred_ctor );
153 CK_DLL_DTOR( shred_dtor );
154 CK_DLL_MFUN( shred_exit );
155 CK_DLL_MFUN( shred_clone );
156 CK_DLL_MFUN( shred_id );
157 CK_DLL_MFUN( shred_yield );
158 CK_DLL_MFUN( shred_running );
159 CK_DLL_MFUN( shred_done );
160 CK_DLL_MFUN( shred_numArgs );
161 CK_DLL_MFUN( shred_getArg );
164 //-----------------------------------------------------------------------------
165 // array API
166 //-----------------------------------------------------------------------------
167 CK_DLL_CTOR( array_ctor );
168 CK_DLL_DTOR( array_dtor );
169 CK_DLL_MFUN( array_set_capacity );
170 CK_DLL_MFUN( array_get_capacity );
171 CK_DLL_MFUN( array_get_capacity_hack );
172 CK_DLL_MFUN( array_set_size );
173 CK_DLL_MFUN( array_get_size );
174 CK_DLL_MFUN( array_push_back );
175 CK_DLL_MFUN( array_pop_back );
176 CK_DLL_MFUN( array_push_front );
177 CK_DLL_MFUN( array_pop_front );
178 CK_DLL_MFUN( array_find );
179 CK_DLL_MFUN( array_erase );
180 CK_DLL_MFUN( array_clear );
181 CK_DLL_MFUN( array_reset );
184 //-----------------------------------------------------------------------------
185 // event API
186 //-----------------------------------------------------------------------------
187 CK_DLL_CTOR( event_ctor );
188 CK_DLL_DTOR( event_dtor );
189 CK_DLL_MFUN( event_signal );
190 CK_DLL_MFUN( event_broadcast );
191 CK_DLL_MFUN( event_wait );
192 CK_DLL_MFUN( event_can_wait );
195 //-----------------------------------------------------------------------------
196 // io API
197 //-----------------------------------------------------------------------------
198 CK_DLL_MFUN( io_dummy );
199 CK_DLL_SFUN( io_openfile );
202 //-----------------------------------------------------------------------------
203 // fileio API
204 //-----------------------------------------------------------------------------
205 CK_DLL_CTOR( fileio_ctor );
206 CK_DLL_DTOR( fileio_dtor );
207 CK_DLL_MFUN( fileio_open );
208 CK_DLL_MFUN( fileio_more );
209 CK_DLL_MFUN( fileio_eof );
210 CK_DLL_MFUN( fileio_good2read );
211 CK_DLL_MFUN( fileio_good2write );
212 CK_DLL_MFUN( fileio_good );
213 CK_DLL_MFUN( fileio_close );
214 CK_DLL_MFUN( fileio_readint );
215 CK_DLL_MFUN( fileio_readfloat );
216 CK_DLL_MFUN( fileio_readstring );
217 CK_DLL_MFUN( fileio_readline );
218 CK_DLL_MFUN( fileio_writeint );
219 CK_DLL_MFUN( fileio_writefloat );
220 CK_DLL_MFUN( fileio_writestring );
221 CK_DLL_MFUN( fileio_writeline );
224 //-----------------------------------------------------------------------------
225 // string API
226 //-----------------------------------------------------------------------------
227 CK_DLL_CTOR( string_ctor );
228 CK_DLL_DTOR( string_dtor );
229 CK_DLL_MFUN( string_length );
230 CK_DLL_MFUN( string_upper );
231 CK_DLL_MFUN( string_lower );
232 CK_DLL_MFUN( string_ltrim );
233 CK_DLL_MFUN( string_rtrim );
234 CK_DLL_MFUN( string_trim );
235 CK_DLL_MFUN( string_toString );
236 CK_DLL_MFUN( string_set_at );
237 CK_DLL_MFUN( string_get_at );
240 //-----------------------------------------------------------------------------
241 // name: Data_Exception
242 // desc: data for base Chuck Exception class
243 //-----------------------------------------------------------------------------
244 struct Data_Exception
246 public:
247 Data_Exception();
248 ~Data_Exception();
250 public:
252 //-----------------------------------------------------------------------------
253 // exception API
254 //-----------------------------------------------------------------------------
257 //-----------------------------------------------------------------------------
258 // MidiMsg API
259 //-----------------------------------------------------------------------------
260 CK_DLL_CTOR( MidiMsg_ctor );
263 //-----------------------------------------------------------------------------
264 // MidiRW API
265 //-----------------------------------------------------------------------------
266 CK_DLL_CTOR( MidiRW_ctor );
267 CK_DLL_DTOR( MidiRW_dtor );
268 CK_DLL_MFUN( MidiRW_open );
269 CK_DLL_MFUN( MidiRW_close );
270 CK_DLL_MFUN( MidiRW_read );
271 CK_DLL_MFUN( MidiRW_write );
274 //-----------------------------------------------------------------------------
275 // MidiMsgOut API
276 //-----------------------------------------------------------------------------
277 CK_DLL_CTOR( MidiMsgOut_ctor );
278 CK_DLL_DTOR( MidiMsgOut_dtor );
279 CK_DLL_MFUN( MidiMsgOut_open );
280 CK_DLL_MFUN( MidiMsgOut_close );
281 CK_DLL_MFUN( MidiMsgOut_write );
284 //-----------------------------------------------------------------------------
285 // MidiMsgIn API
286 //-----------------------------------------------------------------------------
287 CK_DLL_CTOR( MidiMsgIn_ctor );
288 CK_DLL_DTOR( MidiMsgIn_dtor );
289 CK_DLL_MFUN( MidiMsgIn_open );
290 CK_DLL_MFUN( MidiMsgIn_close );
291 CK_DLL_MFUN( MidiMsgIn_read );
294 //-----------------------------------------------------------------------------
295 // MidiIn API
296 //-----------------------------------------------------------------------------
297 CK_DLL_CTOR( MidiIn_ctor );
298 CK_DLL_DTOR( MidiIn_dtor );
299 CK_DLL_MFUN( MidiIn_open );
300 CK_DLL_MFUN( MidiIn_good );
301 CK_DLL_MFUN( MidiIn_num );
302 CK_DLL_MFUN( MidiIn_name );
303 CK_DLL_MFUN( MidiIn_printerr );
304 CK_DLL_MFUN( MidiIn_recv );
305 CK_DLL_MFUN( MidiIn_can_wait );
308 //-----------------------------------------------------------------------------
309 // MidiOut API
310 //-----------------------------------------------------------------------------
311 CK_DLL_CTOR( MidiOut_ctor );
312 CK_DLL_DTOR( MidiOut_dtor );
313 CK_DLL_MFUN( MidiOut_open );
314 CK_DLL_MFUN( MidiOut_good );
315 CK_DLL_MFUN( MidiOut_num );
316 CK_DLL_MFUN( MidiOut_name );
317 CK_DLL_MFUN( MidiOut_printerr );
318 CK_DLL_MFUN( MidiOut_send );
321 //-----------------------------------------------------------------------------
322 // HidMsg API
323 //-----------------------------------------------------------------------------
324 CK_DLL_MFUN( HidMsg_is_axis_motion );
325 CK_DLL_MFUN( HidMsg_is_button_down );
326 CK_DLL_MFUN( HidMsg_is_button_up );
327 CK_DLL_MFUN( HidMsg_is_mouse_motion );
328 CK_DLL_MFUN( HidMsg_is_hat_motion );
329 CK_DLL_MFUN( HidMsg_is_wheel_motion );
331 //-----------------------------------------------------------------------------
332 // HidIn API
333 //-----------------------------------------------------------------------------
334 CK_DLL_CTOR( HidIn_ctor );
335 CK_DLL_DTOR( HidIn_dtor );
336 CK_DLL_MFUN( HidIn_open );
337 CK_DLL_MFUN( HidIn_open_joystick );
338 CK_DLL_MFUN( HidIn_open_mouse );
339 CK_DLL_MFUN( HidIn_open_keyboard );
340 CK_DLL_MFUN( HidIn_open_tiltsensor );
341 CK_DLL_MFUN( HidIn_good );
342 CK_DLL_MFUN( HidIn_num );
343 CK_DLL_MFUN( HidIn_name );
344 CK_DLL_MFUN( HidIn_printerr );
345 CK_DLL_MFUN( HidIn_recv );
346 CK_DLL_MFUN( HidIn_read );
347 CK_DLL_MFUN( HidIn_send );
348 CK_DLL_MFUN( HidIn_can_wait );
349 CK_DLL_SFUN( HidIn_read_tilt_sensor );
350 CK_DLL_SFUN( HidIn_ctrl_tiltPollRate );
351 CK_DLL_SFUN( HidIn_cget_tiltPollRate );
352 CK_DLL_SFUN( HidIn_start_cursor_track );
353 CK_DLL_SFUN( HidIn_stop_cursor_track );
356 //-----------------------------------------------------------------------------
357 // HidOut API
358 //-----------------------------------------------------------------------------
359 CK_DLL_CTOR( HidOut_ctor );
360 CK_DLL_DTOR( HidOut_dtor );
361 CK_DLL_MFUN( HidOut_open );
362 CK_DLL_MFUN( HidOut_good );
363 CK_DLL_MFUN( HidOut_num );
364 CK_DLL_MFUN( HidOut_name );
365 CK_DLL_MFUN( HidOut_printerr );
366 CK_DLL_MFUN( HidOut_send );
371 #endif