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
23 -----------------------------------------------------------------------------*/
25 //-----------------------------------------------------------------------------
26 // file: chuck_instr.h
29 // author: Ge Wang (gewang@cs.princeton.edu)
30 // Perry R. Cook (prc@cs.princeton.edu)
32 //-----------------------------------------------------------------------------
33 #ifndef __CHUCK_INSTR_H__
34 #define __CHUCK_INSTR_H__
47 #define uint unsigned long
52 //-----------------------------------------------------------------------------
53 // name: class Chuck_Instr
55 //-----------------------------------------------------------------------------
59 virtual ~Chuck_Instr() { }
62 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
) = 0;
65 virtual const char * name() const;
66 virtual const char * params() const
73 //-----------------------------------------------------------------------------
74 // name: class Chuck_Instr_Branch_Op
76 //-----------------------------------------------------------------------------
77 class Chuck_Instr_Branch_Op
: public Chuck_Instr
80 inline void set( uint jmp
) { m_jmp
= jmp
; }
83 virtual const char * params() const
84 { static char buffer
[256]; sprintf( buffer
, "%d", m_jmp
); return buffer
; }
93 //-----------------------------------------------------------------------------
94 // name: class Chuck_Instr_Unary_Op
96 //-----------------------------------------------------------------------------
97 class Chuck_Instr_Unary_Op
: public Chuck_Instr
100 inline void set( uint val
) { m_val
= val
; }
101 inline uint
get() { return m_val
; }
104 virtual const char * params() const
105 { static char buffer
[256]; sprintf( buffer
, "%d", m_val
); return buffer
; }
114 //-----------------------------------------------------------------------------
115 // name: class Chuck_Instr_Unary_Op2
117 //-----------------------------------------------------------------------------
118 class Chuck_Instr_Unary_Op2
: public Chuck_Instr
121 inline void set( double val
) { m_val
= val
; }
122 inline double get() { return m_val
; }
125 virtual const char * params() const
126 { static char buffer
[256]; sprintf( buffer
, "%.6f", m_val
); return buffer
; }
135 //-----------------------------------------------------------------------------
136 // name: class Chuck_Instr_Binary_Op
138 //-----------------------------------------------------------------------------
139 class Chuck_Instr_Binary_Op
: public Chuck_Instr
145 //-----------------------------------------------------------------------------
146 // name: class Chuck_Instr_Add_int
148 //-----------------------------------------------------------------------------
149 class Chuck_Instr_Add_int
: public Chuck_Instr_Binary_Op
152 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
158 //-----------------------------------------------------------------------------
159 // name: class Chuck_Instr_Inc_int
161 //-----------------------------------------------------------------------------
162 class Chuck_Instr_Inc_int
: public Chuck_Instr
165 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
172 //-----------------------------------------------------------------------------
173 // name: class Chuck_Instr_Dec_int
175 //-----------------------------------------------------------------------------
176 class Chuck_Instr_Dec_int
: public Chuck_Instr
179 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
185 //-----------------------------------------------------------------------------
186 // name: class Chuck_Instr_Complement_int
188 //-----------------------------------------------------------------------------
189 class Chuck_Instr_Complement_int
: public Chuck_Instr
192 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
198 //-----------------------------------------------------------------------------
199 // name: class Chuck_Instr_Mod_int
201 //-----------------------------------------------------------------------------
202 class Chuck_Instr_Mod_int
: public Chuck_Instr_Binary_Op
205 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
211 //-----------------------------------------------------------------------------
212 // name: class Chuck_Instr_Minus_int
214 //-----------------------------------------------------------------------------
215 class Chuck_Instr_Minus_int
: public Chuck_Instr_Binary_Op
218 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
224 //-----------------------------------------------------------------------------
225 // name: class Chuck_Instr_Times_int
227 //-----------------------------------------------------------------------------
228 class Chuck_Instr_Times_int
: public Chuck_Instr_Binary_Op
231 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
237 //-----------------------------------------------------------------------------
238 // name: class Chuck_Instr_Divide_int
240 //-----------------------------------------------------------------------------
241 class Chuck_Instr_Divide_int
: public Chuck_Instr_Binary_Op
244 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
250 //-----------------------------------------------------------------------------
251 // name: class Chuck_Instr_Add_uint
253 //-----------------------------------------------------------------------------
254 class Chuck_Instr_Add_uint
: public Chuck_Instr_Binary_Op
257 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
263 //-----------------------------------------------------------------------------
264 // name: class Chuck_Instr_Inc_uint
266 //-----------------------------------------------------------------------------
267 class Chuck_Instr_Inc_uint
: public Chuck_Instr
270 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
277 //-----------------------------------------------------------------------------
278 // name: class Chuck_Instr_Dec_uint
280 //-----------------------------------------------------------------------------
281 class Chuck_Instr_Dec_uint
: public Chuck_Instr
284 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
290 //-----------------------------------------------------------------------------
291 // name: class Chuck_Instr_Complement_uint
293 //-----------------------------------------------------------------------------
294 class Chuck_Instr_Complement_uint
: public Chuck_Instr
297 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
303 //-----------------------------------------------------------------------------
304 // name: class Chuck_Instr_Mod_uint
306 //-----------------------------------------------------------------------------
307 class Chuck_Instr_Mod_uint
: public Chuck_Instr_Binary_Op
310 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
316 //-----------------------------------------------------------------------------
317 // name: class Chuck_Instr_Minus_uint
319 //-----------------------------------------------------------------------------
320 class Chuck_Instr_Minus_uint
: public Chuck_Instr_Binary_Op
323 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
329 //-----------------------------------------------------------------------------
330 // name: class Chuck_Instr_Times_uint
332 //-----------------------------------------------------------------------------
333 class Chuck_Instr_Times_uint
: public Chuck_Instr_Binary_Op
336 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
342 //-----------------------------------------------------------------------------
343 // name: class Chuck_Instr_Divide_uint
345 //-----------------------------------------------------------------------------
346 class Chuck_Instr_Divide_uint
: public Chuck_Instr_Binary_Op
349 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
355 //-----------------------------------------------------------------------------
356 // name: class Chuck_Instr_Add_single
358 //-----------------------------------------------------------------------------
359 class Chuck_Instr_Add_single
: public Chuck_Instr_Binary_Op
362 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
368 //-----------------------------------------------------------------------------
369 // name: class Chuck_Instr_Minus_single
371 //-----------------------------------------------------------------------------
372 class Chuck_Instr_Minus_single
: public Chuck_Instr_Binary_Op
375 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
381 //-----------------------------------------------------------------------------
382 // name: class Chuck_Instr_Times_single
384 //-----------------------------------------------------------------------------
385 class Chuck_Instr_Times_single
: public Chuck_Instr_Binary_Op
388 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
394 //-----------------------------------------------------------------------------
395 // name: class Chuck_Instr_Divide_single
397 //-----------------------------------------------------------------------------
398 class Chuck_Instr_Divide_single
: public Chuck_Instr_Binary_Op
401 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
407 //-----------------------------------------------------------------------------
408 // name: class Chuck_Instr_Mod_single
410 //-----------------------------------------------------------------------------
411 class Chuck_Instr_Mod_single
: public Chuck_Instr_Binary_Op
414 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
420 //-----------------------------------------------------------------------------
421 // name: class Chuck_Instr_Add_double
423 //-----------------------------------------------------------------------------
424 class Chuck_Instr_Add_double
: public Chuck_Instr_Binary_Op
427 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
433 //-----------------------------------------------------------------------------
434 // name: class Chuck_Instr_Minus_double
436 //-----------------------------------------------------------------------------
437 class Chuck_Instr_Minus_double
: public Chuck_Instr_Binary_Op
440 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
446 //-----------------------------------------------------------------------------
447 // name: class Chuck_Instr_Times_double
449 //-----------------------------------------------------------------------------
450 class Chuck_Instr_Times_double
: public Chuck_Instr_Binary_Op
453 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
459 //-----------------------------------------------------------------------------
460 // name: class Chuck_Instr_Divide_double
462 //-----------------------------------------------------------------------------
463 class Chuck_Instr_Divide_double
: public Chuck_Instr_Binary_Op
466 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
472 //-----------------------------------------------------------------------------
473 // name: class Chuck_Instr_Mod_double
475 //-----------------------------------------------------------------------------
476 class Chuck_Instr_Mod_double
: public Chuck_Instr_Binary_Op
479 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
485 //-----------------------------------------------------------------------------
486 // name: class Chuck_Instr_Add_dur
488 //-----------------------------------------------------------------------------
489 class Chuck_Instr_Add_dur
: public Chuck_Instr_Binary_Op
492 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
498 //-----------------------------------------------------------------------------
499 // name: class Chuck_Instr_Add_dur_time
501 //-----------------------------------------------------------------------------
502 class Chuck_Instr_Add_dur_time
: public Chuck_Instr_Binary_Op
505 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
511 //-----------------------------------------------------------------------------
512 // name: class Chuck_Instr_Branch_Lt_int
514 //-----------------------------------------------------------------------------
515 class Chuck_Instr_Branch_Lt_int
: public Chuck_Instr_Branch_Op
518 Chuck_Instr_Branch_Lt_int( uint jmp
) { this->set( jmp
); }
519 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
525 //-----------------------------------------------------------------------------
526 // name: class Chuck_Instr_Branch_Gt_int
528 //-----------------------------------------------------------------------------
529 class Chuck_Instr_Branch_Gt_int
: public Chuck_Instr_Branch_Op
532 Chuck_Instr_Branch_Gt_int( uint jmp
) { this->set( jmp
); }
533 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
539 //-----------------------------------------------------------------------------
540 // name: class Chuck_Instr_Branch_Le_int
542 //-----------------------------------------------------------------------------
543 class Chuck_Instr_Branch_Le_int
: public Chuck_Instr_Branch_Op
546 Chuck_Instr_Branch_Le_int( uint jmp
) { this->set( jmp
); }
547 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
553 //-----------------------------------------------------------------------------
554 // name: class Chuck_Instr_Branch_Ge_int
556 //-----------------------------------------------------------------------------
557 class Chuck_Instr_Branch_Ge_int
: public Chuck_Instr_Branch_Op
560 Chuck_Instr_Branch_Ge_int( uint jmp
) { this->set( jmp
); }
561 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
567 //-----------------------------------------------------------------------------
568 // name: class Chuck_Instr_Branch_Eq_int
570 //-----------------------------------------------------------------------------
571 class Chuck_Instr_Branch_Eq_int
: public Chuck_Instr_Branch_Op
574 Chuck_Instr_Branch_Eq_int( uint jmp
) { this->set( jmp
); }
575 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
581 //-----------------------------------------------------------------------------
582 // name: class Chuck_Instr_Branch_Neq_int
584 //-----------------------------------------------------------------------------
585 class Chuck_Instr_Branch_Neq_int
: public Chuck_Instr_Branch_Op
588 Chuck_Instr_Branch_Neq_int( uint jmp
) { this->set( jmp
); }
589 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
595 //-----------------------------------------------------------------------------
596 // name: class Chuck_Instr_Branch_Lt_uint
598 //-----------------------------------------------------------------------------
599 class Chuck_Instr_Branch_Lt_uint
: public Chuck_Instr_Branch_Op
602 Chuck_Instr_Branch_Lt_uint( uint jmp
) { this->set( jmp
); }
603 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
609 //-----------------------------------------------------------------------------
610 // name: class Chuck_Instr_Branch_Gt_uint
612 //-----------------------------------------------------------------------------
613 class Chuck_Instr_Branch_Gt_uint
: public Chuck_Instr_Branch_Op
616 Chuck_Instr_Branch_Gt_uint( uint jmp
) { this->set( jmp
); }
617 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
623 //-----------------------------------------------------------------------------
624 // name: class Chuck_Instr_Branch_Le_uint
626 //-----------------------------------------------------------------------------
627 class Chuck_Instr_Branch_Le_uint
: public Chuck_Instr_Branch_Op
630 Chuck_Instr_Branch_Le_uint( uint jmp
) { this->set( jmp
); }
631 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
637 //-----------------------------------------------------------------------------
638 // name: class Chuck_Instr_Branch_Ge_uint
640 //-----------------------------------------------------------------------------
641 class Chuck_Instr_Branch_Ge_uint
: public Chuck_Instr_Branch_Op
644 Chuck_Instr_Branch_Ge_uint( uint jmp
) { this->set( jmp
); }
645 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
651 //-----------------------------------------------------------------------------
652 // name: class Chuck_Instr_Branch_Eq_uint
654 //-----------------------------------------------------------------------------
655 class Chuck_Instr_Branch_Eq_uint
: public Chuck_Instr_Branch_Op
658 Chuck_Instr_Branch_Eq_uint( uint jmp
) { this->set( jmp
); }
659 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
665 //-----------------------------------------------------------------------------
666 // name: class Chuck_Instr_Branch_Neq_uint
668 //-----------------------------------------------------------------------------
669 class Chuck_Instr_Branch_Neq_uint
: public Chuck_Instr_Branch_Op
672 Chuck_Instr_Branch_Neq_uint( uint jmp
) { this->set( jmp
); }
673 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
679 //-----------------------------------------------------------------------------
680 // name: class Chuck_Instr_Branch_Lt_single
682 //-----------------------------------------------------------------------------
683 class Chuck_Instr_Branch_Lt_single
: public Chuck_Instr_Branch_Op
686 Chuck_Instr_Branch_Lt_single( uint jmp
) { this->set( jmp
); }
687 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
693 //-----------------------------------------------------------------------------
694 // name: class Chuck_Instr_Branch_Gt_single
696 //-----------------------------------------------------------------------------
697 class Chuck_Instr_Branch_Gt_single
: public Chuck_Instr_Branch_Op
700 Chuck_Instr_Branch_Gt_single( uint jmp
) { this->set( jmp
); }
701 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
707 //-----------------------------------------------------------------------------
708 // name: class Chuck_Instr_Branch_Le_single
710 //-----------------------------------------------------------------------------
711 class Chuck_Instr_Branch_Le_single
: public Chuck_Instr_Branch_Op
714 Chuck_Instr_Branch_Le_single( uint jmp
) { this->set( jmp
); }
715 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
721 //-----------------------------------------------------------------------------
722 // name: class Chuck_Instr_Branch_Ge_single
724 //-----------------------------------------------------------------------------
725 class Chuck_Instr_Branch_Ge_single
: public Chuck_Instr_Branch_Op
728 Chuck_Instr_Branch_Ge_single( uint jmp
) { this->set( jmp
); }
729 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
735 //-----------------------------------------------------------------------------
736 // name: class Chuck_Instr_Branch_Eq_single
738 //-----------------------------------------------------------------------------
739 class Chuck_Instr_Branch_Eq_single
: public Chuck_Instr_Branch_Op
742 Chuck_Instr_Branch_Eq_single( uint jmp
) { this->set( jmp
); }
743 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
749 //-----------------------------------------------------------------------------
750 // name: class Chuck_Instr_Branch_Neq_single
752 //-----------------------------------------------------------------------------
753 class Chuck_Instr_Branch_Neq_single
: public Chuck_Instr_Branch_Op
756 Chuck_Instr_Branch_Neq_single( uint jmp
) { this->set( jmp
); }
757 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
763 //-----------------------------------------------------------------------------
764 // name: class Chuck_Instr_Branch_Lt_double
766 //-----------------------------------------------------------------------------
767 class Chuck_Instr_Branch_Lt_double
: public Chuck_Instr_Branch_Op
770 Chuck_Instr_Branch_Lt_double( uint jmp
) { this->set( jmp
); }
771 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
777 //-----------------------------------------------------------------------------
778 // name: class Chuck_Instr_Branch_Gt_double
780 //-----------------------------------------------------------------------------
781 class Chuck_Instr_Branch_Gt_double
: public Chuck_Instr_Branch_Op
784 Chuck_Instr_Branch_Gt_double( uint jmp
) { this->set( jmp
); }
785 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
791 //-----------------------------------------------------------------------------
792 // name: class Chuck_Instr_Branch_Le_double
794 //-----------------------------------------------------------------------------
795 class Chuck_Instr_Branch_Le_double
: public Chuck_Instr_Branch_Op
798 Chuck_Instr_Branch_Le_double( uint jmp
) { this->set( jmp
); }
799 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
805 //-----------------------------------------------------------------------------
806 // name: class Chuck_Instr_Branch_Ge_double
808 //-----------------------------------------------------------------------------
809 class Chuck_Instr_Branch_Ge_double
: public Chuck_Instr_Branch_Op
812 Chuck_Instr_Branch_Ge_double( uint jmp
) { this->set( jmp
); }
813 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
819 //-----------------------------------------------------------------------------
820 // name: class Chuck_Instr_Branch_Eq_double
822 //-----------------------------------------------------------------------------
823 class Chuck_Instr_Branch_Eq_double
: public Chuck_Instr_Branch_Op
826 Chuck_Instr_Branch_Eq_double( uint jmp
) { this->set( jmp
); }
827 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
833 //-----------------------------------------------------------------------------
834 // name: class Chuck_Instr_Branch_Neq_double
836 //-----------------------------------------------------------------------------
837 class Chuck_Instr_Branch_Neq_double
: public Chuck_Instr_Branch_Op
840 Chuck_Instr_Branch_Neq_double( uint jmp
) { this->set( jmp
); }
841 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
847 //-----------------------------------------------------------------------------
848 // name: class Chuck_Instr_Lt_int
850 //-----------------------------------------------------------------------------
851 class Chuck_Instr_Lt_int
: public Chuck_Instr_Binary_Op
854 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
860 //-----------------------------------------------------------------------------
861 // name: class Chuck_Instr_Gt_int
863 //-----------------------------------------------------------------------------
864 class Chuck_Instr_Gt_int
: public Chuck_Instr_Binary_Op
867 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
873 //-----------------------------------------------------------------------------
874 // name: class Chuck_Instr_Le_int
876 //-----------------------------------------------------------------------------
877 class Chuck_Instr_Le_int
: public Chuck_Instr_Binary_Op
880 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
886 //-----------------------------------------------------------------------------
887 // name: class Chuck_Instr_Ge_int
889 //-----------------------------------------------------------------------------
890 class Chuck_Instr_Ge_int
: public Chuck_Instr_Binary_Op
893 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
899 //-----------------------------------------------------------------------------
900 // name: class Chuck_Instr_Eq_int
902 //-----------------------------------------------------------------------------
903 class Chuck_Instr_Eq_int
: public Chuck_Instr_Binary_Op
906 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
912 //-----------------------------------------------------------------------------
913 // name: class Chuck_Instr_Neq_int
915 //-----------------------------------------------------------------------------
916 class Chuck_Instr_Neq_int
: public Chuck_Instr_Binary_Op
919 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
925 //-----------------------------------------------------------------------------
926 // name: class Chuck_Instr_Not_int
928 //-----------------------------------------------------------------------------
929 class Chuck_Instr_Not_int
: public Chuck_Instr
932 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
938 //-----------------------------------------------------------------------------
939 // name: class Chuck_Instr_Negate_int
941 //-----------------------------------------------------------------------------
942 class Chuck_Instr_Negate_int
: public Chuck_Instr
945 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
951 //-----------------------------------------------------------------------------
952 // name: class Chuck_Instr_Negate_uint
954 //-----------------------------------------------------------------------------
955 class Chuck_Instr_Negate_uint
: public Chuck_Instr
958 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
964 //-----------------------------------------------------------------------------
965 // name: class Chuck_Instr_Negate_single
967 //-----------------------------------------------------------------------------
968 class Chuck_Instr_Negate_single
: public Chuck_Instr
971 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
977 //-----------------------------------------------------------------------------
978 // name: class Chuck_Instr_Negate_double
980 //-----------------------------------------------------------------------------
981 class Chuck_Instr_Negate_double
: public Chuck_Instr
984 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
990 //-----------------------------------------------------------------------------
991 // name: class Chuck_Instr_Lt_uint
993 //-----------------------------------------------------------------------------
994 class Chuck_Instr_Lt_uint
: public Chuck_Instr_Binary_Op
997 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
1003 //-----------------------------------------------------------------------------
1004 // name: class Chuck_Instr_Gt_uint
1006 //-----------------------------------------------------------------------------
1007 class Chuck_Instr_Gt_uint
: public Chuck_Instr_Binary_Op
1010 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
1016 //-----------------------------------------------------------------------------
1017 // name: class Chuck_Instr_Le_uint
1019 //-----------------------------------------------------------------------------
1020 class Chuck_Instr_Le_uint
: public Chuck_Instr_Binary_Op
1023 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
1029 //-----------------------------------------------------------------------------
1030 // name: class Chuck_Instr_Ge_uint
1032 //-----------------------------------------------------------------------------
1033 class Chuck_Instr_Ge_uint
: public Chuck_Instr_Binary_Op
1036 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
1042 //-----------------------------------------------------------------------------
1043 // name: class Chuck_Instr_Eq_uint
1045 //-----------------------------------------------------------------------------
1046 class Chuck_Instr_Eq_uint
: public Chuck_Instr_Binary_Op
1049 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
1055 //-----------------------------------------------------------------------------
1056 // name: class Chuck_Instr_Neq_uint
1058 //-----------------------------------------------------------------------------
1059 class Chuck_Instr_Neq_uint
: public Chuck_Instr_Binary_Op
1062 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
1068 //-----------------------------------------------------------------------------
1069 // name: class Chuck_Instr_Lt_single
1071 //-----------------------------------------------------------------------------
1072 class Chuck_Instr_Lt_single
: public Chuck_Instr_Binary_Op
1075 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
1081 //-----------------------------------------------------------------------------
1082 // name: class Chuck_Instr_Gt_single
1084 //-----------------------------------------------------------------------------
1085 class Chuck_Instr_Gt_single
: public Chuck_Instr_Binary_Op
1088 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
1094 //-----------------------------------------------------------------------------
1095 // name: class Chuck_Instr_Le_single
1097 //-----------------------------------------------------------------------------
1098 class Chuck_Instr_Le_single
: public Chuck_Instr_Binary_Op
1101 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
1107 //-----------------------------------------------------------------------------
1108 // name: class Chuck_Instr_Ge_single
1110 //-----------------------------------------------------------------------------
1111 class Chuck_Instr_Ge_single
: public Chuck_Instr_Binary_Op
1114 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
1120 //-----------------------------------------------------------------------------
1121 // name: class Chuck_Instr_Eq_single
1123 //-----------------------------------------------------------------------------
1124 class Chuck_Instr_Eq_single
: public Chuck_Instr_Binary_Op
1127 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
1133 //-----------------------------------------------------------------------------
1134 // name: class Chuck_Instr_Neq_single
1136 //-----------------------------------------------------------------------------
1137 class Chuck_Instr_Neq_single
: public Chuck_Instr_Binary_Op
1140 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
1146 //-----------------------------------------------------------------------------
1147 // name: class Chuck_Instr_Lt_double
1149 //-----------------------------------------------------------------------------
1150 class Chuck_Instr_Lt_double
: public Chuck_Instr_Binary_Op
1153 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
1159 //-----------------------------------------------------------------------------
1160 // name: class Chuck_Instr_Gt_double
1162 //-----------------------------------------------------------------------------
1163 class Chuck_Instr_Gt_double
: public Chuck_Instr_Binary_Op
1166 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
1172 //-----------------------------------------------------------------------------
1173 // name: class Chuck_Instr_Le_double
1175 //-----------------------------------------------------------------------------
1176 class Chuck_Instr_Le_double
: public Chuck_Instr_Binary_Op
1179 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
1185 //-----------------------------------------------------------------------------
1186 // name: class Chuck_Instr_Ge_double
1188 //-----------------------------------------------------------------------------
1189 class Chuck_Instr_Ge_double
: public Chuck_Instr_Binary_Op
1192 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
1198 //-----------------------------------------------------------------------------
1199 // name: class Chuck_Instr_Eq_double
1201 //-----------------------------------------------------------------------------
1202 class Chuck_Instr_Eq_double
: public Chuck_Instr_Binary_Op
1205 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
1211 //-----------------------------------------------------------------------------
1212 // name: class Chuck_Instr_Neq_double
1214 //-----------------------------------------------------------------------------
1215 class Chuck_Instr_Neq_double
: public Chuck_Instr_Binary_Op
1218 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
1224 //-----------------------------------------------------------------------------
1225 // name: class Chuck_Instr_Binary_And
1227 //-----------------------------------------------------------------------------
1228 class Chuck_Instr_Binary_And
: public Chuck_Instr_Binary_Op
1231 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
1237 //-----------------------------------------------------------------------------
1238 // name: class Chuck_Instr_Binary_Or
1240 //-----------------------------------------------------------------------------
1241 class Chuck_Instr_Binary_Or
: public Chuck_Instr_Binary_Op
1244 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
1250 //-----------------------------------------------------------------------------
1251 // name: class Chuck_Instr_Binary_Xor
1253 //-----------------------------------------------------------------------------
1254 class Chuck_Instr_Binary_Xor
: public Chuck_Instr_Binary_Op
1257 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
1263 //-----------------------------------------------------------------------------
1264 // name: class Chuck_Instr_Binary_Shift_Right
1266 //-----------------------------------------------------------------------------
1267 class Chuck_Instr_Binary_Shift_Right
: public Chuck_Instr_Binary_Op
1270 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
1276 //-----------------------------------------------------------------------------
1277 // name: class Chuck_Instr_Binary_Shift_Left
1279 //-----------------------------------------------------------------------------
1280 class Chuck_Instr_Binary_Shift_Left
: public Chuck_Instr_Binary_Op
1283 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
1289 //-----------------------------------------------------------------------------
1290 // name: class Chuck_Instr_And
1292 //-----------------------------------------------------------------------------
1293 class Chuck_Instr_And
: public Chuck_Instr_Binary_Op
1296 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
1302 //-----------------------------------------------------------------------------
1303 // name: class Chuck_Instr_Or
1305 //-----------------------------------------------------------------------------
1306 class Chuck_Instr_Or
: public Chuck_Instr_Binary_Op
1309 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
1315 //-----------------------------------------------------------------------------
1316 // name: class Chuck_Instr_Goto
1318 //-----------------------------------------------------------------------------
1319 class Chuck_Instr_Goto
: public Chuck_Instr_Branch_Op
1322 Chuck_Instr_Goto( uint jmp
) { this->set( jmp
); }
1323 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
1329 //-----------------------------------------------------------------------------
1330 // name: class Chuck_Instr_Reg_Pop_Word
1331 // desc: pop word from reg stack
1332 //-----------------------------------------------------------------------------
1333 class Chuck_Instr_Reg_Pop_Word
: public Chuck_Instr
1336 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
1342 //-----------------------------------------------------------------------------
1343 // name: class Chuck_Instr_Reg_Pop_Word2
1344 // desc: pop double word from reg stack
1345 //-----------------------------------------------------------------------------
1346 class Chuck_Instr_Reg_Pop_Word2
: public Chuck_Instr
1349 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
1355 //-----------------------------------------------------------------------------
1356 // name: class Chuck_Instr_Reg_Pop_Mem
1357 // desc: pop word, and copy it to the mem stack
1358 //-----------------------------------------------------------------------------
1359 class Chuck_Instr_Reg_Pop_Mem
: public Chuck_Instr_Unary_Op
1362 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
1368 //-----------------------------------------------------------------------------
1369 // name: class Chuck_Instr_Reg_Pop_Mem2
1370 // desc: pop double word, and copy it to the mem stack
1371 //-----------------------------------------------------------------------------
1372 class Chuck_Instr_Reg_Pop_Mem2
: public Chuck_Instr_Unary_Op
1375 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
1381 //-----------------------------------------------------------------------------
1382 // name: class Chuck_Instr_Reg_Push_Imm
1383 // desc: push immediate to reg stack
1384 //-----------------------------------------------------------------------------
1385 class Chuck_Instr_Reg_Push_Imm
: public Chuck_Instr_Unary_Op
1388 Chuck_Instr_Reg_Push_Imm( uint val
)
1389 { this->set( val
); }
1392 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
1398 //-----------------------------------------------------------------------------
1399 // name: class Chuck_Instr_Reg_Push_Imm2
1400 // desc: push double immediate to reg stack
1401 //-----------------------------------------------------------------------------
1402 class Chuck_Instr_Reg_Push_Imm2
: public Chuck_Instr_Unary_Op2
1405 Chuck_Instr_Reg_Push_Imm2( double val
)
1406 { this->set( val
); }
1409 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
1415 //-----------------------------------------------------------------------------
1416 // name: class Chuck_Instr_Reg_Push_Now
1417 // desc: push value of now to reg stack
1418 //-----------------------------------------------------------------------------
1419 class Chuck_Instr_Reg_Push_Now
: public Chuck_Instr
1422 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
1428 //-----------------------------------------------------------------------------
1429 // name: class Chuck_Instr_Reg_Push_Start
1430 // desc: push value of start to reg stack
1431 //-----------------------------------------------------------------------------
1432 class Chuck_Instr_Reg_Push_Start
: public Chuck_Instr
1435 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
1441 //-----------------------------------------------------------------------------
1442 // name: class Chuck_Instr_Reg_Push_Maybe
1443 // desc: push immediate to reg stack
1444 //-----------------------------------------------------------------------------
1445 class Chuck_Instr_Reg_Push_Maybe
: public Chuck_Instr_Unary_Op
1448 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
1454 //-----------------------------------------------------------------------------
1455 // name: class Chuck_Instr_Reg_Push_Mem
1456 // desc: push a variable from mem stack to reg stack
1457 //-----------------------------------------------------------------------------
1458 class Chuck_Instr_Reg_Push_Mem
: public Chuck_Instr_Unary_Op
1461 Chuck_Instr_Reg_Push_Mem( uint src
)
1462 { this->set( src
); }
1465 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
1471 //-----------------------------------------------------------------------------
1472 // name: class Chuck_Instr_Reg_Push_Mem2
1473 // desc: push a double variable from mem stack to reg stack
1474 //-----------------------------------------------------------------------------
1475 class Chuck_Instr_Reg_Push_Mem2
: public Chuck_Instr_Unary_Op
1478 Chuck_Instr_Reg_Push_Mem2( uint src
)
1479 { this->set( src
); }
1482 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
1488 //-----------------------------------------------------------------------------
1489 // name: class Chuck_Instr_Reg_Push_Deref
1490 // desc: push a double variable from main memory to reg stack
1491 //-----------------------------------------------------------------------------
1492 class Chuck_Instr_Reg_Push_Deref
: public Chuck_Instr_Unary_Op
1495 Chuck_Instr_Reg_Push_Deref( uint src
, uint size
)
1496 { this->set( src
); m_size
= size
; }
1499 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
1506 //-----------------------------------------------------------------------------
1507 // name: class Chuck_Instr_Reg_Push_Deref
1508 // desc: push a double variable from main memory to reg stack
1509 //-----------------------------------------------------------------------------
1510 class Chuck_Instr_Reg_Push_Deref2
: public Chuck_Instr_Unary_Op2
1513 Chuck_Instr_Reg_Push_Deref2( double src
)
1514 { this->set( src
); }
1517 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
1523 //-----------------------------------------------------------------------------
1524 // name: class Chuck_Instr_Mem_Push_Imm
1525 // desc: push a value unto mem stack
1526 //-----------------------------------------------------------------------------
1527 class Chuck_Instr_Mem_Push_Imm
: public Chuck_Instr_Unary_Op
1530 Chuck_Instr_Mem_Push_Imm( uint src
)
1531 { this->set( src
); }
1534 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
1539 //-----------------------------------------------------------------------------
1540 // name: class Chuck_Instr_Mem_Push_Imm2
1541 // desc: push a double value unto mem stack
1542 //-----------------------------------------------------------------------------
1543 class Chuck_Instr_Mem_Push_Imm2
: public Chuck_Instr_Unary_Op2
1546 Chuck_Instr_Mem_Push_Imm2( double src
)
1547 { this->set( src
); }
1550 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
1555 //-----------------------------------------------------------------------------
1556 // name: class Chuck_Instr_Mem_Pop_Word
1557 // desc: pop a value from mem stack
1558 //-----------------------------------------------------------------------------
1559 class Chuck_Instr_Mem_Pop_Word
: public Chuck_Instr
1562 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
1568 //-----------------------------------------------------------------------------
1569 // name: class Chuck_Instr_Mem_Pop_Word2
1570 // desc: pop a value from mem stack
1571 //-----------------------------------------------------------------------------
1572 class Chuck_Instr_Mem_Pop_Word2
: public Chuck_Instr
1575 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
1581 //-----------------------------------------------------------------------------
1582 // name: class Chuck_Instr_Nop
1584 //-----------------------------------------------------------------------------
1585 class Chuck_Instr_Nop
: public Chuck_Instr
1588 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
1594 //-----------------------------------------------------------------------------
1595 // name: class Chuck_Instr_EOC
1597 //-----------------------------------------------------------------------------
1598 class Chuck_Instr_EOC
: public Chuck_Instr
1601 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
1607 //-----------------------------------------------------------------------------
1608 // name: class Chuck_Instr_Chuck_Assign
1610 //-----------------------------------------------------------------------------
1611 class Chuck_Instr_Chuck_Assign
: public Chuck_Instr
1614 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
1620 //-----------------------------------------------------------------------------
1621 // name: class Chuck_Instr_Chuck_Assign
1623 //-----------------------------------------------------------------------------
1624 class Chuck_Instr_Chuck_Assign2
: public Chuck_Instr
1627 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
1633 //-----------------------------------------------------------------------------
1634 // name: class Chuck_Instr_Chuck_Assign_Deref
1636 //-----------------------------------------------------------------------------
1637 class Chuck_Instr_Chuck_Assign_Deref
: public Chuck_Instr
1640 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
1646 //-----------------------------------------------------------------------------
1647 // name: class Chuck_Instr_Chuck_Assign_Deref2
1649 //-----------------------------------------------------------------------------
1650 class Chuck_Instr_Chuck_Assign_Deref2
: public Chuck_Instr
1653 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
1659 //-----------------------------------------------------------------------------
1660 // name: class Chuck_Instr_Chuck_Assign_Object
1662 //-----------------------------------------------------------------------------
1663 class Chuck_Instr_Chuck_Assign_Object
: public Chuck_Instr
1666 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
1672 //-----------------------------------------------------------------------------
1673 // name: class Chuck_Instr_Chuck_Assign_Object_Deref
1675 //-----------------------------------------------------------------------------
1676 class Chuck_Instr_Chuck_Assign_Object_Deref
: public Chuck_Instr
1679 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
1685 //-----------------------------------------------------------------------------
1686 // name: class Chuck_Instr_Chuck_Assign_Object2
1688 //-----------------------------------------------------------------------------
1689 class Chuck_Instr_Chuck_Assign_Object2
: public Chuck_Instr
1692 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
1698 //-----------------------------------------------------------------------------
1699 // name: class Chuck_Instr_Chuck_Release_Object
1701 //-----------------------------------------------------------------------------
1702 class Chuck_Instr_Chuck_Release_Object
: public Chuck_Instr
1705 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
1711 //-----------------------------------------------------------------------------
1712 // name: class Chuck_Instr_Func_Call
1714 //-----------------------------------------------------------------------------
1715 class Chuck_Instr_Func_Call
: public Chuck_Instr
1718 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
1724 //-----------------------------------------------------------------------------
1725 // name: class Chuck_Instr_Func_Call2
1727 //-----------------------------------------------------------------------------
1728 class Chuck_Instr_Func_Call2
: public Chuck_Instr
1731 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
1737 //-----------------------------------------------------------------------------
1738 // name: class Chuck_Instr_Func_Call3
1740 //-----------------------------------------------------------------------------
1741 class Chuck_Instr_Func_Call3
: public Chuck_Instr
1744 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
1750 //-----------------------------------------------------------------------------
1751 // name: class Chuck_Instr_Func_Call0
1753 //-----------------------------------------------------------------------------
1754 class Chuck_Instr_Func_Call0
: public Chuck_Instr
1757 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
1763 //-----------------------------------------------------------------------------
1764 // name: class Chuck_Instr_Func_Return
1766 //-----------------------------------------------------------------------------
1767 class Chuck_Instr_Func_Return
: public Chuck_Instr
1770 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
1776 //-----------------------------------------------------------------------------
1777 // name: class Chuck_Instr_Spork
1779 //-----------------------------------------------------------------------------
1780 class Chuck_Instr_Spork
: public Chuck_Instr_Unary_Op
1783 Chuck_Instr_Spork( uint v
= 0 ) { this->set( v
); }
1785 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
1791 //-----------------------------------------------------------------------------
1792 // name: enum CI_PrintTypeEnum
1794 //-----------------------------------------------------------------------------
1795 enum CI_PrintTypeEnum
1811 //-----------------------------------------------------------------------------
1812 // name: class Chuck_Instr_Print_Console
1814 //-----------------------------------------------------------------------------
1815 class Chuck_Instr_Print_Console
: public Chuck_Instr
1818 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
1824 //-----------------------------------------------------------------------------
1825 // name: class Chuck_Instr_Print_Console2
1827 //-----------------------------------------------------------------------------
1828 class Chuck_Instr_Print_Console2
: public Chuck_Instr
1831 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
1837 //-----------------------------------------------------------------------------
1838 // name: class Chuck_Instr_Time_Advance
1840 //-----------------------------------------------------------------------------
1841 class Chuck_Instr_Time_Advance
: public Chuck_Instr
1844 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
1850 //-----------------------------------------------------------------------------
1851 // name: class Chuck_Instr_Midi_Out
1853 //-----------------------------------------------------------------------------
1854 class Chuck_Instr_Midi_Out
: public Chuck_Instr_Unary_Op
1857 Chuck_Instr_Midi_Out( uint mode
)
1858 { this->set(mode
); }
1861 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
1867 //-----------------------------------------------------------------------------
1868 // name: class Chuck_Instr_Midi_Out_Go
1870 //-----------------------------------------------------------------------------
1871 class Chuck_Instr_Midi_Out_Go
: public Chuck_Instr_Unary_Op
1874 Chuck_Instr_Midi_Out_Go( uint mode
)
1875 { this->set( mode
); }
1878 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
1884 //-----------------------------------------------------------------------------
1885 // name: class Chuck_Instr_Midi_In
1887 //-----------------------------------------------------------------------------
1888 class Chuck_Instr_Midi_In
: public Chuck_Instr_Unary_Op
1891 Chuck_Instr_Midi_In( uint mode
)
1892 { this->set(mode
); }
1895 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
1901 //-----------------------------------------------------------------------------
1902 // name: class Chuck_Instr_Midi_In_Go
1904 //-----------------------------------------------------------------------------
1905 class Chuck_Instr_Midi_In_Go
: public Chuck_Instr_Unary_Op
1908 Chuck_Instr_Midi_In_Go( uint mode
)
1909 { this->set( mode
); }
1912 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
1918 //-----------------------------------------------------------------------------
1919 // name: class Chuck_Instr_ADC
1921 //-----------------------------------------------------------------------------
1922 class Chuck_Instr_ADC
: public Chuck_Instr
1925 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
1931 //-----------------------------------------------------------------------------
1932 // name: class Chuck_Instr_DAC
1934 //-----------------------------------------------------------------------------
1935 class Chuck_Instr_DAC
: public Chuck_Instr
1938 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
1944 //-----------------------------------------------------------------------------
1945 // name: class Chuck_Instr_Bunghole
1947 //-----------------------------------------------------------------------------
1948 class Chuck_Instr_Bunghole
: public Chuck_Instr
1951 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
1957 //-----------------------------------------------------------------------------
1958 // name: class Chuck_Instr_UGen_Link
1960 //-----------------------------------------------------------------------------
1961 class Chuck_Instr_UGen_Link
: public Chuck_Instr
1964 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
1970 //-----------------------------------------------------------------------------
1971 // name: class Chuck_Instr_UGen_UnLink
1973 //-----------------------------------------------------------------------------
1974 class Chuck_Instr_UGen_UnLink
: public Chuck_Instr
1977 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
1983 //-----------------------------------------------------------------------------
1984 // name: class Chuck_Instr_UGen_Alloc
1986 //-----------------------------------------------------------------------------
1987 class Chuck_Instr_UGen_Alloc
: public Chuck_Instr
1990 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
1996 //-----------------------------------------------------------------------------
1997 // name: class Chuck_Instr_UGen_DeAlloc
1999 //-----------------------------------------------------------------------------
2000 class Chuck_Instr_UGen_DeAlloc
: public Chuck_Instr
2003 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
2009 //-----------------------------------------------------------------------------
2010 // name: class Chuck_Instr_UGen_Ctrl
2012 //-----------------------------------------------------------------------------
2013 class Chuck_Instr_UGen_Ctrl
: public Chuck_Instr
2016 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
2022 //-----------------------------------------------------------------------------
2023 // name: class Chuck_Instr_UGen_CGet
2025 //-----------------------------------------------------------------------------
2026 class Chuck_Instr_UGen_CGet
: public Chuck_Instr
2029 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
2035 //-----------------------------------------------------------------------------
2036 // name: class Chuck_Instr_UGen_Ctrl2
2038 //-----------------------------------------------------------------------------
2039 class Chuck_Instr_UGen_Ctrl2
: public Chuck_Instr
2042 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
2048 //-----------------------------------------------------------------------------
2049 // name: class Chuck_Instr_UGen_CGet2
2051 //-----------------------------------------------------------------------------
2052 class Chuck_Instr_UGen_CGet2
: public Chuck_Instr
2055 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
2061 //-----------------------------------------------------------------------------
2062 // name: class Chuck_Instr_UGen_PMsg
2064 //-----------------------------------------------------------------------------
2065 class Chuck_Instr_UGen_PMsg
: public Chuck_Instr
2068 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
2074 //-----------------------------------------------------------------------------
2075 // name: class Chuck_Instr_UGen_Ctrl_Op
2077 //-----------------------------------------------------------------------------
2078 class Chuck_Instr_UGen_Ctrl_Op
: public Chuck_Instr
2081 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
2087 //-----------------------------------------------------------------------------
2088 // name: class Chuck_Instr_UGen_CGet_Op
2090 //-----------------------------------------------------------------------------
2091 class Chuck_Instr_UGen_CGet_Op
: public Chuck_Instr
2094 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
2100 //-----------------------------------------------------------------------------
2101 // name: class Chuck_Instr_UGen_CGet_Gain
2103 //-----------------------------------------------------------------------------
2104 class Chuck_Instr_UGen_CGet_Gain
: public Chuck_Instr
2107 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
2113 //-----------------------------------------------------------------------------
2114 // name: class Chuck_Instr_UGen_Ctrl_Gain
2116 //-----------------------------------------------------------------------------
2117 class Chuck_Instr_UGen_Ctrl_Gain
: public Chuck_Instr
2120 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
2126 //-----------------------------------------------------------------------------
2127 // name: class Chuck_Instr_UGen_CGet_Last
2129 //-----------------------------------------------------------------------------
2130 class Chuck_Instr_UGen_CGet_Last
: public Chuck_Instr
2133 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
2139 //-----------------------------------------------------------------------------
2140 // name: class Chuck_Instr_DLL_Load
2142 //-----------------------------------------------------------------------------
2143 class Chuck_Instr_DLL_Load
: public Chuck_Instr
2146 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
2152 //-----------------------------------------------------------------------------
2153 // name: class Chuck_Instr_DLL_Unload
2155 //-----------------------------------------------------------------------------
2156 class Chuck_Instr_DLL_Unload
: public Chuck_Instr
2159 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
2165 //-----------------------------------------------------------------------------
2166 // name: class Chuck_Instr_Cast_single2int
2168 //-----------------------------------------------------------------------------
2169 class Chuck_Instr_Cast_single2int
: public Chuck_Instr
2172 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
2178 //-----------------------------------------------------------------------------
2179 // name: class Chuck_Instr_Cast_int2single
2181 //-----------------------------------------------------------------------------
2182 class Chuck_Instr_Cast_int2single
: public Chuck_Instr
2185 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
2191 //-----------------------------------------------------------------------------
2192 // name: class Chuck_Instr_Cast_double2int
2194 //-----------------------------------------------------------------------------
2195 class Chuck_Instr_Cast_double2int
: public Chuck_Instr
2198 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
2204 //-----------------------------------------------------------------------------
2205 // name: class Chuck_Instr_Cast_int2double
2207 //-----------------------------------------------------------------------------
2208 class Chuck_Instr_Cast_int2double
: public Chuck_Instr
2211 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
2217 //-----------------------------------------------------------------------------
2218 // name: class Chuck_Instr_Cast_single2double
2220 //-----------------------------------------------------------------------------
2221 class Chuck_Instr_Cast_single2double
: public Chuck_Instr
2224 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);
2230 //-----------------------------------------------------------------------------
2231 // name: class Chuck_Instr_Cast_double2single
2233 //-----------------------------------------------------------------------------
2234 class Chuck_Instr_Cast_double2single
: public Chuck_Instr
2237 virtual void execute( Chuck_VM
* vm
, Chuck_VM_Shred
* shred
);