1 /*
2     insert.h:
3 
4     Copyright (C) 1991, 2002 Barry Vercoe, Istvan Varga
5 
6     This file is part of Csound.
7 
8     The Csound Library is free software; you can redistribute it
9     and/or modify it under the terms of the GNU Lesser General Public
10     License as published by the Free Software Foundation; either
11     version 2.1 of the License, or (at your option) any later version.
12 
13     Csound is distributed in the hope that it will be useful,
14     but WITHOUT ANY WARRANTY; without even the implied warranty of
15     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16     GNU Lesser General Public License for more details.
17 
18     You should have received a copy of the GNU Lesser General Public
19     License along with Csound; if not, write to the Free Software
20     Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
21     02110-1301 USA
22 */
23 
24 typedef struct {                        /*       INSERT.H                */
25     OPDS    h;
26     LBLBLK  *lblblk;
27 } GOTO;
28 
29 typedef struct {
30     OPDS    h;
31     int     *cond;
32     LBLBLK  *lblblk;
33 } CGOTO;
34 
35 typedef struct {
36     OPDS    h;
37     MYFLT   *ndxvar, *incr, *limit;
38     LBLBLK  *l;
39 } LOOP_OPS;
40 
41 typedef struct {
42     OPDS    h;
43     MYFLT   *idel, *idur;
44     LBLBLK  *lblblk;
45     int32   cnt1, cnt2;
46 } TIMOUT;
47 
48 typedef struct {
49     OPDS    h;
50 } LINK;
51 
52 typedef struct {
53     OPDS    h;
54     MYFLT  *inst;
55 } KILLOP;
56 
57 /* the number of optional outputs defined in entry.c */
58 #define SUBINSTNUMOUTS  8
59 
60 typedef struct {
61     OPCODINFO *opcode_info;
62     void    *uopcode_struct;
63     INSDS   *parent_ip;
64     MYFLT   *iobufp_ptrs[12];  /* expandable IV - Oct 26 2002 */ /* was 8 */
65 } OPCOD_IOBUFS;
66 
67 typedef struct {                        /* IV - Oct 16 2002 */
68     OPDS    h;
69     MYFLT   *ar[VARGMAX];
70     INSDS   *ip, *parent_ip;
71     AUXCH   saved_spout;
72     OPCOD_IOBUFS    buf;
73 } SUBINST;
74 
75 typedef struct {                /* IV - Sep 8 2002: new structure: UOPCODE */
76     OPDS          h;
77     INSDS         *ip, *parent_ip;
78     OPCOD_IOBUFS  *buf;
79     /*unsigned int  l_ksmps;
80     int           ksmps_scale;
81     MYFLT         l_ekr, l_onedkr, l_onedksmps, l_kicvt;
82     int           mode;*/
83     /* special case: the argument list is stored at the end of the */
84     /* opcode data structure */
85     MYFLT         *ar[1];
86 } UOPCODE;
87 
88 /* IV - Sep 8 2002: added opcodes: xin, xout, and setksmps */
89 
90 typedef struct {
91     OPDS    h;
92     MYFLT   *args[1];
93 } XIN;
94 
95 typedef struct {
96     OPDS    h;
97     MYFLT   *args[OPCODENUMOUTS_LOW];
98 } XIN_LOW;
99 
100 typedef struct {
101     OPDS    h;
102     MYFLT   *args[OPCODENUMOUTS_HIGH];
103 } XIN_HIGH;
104 
105 typedef struct {
106     OPDS    h;
107     MYFLT   *args[OPCODENUMOUTS_MAX];
108 } XIN_MAX;
109 
110 typedef struct {
111     OPDS    h;
112     MYFLT   *args[1];
113 } XOUT;
114 
115 typedef struct {
116     OPDS    h;
117     MYFLT   *args[OPCODENUMOUTS_LOW];
118 } XOUT_LOW;
119 
120 typedef struct {
121     OPDS    h;
122     MYFLT   *args[OPCODENUMOUTS_HIGH];
123 } XOUT_HIGH;
124 
125 typedef struct {
126     OPDS    h;
127     MYFLT   *args[OPCODENUMOUTS_MAX];
128 } XOUT_MAX;
129 
130 typedef struct {
131     OPDS    h;
132     MYFLT   *i_ksmps;
133 } SETKSMPS;
134 
135 typedef struct {                        /* IV - Oct 20 2002 */
136     OPDS    h;
137     MYFLT   *i_insno, *iname;
138 } NSTRNUM;
139 
140 typedef struct {                        /* JPff Feb 2019 */
141     OPDS    h;
142     STRINGDAT *ans;
143     MYFLT     *num;
144 } NSTRSTR;
145 
146 typedef struct {
147     OPDS    h;
148     MYFLT   *kInsNo, *kFlags, *kRelease;
149 } TURNOFF2;
150 
151 typedef struct {
152     OPDS    h;
153     MYFLT   *insno;
154 } DELETEIN;
155 
156