This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
gv.c: Initial gv_fetchpvn_flags and gv_stashpvn UTF8 cleanup
[perl5.git] / mad / PLXML.pm
CommitLineData
4691a0f3
GG
1use strict;
2use warnings;
3
6a28abbc
NC
4package PLXML;
5
6sub DESTROY { }
7
8sub walk {
9 print "walk(" . join(',', @_) . ")\n";
10 my $self = shift;
11 for my $key (sort keys %$self) {
12 print "\t$key = <$$self{$key}>\n";
13 }
4691a0f3 14 foreach my $kid (@{$$self{Kids}}) {
6a28abbc
NC
15 $kid->walk(@_);
16 }
17}
18
19package PLXML::Characters;
20
4691a0f3 21our @ISA = ('PLXML');
6a28abbc
NC
22sub walk {}
23
24package PLXML::madprops;
25
4691a0f3 26our @ISA = ('PLXML');
6a28abbc
NC
27
28package PLXML::mad_op;
29
4691a0f3 30our @ISA = ('PLXML');
6a28abbc
NC
31
32package PLXML::mad_pv;
33
4691a0f3 34our @ISA = ('PLXML');
6a28abbc
NC
35
36package PLXML::baseop;
37
4691a0f3 38our @ISA = ('PLXML');
6a28abbc
NC
39
40package PLXML::baseop_unop;
41
4691a0f3 42our @ISA = ('PLXML');
6a28abbc
NC
43
44package PLXML::binop;
45
4691a0f3 46our @ISA = ('PLXML');
6a28abbc
NC
47
48package PLXML::cop;
49
4691a0f3 50our @ISA = ('PLXML');
6a28abbc
NC
51
52package PLXML::filestatop;
53
4691a0f3 54our @ISA = ('PLXML::baseop_unop');
6a28abbc
NC
55
56package PLXML::listop;
57
4691a0f3 58our @ISA = ('PLXML');
6a28abbc
NC
59
60package PLXML::logop;
61
4691a0f3 62our @ISA = ('PLXML');
6a28abbc
NC
63
64package PLXML::loop;
65
4691a0f3 66our @ISA = ('PLXML');
6a28abbc
NC
67
68package PLXML::loopexop;
69
4691a0f3 70our @ISA = ('PLXML');
6a28abbc
NC
71
72package PLXML::padop;
73
4691a0f3 74our @ISA = ('PLXML');
6a28abbc
NC
75
76package PLXML::padop_svop;
77
4691a0f3 78our @ISA = ('PLXML');
6a28abbc
NC
79
80package PLXML::pmop;
81
4691a0f3 82our @ISA = ('PLXML');
6a28abbc
NC
83
84package PLXML::pvop_svop;
85
4691a0f3 86our @ISA = ('PLXML');
6a28abbc
NC
87
88package PLXML::unop;
89
4691a0f3 90our @ISA = ('PLXML');
6a28abbc
NC
91
92
93# New ops always go at the end, just before 'custom'
94
95# A recapitulation of the format of this file:
96# The file consists of five columns: the name of the op, an English
97# description, the name of the "check" routine used to optimize this
98# operation, some flags, and a description of the operands.
99
100# The flags consist of options followed by a mandatory op class signifier
101
102# The classes are:
103# baseop - 0 unop - 1 binop - 2
104# logop - | listop - @ pmop - /
105# padop/svop - $ padop - # (unused) loop - {
106# baseop/unop - % loopexop - } filestatop - -
107# pvop/svop - " cop - ;
108
109# Other options are:
110# needs stack mark - m
111# needs constant folding - f
112# produces a scalar - s
113# produces an integer - i
114# needs a target - t
115# target can be in a pad - T
116# has a corresponding integer version - I
117# has side effects - d
118# uses $_ if no argument given - u
119
120# Values for the operands are:
121# scalar - S list - L array - A
122# hash - H sub (CV) - C file - F
123# socket - Fs filetest - F- reference - R
124# "?" denotes an optional operand.
125
126# Nothing.
127
128package PLXML::op_null;
129
4691a0f3 130our @ISA = ('PLXML::baseop');
6a28abbc
NC
131
132sub key { 'null' }
133sub desc { 'null operation' }
134sub check { 'ck_null' }
135sub flags { '0' }
136sub args { '' }
137
138
139package PLXML::op_stub;
140
4691a0f3 141our @ISA = ('PLXML::baseop');
6a28abbc
NC
142
143sub key { 'stub' }
144sub desc { 'stub' }
145sub check { 'ck_null' }
146sub flags { '0' }
147sub args { '' }
148
149
150package PLXML::op_scalar;
151
4691a0f3 152our @ISA = ('PLXML::baseop_unop');
6a28abbc
NC
153
154sub key { 'scalar' }
155sub desc { 'scalar' }
156sub check { 'ck_fun' }
157sub flags { 's%' }
158sub args { 'S' }
159
160
161
162# Pushy stuff.
163
164package PLXML::op_pushmark;
165
4691a0f3 166our @ISA = ('PLXML::baseop');
6a28abbc
NC
167
168sub key { 'pushmark' }
169sub desc { 'pushmark' }
170sub check { 'ck_null' }
171sub flags { 's0' }
172sub args { '' }
173
174
175package PLXML::op_wantarray;
176
4691a0f3 177our @ISA = ('PLXML::baseop');
6a28abbc
NC
178
179sub key { 'wantarray' }
180sub desc { 'wantarray' }
181sub check { 'ck_null' }
182sub flags { 'is0' }
183sub args { '' }
184
185
186
187package PLXML::op_const;
188
4691a0f3 189our @ISA = ('PLXML::padop_svop');
6a28abbc
NC
190
191sub key { 'const' }
192sub desc { 'constant item' }
193sub check { 'ck_svconst' }
194sub flags { 's$' }
195sub args { '' }
196
197
198
199package PLXML::op_gvsv;
200
4691a0f3 201our @ISA = ('PLXML::padop_svop');
6a28abbc
NC
202
203sub key { 'gvsv' }
204sub desc { 'scalar variable' }
205sub check { 'ck_null' }
206sub flags { 'ds$' }
207sub args { '' }
208
209
210package PLXML::op_gv;
211
4691a0f3 212our @ISA = ('PLXML::padop_svop');
6a28abbc
NC
213
214sub key { 'gv' }
215sub desc { 'glob value' }
216sub check { 'ck_null' }
217sub flags { 'ds$' }
218sub args { '' }
219
220
221package PLXML::op_gelem;
222
4691a0f3 223our @ISA = ('PLXML::binop');
6a28abbc
NC
224
225sub key { 'gelem' }
226sub desc { 'glob elem' }
227sub check { 'ck_null' }
228sub flags { 'd2' }
229sub args { 'S S' }
230
231
232package PLXML::op_padsv;
233
4691a0f3 234our @ISA = ('PLXML::baseop');
6a28abbc
NC
235
236sub key { 'padsv' }
237sub desc { 'private variable' }
238sub check { 'ck_null' }
239sub flags { 'ds0' }
240sub args { '' }
241
242
243package PLXML::op_padav;
244
4691a0f3 245our @ISA = ('PLXML::baseop');
6a28abbc
NC
246
247sub key { 'padav' }
248sub desc { 'private array' }
249sub check { 'ck_null' }
250sub flags { 'd0' }
251sub args { '' }
252
253
254package PLXML::op_padhv;
255
4691a0f3 256our @ISA = ('PLXML::baseop');
6a28abbc
NC
257
258sub key { 'padhv' }
259sub desc { 'private hash' }
260sub check { 'ck_null' }
261sub flags { 'd0' }
262sub args { '' }
263
264
265package PLXML::op_padany;
266
4691a0f3 267our @ISA = ('PLXML::baseop');
6a28abbc
NC
268
269sub key { 'padany' }
270sub desc { 'private value' }
271sub check { 'ck_null' }
272sub flags { 'd0' }
273sub args { '' }
274
275
276
277package PLXML::op_pushre;
278
4691a0f3 279our @ISA = ('PLXML::pmop');
6a28abbc
NC
280
281sub key { 'pushre' }
282sub desc { 'push regexp' }
283sub check { 'ck_null' }
284sub flags { 'd/' }
285sub args { '' }
286
287
288
289# References and stuff.
290
291package PLXML::op_rv2gv;
292
4691a0f3 293our @ISA = ('PLXML::unop');
6a28abbc
NC
294
295sub key { 'rv2gv' }
296sub desc { 'ref-to-glob cast' }
297sub check { 'ck_rvconst' }
298sub flags { 'ds1' }
299sub args { '' }
300
301
302package PLXML::op_rv2sv;
303
4691a0f3 304our @ISA = ('PLXML::unop');
6a28abbc
NC
305
306sub key { 'rv2sv' }
307sub desc { 'scalar dereference' }
308sub check { 'ck_rvconst' }
309sub flags { 'ds1' }
310sub args { '' }
311
312
313package PLXML::op_av2arylen;
314
4691a0f3 315our @ISA = ('PLXML::unop');
6a28abbc
NC
316
317sub key { 'av2arylen' }
318sub desc { 'array length' }
319sub check { 'ck_null' }
320sub flags { 'is1' }
321sub args { '' }
322
323
324package PLXML::op_rv2cv;
325
4691a0f3 326our @ISA = ('PLXML::unop');
6a28abbc
NC
327
328sub key { 'rv2cv' }
329sub desc { 'subroutine dereference' }
330sub check { 'ck_rvconst' }
331sub flags { 'd1' }
332sub args { '' }
333
334
335package PLXML::op_anoncode;
336
4691a0f3 337our @ISA = ('PLXML::padop_svop');
6a28abbc
NC
338
339sub key { 'anoncode' }
340sub desc { 'anonymous subroutine' }
341sub check { 'ck_anoncode' }
342sub flags { '$' }
343sub args { '' }
344
345
346package PLXML::op_prototype;
347
4691a0f3 348our @ISA = ('PLXML::baseop_unop');
6a28abbc
NC
349
350sub key { 'prototype' }
351sub desc { 'subroutine prototype' }
352sub check { 'ck_null' }
353sub flags { 's%' }
354sub args { 'S' }
355
356
357package PLXML::op_refgen;
358
4691a0f3 359our @ISA = ('PLXML::unop');
6a28abbc
NC
360
361sub key { 'refgen' }
362sub desc { 'reference constructor' }
363sub check { 'ck_spair' }
364sub flags { 'm1' }
365sub args { 'L' }
366
367
368package PLXML::op_srefgen;
369
4691a0f3 370our @ISA = ('PLXML::unop');
6a28abbc
NC
371
372sub key { 'srefgen' }
373sub desc { 'single ref constructor' }
374sub check { 'ck_null' }
375sub flags { 'fs1' }
376sub args { 'S' }
377
378
379package PLXML::op_ref;
380
4691a0f3 381our @ISA = ('PLXML::baseop_unop');
6a28abbc
NC
382
383sub key { 'ref' }
384sub desc { 'reference-type operator' }
385sub check { 'ck_fun' }
386sub flags { 'stu%' }
387sub args { 'S?' }
388
389
390package PLXML::op_bless;
391
4691a0f3 392our @ISA = ('PLXML::listop');
6a28abbc
NC
393
394sub key { 'bless' }
395sub desc { 'bless' }
396sub check { 'ck_fun' }
397sub flags { 's@' }
398sub args { 'S S?' }
399
400
401
402# Pushy I/O.
403
404package PLXML::op_backtick;
405
4691a0f3 406our @ISA = ('PLXML::baseop_unop');
6a28abbc
NC
407
408sub key { 'backtick' }
409sub desc { 'quoted execution (``, qx)' }
410sub check { 'ck_open' }
411sub flags { 't%' }
412sub args { '' }
413
414
415# glob defaults its first arg to $_
416package PLXML::op_glob;
417
4691a0f3 418our @ISA = ('PLXML::listop');
6a28abbc
NC
419
420sub key { 'glob' }
421sub desc { 'glob' }
422sub check { 'ck_glob' }
423sub flags { 't@' }
424sub args { 'S?' }
425
426
427package PLXML::op_readline;
428
4691a0f3 429our @ISA = ('PLXML::baseop_unop');
6a28abbc
NC
430
431sub key { 'readline' }
432sub desc { '<HANDLE>' }
433sub check { 'ck_null' }
434sub flags { 't%' }
435sub args { 'F?' }
436
437
438package PLXML::op_rcatline;
439
4691a0f3 440our @ISA = ('PLXML::padop_svop');
6a28abbc
NC
441
442sub key { 'rcatline' }
443sub desc { 'append I/O operator' }
444sub check { 'ck_null' }
445sub flags { 't$' }
446sub args { '' }
447
448
449
450# Bindable operators.
451
452package PLXML::op_regcmaybe;
453
4691a0f3 454our @ISA = ('PLXML::unop');
6a28abbc
NC
455
456sub key { 'regcmaybe' }
457sub desc { 'regexp internal guard' }
458sub check { 'ck_fun' }
459sub flags { 's1' }
460sub args { 'S' }
461
462
463package PLXML::op_regcreset;
464
4691a0f3 465our @ISA = ('PLXML::unop');
6a28abbc
NC
466
467sub key { 'regcreset' }
468sub desc { 'regexp internal reset' }
469sub check { 'ck_fun' }
470sub flags { 's1' }
471sub args { 'S' }
472
473
474package PLXML::op_regcomp;
475
4691a0f3 476our @ISA = ('PLXML::logop');
6a28abbc
NC
477
478sub key { 'regcomp' }
479sub desc { 'regexp compilation' }
480sub check { 'ck_null' }
481sub flags { 's|' }
482sub args { 'S' }
483
484
485package PLXML::op_match;
486
4691a0f3 487our @ISA = ('PLXML::pmop');
6a28abbc
NC
488
489sub key { 'match' }
490sub desc { 'pattern match (m//)' }
491sub check { 'ck_match' }
492sub flags { 'd/' }
493sub args { '' }
494
495
496package PLXML::op_qr;
497
4691a0f3 498our @ISA = ('PLXML::pmop');
6a28abbc
NC
499
500sub key { 'qr' }
501sub desc { 'pattern quote (qr//)' }
502sub check { 'ck_match' }
503sub flags { 's/' }
504sub args { '' }
505
506
507package PLXML::op_subst;
508
4691a0f3 509our @ISA = ('PLXML::pmop');
6a28abbc
NC
510
511sub key { 'subst' }
512sub desc { 'substitution (s///)' }
513sub check { 'ck_match' }
514sub flags { 'dis/' }
515sub args { 'S' }
516
517
518package PLXML::op_substcont;
519
4691a0f3 520our @ISA = ('PLXML::logop');
6a28abbc
NC
521
522sub key { 'substcont' }
523sub desc { 'substitution iterator' }
524sub check { 'ck_null' }
525sub flags { 'dis|' }
526sub args { '' }
527
528
529package PLXML::op_trans;
530
4691a0f3 531our @ISA = ('PLXML::pvop_svop');
6a28abbc
NC
532
533sub key { 'trans' }
534sub desc { 'transliteration (tr///)' }
535sub check { 'ck_match' }
536sub flags { 'is"' }
537sub args { 'S' }
538
539
540
541# Lvalue operators.
542# sassign is special-cased for op class
543
544package PLXML::op_sassign;
545
4691a0f3 546our @ISA = ('PLXML::baseop');
6a28abbc
NC
547
548sub key { 'sassign' }
549sub desc { 'scalar assignment' }
550sub check { 'ck_sassign' }
551sub flags { 's0' }
552sub args { '' }
553
554
555package PLXML::op_aassign;
556
4691a0f3 557our @ISA = ('PLXML::binop');
6a28abbc
NC
558
559sub key { 'aassign' }
560sub desc { 'list assignment' }
561sub check { 'ck_null' }
562sub flags { 't2' }
563sub args { 'L L' }
564
565
566
567package PLXML::op_chop;
568
4691a0f3 569our @ISA = ('PLXML::baseop_unop');
6a28abbc
NC
570
571sub key { 'chop' }
572sub desc { 'chop' }
573sub check { 'ck_spair' }
574sub flags { 'mts%' }
575sub args { 'L' }
576
577
578package PLXML::op_schop;
579
4691a0f3 580our @ISA = ('PLXML::baseop_unop');
6a28abbc
NC
581
582sub key { 'schop' }
583sub desc { 'scalar chop' }
584sub check { 'ck_null' }
585sub flags { 'stu%' }
586sub args { 'S?' }
587
588
589package PLXML::op_chomp;
590
4691a0f3 591our @ISA = ('PLXML::baseop_unop');
6a28abbc
NC
592
593sub key { 'chomp' }
594sub desc { 'chomp' }
595sub check { 'ck_spair' }
596sub flags { 'mTs%' }
597sub args { 'L' }
598
599
600package PLXML::op_schomp;
601
4691a0f3 602our @ISA = ('PLXML::baseop_unop');
6a28abbc
NC
603
604sub key { 'schomp' }
605sub desc { 'scalar chomp' }
606sub check { 'ck_null' }
607sub flags { 'sTu%' }
608sub args { 'S?' }
609
610
611package PLXML::op_defined;
612
4691a0f3 613our @ISA = ('PLXML::baseop_unop');
6a28abbc
NC
614
615sub key { 'defined' }
616sub desc { 'defined operator' }
617sub check { 'ck_defined' }
618sub flags { 'isu%' }
619sub args { 'S?' }
620
621
622package PLXML::op_undef;
623
4691a0f3 624our @ISA = ('PLXML::baseop_unop');
6a28abbc
NC
625
626sub key { 'undef' }
627sub desc { 'undef operator' }
628sub check { 'ck_lfun' }
629sub flags { 's%' }
630sub args { 'S?' }
631
632
633package PLXML::op_study;
634
4691a0f3 635our @ISA = ('PLXML::baseop_unop');
6a28abbc
NC
636
637sub key { 'study' }
638sub desc { 'study' }
639sub check { 'ck_fun' }
640sub flags { 'su%' }
641sub args { 'S?' }
642
643
644package PLXML::op_pos;
645
4691a0f3 646our @ISA = ('PLXML::baseop_unop');
6a28abbc
NC
647
648sub key { 'pos' }
649sub desc { 'match position' }
650sub check { 'ck_lfun' }
651sub flags { 'stu%' }
652sub args { 'S?' }
653
654
655
656package PLXML::op_preinc;
657
4691a0f3 658our @ISA = ('PLXML::unop');
6a28abbc
NC
659
660sub key { 'preinc' }
661sub desc { 'preincrement (++)' }
662sub check { 'ck_lfun' }
663sub flags { 'dIs1' }
664sub args { 'S' }
665
666
667package PLXML::op_i_preinc;
668
4691a0f3 669our @ISA = ('PLXML::unop');
6a28abbc
NC
670
671sub key { 'i_preinc' }
672sub desc { 'integer preincrement (++)' }
673sub check { 'ck_lfun' }
674sub flags { 'dis1' }
675sub args { 'S' }
676
677
678package PLXML::op_predec;
679
4691a0f3 680our @ISA = ('PLXML::unop');
6a28abbc
NC
681
682sub key { 'predec' }
683sub desc { 'predecrement (--)' }
684sub check { 'ck_lfun' }
685sub flags { 'dIs1' }
686sub args { 'S' }
687
688
689package PLXML::op_i_predec;
690
4691a0f3 691our @ISA = ('PLXML::unop');
6a28abbc
NC
692
693sub key { 'i_predec' }
694sub desc { 'integer predecrement (--)' }
695sub check { 'ck_lfun' }
696sub flags { 'dis1' }
697sub args { 'S' }
698
699
700package PLXML::op_postinc;
701
4691a0f3 702our @ISA = ('PLXML::unop');
6a28abbc
NC
703
704sub key { 'postinc' }
705sub desc { 'postincrement (++)' }
706sub check { 'ck_lfun' }
707sub flags { 'dIst1' }
708sub args { 'S' }
709
710
711package PLXML::op_i_postinc;
712
4691a0f3 713our @ISA = ('PLXML::unop');
6a28abbc
NC
714
715sub key { 'i_postinc' }
716sub desc { 'integer postincrement (++)' }
717sub check { 'ck_lfun' }
718sub flags { 'disT1' }
719sub args { 'S' }
720
721
722package PLXML::op_postdec;
723
4691a0f3 724our @ISA = ('PLXML::unop');
6a28abbc
NC
725
726sub key { 'postdec' }
727sub desc { 'postdecrement (--)' }
728sub check { 'ck_lfun' }
729sub flags { 'dIst1' }
730sub args { 'S' }
731
732
733package PLXML::op_i_postdec;
734
4691a0f3 735our @ISA = ('PLXML::unop');
6a28abbc
NC
736
737sub key { 'i_postdec' }
738sub desc { 'integer postdecrement (--)' }
739sub check { 'ck_lfun' }
740sub flags { 'disT1' }
741sub args { 'S' }
742
743
744
745# Ordinary operators.
746
747package PLXML::op_pow;
748
4691a0f3 749our @ISA = ('PLXML::binop');
6a28abbc
NC
750
751sub key { 'pow' }
752sub desc { 'exponentiation (**)' }
753sub check { 'ck_null' }
754sub flags { 'fsT2' }
755sub args { 'S S' }
756
757
758
759package PLXML::op_multiply;
760
4691a0f3 761our @ISA = ('PLXML::binop');
6a28abbc
NC
762
763sub key { 'multiply' }
764sub desc { 'multiplication (*)' }
765sub check { 'ck_null' }
766sub flags { 'IfsT2' }
767sub args { 'S S' }
768
769
770package PLXML::op_i_multiply;
771
4691a0f3 772our @ISA = ('PLXML::binop');
6a28abbc
NC
773
774sub key { 'i_multiply' }
775sub desc { 'integer multiplication (*)' }
776sub check { 'ck_null' }
777sub flags { 'ifsT2' }
778sub args { 'S S' }
779
780
781package PLXML::op_divide;
782
4691a0f3 783our @ISA = ('PLXML::binop');
6a28abbc
NC
784
785sub key { 'divide' }
786sub desc { 'division (/)' }
787sub check { 'ck_null' }
788sub flags { 'IfsT2' }
789sub args { 'S S' }
790
791
792package PLXML::op_i_divide;
793
4691a0f3 794our @ISA = ('PLXML::binop');
6a28abbc
NC
795
796sub key { 'i_divide' }
797sub desc { 'integer division (/)' }
798sub check { 'ck_null' }
799sub flags { 'ifsT2' }
800sub args { 'S S' }
801
802
803package PLXML::op_modulo;
804
4691a0f3 805our @ISA = ('PLXML::binop');
6a28abbc
NC
806
807sub key { 'modulo' }
808sub desc { 'modulus (%)' }
809sub check { 'ck_null' }
810sub flags { 'IifsT2' }
811sub args { 'S S' }
812
813
814package PLXML::op_i_modulo;
815
4691a0f3 816our @ISA = ('PLXML::binop');
6a28abbc
NC
817
818sub key { 'i_modulo' }
819sub desc { 'integer modulus (%)' }
820sub check { 'ck_null' }
821sub flags { 'ifsT2' }
822sub args { 'S S' }
823
824
825package PLXML::op_repeat;
826
4691a0f3 827our @ISA = ('PLXML::binop');
6a28abbc
NC
828
829sub key { 'repeat' }
830sub desc { 'repeat (x)' }
831sub check { 'ck_repeat' }
832sub flags { 'mt2' }
833sub args { 'L S' }
834
835
836
837package PLXML::op_add;
838
4691a0f3 839our @ISA = ('PLXML::binop');
6a28abbc
NC
840
841sub key { 'add' }
842sub desc { 'addition (+)' }
843sub check { 'ck_null' }
844sub flags { 'IfsT2' }
845sub args { 'S S' }
846
847
848package PLXML::op_i_add;
849
4691a0f3 850our @ISA = ('PLXML::binop');
6a28abbc
NC
851
852sub key { 'i_add' }
853sub desc { 'integer addition (+)' }
854sub check { 'ck_null' }
855sub flags { 'ifsT2' }
856sub args { 'S S' }
857
858
859package PLXML::op_subtract;
860
4691a0f3 861our @ISA = ('PLXML::binop');
6a28abbc
NC
862
863sub key { 'subtract' }
864sub desc { 'subtraction (-)' }
865sub check { 'ck_null' }
866sub flags { 'IfsT2' }
867sub args { 'S S' }
868
869
870package PLXML::op_i_subtract;
871
4691a0f3 872our @ISA = ('PLXML::binop');
6a28abbc
NC
873
874sub key { 'i_subtract' }
875sub desc { 'integer subtraction (-)' }
876sub check { 'ck_null' }
877sub flags { 'ifsT2' }
878sub args { 'S S' }
879
880
881package PLXML::op_concat;
882
4691a0f3 883our @ISA = ('PLXML::binop');
6a28abbc
NC
884
885sub key { 'concat' }
886sub desc { 'concatenation (.) or string' }
887sub check { 'ck_concat' }
888sub flags { 'fsT2' }
889sub args { 'S S' }
890
891
892package PLXML::op_stringify;
893
4691a0f3 894our @ISA = ('PLXML::listop');
6a28abbc
NC
895
896sub key { 'stringify' }
897sub desc { 'string' }
898sub check { 'ck_fun' }
899sub flags { 'fsT@' }
900sub args { 'S' }
901
902
903
904package PLXML::op_left_shift;
905
4691a0f3 906our @ISA = ('PLXML::binop');
6a28abbc
NC
907
908sub key { 'left_shift' }
909sub desc { 'left bitshift (<<)' }
910sub check { 'ck_bitop' }
911sub flags { 'fsT2' }
912sub args { 'S S' }
913
914
915package PLXML::op_right_shift;
916
4691a0f3 917our @ISA = ('PLXML::binop');
6a28abbc
NC
918
919sub key { 'right_shift' }
920sub desc { 'right bitshift (>>)' }
921sub check { 'ck_bitop' }
922sub flags { 'fsT2' }
923sub args { 'S S' }
924
925
926
927package PLXML::op_lt;
928
4691a0f3 929our @ISA = ('PLXML::binop');
6a28abbc
NC
930
931sub key { 'lt' }
932sub desc { 'numeric lt (<)' }
933sub check { 'ck_null' }
934sub flags { 'Iifs2' }
935sub args { 'S S' }
936
937
938package PLXML::op_i_lt;
939
4691a0f3 940our @ISA = ('PLXML::binop');
6a28abbc
NC
941
942sub key { 'i_lt' }
943sub desc { 'integer lt (<)' }
944sub check { 'ck_null' }
945sub flags { 'ifs2' }
946sub args { 'S S' }
947
948
949package PLXML::op_gt;
950
4691a0f3 951our @ISA = ('PLXML::binop');
6a28abbc
NC
952
953sub key { 'gt' }
954sub desc { 'numeric gt (>)' }
955sub check { 'ck_null' }
956sub flags { 'Iifs2' }
957sub args { 'S S' }
958
959
960package PLXML::op_i_gt;
961
4691a0f3 962our @ISA = ('PLXML::binop');
6a28abbc
NC
963
964sub key { 'i_gt' }
965sub desc { 'integer gt (>)' }
966sub check { 'ck_null' }
967sub flags { 'ifs2' }
968sub args { 'S S' }
969
970
971package PLXML::op_le;
972
4691a0f3 973our @ISA = ('PLXML::binop');
6a28abbc
NC
974
975sub key { 'le' }
976sub desc { 'numeric le (<=)' }
977sub check { 'ck_null' }
978sub flags { 'Iifs2' }
979sub args { 'S S' }
980
981
982package PLXML::op_i_le;
983
4691a0f3 984our @ISA = ('PLXML::binop');
6a28abbc
NC
985
986sub key { 'i_le' }
987sub desc { 'integer le (<=)' }
988sub check { 'ck_null' }
989sub flags { 'ifs2' }
990sub args { 'S S' }
991
992
993package PLXML::op_ge;
994
4691a0f3 995our @ISA = ('PLXML::binop');
6a28abbc
NC
996
997sub key { 'ge' }
998sub desc { 'numeric ge (>=)' }
999sub check { 'ck_null' }
1000sub flags { 'Iifs2' }
1001sub args { 'S S' }
1002
1003
1004package PLXML::op_i_ge;
1005
4691a0f3 1006our @ISA = ('PLXML::binop');
6a28abbc
NC
1007
1008sub key { 'i_ge' }
1009sub desc { 'integer ge (>=)' }
1010sub check { 'ck_null' }
1011sub flags { 'ifs2' }
1012sub args { 'S S' }
1013
1014
1015package PLXML::op_eq;
1016
4691a0f3 1017our @ISA = ('PLXML::binop');
6a28abbc
NC
1018
1019sub key { 'eq' }
1020sub desc { 'numeric eq (==)' }
1021sub check { 'ck_null' }
1022sub flags { 'Iifs2' }
1023sub args { 'S S' }
1024
1025
1026package PLXML::op_i_eq;
1027
4691a0f3 1028our @ISA = ('PLXML::binop');
6a28abbc
NC
1029
1030sub key { 'i_eq' }
1031sub desc { 'integer eq (==)' }
1032sub check { 'ck_null' }
1033sub flags { 'ifs2' }
1034sub args { 'S S' }
1035
1036
1037package PLXML::op_ne;
1038
4691a0f3 1039our @ISA = ('PLXML::binop');
6a28abbc
NC
1040
1041sub key { 'ne' }
1042sub desc { 'numeric ne (!=)' }
1043sub check { 'ck_null' }
1044sub flags { 'Iifs2' }
1045sub args { 'S S' }
1046
1047
1048package PLXML::op_i_ne;
1049
4691a0f3 1050our @ISA = ('PLXML::binop');
6a28abbc
NC
1051
1052sub key { 'i_ne' }
1053sub desc { 'integer ne (!=)' }
1054sub check { 'ck_null' }
1055sub flags { 'ifs2' }
1056sub args { 'S S' }
1057
1058
1059package PLXML::op_ncmp;
1060
4691a0f3 1061our @ISA = ('PLXML::binop');
6a28abbc
NC
1062
1063sub key { 'ncmp' }
1064sub desc { 'numeric comparison (<=>)' }
1065sub check { 'ck_null' }
1066sub flags { 'Iifst2' }
1067sub args { 'S S' }
1068
1069
1070package PLXML::op_i_ncmp;
1071
4691a0f3 1072our @ISA = ('PLXML::binop');
6a28abbc
NC
1073
1074sub key { 'i_ncmp' }
1075sub desc { 'integer comparison (<=>)' }
1076sub check { 'ck_null' }
1077sub flags { 'ifst2' }
1078sub args { 'S S' }
1079
1080
1081
1082package PLXML::op_slt;
1083
4691a0f3 1084our @ISA = ('PLXML::binop');
6a28abbc
NC
1085
1086sub key { 'slt' }
1087sub desc { 'string lt' }
1088sub check { 'ck_null' }
1089sub flags { 'ifs2' }
1090sub args { 'S S' }
1091
1092
1093package PLXML::op_sgt;
1094
4691a0f3 1095our @ISA = ('PLXML::binop');
6a28abbc
NC
1096
1097sub key { 'sgt' }
1098sub desc { 'string gt' }
1099sub check { 'ck_null' }
1100sub flags { 'ifs2' }
1101sub args { 'S S' }
1102
1103
1104package PLXML::op_sle;
1105
4691a0f3 1106our @ISA = ('PLXML::binop');
6a28abbc
NC
1107
1108sub key { 'sle' }
1109sub desc { 'string le' }
1110sub check { 'ck_null' }
1111sub flags { 'ifs2' }
1112sub args { 'S S' }
1113
1114
1115package PLXML::op_sge;
1116
4691a0f3 1117our @ISA = ('PLXML::binop');
6a28abbc
NC
1118
1119sub key { 'sge' }
1120sub desc { 'string ge' }
1121sub check { 'ck_null' }
1122sub flags { 'ifs2' }
1123sub args { 'S S' }
1124
1125
1126package PLXML::op_seq;
1127
4691a0f3 1128our @ISA = ('PLXML::binop');
6a28abbc
NC
1129
1130sub key { 'seq' }
1131sub desc { 'string eq' }
1132sub check { 'ck_null' }
1133sub flags { 'ifs2' }
1134sub args { 'S S' }
1135
1136
1137package PLXML::op_sne;
1138
4691a0f3 1139our @ISA = ('PLXML::binop');
6a28abbc
NC
1140
1141sub key { 'sne' }
1142sub desc { 'string ne' }
1143sub check { 'ck_null' }
1144sub flags { 'ifs2' }
1145sub args { 'S S' }
1146
1147
1148package PLXML::op_scmp;
1149
4691a0f3 1150our @ISA = ('PLXML::binop');
6a28abbc
NC
1151
1152sub key { 'scmp' }
1153sub desc { 'string comparison (cmp)' }
1154sub check { 'ck_null' }
1155sub flags { 'ifst2' }
1156sub args { 'S S' }
1157
1158
1159
1160package PLXML::op_bit_and;
1161
4691a0f3 1162our @ISA = ('PLXML::binop');
6a28abbc
NC
1163
1164sub key { 'bit_and' }
1165sub desc { 'bitwise and (&)' }
1166sub check { 'ck_bitop' }
1167sub flags { 'fst2' }
1168sub args { 'S S' }
1169
1170
1171package PLXML::op_bit_xor;
1172
4691a0f3 1173our @ISA = ('PLXML::binop');
6a28abbc
NC
1174
1175sub key { 'bit_xor' }
1176sub desc { 'bitwise xor (^)' }
1177sub check { 'ck_bitop' }
1178sub flags { 'fst2' }
1179sub args { 'S S' }
1180
1181
1182package PLXML::op_bit_or;
1183
4691a0f3 1184our @ISA = ('PLXML::binop');
6a28abbc
NC
1185
1186sub key { 'bit_or' }
1187sub desc { 'bitwise or (|)' }
1188sub check { 'ck_bitop' }
1189sub flags { 'fst2' }
1190sub args { 'S S' }
1191
1192
1193
1194package PLXML::op_negate;
1195
4691a0f3 1196our @ISA = ('PLXML::unop');
6a28abbc
NC
1197
1198sub key { 'negate' }
1199sub desc { 'negation (-)' }
1200sub check { 'ck_null' }
1201sub flags { 'Ifst1' }
1202sub args { 'S' }
1203
1204
1205package PLXML::op_i_negate;
1206
4691a0f3 1207our @ISA = ('PLXML::unop');
6a28abbc
NC
1208
1209sub key { 'i_negate' }
1210sub desc { 'integer negation (-)' }
1211sub check { 'ck_null' }
1212sub flags { 'ifsT1' }
1213sub args { 'S' }
1214
1215
1216package PLXML::op_not;
1217
4691a0f3 1218our @ISA = ('PLXML::unop');
6a28abbc
NC
1219
1220sub key { 'not' }
1221sub desc { 'not' }
1222sub check { 'ck_null' }
1223sub flags { 'ifs1' }
1224sub args { 'S' }
1225
1226
1227package PLXML::op_complement;
1228
4691a0f3 1229our @ISA = ('PLXML::unop');
6a28abbc
NC
1230
1231sub key { 'complement' }
1232sub desc { '1\'s complement (~)' }
1233sub check { 'ck_bitop' }
1234sub flags { 'fst1' }
1235sub args { 'S' }
1236
1237
1238
1239# High falutin' math.
1240
1241package PLXML::op_atan2;
1242
4691a0f3 1243our @ISA = ('PLXML::listop');
6a28abbc
NC
1244
1245sub key { 'atan2' }
1246sub desc { 'atan2' }
1247sub check { 'ck_fun' }
1248sub flags { 'fsT@' }
1249sub args { 'S S' }
1250
1251
1252package PLXML::op_sin;
1253
4691a0f3 1254our @ISA = ('PLXML::baseop_unop');
6a28abbc
NC
1255
1256sub key { 'sin' }
1257sub desc { 'sin' }
1258sub check { 'ck_fun' }
1259sub flags { 'fsTu%' }
1260sub args { 'S?' }
1261
1262
1263package PLXML::op_cos;
1264
4691a0f3 1265our @ISA = ('PLXML::baseop_unop');
6a28abbc
NC
1266
1267sub key { 'cos' }
1268sub desc { 'cos' }
1269sub check { 'ck_fun' }
1270sub flags { 'fsTu%' }
1271sub args { 'S?' }
1272
1273
1274package PLXML::op_rand;
1275
4691a0f3 1276our @ISA = ('PLXML::baseop_unop');
6a28abbc
NC
1277
1278sub key { 'rand' }
1279sub desc { 'rand' }
1280sub check { 'ck_fun' }
1281sub flags { 'sT%' }
1282sub args { 'S?' }
1283
1284
1285package PLXML::op_srand;
1286
4691a0f3 1287our @ISA = ('PLXML::baseop_unop');
6a28abbc
NC
1288
1289sub key { 'srand' }
1290sub desc { 'srand' }
1291sub check { 'ck_fun' }
1292sub flags { 's%' }
1293sub args { 'S?' }
1294
1295
1296package PLXML::op_exp;
1297
4691a0f3 1298our @ISA = ('PLXML::baseop_unop');
6a28abbc
NC
1299
1300sub key { 'exp' }
1301sub desc { 'exp' }
1302sub check { 'ck_fun' }
1303sub flags { 'fsTu%' }
1304sub args { 'S?' }
1305
1306
1307package PLXML::op_log;
1308
4691a0f3 1309our @ISA = ('PLXML::baseop_unop');
6a28abbc
NC
1310
1311sub key { 'log' }
1312sub desc { 'log' }
1313sub check { 'ck_fun' }
1314sub flags { 'fsTu%' }
1315sub args { 'S?' }
1316
1317
1318package PLXML::op_sqrt;
1319
4691a0f3 1320our @ISA = ('PLXML::baseop_unop');
6a28abbc
NC
1321
1322sub key { 'sqrt' }
1323sub desc { 'sqrt' }
1324sub check { 'ck_fun' }
1325sub flags { 'fsTu%' }
1326sub args { 'S?' }
1327
1328
1329
1330# Lowbrow math.
1331
1332package PLXML::op_int;
1333
4691a0f3 1334our @ISA = ('PLXML::baseop_unop');
6a28abbc
NC
1335
1336sub key { 'int' }
1337sub desc { 'int' }
1338sub check { 'ck_fun' }
1339sub flags { 'fsTu%' }
1340sub args { 'S?' }
1341
1342
1343package PLXML::op_hex;
1344
4691a0f3 1345our @ISA = ('PLXML::baseop_unop');
6a28abbc
NC
1346
1347sub key { 'hex' }
1348sub desc { 'hex' }
1349sub check { 'ck_fun' }
1350sub flags { 'fsTu%' }
1351sub args { 'S?' }
1352
1353
1354package PLXML::op_oct;
1355
4691a0f3 1356our @ISA = ('PLXML::baseop_unop');
6a28abbc
NC
1357
1358sub key { 'oct' }
1359sub desc { 'oct' }
1360sub check { 'ck_fun' }
1361sub flags { 'fsTu%' }
1362sub args { 'S?' }
1363
1364
1365package PLXML::op_abs;
1366
4691a0f3 1367our @ISA = ('PLXML::baseop_unop');
6a28abbc
NC
1368
1369sub key { 'abs' }
1370sub desc { 'abs' }
1371sub check { 'ck_fun' }
1372sub flags { 'fsTu%' }
1373sub args { 'S?' }
1374
1375
1376
1377# String stuff.
1378
1379package PLXML::op_length;
1380
4691a0f3 1381our @ISA = ('PLXML::baseop_unop');
6a28abbc
NC
1382
1383sub key { 'length' }
1384sub desc { 'length' }
1385sub check { 'ck_lengthconst' }
1386sub flags { 'isTu%' }
1387sub args { 'S?' }
1388
1389
1390package PLXML::op_substr;
1391
4691a0f3 1392our @ISA = ('PLXML::listop');
6a28abbc
NC
1393
1394sub key { 'substr' }
1395sub desc { 'substr' }
1396sub check { 'ck_substr' }
1397sub flags { 'st@' }
1398sub args { 'S S S? S?' }
1399
1400
1401package PLXML::op_vec;
1402
4691a0f3 1403our @ISA = ('PLXML::listop');
6a28abbc
NC
1404
1405sub key { 'vec' }
1406sub desc { 'vec' }
1407sub check { 'ck_fun' }
1408sub flags { 'ist@' }
1409sub args { 'S S S' }
1410
1411
1412
1413package PLXML::op_index;
1414
4691a0f3 1415our @ISA = ('PLXML::listop');
6a28abbc
NC
1416
1417sub key { 'index' }
1418sub desc { 'index' }
1419sub check { 'ck_index' }
1420sub flags { 'isT@' }
1421sub args { 'S S S?' }
1422
1423
1424package PLXML::op_rindex;
1425
4691a0f3 1426our @ISA = ('PLXML::listop');
6a28abbc
NC
1427
1428sub key { 'rindex' }
1429sub desc { 'rindex' }
1430sub check { 'ck_index' }
1431sub flags { 'isT@' }
1432sub args { 'S S S?' }
1433
1434
1435
1436package PLXML::op_sprintf;
1437
4691a0f3 1438our @ISA = ('PLXML::listop');
6a28abbc
NC
1439
1440sub key { 'sprintf' }
1441sub desc { 'sprintf' }
1442sub check { 'ck_fun' }
1443sub flags { 'mfst@' }
1444sub args { 'S L' }
1445
1446
1447package PLXML::op_formline;
1448
4691a0f3 1449our @ISA = ('PLXML::listop');
6a28abbc
NC
1450
1451sub key { 'formline' }
1452sub desc { 'formline' }
1453sub check { 'ck_fun' }
1454sub flags { 'ms@' }
1455sub args { 'S L' }
1456
1457
1458package PLXML::op_ord;
1459
4691a0f3 1460our @ISA = ('PLXML::baseop_unop');
6a28abbc
NC
1461
1462sub key { 'ord' }
1463sub desc { 'ord' }
1464sub check { 'ck_fun' }
1465sub flags { 'ifsTu%' }
1466sub args { 'S?' }
1467
1468
1469package PLXML::op_chr;
1470
4691a0f3 1471our @ISA = ('PLXML::baseop_unop');
6a28abbc
NC
1472
1473sub key { 'chr' }
1474sub desc { 'chr' }
1475sub check { 'ck_fun' }
1476sub flags { 'fsTu%' }
1477sub args { 'S?' }
1478
1479
1480package PLXML::op_crypt;
1481
4691a0f3 1482our @ISA = ('PLXML::listop');
6a28abbc
NC
1483
1484sub key { 'crypt' }
1485sub desc { 'crypt' }
1486sub check { 'ck_fun' }
1487sub flags { 'fsT@' }
1488sub args { 'S S' }
1489
1490
1491package PLXML::op_ucfirst;
1492
4691a0f3 1493our @ISA = ('PLXML::baseop_unop');
6a28abbc
NC
1494
1495sub key { 'ucfirst' }
1496sub desc { 'ucfirst' }
1497sub check { 'ck_fun' }
1498sub flags { 'fstu%' }
1499sub args { 'S?' }
1500
1501
1502package PLXML::op_lcfirst;
1503
4691a0f3 1504our @ISA = ('PLXML::baseop_unop');
6a28abbc
NC
1505
1506sub key { 'lcfirst' }
1507sub desc { 'lcfirst' }
1508sub check { 'ck_fun' }
1509sub flags { 'fstu%' }
1510sub args { 'S?' }
1511
1512
1513package PLXML::op_uc;
1514
4691a0f3 1515our @ISA = ('PLXML::baseop_unop');
6a28abbc
NC
1516
1517sub key { 'uc' }
1518sub desc { 'uc' }
1519sub check { 'ck_fun' }
1520sub flags { 'fstu%' }
1521sub args { 'S?' }
1522
1523
1524package PLXML::op_lc;
1525
4691a0f3 1526our @ISA = ('PLXML::baseop_unop');
6a28abbc
NC
1527
1528sub key { 'lc' }
1529sub desc { 'lc' }
1530sub check { 'ck_fun' }
1531sub flags { 'fstu%' }
1532sub args { 'S?' }
1533
1534
1535package PLXML::op_quotemeta;
1536
4691a0f3 1537our @ISA = ('PLXML::baseop_unop');
6a28abbc
NC
1538
1539sub key { 'quotemeta' }
1540sub desc { 'quotemeta' }
1541sub check { 'ck_fun' }
1542sub flags { 'fstu%' }
1543sub args { 'S?' }
1544
1545
1546
1547# Arrays.
1548
1549package PLXML::op_rv2av;
1550
4691a0f3 1551our @ISA = ('PLXML::unop');
6a28abbc
NC
1552
1553sub key { 'rv2av' }
1554sub desc { 'array dereference' }
1555sub check { 'ck_rvconst' }
1556sub flags { 'dt1' }
1557sub args { '' }
1558
1559
1560package PLXML::op_aelemfast;
1561
4691a0f3 1562our @ISA = ('PLXML::padop_svop');
6a28abbc
NC
1563
1564sub key { 'aelemfast' }
1565sub desc { 'constant array element' }
1566sub check { 'ck_null' }
1567sub flags { 's$' }
1568sub args { 'A S' }
1569
1570
1571package PLXML::op_aelem;
1572
4691a0f3 1573our @ISA = ('PLXML::binop');
6a28abbc
NC
1574
1575sub key { 'aelem' }
1576sub desc { 'array element' }
1577sub check { 'ck_null' }
1578sub flags { 's2' }
1579sub args { 'A S' }
1580
1581
1582package PLXML::op_aslice;
1583
4691a0f3 1584our @ISA = ('PLXML::listop');
6a28abbc
NC
1585
1586sub key { 'aslice' }
1587sub desc { 'array slice' }
1588sub check { 'ck_null' }
1589sub flags { 'm@' }
1590sub args { 'A L' }
1591
1592
1593
1594# Hashes.
1595
1596package PLXML::op_each;
1597
4691a0f3 1598our @ISA = ('PLXML::baseop_unop');
6a28abbc
NC
1599
1600sub key { 'each' }
1601sub desc { 'each' }
1602sub check { 'ck_fun' }
1603sub flags { '%' }
1604sub args { 'H' }
1605
1606
1607package PLXML::op_values;
1608
4691a0f3 1609our @ISA = ('PLXML::baseop_unop');
6a28abbc
NC
1610
1611sub key { 'values' }
1612sub desc { 'values' }
1613sub check { 'ck_fun' }
1614sub flags { 't%' }
1615sub args { 'H' }
1616
1617
1618package PLXML::op_keys;
1619
4691a0f3 1620our @ISA = ('PLXML::baseop_unop');
6a28abbc
NC
1621
1622sub key { 'keys' }
1623sub desc { 'keys' }
1624sub check { 'ck_fun' }
1625sub flags { 't%' }
1626sub args { 'H' }
1627
1628
1629package PLXML::op_delete;
1630
4691a0f3 1631our @ISA = ('PLXML::baseop_unop');
6a28abbc
NC
1632
1633sub key { 'delete' }
1634sub desc { 'delete' }
1635sub check { 'ck_delete' }
1636sub flags { '%' }
1637sub args { 'S' }
1638
1639
1640package PLXML::op_exists;
1641
4691a0f3 1642our @ISA = ('PLXML::baseop_unop');
6a28abbc
NC
1643
1644sub key { 'exists' }
1645sub desc { 'exists' }
1646sub check { 'ck_exists' }
1647sub flags { 'is%' }
1648sub args { 'S' }
1649
1650
1651package PLXML::op_rv2hv;
1652
4691a0f3 1653our @ISA = ('PLXML::unop');
6a28abbc
NC
1654
1655sub key { 'rv2hv' }
1656sub desc { 'hash dereference' }
1657sub check { 'ck_rvconst' }
1658sub flags { 'dt1' }
1659sub args { '' }
1660
1661
1662package PLXML::op_helem;
1663
4691a0f3 1664our @ISA = ('PLXML::listop');
6a28abbc
NC
1665
1666sub key { 'helem' }
1667sub desc { 'hash element' }
1668sub check { 'ck_null' }
1669sub flags { 's2@' }
1670sub args { 'H S' }
1671
1672
1673package PLXML::op_hslice;
1674
4691a0f3 1675our @ISA = ('PLXML::listop');
6a28abbc
NC
1676
1677sub key { 'hslice' }
1678sub desc { 'hash slice' }
1679sub check { 'ck_null' }
1680sub flags { 'm@' }
1681sub args { 'H L' }
1682
1683
1684
1685# Explosives and implosives.
1686
1687package PLXML::op_unpack;
1688
4691a0f3 1689our @ISA = ('PLXML::listop');
6a28abbc
NC
1690
1691sub key { 'unpack' }
1692sub desc { 'unpack' }
1693sub check { 'ck_unpack' }
1694sub flags { '@' }
1695sub args { 'S S?' }
1696
1697
1698package PLXML::op_pack;
1699
4691a0f3 1700our @ISA = ('PLXML::listop');
6a28abbc
NC
1701
1702sub key { 'pack' }
1703sub desc { 'pack' }
1704sub check { 'ck_fun' }
1705sub flags { 'mst@' }
1706sub args { 'S L' }
1707
1708
1709package PLXML::op_split;
1710
4691a0f3 1711our @ISA = ('PLXML::listop');
6a28abbc
NC
1712
1713sub key { 'split' }
1714sub desc { 'split' }
1715sub check { 'ck_split' }
1716sub flags { 't@' }
1717sub args { 'S S S' }
1718
1719
1720package PLXML::op_join;
1721
4691a0f3 1722our @ISA = ('PLXML::listop');
6a28abbc
NC
1723
1724sub key { 'join' }
1725sub desc { 'join or string' }
1726sub check { 'ck_join' }
1727sub flags { 'mst@' }
1728sub args { 'S L' }
1729
1730
1731
1732# List operators.
1733
1734package PLXML::op_list;
1735
4691a0f3 1736our @ISA = ('PLXML::listop');
6a28abbc
NC
1737
1738sub key { 'list' }
1739sub desc { 'list' }
1740sub check { 'ck_null' }
1741sub flags { 'm@' }
1742sub args { 'L' }
1743
1744
1745package PLXML::op_lslice;
1746
4691a0f3 1747our @ISA = ('PLXML::binop');
6a28abbc
NC
1748
1749sub key { 'lslice' }
1750sub desc { 'list slice' }
1751sub check { 'ck_null' }
1752sub flags { '2' }
1753sub args { 'H L L' }
1754
1755
1756package PLXML::op_anonlist;
1757
4691a0f3 1758our @ISA = ('PLXML::listop');
6a28abbc
NC
1759
1760sub key { 'anonlist' }
1761sub desc { 'anonymous list ([])' }
1762sub check { 'ck_fun' }
1763sub flags { 'ms@' }
1764sub args { 'L' }
1765
1766
1767package PLXML::op_anonhash;
1768
4691a0f3 1769our @ISA = ('PLXML::listop');
6a28abbc
NC
1770
1771sub key { 'anonhash' }
1772sub desc { 'anonymous hash ({})' }
1773sub check { 'ck_fun' }
1774sub flags { 'ms@' }
1775sub args { 'L' }
1776
1777
1778
1779package PLXML::op_splice;
1780
4691a0f3 1781our @ISA = ('PLXML::listop');
6a28abbc
NC
1782
1783sub key { 'splice' }
1784sub desc { 'splice' }
1785sub check { 'ck_fun' }
1786sub flags { 'm@' }
1787sub args { 'A S? S? L' }
1788
1789
1790package PLXML::op_push;
1791
4691a0f3 1792our @ISA = ('PLXML::listop');
6a28abbc
NC
1793
1794sub key { 'push' }
1795sub desc { 'push' }
1796sub check { 'ck_fun' }
1797sub flags { 'imsT@' }
1798sub args { 'A L' }
1799
1800
1801package PLXML::op_pop;
1802
4691a0f3 1803our @ISA = ('PLXML::baseop_unop');
6a28abbc
NC
1804
1805sub key { 'pop' }
1806sub desc { 'pop' }
1807sub check { 'ck_shift' }
1808sub flags { 's%' }
1809sub args { 'A?' }
1810
1811
1812package PLXML::op_shift;
1813
4691a0f3 1814our @ISA = ('PLXML::baseop_unop');
6a28abbc
NC
1815
1816sub key { 'shift' }
1817sub desc { 'shift' }
1818sub check { 'ck_shift' }
1819sub flags { 's%' }
1820sub args { 'A?' }
1821
1822
1823package PLXML::op_unshift;
1824
4691a0f3 1825our @ISA = ('PLXML::listop');
6a28abbc
NC
1826
1827sub key { 'unshift' }
1828sub desc { 'unshift' }
1829sub check { 'ck_fun' }
1830sub flags { 'imsT@' }
1831sub args { 'A L' }
1832
1833
1834package PLXML::op_sort;
1835
4691a0f3 1836our @ISA = ('PLXML::listop');
6a28abbc
NC
1837
1838sub key { 'sort' }
1839sub desc { 'sort' }
1840sub check { 'ck_sort' }
1841sub flags { 'm@' }
1842sub args { 'C? L' }
1843
1844
1845package PLXML::op_reverse;
1846
4691a0f3 1847our @ISA = ('PLXML::listop');
6a28abbc
NC
1848
1849sub key { 'reverse' }
1850sub desc { 'reverse' }
1851sub check { 'ck_fun' }
1852sub flags { 'mt@' }
1853sub args { 'L' }
1854
1855
1856
1857package PLXML::op_grepstart;
1858
4691a0f3 1859our @ISA = ('PLXML::listop');
6a28abbc
NC
1860
1861sub key { 'grepstart' }
1862sub desc { 'grep' }
1863sub check { 'ck_grep' }
1864sub flags { 'dm@' }
1865sub args { 'C L' }
1866
1867
1868package PLXML::op_grepwhile;
1869
4691a0f3 1870our @ISA = ('PLXML::logop');
6a28abbc
NC
1871
1872sub key { 'grepwhile' }
1873sub desc { 'grep iterator' }
1874sub check { 'ck_null' }
1875sub flags { 'dt|' }
1876sub args { '' }
1877
1878
1879
1880package PLXML::op_mapstart;
1881
4691a0f3 1882our @ISA = ('PLXML::listop');
6a28abbc
NC
1883
1884sub key { 'mapstart' }
1885sub desc { 'map' }
1886sub check { 'ck_grep' }
1887sub flags { 'dm@' }
1888sub args { 'C L' }
1889
1890
1891package PLXML::op_mapwhile;
1892
4691a0f3 1893our @ISA = ('PLXML::logop');
6a28abbc
NC
1894
1895sub key { 'mapwhile' }
1896sub desc { 'map iterator' }
1897sub check { 'ck_null' }
1898sub flags { 'dt|' }
1899sub args { '' }
1900
1901
1902
1903# Range stuff.
1904
1905package PLXML::op_range;
1906
4691a0f3 1907our @ISA = ('PLXML::logop');
6a28abbc
NC
1908
1909sub key { 'range' }
1910sub desc { 'flipflop' }
1911sub check { 'ck_null' }
1912sub flags { '|' }
1913sub args { 'S S' }
1914
1915
1916package PLXML::op_flip;
1917
4691a0f3 1918our @ISA = ('PLXML::unop');
6a28abbc
NC
1919
1920sub key { 'flip' }
1921sub desc { 'range (or flip)' }
1922sub check { 'ck_null' }
1923sub flags { '1' }
1924sub args { 'S S' }
1925
1926
1927package PLXML::op_flop;
1928
4691a0f3 1929our @ISA = ('PLXML::unop');
6a28abbc
NC
1930
1931sub key { 'flop' }
1932sub desc { 'range (or flop)' }
1933sub check { 'ck_null' }
1934sub flags { '1' }
1935sub args { '' }
1936
1937
1938
1939# Control.
1940
1941package PLXML::op_and;
1942
4691a0f3 1943our @ISA = ('PLXML::logop');
6a28abbc
NC
1944
1945sub key { 'and' }
1946sub desc { 'logical and (&&)' }
1947sub check { 'ck_null' }
1948sub flags { '|' }
1949sub args { '' }
1950
1951
1952package PLXML::op_or;
1953
4691a0f3 1954our @ISA = ('PLXML::logop');
6a28abbc
NC
1955
1956sub key { 'or' }
1957sub desc { 'logical or (||)' }
1958sub check { 'ck_null' }
1959sub flags { '|' }
1960sub args { '' }
1961
1962
1963package PLXML::op_xor;
1964
4691a0f3 1965our @ISA = ('PLXML::binop');
6a28abbc
NC
1966
1967sub key { 'xor' }
1968sub desc { 'logical xor' }
1969sub check { 'ck_null' }
1970sub flags { 'fs2' }
1971sub args { 'S S ' }
1972
1973
1974package PLXML::op_cond_expr;
1975
4691a0f3 1976our @ISA = ('PLXML::logop');
6a28abbc
NC
1977
1978sub key { 'cond_expr' }
1979sub desc { 'conditional expression' }
1980sub check { 'ck_null' }
1981sub flags { 'd|' }
1982sub args { '' }
1983
1984
1985package PLXML::op_andassign;
1986
4691a0f3 1987our @ISA = ('PLXML::logop');
6a28abbc
NC
1988
1989sub key { 'andassign' }
1990sub desc { 'logical and assignment (&&=)' }
1991sub check { 'ck_null' }
1992sub flags { 's|' }
1993sub args { '' }
1994
1995
1996package PLXML::op_orassign;
1997
4691a0f3 1998our @ISA = ('PLXML::logop');
6a28abbc
NC
1999
2000sub key { 'orassign' }
2001sub desc { 'logical or assignment (||=)' }
2002sub check { 'ck_null' }
2003sub flags { 's|' }
2004sub args { '' }
2005
2006
2007
2008package PLXML::op_method;
2009
4691a0f3 2010our @ISA = ('PLXML::unop');
6a28abbc
NC
2011
2012sub key { 'method' }
2013sub desc { 'method lookup' }
2014sub check { 'ck_method' }
2015sub flags { 'd1' }
2016sub args { '' }
2017
2018
2019package PLXML::op_entersub;
2020
4691a0f3 2021our @ISA = ('PLXML::unop');
6a28abbc
NC
2022
2023sub key { 'entersub' }
2024sub desc { 'subroutine entry' }
2025sub check { 'ck_subr' }
2026sub flags { 'dmt1' }
2027sub args { 'L' }
2028
2029
2030package PLXML::op_leavesub;
2031
4691a0f3 2032our @ISA = ('PLXML::unop');
6a28abbc
NC
2033
2034sub key { 'leavesub' }
2035sub desc { 'subroutine exit' }
2036sub check { 'ck_null' }
2037sub flags { '1' }
2038sub args { '' }
2039
2040
2041package PLXML::op_leavesublv;
2042
4691a0f3 2043our @ISA = ('PLXML::unop');
6a28abbc
NC
2044
2045sub key { 'leavesublv' }
2046sub desc { 'lvalue subroutine return' }
2047sub check { 'ck_null' }
2048sub flags { '1' }
2049sub args { '' }
2050
2051
2052package PLXML::op_caller;
2053
4691a0f3 2054our @ISA = ('PLXML::baseop_unop');
6a28abbc
NC
2055
2056sub key { 'caller' }
2057sub desc { 'caller' }
2058sub check { 'ck_fun' }
2059sub flags { 't%' }
2060sub args { 'S?' }
2061
2062
2063package PLXML::op_warn;
2064
4691a0f3 2065our @ISA = ('PLXML::listop');
6a28abbc
NC
2066
2067sub key { 'warn' }
2068sub desc { 'warn' }
2069sub check { 'ck_fun' }
2070sub flags { 'imst@' }
2071sub args { 'L' }
2072
2073
2074package PLXML::op_die;
2075
4691a0f3 2076our @ISA = ('PLXML::listop');
6a28abbc
NC
2077
2078sub key { 'die' }
2079sub desc { 'die' }
2080sub check { 'ck_die' }
2081sub flags { 'dimst@' }
2082sub args { 'L' }
2083
2084
2085package PLXML::op_reset;
2086
4691a0f3 2087our @ISA = ('PLXML::baseop_unop');
6a28abbc
NC
2088
2089sub key { 'reset' }
2090sub desc { 'symbol reset' }
2091sub check { 'ck_fun' }
2092sub flags { 'is%' }
2093sub args { 'S?' }
2094
2095
2096
2097package PLXML::op_lineseq;
2098
4691a0f3 2099our @ISA = ('PLXML::listop');
6a28abbc
NC
2100
2101sub key { 'lineseq' }
2102sub desc { 'line sequence' }
2103sub check { 'ck_null' }
2104sub flags { '@' }
2105sub args { '' }
2106
2107
2108package PLXML::op_nextstate;
2109
4691a0f3 2110our @ISA = ('PLXML::cop');
6a28abbc
NC
2111
2112sub key { 'nextstate' }
2113sub desc { 'next statement' }
2114sub check { 'ck_null' }
2115sub flags { 's;' }
2116sub args { '' }
2117
2118
2119package PLXML::op_dbstate;
2120
4691a0f3 2121our @ISA = ('PLXML::cop');
6a28abbc
NC
2122
2123sub key { 'dbstate' }
2124sub desc { 'debug next statement' }
2125sub check { 'ck_null' }
2126sub flags { 's;' }
2127sub args { '' }
2128
2129
2130package PLXML::op_unstack;
2131
4691a0f3 2132our @ISA = ('PLXML::baseop');
6a28abbc
NC
2133
2134sub key { 'unstack' }
2135sub desc { 'iteration finalizer' }
2136sub check { 'ck_null' }
2137sub flags { 's0' }
2138sub args { '' }
2139
2140
2141package PLXML::op_enter;
2142
4691a0f3 2143our @ISA = ('PLXML::baseop');
6a28abbc
NC
2144
2145sub key { 'enter' }
2146sub desc { 'block entry' }
2147sub check { 'ck_null' }
2148sub flags { '0' }
2149sub args { '' }
2150
2151
2152package PLXML::op_leave;
2153
4691a0f3 2154our @ISA = ('PLXML::listop');
6a28abbc
NC
2155
2156sub key { 'leave' }
2157sub desc { 'block exit' }
2158sub check { 'ck_null' }
2159sub flags { '@' }
2160sub args { '' }
2161
2162
2163package PLXML::op_scope;
2164
4691a0f3 2165our @ISA = ('PLXML::listop');
6a28abbc
NC
2166
2167sub key { 'scope' }
2168sub desc { 'block' }
2169sub check { 'ck_null' }
2170sub flags { '@' }
2171sub args { '' }
2172
2173
2174package PLXML::op_enteriter;
2175
4691a0f3 2176our @ISA = ('PLXML::loop');
6a28abbc
NC
2177
2178sub key { 'enteriter' }
2179sub desc { 'foreach loop entry' }
2180sub check { 'ck_null' }
2181sub flags { 'd{' }
2182sub args { '' }
2183
2184
2185package PLXML::op_iter;
2186
4691a0f3 2187our @ISA = ('PLXML::baseop');
6a28abbc
NC
2188
2189sub key { 'iter' }
2190sub desc { 'foreach loop iterator' }
2191sub check { 'ck_null' }
2192sub flags { '0' }
2193sub args { '' }
2194
2195
2196package PLXML::op_enterloop;
2197
4691a0f3 2198our @ISA = ('PLXML::loop');
6a28abbc
NC
2199
2200sub key { 'enterloop' }
2201sub desc { 'loop entry' }
2202sub check { 'ck_null' }
2203sub flags { 'd{' }
2204sub args { '' }
2205
2206
2207package PLXML::op_leaveloop;
2208
4691a0f3 2209our @ISA = ('PLXML::binop');
6a28abbc
NC
2210
2211sub key { 'leaveloop' }
2212sub desc { 'loop exit' }
2213sub check { 'ck_null' }
2214sub flags { '2' }
2215sub args { '' }
2216
2217
2218package PLXML::op_return;
2219
4691a0f3 2220our @ISA = ('PLXML::listop');
6a28abbc
NC
2221
2222sub key { 'return' }
2223sub desc { 'return' }
2224sub check { 'ck_return' }
2225sub flags { 'dm@' }
2226sub args { 'L' }
2227
2228
2229package PLXML::op_last;
2230
4691a0f3 2231our @ISA = ('PLXML::loopexop');
6a28abbc
NC
2232
2233sub key { 'last' }
2234sub desc { 'last' }
2235sub check { 'ck_null' }
2236sub flags { 'ds}' }
2237sub args { '' }
2238
2239
2240package PLXML::op_next;
2241
4691a0f3 2242our @ISA = ('PLXML::loopexop');
6a28abbc
NC
2243
2244sub key { 'next' }
2245sub desc { 'next' }
2246sub check { 'ck_null' }
2247sub flags { 'ds}' }
2248sub args { '' }
2249
2250
2251package PLXML::op_redo;
2252
4691a0f3 2253our @ISA = ('PLXML::loopexop');
6a28abbc
NC
2254
2255sub key { 'redo' }
2256sub desc { 'redo' }
2257sub check { 'ck_null' }
2258sub flags { 'ds}' }
2259sub args { '' }
2260
2261
2262package PLXML::op_dump;
2263
4691a0f3 2264our @ISA = ('PLXML::loopexop');
6a28abbc
NC
2265
2266sub key { 'dump' }
2267sub desc { 'dump' }
2268sub check { 'ck_null' }
2269sub flags { 'ds}' }
2270sub args { '' }
2271
2272
2273package PLXML::op_goto;
2274
4691a0f3 2275our @ISA = ('PLXML::loopexop');
6a28abbc
NC
2276
2277sub key { 'goto' }
2278sub desc { 'goto' }
2279sub check { 'ck_null' }
2280sub flags { 'ds}' }
2281sub args { '' }
2282
2283
2284package PLXML::op_exit;
2285
4691a0f3 2286our @ISA = ('PLXML::baseop_unop');
6a28abbc
NC
2287
2288sub key { 'exit' }
2289sub desc { 'exit' }
2290sub check { 'ck_exit' }
2291sub flags { 'ds%' }
2292sub args { 'S?' }
2293
2294
2295# continued below
2296
2297#nswitch numeric switch ck_null d
2298#cswitch character switch ck_null d
2299
2300# I/O.
2301
2302package PLXML::op_open;
2303
4691a0f3 2304our @ISA = ('PLXML::listop');
6a28abbc
NC
2305
2306sub key { 'open' }
2307sub desc { 'open' }
2308sub check { 'ck_open' }
2309sub flags { 'ismt@' }
2310sub args { 'F S? L' }
2311
2312
2313package PLXML::op_close;
2314
4691a0f3 2315our @ISA = ('PLXML::baseop_unop');
6a28abbc
NC
2316
2317sub key { 'close' }
2318sub desc { 'close' }
2319sub check { 'ck_fun' }
2320sub flags { 'is%' }
2321sub args { 'F?' }
2322
2323
2324package PLXML::op_pipe_op;
2325
4691a0f3 2326our @ISA = ('PLXML::listop');
6a28abbc
NC
2327
2328sub key { 'pipe_op' }
2329sub desc { 'pipe' }
2330sub check { 'ck_fun' }
2331sub flags { 'is@' }
2332sub args { 'F F' }
2333
2334
2335
2336package PLXML::op_fileno;
2337
4691a0f3 2338our @ISA = ('PLXML::baseop_unop');
6a28abbc
NC
2339
2340sub key { 'fileno' }
2341sub desc { 'fileno' }
2342sub check { 'ck_fun' }
2343sub flags { 'ist%' }
2344sub args { 'F' }
2345
2346
2347package PLXML::op_umask;
2348
4691a0f3 2349our @ISA = ('PLXML::baseop_unop');
6a28abbc
NC
2350
2351sub key { 'umask' }
2352sub desc { 'umask' }
2353sub check { 'ck_fun' }
2354sub flags { 'ist%' }
2355sub args { 'S?' }
2356
2357
2358package PLXML::op_binmode;
2359
4691a0f3 2360our @ISA = ('PLXML::listop');
6a28abbc
NC
2361
2362sub key { 'binmode' }
2363sub desc { 'binmode' }
2364sub check { 'ck_fun' }
2365sub flags { 's@' }
2366sub args { 'F S?' }
2367
2368
2369
2370package PLXML::op_tie;
2371
4691a0f3 2372our @ISA = ('PLXML::listop');
6a28abbc
NC
2373
2374sub key { 'tie' }
2375sub desc { 'tie' }
2376sub check { 'ck_fun' }
2377sub flags { 'idms@' }
2378sub args { 'R S L' }
2379
2380
2381package PLXML::op_untie;
2382
4691a0f3 2383our @ISA = ('PLXML::baseop_unop');
6a28abbc
NC
2384
2385sub key { 'untie' }
2386sub desc { 'untie' }
2387sub check { 'ck_fun' }
2388sub flags { 'is%' }
2389sub args { 'R' }
2390
2391
2392package PLXML::op_tied;
2393
4691a0f3 2394our @ISA = ('PLXML::baseop_unop');
6a28abbc
NC
2395
2396sub key { 'tied' }
2397sub desc { 'tied' }
2398sub check { 'ck_fun' }
2399sub flags { 's%' }
2400sub args { 'R' }
2401
2402
2403package PLXML::op_dbmopen;
2404
4691a0f3 2405our @ISA = ('PLXML::listop');
6a28abbc
NC
2406
2407sub key { 'dbmopen' }
2408sub desc { 'dbmopen' }
2409sub check { 'ck_fun' }
2410sub flags { 'is@' }
2411sub args { 'H S S' }
2412
2413
2414package PLXML::op_dbmclose;
2415
4691a0f3 2416our @ISA = ('PLXML::baseop_unop');
6a28abbc
NC
2417
2418sub key { 'dbmclose' }
2419sub desc { 'dbmclose' }
2420sub check { 'ck_fun' }
2421sub flags { 'is%' }
2422sub args { 'H' }
2423
2424
2425
2426package PLXML::op_sselect;
2427
4691a0f3 2428our @ISA = ('PLXML::listop');
6a28abbc
NC
2429
2430sub key { 'sselect' }
2431sub desc { 'select system call' }
2432sub check { 'ck_select' }
2433sub flags { 't@' }
2434sub args { 'S S S S' }
2435
2436
2437package PLXML::op_select;
2438
4691a0f3 2439our @ISA = ('PLXML::listop');
6a28abbc
NC
2440
2441sub key { 'select' }
2442sub desc { 'select' }
2443sub check { 'ck_select' }
2444sub flags { 'st@' }
2445sub args { 'F?' }
2446
2447
2448
2449package PLXML::op_getc;
2450
4691a0f3 2451our @ISA = ('PLXML::baseop_unop');
6a28abbc
NC
2452
2453sub key { 'getc' }
2454sub desc { 'getc' }
2455sub check { 'ck_eof' }
2456sub flags { 'st%' }
2457sub args { 'F?' }
2458
2459
2460package PLXML::op_read;
2461
4691a0f3 2462our @ISA = ('PLXML::listop');
6a28abbc
NC
2463
2464sub key { 'read' }
2465sub desc { 'read' }
2466sub check { 'ck_fun' }
2467sub flags { 'imst@' }
2468sub args { 'F R S S?' }
2469
2470
2471package PLXML::op_enterwrite;
2472
4691a0f3 2473our @ISA = ('PLXML::baseop_unop');
6a28abbc
NC
2474
2475sub key { 'enterwrite' }
2476sub desc { 'write' }
2477sub check { 'ck_fun' }
2478sub flags { 'dis%' }
2479sub args { 'F?' }
2480
2481
2482package PLXML::op_leavewrite;
2483
4691a0f3 2484our @ISA = ('PLXML::unop');
6a28abbc
NC
2485
2486sub key { 'leavewrite' }
2487sub desc { 'write exit' }
2488sub check { 'ck_null' }
2489sub flags { '1' }
2490sub args { '' }
2491
2492
2493
2494package PLXML::op_prtf;
2495
4691a0f3 2496our @ISA = ('PLXML::listop');
6a28abbc
NC
2497
2498sub key { 'prtf' }
2499sub desc { 'printf' }
2500sub check { 'ck_listiob' }
2501sub flags { 'ims@' }
2502sub args { 'F? L' }
2503
2504
2505package PLXML::op_print;
2506
4691a0f3 2507our @ISA = ('PLXML::listop');
6a28abbc
NC
2508
2509sub key { 'print' }
2510sub desc { 'print' }
2511sub check { 'ck_listiob' }
2512sub flags { 'ims@' }
2513sub args { 'F? L' }
2514
2515
793019c7
RGS
2516package PLXML::op_say;
2517
2518our @ISA = ('PLXML::listop');
2519
2520sub key { 'say' }
2521sub desc { 'say' }
2522sub check { 'ck_listiob' }
2523sub flags { 'ims@' }
2524sub args { 'F? L' }
2525
6a28abbc
NC
2526
2527package PLXML::op_sysopen;
2528
4691a0f3 2529our @ISA = ('PLXML::listop');
6a28abbc
NC
2530
2531sub key { 'sysopen' }
2532sub desc { 'sysopen' }
2533sub check { 'ck_fun' }
2534sub flags { 's@' }
2535sub args { 'F S S S?' }
2536
2537
2538package PLXML::op_sysseek;
2539
4691a0f3 2540our @ISA = ('PLXML::listop');
6a28abbc
NC
2541
2542sub key { 'sysseek' }
2543sub desc { 'sysseek' }
2544sub check { 'ck_fun' }
2545sub flags { 's@' }
2546sub args { 'F S S' }
2547
2548
2549package PLXML::op_sysread;
2550
4691a0f3 2551our @ISA = ('PLXML::listop');
6a28abbc
NC
2552
2553sub key { 'sysread' }
2554sub desc { 'sysread' }
2555sub check { 'ck_fun' }
2556sub flags { 'imst@' }
2557sub args { 'F R S S?' }
2558
2559
2560package PLXML::op_syswrite;
2561
4691a0f3 2562our @ISA = ('PLXML::listop');
6a28abbc
NC
2563
2564sub key { 'syswrite' }
2565sub desc { 'syswrite' }
2566sub check { 'ck_fun' }
2567sub flags { 'imst@' }
2568sub args { 'F S S? S?' }
2569
2570
2571
2572package PLXML::op_send;
2573
4691a0f3 2574our @ISA = ('PLXML::listop');
6a28abbc
NC
2575
2576sub key { 'send' }
2577sub desc { 'send' }
2578sub check { 'ck_fun' }
2579sub flags { 'imst@' }
2580sub args { 'Fs S S S?' }
2581
2582
2583package PLXML::op_recv;
2584
4691a0f3 2585our @ISA = ('PLXML::listop');
6a28abbc
NC
2586
2587sub key { 'recv' }
2588sub desc { 'recv' }
2589sub check { 'ck_fun' }
2590sub flags { 'imst@' }
2591sub args { 'Fs R S S' }
2592
2593
2594
2595package PLXML::op_eof;
2596
4691a0f3 2597our @ISA = ('PLXML::baseop_unop');
6a28abbc
NC
2598
2599sub key { 'eof' }
2600sub desc { 'eof' }
2601sub check { 'ck_eof' }
2602sub flags { 'is%' }
2603sub args { 'F?' }
2604
2605
2606package PLXML::op_tell;
2607
4691a0f3 2608our @ISA = ('PLXML::baseop_unop');
6a28abbc
NC
2609
2610sub key { 'tell' }
2611sub desc { 'tell' }
2612sub check { 'ck_fun' }
2613sub flags { 'st%' }
2614sub args { 'F?' }
2615
2616
2617package PLXML::op_seek;
2618
4691a0f3 2619our @ISA = ('PLXML::listop');
6a28abbc
NC
2620
2621sub key { 'seek' }
2622sub desc { 'seek' }
2623sub check { 'ck_fun' }
2624sub flags { 's@' }
2625sub args { 'F S S' }
2626
2627
2628# truncate really behaves as if it had both "S S" and "F S"
2629package PLXML::op_truncate;
2630
4691a0f3 2631our @ISA = ('PLXML::listop');
6a28abbc
NC
2632
2633sub key { 'truncate' }
2634sub desc { 'truncate' }
2635sub check { 'ck_trunc' }
2636sub flags { 'is@' }
2637sub args { 'S S' }
2638
2639
2640
2641package PLXML::op_fcntl;
2642
4691a0f3 2643our @ISA = ('PLXML::listop');
6a28abbc
NC
2644
2645sub key { 'fcntl' }
2646sub desc { 'fcntl' }
2647sub check { 'ck_fun' }
2648sub flags { 'st@' }
2649sub args { 'F S S' }
2650
2651
2652package PLXML::op_ioctl;
2653
4691a0f3 2654our @ISA = ('PLXML::listop');
6a28abbc
NC
2655
2656sub key { 'ioctl' }
2657sub desc { 'ioctl' }
2658sub check { 'ck_fun' }
2659sub flags { 'st@' }
2660sub args { 'F S S' }
2661
2662
2663package PLXML::op_flock;
2664
4691a0f3 2665our @ISA = ('PLXML::listop');
6a28abbc
NC
2666
2667sub key { 'flock' }
2668sub desc { 'flock' }
2669sub check { 'ck_fun' }
2670sub flags { 'isT@' }
2671sub args { 'F S' }
2672
2673
2674
2675# Sockets.
2676
2677package PLXML::op_socket;
2678
4691a0f3 2679our @ISA = ('PLXML::listop');
6a28abbc
NC
2680
2681sub key { 'socket' }
2682sub desc { 'socket' }
2683sub check { 'ck_fun' }
2684sub flags { 'is@' }
2685sub args { 'Fs S S S' }
2686
2687
2688package PLXML::op_sockpair;
2689
4691a0f3 2690our @ISA = ('PLXML::listop');
6a28abbc
NC
2691
2692sub key { 'sockpair' }
2693sub desc { 'socketpair' }
2694sub check { 'ck_fun' }
2695sub flags { 'is@' }
2696sub args { 'Fs Fs S S S' }
2697
2698
2699
2700package PLXML::op_bind;
2701
4691a0f3 2702our @ISA = ('PLXML::listop');
6a28abbc
NC
2703
2704sub key { 'bind' }
2705sub desc { 'bind' }
2706sub check { 'ck_fun' }
2707sub flags { 'is@' }
2708sub args { 'Fs S' }
2709
2710
2711package PLXML::op_connect;
2712
4691a0f3 2713our @ISA = ('PLXML::listop');
6a28abbc
NC
2714
2715sub key { 'connect' }
2716sub desc { 'connect' }
2717sub check { 'ck_fun' }
2718sub flags { 'is@' }
2719sub args { 'Fs S' }
2720
2721
2722package PLXML::op_listen;
2723
4691a0f3 2724our @ISA = ('PLXML::listop');
6a28abbc
NC
2725
2726sub key { 'listen' }
2727sub desc { 'listen' }
2728sub check { 'ck_fun' }
2729sub flags { 'is@' }
2730sub args { 'Fs S' }
2731
2732
2733package PLXML::op_accept;
2734
4691a0f3 2735our @ISA = ('PLXML::listop');
6a28abbc
NC
2736
2737sub key { 'accept' }
2738sub desc { 'accept' }
2739sub check { 'ck_fun' }
2740sub flags { 'ist@' }
2741sub args { 'Fs Fs' }
2742
2743
2744package PLXML::op_shutdown;
2745
4691a0f3 2746our @ISA = ('PLXML::listop');
6a28abbc
NC
2747
2748sub key { 'shutdown' }
2749sub desc { 'shutdown' }
2750sub check { 'ck_fun' }
2751sub flags { 'ist@' }
2752sub args { 'Fs S' }
2753
2754
2755
2756package PLXML::op_gsockopt;
2757
4691a0f3 2758our @ISA = ('PLXML::listop');
6a28abbc
NC
2759
2760sub key { 'gsockopt' }
2761sub desc { 'getsockopt' }
2762sub check { 'ck_fun' }
2763sub flags { 'is@' }
2764sub args { 'Fs S S' }
2765
2766
2767package PLXML::op_ssockopt;
2768
4691a0f3 2769our @ISA = ('PLXML::listop');
6a28abbc
NC
2770
2771sub key { 'ssockopt' }
2772sub desc { 'setsockopt' }
2773sub check { 'ck_fun' }
2774sub flags { 'is@' }
2775sub args { 'Fs S S S' }
2776
2777
2778
2779package PLXML::op_getsockname;
2780
4691a0f3 2781our @ISA = ('PLXML::baseop_unop');
6a28abbc
NC
2782
2783sub key { 'getsockname' }
2784sub desc { 'getsockname' }
2785sub check { 'ck_fun' }
2786sub flags { 'is%' }
2787sub args { 'Fs' }
2788
2789
2790package PLXML::op_getpeername;
2791
4691a0f3 2792our @ISA = ('PLXML::baseop_unop');
6a28abbc
NC
2793
2794sub key { 'getpeername' }
2795sub desc { 'getpeername' }
2796sub check { 'ck_fun' }
2797sub flags { 'is%' }
2798sub args { 'Fs' }
2799
2800
2801
2802# Stat calls.
2803
2804package PLXML::op_lstat;
2805
4691a0f3 2806our @ISA = ('PLXML::filestatop');
6a28abbc
NC
2807
2808sub key { 'lstat' }
2809sub desc { 'lstat' }
2810sub check { 'ck_ftst' }
2811sub flags { 'u-' }
2812sub args { 'F' }
2813
2814
2815package PLXML::op_stat;
2816
4691a0f3 2817our @ISA = ('PLXML::filestatop');
6a28abbc
NC
2818
2819sub key { 'stat' }
2820sub desc { 'stat' }
2821sub check { 'ck_ftst' }
2822sub flags { 'u-' }
2823sub args { 'F' }
2824
2825
2826package PLXML::op_ftrread;
2827
4691a0f3 2828our @ISA = ('PLXML::filestatop');
6a28abbc
NC
2829
2830sub key { 'ftrread' }
2831sub desc { '-R' }
2832sub check { 'ck_ftst' }
2833sub flags { 'isu-' }
2834sub args { 'F-' }
2835
2836
2837package PLXML::op_ftrwrite;
2838
4691a0f3 2839our @ISA = ('PLXML::filestatop');
6a28abbc
NC
2840
2841sub key { 'ftrwrite' }
2842sub desc { '-W' }
2843sub check { 'ck_ftst' }
2844sub flags { 'isu-' }
2845sub args { 'F-' }
2846
2847
2848package PLXML::op_ftrexec;
2849
4691a0f3 2850our @ISA = ('PLXML::filestatop');
6a28abbc
NC
2851
2852sub key { 'ftrexec' }
2853sub desc { '-X' }
2854sub check { 'ck_ftst' }
2855sub flags { 'isu-' }
2856sub args { 'F-' }
2857
2858
2859package PLXML::op_fteread;
2860
4691a0f3 2861our @ISA = ('PLXML::filestatop');
6a28abbc
NC
2862
2863sub key { 'fteread' }
2864sub desc { '-r' }
2865sub check { 'ck_ftst' }
2866sub flags { 'isu-' }
2867sub args { 'F-' }
2868
2869
2870package PLXML::op_ftewrite;
2871
4691a0f3 2872our @ISA = ('PLXML::filestatop');
6a28abbc
NC
2873
2874sub key { 'ftewrite' }
2875sub desc { '-w' }
2876sub check { 'ck_ftst' }
2877sub flags { 'isu-' }
2878sub args { 'F-' }
2879
2880
2881package PLXML::op_fteexec;
2882
4691a0f3 2883our @ISA = ('PLXML::filestatop');
6a28abbc
NC
2884
2885sub key { 'fteexec' }
2886sub desc { '-x' }
2887sub check { 'ck_ftst' }
2888sub flags { 'isu-' }
2889sub args { 'F-' }
2890
2891
2892package PLXML::op_ftis;
2893
4691a0f3 2894our @ISA = ('PLXML::filestatop');
6a28abbc
NC
2895
2896sub key { 'ftis' }
2897sub desc { '-e' }
2898sub check { 'ck_ftst' }
2899sub flags { 'isu-' }
2900sub args { 'F-' }
2901
2902
2903package PLXML::op_fteowned;
2904
4691a0f3 2905our @ISA = ('PLXML::filestatop');
6a28abbc
NC
2906
2907sub key { 'fteowned' }
2908sub desc { '-O' }
2909sub check { 'ck_ftst' }
2910sub flags { 'isu-' }
2911sub args { 'F-' }
2912
2913
2914package PLXML::op_ftrowned;
2915
4691a0f3 2916our @ISA = ('PLXML::filestatop');
6a28abbc
NC
2917
2918sub key { 'ftrowned' }
2919sub desc { '-o' }
2920sub check { 'ck_ftst' }
2921sub flags { 'isu-' }
2922sub args { 'F-' }
2923
2924
2925package PLXML::op_ftzero;
2926
4691a0f3 2927our @ISA = ('PLXML::filestatop');
6a28abbc
NC
2928
2929sub key { 'ftzero' }
2930sub desc { '-z' }
2931sub check { 'ck_ftst' }
2932sub flags { 'isu-' }
2933sub args { 'F-' }
2934
2935
2936package PLXML::op_ftsize;
2937
4691a0f3 2938our @ISA = ('PLXML::filestatop');
6a28abbc
NC
2939
2940sub key { 'ftsize' }
2941sub desc { '-s' }
2942sub check { 'ck_ftst' }
2943sub flags { 'istu-' }
2944sub args { 'F-' }
2945
2946
2947package PLXML::op_ftmtime;
2948
4691a0f3 2949our @ISA = ('PLXML::filestatop');
6a28abbc
NC
2950
2951sub key { 'ftmtime' }
2952sub desc { '-M' }
2953sub check { 'ck_ftst' }
2954sub flags { 'stu-' }
2955sub args { 'F-' }
2956
2957
2958package PLXML::op_ftatime;
2959
4691a0f3 2960our @ISA = ('PLXML::filestatop');
6a28abbc
NC
2961
2962sub key { 'ftatime' }
2963sub desc { '-A' }
2964sub check { 'ck_ftst' }
2965sub flags { 'stu-' }
2966sub args { 'F-' }
2967
2968
2969package PLXML::op_ftctime;
2970
4691a0f3 2971our @ISA = ('PLXML::filestatop');
6a28abbc
NC
2972
2973sub key { 'ftctime' }
2974sub desc { '-C' }
2975sub check { 'ck_ftst' }
2976sub flags { 'stu-' }
2977sub args { 'F-' }
2978
2979
2980package PLXML::op_ftsock;
2981
4691a0f3 2982our @ISA = ('PLXML::filestatop');
6a28abbc
NC
2983
2984sub key { 'ftsock' }
2985sub desc { '-S' }
2986sub check { 'ck_ftst' }
2987sub flags { 'isu-' }
2988sub args { 'F-' }
2989
2990
2991package PLXML::op_ftchr;
2992
4691a0f3 2993our @ISA = ('PLXML::filestatop');
6a28abbc
NC
2994
2995sub key { 'ftchr' }
2996sub desc { '-c' }
2997sub check { 'ck_ftst' }
2998sub flags { 'isu-' }
2999sub args { 'F-' }
3000
3001
3002package PLXML::op_ftblk;
3003
4691a0f3 3004our @ISA = ('PLXML::filestatop');
6a28abbc
NC
3005
3006sub key { 'ftblk' }
3007sub desc { '-b' }
3008sub check { 'ck_ftst' }
3009sub flags { 'isu-' }
3010sub args { 'F-' }
3011
3012
3013package PLXML::op_ftfile;
3014
4691a0f3 3015our @ISA = ('PLXML::filestatop');
6a28abbc
NC
3016
3017sub key { 'ftfile' }
3018sub desc { '-f' }
3019sub check { 'ck_ftst' }
3020sub flags { 'isu-' }
3021sub args { 'F-' }
3022
3023
3024package PLXML::op_ftdir;
3025
4691a0f3 3026our @ISA = ('PLXML::filestatop');
6a28abbc
NC
3027
3028sub key { 'ftdir' }
3029sub desc { '-d' }
3030sub check { 'ck_ftst' }
3031sub flags { 'isu-' }
3032sub args { 'F-' }
3033
3034
3035package PLXML::op_ftpipe;
3036
4691a0f3 3037our @ISA = ('PLXML::filestatop');
6a28abbc
NC
3038
3039sub key { 'ftpipe' }
3040sub desc { '-p' }
3041sub check { 'ck_ftst' }
3042sub flags { 'isu-' }
3043sub args { 'F-' }
3044
3045
3046package PLXML::op_ftlink;
3047
4691a0f3 3048our @ISA = ('PLXML::filestatop');
6a28abbc
NC
3049
3050sub key { 'ftlink' }
3051sub desc { '-l' }
3052sub check { 'ck_ftst' }
3053sub flags { 'isu-' }
3054sub args { 'F-' }
3055
3056
3057package PLXML::op_ftsuid;
3058
4691a0f3 3059our @ISA = ('PLXML::filestatop');
6a28abbc
NC
3060
3061sub key { 'ftsuid' }
3062sub desc { '-u' }
3063sub check { 'ck_ftst' }
3064sub flags { 'isu-' }
3065sub args { 'F-' }
3066
3067
3068package PLXML::op_ftsgid;
3069
4691a0f3 3070our @ISA = ('PLXML::filestatop');
6a28abbc
NC
3071
3072sub key { 'ftsgid' }
3073sub desc { '-g' }
3074sub check { 'ck_ftst' }
3075sub flags { 'isu-' }
3076sub args { 'F-' }
3077
3078
3079package PLXML::op_ftsvtx;
3080
4691a0f3 3081our @ISA = ('PLXML::filestatop');
6a28abbc
NC
3082
3083sub key { 'ftsvtx' }
3084sub desc { '-k' }
3085sub check { 'ck_ftst' }
3086sub flags { 'isu-' }
3087sub args { 'F-' }
3088
3089
3090package PLXML::op_fttty;
3091
4691a0f3 3092our @ISA = ('PLXML::filestatop');
6a28abbc
NC
3093
3094sub key { 'fttty' }
3095sub desc { '-t' }
3096sub check { 'ck_ftst' }
3097sub flags { 'is-' }
3098sub args { 'F-' }
3099
3100
3101package PLXML::op_fttext;
3102
4691a0f3 3103our @ISA = ('PLXML::filestatop');
6a28abbc
NC
3104
3105sub key { 'fttext' }
3106sub desc { '-T' }
3107sub check { 'ck_ftst' }
3108sub flags { 'isu-' }
3109sub args { 'F-' }
3110
3111
3112package PLXML::op_ftbinary;
3113
4691a0f3 3114our @ISA = ('PLXML::filestatop');
6a28abbc
NC
3115
3116sub key { 'ftbinary' }
3117sub desc { '-B' }
3118sub check { 'ck_ftst' }
3119sub flags { 'isu-' }
3120sub args { 'F-' }
3121
3122
3123
3124# File calls.
3125
3126package PLXML::op_chdir;
3127
4691a0f3 3128our @ISA = ('PLXML::baseop_unop');
6a28abbc
NC
3129
3130sub key { 'chdir' }
3131sub desc { 'chdir' }
3132sub check { 'ck_fun' }
3133sub flags { 'isT%' }
3134sub args { 'S?' }
3135
3136
3137package PLXML::op_chown;
3138
4691a0f3 3139our @ISA = ('PLXML::listop');
6a28abbc
NC
3140
3141sub key { 'chown' }
3142sub desc { 'chown' }
3143sub check { 'ck_fun' }
3144sub flags { 'imsT@' }
3145sub args { 'L' }
3146
3147
3148package PLXML::op_chroot;
3149
4691a0f3 3150our @ISA = ('PLXML::baseop_unop');
6a28abbc
NC
3151
3152sub key { 'chroot' }
3153sub desc { 'chroot' }
3154sub check { 'ck_fun' }
3155sub flags { 'isTu%' }
3156sub args { 'S?' }
3157
3158
3159package PLXML::op_unlink;
3160
4691a0f3 3161our @ISA = ('PLXML::listop');
6a28abbc
NC
3162
3163sub key { 'unlink' }
3164sub desc { 'unlink' }
3165sub check { 'ck_fun' }
3166sub flags { 'imsTu@' }
3167sub args { 'L' }
3168
3169
3170package PLXML::op_chmod;
3171
4691a0f3 3172our @ISA = ('PLXML::listop');
6a28abbc
NC
3173
3174sub key { 'chmod' }
3175sub desc { 'chmod' }
3176sub check { 'ck_fun' }
3177sub flags { 'imsT@' }
3178sub args { 'L' }
3179
3180
3181package PLXML::op_utime;
3182
4691a0f3 3183our @ISA = ('PLXML::listop');
6a28abbc
NC
3184
3185sub key { 'utime' }
3186sub desc { 'utime' }
3187sub check { 'ck_fun' }
3188sub flags { 'imsT@' }
3189sub args { 'L' }
3190
3191
3192package PLXML::op_rename;
3193
4691a0f3 3194our @ISA = ('PLXML::listop');
6a28abbc
NC
3195
3196sub key { 'rename' }
3197sub desc { 'rename' }
3198sub check { 'ck_fun' }
3199sub flags { 'isT@' }
3200sub args { 'S S' }
3201
3202
3203package PLXML::op_link;
3204
4691a0f3 3205our @ISA = ('PLXML::listop');
6a28abbc
NC
3206
3207sub key { 'link' }
3208sub desc { 'link' }
3209sub check { 'ck_fun' }
3210sub flags { 'isT@' }
3211sub args { 'S S' }
3212
3213
3214package PLXML::op_symlink;
3215
4691a0f3 3216our @ISA = ('PLXML::listop');
6a28abbc
NC
3217
3218sub key { 'symlink' }
3219sub desc { 'symlink' }
3220sub check { 'ck_fun' }
3221sub flags { 'isT@' }
3222sub args { 'S S' }
3223
3224
3225package PLXML::op_readlink;
3226
4691a0f3 3227our @ISA = ('PLXML::baseop_unop');
6a28abbc
NC
3228
3229sub key { 'readlink' }
3230sub desc { 'readlink' }
3231sub check { 'ck_fun' }
3232sub flags { 'stu%' }
3233sub args { 'S?' }
3234
3235
3236package PLXML::op_mkdir;
3237
4691a0f3 3238our @ISA = ('PLXML::listop');
6a28abbc
NC
3239
3240sub key { 'mkdir' }
3241sub desc { 'mkdir' }
3242sub check { 'ck_fun' }
3243sub flags { 'isT@' }
3244sub args { 'S S?' }
3245
3246
3247package PLXML::op_rmdir;
3248
4691a0f3 3249our @ISA = ('PLXML::baseop_unop');
6a28abbc
NC
3250
3251sub key { 'rmdir' }
3252sub desc { 'rmdir' }
3253sub check { 'ck_fun' }
3254sub flags { 'isTu%' }
3255sub args { 'S?' }
3256
3257
3258
3259# Directory calls.
3260
3261package PLXML::op_open_dir;
3262
4691a0f3 3263our @ISA = ('PLXML::listop');
6a28abbc
NC
3264
3265sub key { 'open_dir' }
3266sub desc { 'opendir' }
3267sub check { 'ck_fun' }
3268sub flags { 'is@' }
3269sub args { 'F S' }
3270
3271
3272package PLXML::op_readdir;
3273
4691a0f3 3274our @ISA = ('PLXML::baseop_unop');
6a28abbc
NC
3275
3276sub key { 'readdir' }
3277sub desc { 'readdir' }
3278sub check { 'ck_fun' }
3279sub flags { '%' }
3280sub args { 'F' }
3281
3282
3283package PLXML::op_telldir;
3284
4691a0f3 3285our @ISA = ('PLXML::baseop_unop');
6a28abbc
NC
3286
3287sub key { 'telldir' }
3288sub desc { 'telldir' }
3289sub check { 'ck_fun' }
3290sub flags { 'st%' }
3291sub args { 'F' }
3292
3293
3294package PLXML::op_seekdir;
3295
4691a0f3 3296our @ISA = ('PLXML::listop');
6a28abbc
NC
3297
3298sub key { 'seekdir' }
3299sub desc { 'seekdir' }
3300sub check { 'ck_fun' }
3301sub flags { 's@' }
3302sub args { 'F S' }
3303
3304
3305package PLXML::op_rewinddir;
3306
4691a0f3 3307our @ISA = ('PLXML::baseop_unop');
6a28abbc
NC
3308
3309sub key { 'rewinddir' }
3310sub desc { 'rewinddir' }
3311sub check { 'ck_fun' }
3312sub flags { 's%' }
3313sub args { 'F' }
3314
3315
3316package PLXML::op_closedir;
3317
4691a0f3 3318our @ISA = ('PLXML::baseop_unop');
6a28abbc
NC
3319
3320sub key { 'closedir' }
3321sub desc { 'closedir' }
3322sub check { 'ck_fun' }
3323sub flags { 'is%' }
3324sub args { 'F' }
3325
3326
3327
3328# Process control.
3329
3330package PLXML::op_fork;
3331
4691a0f3 3332our @ISA = ('PLXML::baseop');
6a28abbc
NC
3333
3334sub key { 'fork' }
3335sub desc { 'fork' }
3336sub check { 'ck_null' }
3337sub flags { 'ist0' }
3338sub args { '' }
3339
3340
3341package PLXML::op_wait;
3342
4691a0f3 3343our @ISA = ('PLXML::baseop');
6a28abbc
NC
3344
3345sub key { 'wait' }
3346sub desc { 'wait' }
3347sub check { 'ck_null' }
3348sub flags { 'isT0' }
3349sub args { '' }
3350
3351
3352package PLXML::op_waitpid;
3353
4691a0f3 3354our @ISA = ('PLXML::listop');
6a28abbc
NC
3355
3356sub key { 'waitpid' }
3357sub desc { 'waitpid' }
3358sub check { 'ck_fun' }
3359sub flags { 'isT@' }
3360sub args { 'S S' }
3361
3362
3363package PLXML::op_system;
3364
4691a0f3 3365our @ISA = ('PLXML::listop');
6a28abbc
NC
3366
3367sub key { 'system' }
3368sub desc { 'system' }
3369sub check { 'ck_exec' }
3370sub flags { 'imsT@' }
3371sub args { 'S? L' }
3372
3373
3374package PLXML::op_exec;
3375
4691a0f3 3376our @ISA = ('PLXML::listop');
6a28abbc
NC
3377
3378sub key { 'exec' }
3379sub desc { 'exec' }
3380sub check { 'ck_exec' }
3381sub flags { 'dimsT@' }
3382sub args { 'S? L' }
3383
3384
3385package PLXML::op_kill;
3386
4691a0f3 3387our @ISA = ('PLXML::listop');
6a28abbc
NC
3388
3389sub key { 'kill' }
3390sub desc { 'kill' }
3391sub check { 'ck_fun' }
3392sub flags { 'dimsT@' }
3393sub args { 'L' }
3394
3395
3396package PLXML::op_getppid;
3397
4691a0f3 3398our @ISA = ('PLXML::baseop');
6a28abbc
NC
3399
3400sub key { 'getppid' }
3401sub desc { 'getppid' }
3402sub check { 'ck_null' }
3403sub flags { 'isT0' }
3404sub args { '' }
3405
3406
3407package PLXML::op_getpgrp;
3408
4691a0f3 3409our @ISA = ('PLXML::baseop_unop');
6a28abbc
NC
3410
3411sub key { 'getpgrp' }
3412sub desc { 'getpgrp' }
3413sub check { 'ck_fun' }
3414sub flags { 'isT%' }
3415sub args { 'S?' }
3416
3417
3418package PLXML::op_setpgrp;
3419
4691a0f3 3420our @ISA = ('PLXML::listop');
6a28abbc
NC
3421
3422sub key { 'setpgrp' }
3423sub desc { 'setpgrp' }
3424sub check { 'ck_fun' }
3425sub flags { 'isT@' }
3426sub args { 'S? S?' }
3427
3428
3429package PLXML::op_getpriority;
3430
4691a0f3 3431our @ISA = ('PLXML::listop');
6a28abbc
NC
3432
3433sub key { 'getpriority' }
3434sub desc { 'getpriority' }
3435sub check { 'ck_fun' }
3436sub flags { 'isT@' }
3437sub args { 'S S' }
3438
3439
3440package PLXML::op_setpriority;
3441
4691a0f3 3442our @ISA = ('PLXML::listop');
6a28abbc
NC
3443
3444sub key { 'setpriority' }
3445sub desc { 'setpriority' }
3446sub check { 'ck_fun' }
3447sub flags { 'isT@' }
3448sub args { 'S S S' }
3449
3450
3451
3452# Time calls.
3453
6a28abbc
NC
3454package PLXML::op_time;
3455
4691a0f3 3456our @ISA = ('PLXML::baseop');
6a28abbc
NC
3457
3458sub key { 'time' }
3459sub desc { 'time' }
3460sub check { 'ck_null' }
3461sub flags { 'isT0' }
3462sub args { '' }
3463
3464
3465package PLXML::op_tms;
3466
4691a0f3 3467our @ISA = ('PLXML::baseop');
6a28abbc
NC
3468
3469sub key { 'tms' }
3470sub desc { 'times' }
3471sub check { 'ck_null' }
3472sub flags { '0' }
3473sub args { '' }
3474
3475
3476package PLXML::op_localtime;
3477
4691a0f3 3478our @ISA = ('PLXML::baseop_unop');
6a28abbc
NC
3479
3480sub key { 'localtime' }
3481sub desc { 'localtime' }
3482sub check { 'ck_fun' }
3483sub flags { 't%' }
3484sub args { 'S?' }
3485
3486
3487package PLXML::op_gmtime;
3488
4691a0f3 3489our @ISA = ('PLXML::baseop_unop');
6a28abbc
NC
3490
3491sub key { 'gmtime' }
3492sub desc { 'gmtime' }
3493sub check { 'ck_fun' }
3494sub flags { 't%' }
3495sub args { 'S?' }
3496
3497
3498package PLXML::op_alarm;
3499
4691a0f3 3500our @ISA = ('PLXML::baseop_unop');
6a28abbc
NC
3501
3502sub key { 'alarm' }
3503sub desc { 'alarm' }
3504sub check { 'ck_fun' }
3505sub flags { 'istu%' }
3506sub args { 'S?' }
3507
3508
3509package PLXML::op_sleep;
3510
4691a0f3 3511our @ISA = ('PLXML::baseop_unop');
6a28abbc
NC
3512
3513sub key { 'sleep' }
3514sub desc { 'sleep' }
3515sub check { 'ck_fun' }
3516sub flags { 'isT%' }
3517sub args { 'S?' }
3518
3519
3520
3521# Shared memory.
3522
3523package PLXML::op_shmget;
3524
4691a0f3 3525our @ISA = ('PLXML::listop');
6a28abbc
NC
3526
3527sub key { 'shmget' }
3528sub desc { 'shmget' }
3529sub check { 'ck_fun' }
3530sub flags { 'imst@' }
3531sub args { 'S S S' }
3532
3533
3534package PLXML::op_shmctl;
3535
4691a0f3 3536our @ISA = ('PLXML::listop');
6a28abbc
NC
3537
3538sub key { 'shmctl' }
3539sub desc { 'shmctl' }
3540sub check { 'ck_fun' }
3541sub flags { 'imst@' }
3542sub args { 'S S S' }
3543
3544
3545package PLXML::op_shmread;
3546
4691a0f3 3547our @ISA = ('PLXML::listop');
6a28abbc
NC
3548
3549sub key { 'shmread' }
3550sub desc { 'shmread' }
3551sub check { 'ck_fun' }
3552sub flags { 'imst@' }
3553sub args { 'S S S S' }
3554
3555
3556package PLXML::op_shmwrite;
3557
4691a0f3 3558our @ISA = ('PLXML::listop');
6a28abbc
NC
3559
3560sub key { 'shmwrite' }
3561sub desc { 'shmwrite' }
3562sub check { 'ck_fun' }
3563sub flags { 'imst@' }
3564sub args { 'S S S S' }
3565
3566
3567
3568# Message passing.
3569
3570package PLXML::op_msgget;
3571
4691a0f3 3572our @ISA = ('PLXML::listop');
6a28abbc
NC
3573
3574sub key { 'msgget' }
3575sub desc { 'msgget' }
3576sub check { 'ck_fun' }
3577sub flags { 'imst@' }
3578sub args { 'S S' }
3579
3580
3581package PLXML::op_msgctl;
3582
4691a0f3 3583our @ISA = ('PLXML::listop');
6a28abbc
NC
3584
3585sub key { 'msgctl' }
3586sub desc { 'msgctl' }
3587sub check { 'ck_fun' }
3588sub flags { 'imst@' }
3589sub args { 'S S S' }
3590
3591
3592package PLXML::op_msgsnd;
3593
4691a0f3 3594our @ISA = ('PLXML::listop');
6a28abbc
NC
3595
3596sub key { 'msgsnd' }
3597sub desc { 'msgsnd' }
3598sub check { 'ck_fun' }
3599sub flags { 'imst@' }
3600sub args { 'S S S' }
3601
3602
3603package PLXML::op_msgrcv;
3604
4691a0f3 3605our @ISA = ('PLXML::listop');
6a28abbc
NC
3606
3607sub key { 'msgrcv' }
3608sub desc { 'msgrcv' }
3609sub check { 'ck_fun' }
3610sub flags { 'imst@' }
3611sub args { 'S S S S S' }
3612
3613
3614
3615# Semaphores.
3616
3617package PLXML::op_semget;
3618
4691a0f3 3619our @ISA = ('PLXML::listop');
6a28abbc
NC
3620
3621sub key { 'semget' }
3622sub desc { 'semget' }
3623sub check { 'ck_fun' }
3624sub flags { 'imst@' }
3625sub args { 'S S S' }
3626
3627
3628package PLXML::op_semctl;
3629
4691a0f3 3630our @ISA = ('PLXML::listop');
6a28abbc
NC
3631
3632sub key { 'semctl' }
3633sub desc { 'semctl' }
3634sub check { 'ck_fun' }
3635sub flags { 'imst@' }
3636sub args { 'S S S S' }
3637
3638
3639package PLXML::op_semop;
3640
4691a0f3 3641our @ISA = ('PLXML::listop');
6a28abbc
NC
3642
3643sub key { 'semop' }
3644sub desc { 'semop' }
3645sub check { 'ck_fun' }
3646sub flags { 'imst@' }
3647sub args { 'S S' }
3648
3649
3650
3651# Eval.
3652
3653package PLXML::op_require;
3654
4691a0f3 3655our @ISA = ('PLXML::baseop_unop');
6a28abbc
NC
3656
3657sub key { 'require' }
3658sub desc { 'require' }
3659sub check { 'ck_require' }
3660sub flags { 'du%' }
3661sub args { 'S?' }
3662
3663
3664package PLXML::op_dofile;
3665
4691a0f3 3666our @ISA = ('PLXML::unop');
6a28abbc
NC
3667
3668sub key { 'dofile' }
3669sub desc { 'do "file"' }
3670sub check { 'ck_fun' }
3671sub flags { 'd1' }
3672sub args { 'S' }
3673
3674
3675package PLXML::op_entereval;
3676
4691a0f3 3677our @ISA = ('PLXML::baseop_unop');
6a28abbc
NC
3678
3679sub key { 'entereval' }
3680sub desc { 'eval "string"' }
3681sub check { 'ck_eval' }
3682sub flags { 'd%' }
3683sub args { 'S' }
3684
3685
3686package PLXML::op_leaveeval;
3687
4691a0f3 3688our @ISA = ('PLXML::unop');
6a28abbc
NC
3689
3690sub key { 'leaveeval' }
3691sub desc { 'eval "string" exit' }
3692sub check { 'ck_null' }
3693sub flags { '1' }
3694sub args { 'S' }
3695
3696
3697#evalonce eval constant string ck_null d1 S
3698package PLXML::op_entertry;
3699
4691a0f3 3700our @ISA = ('PLXML::logop');
6a28abbc
NC
3701
3702sub key { 'entertry' }
3703sub desc { 'eval {block}' }
3704sub check { 'ck_null' }
3705sub flags { '|' }
3706sub args { '' }
3707
3708
3709package PLXML::op_leavetry;
3710
4691a0f3 3711our @ISA = ('PLXML::listop');
6a28abbc
NC
3712
3713sub key { 'leavetry' }
3714sub desc { 'eval {block} exit' }
3715sub check { 'ck_null' }
3716sub flags { '@' }
3717sub args { '' }
3718
3719
3720
3721# Get system info.
3722
3723package PLXML::op_ghbyname;
3724
4691a0f3 3725our @ISA = ('PLXML::baseop_unop');
6a28abbc
NC
3726
3727sub key { 'ghbyname' }
3728sub desc { 'gethostbyname' }
3729sub check { 'ck_fun' }
3730sub flags { '%' }
3731sub args { 'S' }
3732
3733
3734package PLXML::op_ghbyaddr;
3735
4691a0f3 3736our @ISA = ('PLXML::listop');
6a28abbc
NC
3737
3738sub key { 'ghbyaddr' }
3739sub desc { 'gethostbyaddr' }
3740sub check { 'ck_fun' }
3741sub flags { '@' }
3742sub args { 'S S' }
3743
3744
3745package PLXML::op_ghostent;
3746
4691a0f3 3747our @ISA = ('PLXML::baseop');
6a28abbc
NC
3748
3749sub key { 'ghostent' }
3750sub desc { 'gethostent' }
3751sub check { 'ck_null' }
3752sub flags { '0' }
3753sub args { '' }
3754
3755
3756package PLXML::op_gnbyname;
3757
4691a0f3 3758our @ISA = ('PLXML::baseop_unop');
6a28abbc
NC
3759
3760sub key { 'gnbyname' }
3761sub desc { 'getnetbyname' }
3762sub check { 'ck_fun' }
3763sub flags { '%' }
3764sub args { 'S' }
3765
3766
3767package PLXML::op_gnbyaddr;
3768
4691a0f3 3769our @ISA = ('PLXML::listop');
6a28abbc
NC
3770
3771sub key { 'gnbyaddr' }
3772sub desc { 'getnetbyaddr' }
3773sub check { 'ck_fun' }
3774sub flags { '@' }
3775sub args { 'S S' }
3776
3777
3778package PLXML::op_gnetent;
3779
4691a0f3 3780our @ISA = ('PLXML::baseop');
6a28abbc
NC
3781
3782sub key { 'gnetent' }
3783sub desc { 'getnetent' }
3784sub check { 'ck_null' }
3785sub flags { '0' }
3786sub args { '' }
3787
3788
3789package PLXML::op_gpbyname;
3790
4691a0f3 3791our @ISA = ('PLXML::baseop_unop');
6a28abbc
NC
3792
3793sub key { 'gpbyname' }
3794sub desc { 'getprotobyname' }
3795sub check { 'ck_fun' }
3796sub flags { '%' }
3797sub args { 'S' }
3798
3799
3800package PLXML::op_gpbynumber;
3801
4691a0f3 3802our @ISA = ('PLXML::listop');
6a28abbc
NC
3803
3804sub key { 'gpbynumber' }
3805sub desc { 'getprotobynumber' }
3806sub check { 'ck_fun' }
3807sub flags { '@' }
3808sub args { 'S' }
3809
3810
3811package PLXML::op_gprotoent;
3812
4691a0f3 3813our @ISA = ('PLXML::baseop');
6a28abbc
NC
3814
3815sub key { 'gprotoent' }
3816sub desc { 'getprotoent' }
3817sub check { 'ck_null' }
3818sub flags { '0' }
3819sub args { '' }
3820
3821
3822package PLXML::op_gsbyname;
3823
4691a0f3 3824our @ISA = ('PLXML::listop');
6a28abbc
NC
3825
3826sub key { 'gsbyname' }
3827sub desc { 'getservbyname' }
3828sub check { 'ck_fun' }
3829sub flags { '@' }
3830sub args { 'S S' }
3831
3832
3833package PLXML::op_gsbyport;
3834
4691a0f3 3835our @ISA = ('PLXML::listop');
6a28abbc
NC
3836
3837sub key { 'gsbyport' }
3838sub desc { 'getservbyport' }
3839sub check { 'ck_fun' }
3840sub flags { '@' }
3841sub args { 'S S' }
3842
3843
3844package PLXML::op_gservent;
3845
4691a0f3 3846our @ISA = ('PLXML::baseop');
6a28abbc
NC
3847
3848sub key { 'gservent' }
3849sub desc { 'getservent' }
3850sub check { 'ck_null' }
3851sub flags { '0' }
3852sub args { '' }
3853
3854
3855package PLXML::op_shostent;
3856
4691a0f3 3857our @ISA = ('PLXML::baseop_unop');
6a28abbc
NC
3858
3859sub key { 'shostent' }
3860sub desc { 'sethostent' }
3861sub check { 'ck_fun' }
3862sub flags { 'is%' }
3863sub args { 'S' }
3864
3865
3866package PLXML::op_snetent;
3867
4691a0f3 3868our @ISA = ('PLXML::baseop_unop');
6a28abbc
NC
3869
3870sub key { 'snetent' }
3871sub desc { 'setnetent' }
3872sub check { 'ck_fun' }
3873sub flags { 'is%' }
3874sub args { 'S' }
3875
3876
3877package PLXML::op_sprotoent;
3878
4691a0f3 3879our @ISA = ('PLXML::baseop_unop');
6a28abbc
NC
3880
3881sub key { 'sprotoent' }
3882sub desc { 'setprotoent' }
3883sub check { 'ck_fun' }
3884sub flags { 'is%' }
3885sub args { 'S' }
3886
3887
3888package PLXML::op_sservent;
3889
4691a0f3 3890our @ISA = ('PLXML::baseop_unop');
6a28abbc
NC
3891
3892sub key { 'sservent' }
3893sub desc { 'setservent' }
3894sub check { 'ck_fun' }
3895sub flags { 'is%' }
3896sub args { 'S' }
3897
3898
3899package PLXML::op_ehostent;
3900
4691a0f3 3901our @ISA = ('PLXML::baseop');
6a28abbc
NC
3902
3903sub key { 'ehostent' }
3904sub desc { 'endhostent' }
3905sub check { 'ck_null' }
3906sub flags { 'is0' }
3907sub args { '' }
3908
3909
3910package PLXML::op_enetent;
3911
4691a0f3 3912our @ISA = ('PLXML::baseop');
6a28abbc
NC
3913
3914sub key { 'enetent' }
3915sub desc { 'endnetent' }
3916sub check { 'ck_null' }
3917sub flags { 'is0' }
3918sub args { '' }
3919
3920
3921package PLXML::op_eprotoent;
3922
4691a0f3 3923our @ISA = ('PLXML::baseop');
6a28abbc
NC
3924
3925sub key { 'eprotoent' }
3926sub desc { 'endprotoent' }
3927sub check { 'ck_null' }
3928sub flags { 'is0' }
3929sub args { '' }
3930
3931
3932package PLXML::op_eservent;
3933
4691a0f3 3934our @ISA = ('PLXML::baseop');
6a28abbc
NC
3935
3936sub key { 'eservent' }
3937sub desc { 'endservent' }
3938sub check { 'ck_null' }
3939sub flags { 'is0' }
3940sub args { '' }
3941
3942
3943package PLXML::op_gpwnam;
3944
4691a0f3 3945our @ISA = ('PLXML::baseop_unop');
6a28abbc
NC
3946
3947sub key { 'gpwnam' }
3948sub desc { 'getpwnam' }
3949sub check { 'ck_fun' }
3950sub flags { '%' }
3951sub args { 'S' }
3952
3953
3954package PLXML::op_gpwuid;
3955
4691a0f3 3956our @ISA = ('PLXML::baseop_unop');
6a28abbc
NC
3957
3958sub key { 'gpwuid' }
3959sub desc { 'getpwuid' }
3960sub check { 'ck_fun' }
3961sub flags { '%' }
3962sub args { 'S' }
3963
3964
3965package PLXML::op_gpwent;
3966
4691a0f3 3967our @ISA = ('PLXML::baseop');
6a28abbc
NC
3968
3969sub key { 'gpwent' }
3970sub desc { 'getpwent' }
3971sub check { 'ck_null' }
3972sub flags { '0' }
3973sub args { '' }
3974
3975
3976package PLXML::op_spwent;
3977
4691a0f3 3978our @ISA = ('PLXML::baseop');
6a28abbc
NC
3979
3980sub key { 'spwent' }
3981sub desc { 'setpwent' }
3982sub check { 'ck_null' }
3983sub flags { 'is0' }
3984sub args { '' }
3985
3986
3987package PLXML::op_epwent;
3988
4691a0f3 3989our @ISA = ('PLXML::baseop');
6a28abbc
NC
3990
3991sub key { 'epwent' }
3992sub desc { 'endpwent' }
3993sub check { 'ck_null' }
3994sub flags { 'is0' }
3995sub args { '' }
3996
3997
3998package PLXML::op_ggrnam;
3999
4691a0f3 4000our @ISA = ('PLXML::baseop_unop');
6a28abbc
NC
4001
4002sub key { 'ggrnam' }
4003sub desc { 'getgrnam' }
4004sub check { 'ck_fun' }
4005sub flags { '%' }
4006sub args { 'S' }
4007
4008
4009package PLXML::op_ggrgid;
4010
4691a0f3 4011our @ISA = ('PLXML::baseop_unop');
6a28abbc
NC
4012
4013sub key { 'ggrgid' }
4014sub desc { 'getgrgid' }
4015sub check { 'ck_fun' }
4016sub flags { '%' }
4017sub args { 'S' }
4018
4019
4020package PLXML::op_ggrent;
4021
4691a0f3 4022our @ISA = ('PLXML::baseop');
6a28abbc
NC
4023
4024sub key { 'ggrent' }
4025sub desc { 'getgrent' }
4026sub check { 'ck_null' }
4027sub flags { '0' }
4028sub args { '' }
4029
4030
4031package PLXML::op_sgrent;
4032
4691a0f3 4033our @ISA = ('PLXML::baseop');
6a28abbc
NC
4034
4035sub key { 'sgrent' }
4036sub desc { 'setgrent' }
4037sub check { 'ck_null' }
4038sub flags { 'is0' }
4039sub args { '' }
4040
4041
4042package PLXML::op_egrent;
4043
4691a0f3 4044our @ISA = ('PLXML::baseop');
6a28abbc
NC
4045
4046sub key { 'egrent' }
4047sub desc { 'endgrent' }
4048sub check { 'ck_null' }
4049sub flags { 'is0' }
4050sub args { '' }
4051
4052
4053package PLXML::op_getlogin;
4054
4691a0f3 4055our @ISA = ('PLXML::baseop');
6a28abbc
NC
4056
4057sub key { 'getlogin' }
4058sub desc { 'getlogin' }
4059sub check { 'ck_null' }
4060sub flags { 'st0' }
4061sub args { '' }
4062
4063
4064
4065# Miscellaneous.
4066
4067package PLXML::op_syscall;
4068
4691a0f3 4069our @ISA = ('PLXML::listop');
6a28abbc
NC
4070
4071sub key { 'syscall' }
4072sub desc { 'syscall' }
4073sub check { 'ck_fun' }
4074sub flags { 'imst@' }
4075sub args { 'S L' }
4076
4077
4078
4079# For multi-threading
4080package PLXML::op_lock;
4081
4691a0f3 4082our @ISA = ('PLXML::baseop_unop');
6a28abbc
NC
4083
4084sub key { 'lock' }
4085sub desc { 'lock' }
4086sub check { 'ck_rfun' }
4087sub flags { 's%' }
4088sub args { 'R' }
4089
4090
4091package PLXML::op_threadsv;
4092
4691a0f3 4093our @ISA = ('PLXML::baseop');
6a28abbc
NC
4094
4095sub key { 'threadsv' }
4096sub desc { 'per-thread value' }
4097sub check { 'ck_null' }
4098sub flags { 'ds0' }
4099sub args { '' }
4100
4101
4102
4103# Control (contd.)
4104package PLXML::op_setstate;
4105
4691a0f3 4106our @ISA = ('PLXML::cop');
6a28abbc
NC
4107
4108sub key { 'setstate' }
4109sub desc { 'set statement info' }
4110sub check { 'ck_null' }
4111sub flags { 's;' }
4112sub args { '' }
4113
4114
4115package PLXML::op_method_named;
4116
4691a0f3 4117our @ISA = ('PLXML::padop_svop');
6a28abbc
NC
4118
4119sub key { 'method_named' }
4120sub desc { 'method with known name' }
4121sub check { 'ck_null' }
4122sub flags { 'd$' }
4123sub args { '' }
4124
4125
4126
4127package PLXML::op_dor;
4128
4691a0f3 4129our @ISA = ('PLXML::logop');
6a28abbc
NC
4130
4131sub key { 'dor' }
4132sub desc { 'defined or (//)' }
4133sub check { 'ck_null' }
4134sub flags { '|' }
4135sub args { '' }
4136
4137
4138package PLXML::op_dorassign;
4139
4691a0f3 4140our @ISA = ('PLXML::logop');
6a28abbc
NC
4141
4142sub key { 'dorassign' }
4143sub desc { 'defined or assignment (//=)' }
4144sub check { 'ck_null' }
4145sub flags { 's|' }
4146sub args { '' }
4147
4148
4149
4150# Add new ops before this, the custom operator.
4151
4152package PLXML::op_custom;
4153
4691a0f3 4154our @ISA = ('PLXML::baseop');
6a28abbc
NC
4155
4156sub key { 'custom' }
4157sub desc { 'unknown custom operator' }
4158sub check { 'ck_null' }
4159sub flags { '0' }
4160sub args { '' }
4161
4162