patch against t/op/sub_lval.t
[perl.git] / opnames.h
1 /*
2  *    opnames.h
3  *
4  *    Copyright (c) 1997-2002, Larry Wall
5  *
6  *    You may distribute under the terms of either the GNU General Public
7  *    License or the Artistic License, as specified in the README file.
8  *
9  *
10  * !!!!!!!   DO NOT EDIT THIS FILE   !!!!!!!
11  *  This file is built by opcode.pl from its data.  Any changes made here
12  *  will be lost!
13  */
14
15 typedef enum opcode {
16         OP_NULL,        /* 0 */
17         OP_STUB,        /* 1 */
18         OP_SCALAR,      /* 2 */
19         OP_PUSHMARK,    /* 3 */
20         OP_WANTARRAY,   /* 4 */
21         OP_CONST,       /* 5 */
22         OP_GVSV,        /* 6 */
23         OP_GV,          /* 7 */
24         OP_GELEM,       /* 8 */
25         OP_PADSV,       /* 9 */
26         OP_PADAV,       /* 10 */
27         OP_PADHV,       /* 11 */
28         OP_PADANY,      /* 12 */
29         OP_PUSHRE,      /* 13 */
30         OP_RV2GV,       /* 14 */
31         OP_RV2SV,       /* 15 */
32         OP_AV2ARYLEN,   /* 16 */
33         OP_RV2CV,       /* 17 */
34         OP_ANONCODE,    /* 18 */
35         OP_PROTOTYPE,   /* 19 */
36         OP_REFGEN,      /* 20 */
37         OP_SREFGEN,     /* 21 */
38         OP_REF,         /* 22 */
39         OP_BLESS,       /* 23 */
40         OP_BACKTICK,    /* 24 */
41         OP_GLOB,        /* 25 */
42         OP_READLINE,    /* 26 */
43         OP_RCATLINE,    /* 27 */
44         OP_REGCMAYBE,   /* 28 */
45         OP_REGCRESET,   /* 29 */
46         OP_REGCOMP,     /* 30 */
47         OP_MATCH,       /* 31 */
48         OP_QR,          /* 32 */
49         OP_SUBST,       /* 33 */
50         OP_SUBSTCONT,   /* 34 */
51         OP_TRANS,       /* 35 */
52         OP_SASSIGN,     /* 36 */
53         OP_AASSIGN,     /* 37 */
54         OP_CHOP,        /* 38 */
55         OP_SCHOP,       /* 39 */
56         OP_CHOMP,       /* 40 */
57         OP_SCHOMP,      /* 41 */
58         OP_DEFINED,     /* 42 */
59         OP_UNDEF,       /* 43 */
60         OP_STUDY,       /* 44 */
61         OP_POS,         /* 45 */
62         OP_PREINC,      /* 46 */
63         OP_I_PREINC,    /* 47 */
64         OP_PREDEC,      /* 48 */
65         OP_I_PREDEC,    /* 49 */
66         OP_POSTINC,     /* 50 */
67         OP_I_POSTINC,   /* 51 */
68         OP_POSTDEC,     /* 52 */
69         OP_I_POSTDEC,   /* 53 */
70         OP_POW,         /* 54 */
71         OP_MULTIPLY,    /* 55 */
72         OP_I_MULTIPLY,  /* 56 */
73         OP_DIVIDE,      /* 57 */
74         OP_I_DIVIDE,    /* 58 */
75         OP_MODULO,      /* 59 */
76         OP_I_MODULO,    /* 60 */
77         OP_REPEAT,      /* 61 */
78         OP_ADD,         /* 62 */
79         OP_I_ADD,       /* 63 */
80         OP_SUBTRACT,    /* 64 */
81         OP_I_SUBTRACT,  /* 65 */
82         OP_CONCAT,      /* 66 */
83         OP_STRINGIFY,   /* 67 */
84         OP_LEFT_SHIFT,  /* 68 */
85         OP_RIGHT_SHIFT, /* 69 */
86         OP_LT,          /* 70 */
87         OP_I_LT,        /* 71 */
88         OP_GT,          /* 72 */
89         OP_I_GT,        /* 73 */
90         OP_LE,          /* 74 */
91         OP_I_LE,        /* 75 */
92         OP_GE,          /* 76 */
93         OP_I_GE,        /* 77 */
94         OP_EQ,          /* 78 */
95         OP_I_EQ,        /* 79 */
96         OP_NE,          /* 80 */
97         OP_I_NE,        /* 81 */
98         OP_NCMP,        /* 82 */
99         OP_I_NCMP,      /* 83 */
100         OP_SLT,         /* 84 */
101         OP_SGT,         /* 85 */
102         OP_SLE,         /* 86 */
103         OP_SGE,         /* 87 */
104         OP_SEQ,         /* 88 */
105         OP_SNE,         /* 89 */
106         OP_SCMP,        /* 90 */
107         OP_BIT_AND,     /* 91 */
108         OP_BIT_XOR,     /* 92 */
109         OP_BIT_OR,      /* 93 */
110         OP_NEGATE,      /* 94 */
111         OP_I_NEGATE,    /* 95 */
112         OP_NOT,         /* 96 */
113         OP_COMPLEMENT,  /* 97 */
114         OP_ATAN2,       /* 98 */
115         OP_SIN,         /* 99 */
116         OP_COS,         /* 100 */
117         OP_RAND,        /* 101 */
118         OP_SRAND,       /* 102 */
119         OP_EXP,         /* 103 */
120         OP_LOG,         /* 104 */
121         OP_SQRT,        /* 105 */
122         OP_INT,         /* 106 */
123         OP_HEX,         /* 107 */
124         OP_OCT,         /* 108 */
125         OP_ABS,         /* 109 */
126         OP_LENGTH,      /* 110 */
127         OP_SUBSTR,      /* 111 */
128         OP_VEC,         /* 112 */
129         OP_INDEX,       /* 113 */
130         OP_RINDEX,      /* 114 */
131         OP_SPRINTF,     /* 115 */
132         OP_FORMLINE,    /* 116 */
133         OP_ORD,         /* 117 */
134         OP_CHR,         /* 118 */
135         OP_CRYPT,       /* 119 */
136         OP_UCFIRST,     /* 120 */
137         OP_LCFIRST,     /* 121 */
138         OP_UC,          /* 122 */
139         OP_LC,          /* 123 */
140         OP_QUOTEMETA,   /* 124 */
141         OP_RV2AV,       /* 125 */
142         OP_AELEMFAST,   /* 126 */
143         OP_AELEM,       /* 127 */
144         OP_ASLICE,      /* 128 */
145         OP_EACH,        /* 129 */
146         OP_VALUES,      /* 130 */
147         OP_KEYS,        /* 131 */
148         OP_DELETE,      /* 132 */
149         OP_EXISTS,      /* 133 */
150         OP_RV2HV,       /* 134 */
151         OP_HELEM,       /* 135 */
152         OP_HSLICE,      /* 136 */
153         OP_UNPACK,      /* 137 */
154         OP_PACK,        /* 138 */
155         OP_SPLIT,       /* 139 */
156         OP_JOIN,        /* 140 */
157         OP_LIST,        /* 141 */
158         OP_LSLICE,      /* 142 */
159         OP_ANONLIST,    /* 143 */
160         OP_ANONHASH,    /* 144 */
161         OP_SPLICE,      /* 145 */
162         OP_PUSH,        /* 146 */
163         OP_POP,         /* 147 */
164         OP_SHIFT,       /* 148 */
165         OP_UNSHIFT,     /* 149 */
166         OP_SORT,        /* 150 */
167         OP_REVERSE,     /* 151 */
168         OP_GREPSTART,   /* 152 */
169         OP_GREPWHILE,   /* 153 */
170         OP_MAPSTART,    /* 154 */
171         OP_MAPWHILE,    /* 155 */
172         OP_RANGE,       /* 156 */
173         OP_FLIP,        /* 157 */
174         OP_FLOP,        /* 158 */
175         OP_AND,         /* 159 */
176         OP_OR,          /* 160 */
177         OP_XOR,         /* 161 */
178         OP_COND_EXPR,   /* 162 */
179         OP_ANDASSIGN,   /* 163 */
180         OP_ORASSIGN,    /* 164 */
181         OP_METHOD,      /* 165 */
182         OP_ENTERSUB,    /* 166 */
183         OP_LEAVESUB,    /* 167 */
184         OP_LEAVESUBLV,  /* 168 */
185         OP_CALLER,      /* 169 */
186         OP_WARN,        /* 170 */
187         OP_DIE,         /* 171 */
188         OP_RESET,       /* 172 */
189         OP_LINESEQ,     /* 173 */
190         OP_NEXTSTATE,   /* 174 */
191         OP_DBSTATE,     /* 175 */
192         OP_UNSTACK,     /* 176 */
193         OP_ENTER,       /* 177 */
194         OP_LEAVE,       /* 178 */
195         OP_SCOPE,       /* 179 */
196         OP_ENTERITER,   /* 180 */
197         OP_ITER,        /* 181 */
198         OP_ENTERLOOP,   /* 182 */
199         OP_LEAVELOOP,   /* 183 */
200         OP_RETURN,      /* 184 */
201         OP_LAST,        /* 185 */
202         OP_NEXT,        /* 186 */
203         OP_REDO,        /* 187 */
204         OP_DUMP,        /* 188 */
205         OP_GOTO,        /* 189 */
206         OP_EXIT,        /* 190 */
207         OP_OPEN,        /* 191 */
208         OP_CLOSE,       /* 192 */
209         OP_PIPE_OP,     /* 193 */
210         OP_FILENO,      /* 194 */
211         OP_UMASK,       /* 195 */
212         OP_BINMODE,     /* 196 */
213         OP_TIE,         /* 197 */
214         OP_UNTIE,       /* 198 */
215         OP_TIED,        /* 199 */
216         OP_DBMOPEN,     /* 200 */
217         OP_DBMCLOSE,    /* 201 */
218         OP_SSELECT,     /* 202 */
219         OP_SELECT,      /* 203 */
220         OP_GETC,        /* 204 */
221         OP_READ,        /* 205 */
222         OP_ENTERWRITE,  /* 206 */
223         OP_LEAVEWRITE,  /* 207 */
224         OP_PRTF,        /* 208 */
225         OP_PRINT,       /* 209 */
226         OP_SYSOPEN,     /* 210 */
227         OP_SYSSEEK,     /* 211 */
228         OP_SYSREAD,     /* 212 */
229         OP_SYSWRITE,    /* 213 */
230         OP_SEND,        /* 214 */
231         OP_RECV,        /* 215 */
232         OP_EOF,         /* 216 */
233         OP_TELL,        /* 217 */
234         OP_SEEK,        /* 218 */
235         OP_TRUNCATE,    /* 219 */
236         OP_FCNTL,       /* 220 */
237         OP_IOCTL,       /* 221 */
238         OP_FLOCK,       /* 222 */
239         OP_SOCKET,      /* 223 */
240         OP_SOCKPAIR,    /* 224 */
241         OP_BIND,        /* 225 */
242         OP_CONNECT,     /* 226 */
243         OP_LISTEN,      /* 227 */
244         OP_ACCEPT,      /* 228 */
245         OP_SHUTDOWN,    /* 229 */
246         OP_GSOCKOPT,    /* 230 */
247         OP_SSOCKOPT,    /* 231 */
248         OP_GETSOCKNAME, /* 232 */
249         OP_GETPEERNAME, /* 233 */
250         OP_LSTAT,       /* 234 */
251         OP_STAT,        /* 235 */
252         OP_FTRREAD,     /* 236 */
253         OP_FTRWRITE,    /* 237 */
254         OP_FTREXEC,     /* 238 */
255         OP_FTEREAD,     /* 239 */
256         OP_FTEWRITE,    /* 240 */
257         OP_FTEEXEC,     /* 241 */
258         OP_FTIS,        /* 242 */
259         OP_FTEOWNED,    /* 243 */
260         OP_FTROWNED,    /* 244 */
261         OP_FTZERO,      /* 245 */
262         OP_FTSIZE,      /* 246 */
263         OP_FTMTIME,     /* 247 */
264         OP_FTATIME,     /* 248 */
265         OP_FTCTIME,     /* 249 */
266         OP_FTSOCK,      /* 250 */
267         OP_FTCHR,       /* 251 */
268         OP_FTBLK,       /* 252 */
269         OP_FTFILE,      /* 253 */
270         OP_FTDIR,       /* 254 */
271         OP_FTPIPE,      /* 255 */
272         OP_FTLINK,      /* 256 */
273         OP_FTSUID,      /* 257 */
274         OP_FTSGID,      /* 258 */
275         OP_FTSVTX,      /* 259 */
276         OP_FTTTY,       /* 260 */
277         OP_FTTEXT,      /* 261 */
278         OP_FTBINARY,    /* 262 */
279         OP_CHDIR,       /* 263 */
280         OP_CHOWN,       /* 264 */
281         OP_CHROOT,      /* 265 */
282         OP_UNLINK,      /* 266 */
283         OP_CHMOD,       /* 267 */
284         OP_UTIME,       /* 268 */
285         OP_RENAME,      /* 269 */
286         OP_LINK,        /* 270 */
287         OP_SYMLINK,     /* 271 */
288         OP_READLINK,    /* 272 */
289         OP_MKDIR,       /* 273 */
290         OP_RMDIR,       /* 274 */
291         OP_OPEN_DIR,    /* 275 */
292         OP_READDIR,     /* 276 */
293         OP_TELLDIR,     /* 277 */
294         OP_SEEKDIR,     /* 278 */
295         OP_REWINDDIR,   /* 279 */
296         OP_CLOSEDIR,    /* 280 */
297         OP_FORK,        /* 281 */
298         OP_WAIT,        /* 282 */
299         OP_WAITPID,     /* 283 */
300         OP_SYSTEM,      /* 284 */
301         OP_EXEC,        /* 285 */
302         OP_KILL,        /* 286 */
303         OP_GETPPID,     /* 287 */
304         OP_GETPGRP,     /* 288 */
305         OP_SETPGRP,     /* 289 */
306         OP_GETPRIORITY, /* 290 */
307         OP_SETPRIORITY, /* 291 */
308         OP_TIME,        /* 292 */
309         OP_TMS,         /* 293 */
310         OP_LOCALTIME,   /* 294 */
311         OP_GMTIME,      /* 295 */
312         OP_ALARM,       /* 296 */
313         OP_SLEEP,       /* 297 */
314         OP_SHMGET,      /* 298 */
315         OP_SHMCTL,      /* 299 */
316         OP_SHMREAD,     /* 300 */
317         OP_SHMWRITE,    /* 301 */
318         OP_MSGGET,      /* 302 */
319         OP_MSGCTL,      /* 303 */
320         OP_MSGSND,      /* 304 */
321         OP_MSGRCV,      /* 305 */
322         OP_SEMGET,      /* 306 */
323         OP_SEMCTL,      /* 307 */
324         OP_SEMOP,       /* 308 */
325         OP_REQUIRE,     /* 309 */
326         OP_DOFILE,      /* 310 */
327         OP_ENTEREVAL,   /* 311 */
328         OP_LEAVEEVAL,   /* 312 */
329         OP_ENTERTRY,    /* 313 */
330         OP_LEAVETRY,    /* 314 */
331         OP_GHBYNAME,    /* 315 */
332         OP_GHBYADDR,    /* 316 */
333         OP_GHOSTENT,    /* 317 */
334         OP_GNBYNAME,    /* 318 */
335         OP_GNBYADDR,    /* 319 */
336         OP_GNETENT,     /* 320 */
337         OP_GPBYNAME,    /* 321 */
338         OP_GPBYNUMBER,  /* 322 */
339         OP_GPROTOENT,   /* 323 */
340         OP_GSBYNAME,    /* 324 */
341         OP_GSBYPORT,    /* 325 */
342         OP_GSERVENT,    /* 326 */
343         OP_SHOSTENT,    /* 327 */
344         OP_SNETENT,     /* 328 */
345         OP_SPROTOENT,   /* 329 */
346         OP_SSERVENT,    /* 330 */
347         OP_EHOSTENT,    /* 331 */
348         OP_ENETENT,     /* 332 */
349         OP_EPROTOENT,   /* 333 */
350         OP_ESERVENT,    /* 334 */
351         OP_GPWNAM,      /* 335 */
352         OP_GPWUID,      /* 336 */
353         OP_GPWENT,      /* 337 */
354         OP_SPWENT,      /* 338 */
355         OP_EPWENT,      /* 339 */
356         OP_GGRNAM,      /* 340 */
357         OP_GGRGID,      /* 341 */
358         OP_GGRENT,      /* 342 */
359         OP_SGRENT,      /* 343 */
360         OP_EGRENT,      /* 344 */
361         OP_GETLOGIN,    /* 345 */
362         OP_SYSCALL,     /* 346 */
363         OP_LOCK,        /* 347 */
364         OP_THREADSV,    /* 348 */
365         OP_SETSTATE,    /* 349 */
366         OP_METHOD_NAMED,/* 350 */
367         OP_CUSTOM,      /* 351 */
368         OP_max          
369 } opcode;
370
371 #define MAXO 352
372 #define OP_phoney_INPUT_ONLY -1
373 #define OP_phoney_OUTPUT_ONLY -2
374
375
376 #define OP_IS_SOCKET(op)        \
377         ((op) == OP_ACCEPT || \
378          (op) == OP_BIND || \
379          (op) == OP_CONNECT || \
380          (op) == OP_GETPEERNAME || \
381          (op) == OP_GETSOCKNAME || \
382          (op) == OP_GSOCKOPT || \
383          (op) == OP_LISTEN || \
384          (op) == OP_RECV || \
385          (op) == OP_SEND || \
386          (op) == OP_SHUTDOWN || \
387          (op) == OP_SOCKET || \
388          (op) == OP_SOCKPAIR || \
389          (op) == OP_SSOCKOPT)
390
391
392 #define OP_IS_FILETEST(op)      \
393         ((op) == OP_FTATIME || \
394          (op) == OP_FTBINARY || \
395          (op) == OP_FTBLK || \
396          (op) == OP_FTCHR || \
397          (op) == OP_FTCTIME || \
398          (op) == OP_FTDIR || \
399          (op) == OP_FTEEXEC || \
400          (op) == OP_FTEOWNED || \
401          (op) == OP_FTEREAD || \
402          (op) == OP_FTEWRITE || \
403          (op) == OP_FTFILE || \
404          (op) == OP_FTIS || \
405          (op) == OP_FTLINK || \
406          (op) == OP_FTMTIME || \
407          (op) == OP_FTPIPE || \
408          (op) == OP_FTREXEC || \
409          (op) == OP_FTROWNED || \
410          (op) == OP_FTRREAD || \
411          (op) == OP_FTRWRITE || \
412          (op) == OP_FTSGID || \
413          (op) == OP_FTSIZE || \
414          (op) == OP_FTSOCK || \
415          (op) == OP_FTSUID || \
416          (op) == OP_FTSVTX || \
417          (op) == OP_FTTEXT || \
418          (op) == OP_FTTTY || \
419          (op) == OP_FTZERO)
420