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