1/*
2 *    opnames.h
3 *
4 *    Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, by Larry Wall and others
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
15typedef 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
421