This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
In Perl_sv_usepvn_flags(), with MYMALLOC, use the actual malloc()ed
[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
2516
2517package PLXML::op_sysopen;
2518
4691a0f3 2519our @ISA = ('PLXML::listop');
6a28abbc
NC
2520
2521sub key { 'sysopen' }
2522sub desc { 'sysopen' }
2523sub check { 'ck_fun' }
2524sub flags { 's@' }
2525sub args { 'F S S S?' }
2526
2527
2528package PLXML::op_sysseek;
2529
4691a0f3 2530our @ISA = ('PLXML::listop');
6a28abbc
NC
2531
2532sub key { 'sysseek' }
2533sub desc { 'sysseek' }
2534sub check { 'ck_fun' }
2535sub flags { 's@' }
2536sub args { 'F S S' }
2537
2538
2539package PLXML::op_sysread;
2540
4691a0f3 2541our @ISA = ('PLXML::listop');
6a28abbc
NC
2542
2543sub key { 'sysread' }
2544sub desc { 'sysread' }
2545sub check { 'ck_fun' }
2546sub flags { 'imst@' }
2547sub args { 'F R S S?' }
2548
2549
2550package PLXML::op_syswrite;
2551
4691a0f3 2552our @ISA = ('PLXML::listop');
6a28abbc
NC
2553
2554sub key { 'syswrite' }
2555sub desc { 'syswrite' }
2556sub check { 'ck_fun' }
2557sub flags { 'imst@' }
2558sub args { 'F S S? S?' }
2559
2560
2561
2562package PLXML::op_send;
2563
4691a0f3 2564our @ISA = ('PLXML::listop');
6a28abbc
NC
2565
2566sub key { 'send' }
2567sub desc { 'send' }
2568sub check { 'ck_fun' }
2569sub flags { 'imst@' }
2570sub args { 'Fs S S S?' }
2571
2572
2573package PLXML::op_recv;
2574
4691a0f3 2575our @ISA = ('PLXML::listop');
6a28abbc
NC
2576
2577sub key { 'recv' }
2578sub desc { 'recv' }
2579sub check { 'ck_fun' }
2580sub flags { 'imst@' }
2581sub args { 'Fs R S S' }
2582
2583
2584
2585package PLXML::op_eof;
2586
4691a0f3 2587our @ISA = ('PLXML::baseop_unop');
6a28abbc
NC
2588
2589sub key { 'eof' }
2590sub desc { 'eof' }
2591sub check { 'ck_eof' }
2592sub flags { 'is%' }
2593sub args { 'F?' }
2594
2595
2596package PLXML::op_tell;
2597
4691a0f3 2598our @ISA = ('PLXML::baseop_unop');
6a28abbc
NC
2599
2600sub key { 'tell' }
2601sub desc { 'tell' }
2602sub check { 'ck_fun' }
2603sub flags { 'st%' }
2604sub args { 'F?' }
2605
2606
2607package PLXML::op_seek;
2608
4691a0f3 2609our @ISA = ('PLXML::listop');
6a28abbc
NC
2610
2611sub key { 'seek' }
2612sub desc { 'seek' }
2613sub check { 'ck_fun' }
2614sub flags { 's@' }
2615sub args { 'F S S' }
2616
2617
2618# truncate really behaves as if it had both "S S" and "F S"
2619package PLXML::op_truncate;
2620
4691a0f3 2621our @ISA = ('PLXML::listop');
6a28abbc
NC
2622
2623sub key { 'truncate' }
2624sub desc { 'truncate' }
2625sub check { 'ck_trunc' }
2626sub flags { 'is@' }
2627sub args { 'S S' }
2628
2629
2630
2631package PLXML::op_fcntl;
2632
4691a0f3 2633our @ISA = ('PLXML::listop');
6a28abbc
NC
2634
2635sub key { 'fcntl' }
2636sub desc { 'fcntl' }
2637sub check { 'ck_fun' }
2638sub flags { 'st@' }
2639sub args { 'F S S' }
2640
2641
2642package PLXML::op_ioctl;
2643
4691a0f3 2644our @ISA = ('PLXML::listop');
6a28abbc
NC
2645
2646sub key { 'ioctl' }
2647sub desc { 'ioctl' }
2648sub check { 'ck_fun' }
2649sub flags { 'st@' }
2650sub args { 'F S S' }
2651
2652
2653package PLXML::op_flock;
2654
4691a0f3 2655our @ISA = ('PLXML::listop');
6a28abbc
NC
2656
2657sub key { 'flock' }
2658sub desc { 'flock' }
2659sub check { 'ck_fun' }
2660sub flags { 'isT@' }
2661sub args { 'F S' }
2662
2663
2664
2665# Sockets.
2666
2667package PLXML::op_socket;
2668
4691a0f3 2669our @ISA = ('PLXML::listop');
6a28abbc
NC
2670
2671sub key { 'socket' }
2672sub desc { 'socket' }
2673sub check { 'ck_fun' }
2674sub flags { 'is@' }
2675sub args { 'Fs S S S' }
2676
2677
2678package PLXML::op_sockpair;
2679
4691a0f3 2680our @ISA = ('PLXML::listop');
6a28abbc
NC
2681
2682sub key { 'sockpair' }
2683sub desc { 'socketpair' }
2684sub check { 'ck_fun' }
2685sub flags { 'is@' }
2686sub args { 'Fs Fs S S S' }
2687
2688
2689
2690package PLXML::op_bind;
2691
4691a0f3 2692our @ISA = ('PLXML::listop');
6a28abbc
NC
2693
2694sub key { 'bind' }
2695sub desc { 'bind' }
2696sub check { 'ck_fun' }
2697sub flags { 'is@' }
2698sub args { 'Fs S' }
2699
2700
2701package PLXML::op_connect;
2702
4691a0f3 2703our @ISA = ('PLXML::listop');
6a28abbc
NC
2704
2705sub key { 'connect' }
2706sub desc { 'connect' }
2707sub check { 'ck_fun' }
2708sub flags { 'is@' }
2709sub args { 'Fs S' }
2710
2711
2712package PLXML::op_listen;
2713
4691a0f3 2714our @ISA = ('PLXML::listop');
6a28abbc
NC
2715
2716sub key { 'listen' }
2717sub desc { 'listen' }
2718sub check { 'ck_fun' }
2719sub flags { 'is@' }
2720sub args { 'Fs S' }
2721
2722
2723package PLXML::op_accept;
2724
4691a0f3 2725our @ISA = ('PLXML::listop');
6a28abbc
NC
2726
2727sub key { 'accept' }
2728sub desc { 'accept' }
2729sub check { 'ck_fun' }
2730sub flags { 'ist@' }
2731sub args { 'Fs Fs' }
2732
2733
2734package PLXML::op_shutdown;
2735
4691a0f3 2736our @ISA = ('PLXML::listop');
6a28abbc
NC
2737
2738sub key { 'shutdown' }
2739sub desc { 'shutdown' }
2740sub check { 'ck_fun' }
2741sub flags { 'ist@' }
2742sub args { 'Fs S' }
2743
2744
2745
2746package PLXML::op_gsockopt;
2747
4691a0f3 2748our @ISA = ('PLXML::listop');
6a28abbc
NC
2749
2750sub key { 'gsockopt' }
2751sub desc { 'getsockopt' }
2752sub check { 'ck_fun' }
2753sub flags { 'is@' }
2754sub args { 'Fs S S' }
2755
2756
2757package PLXML::op_ssockopt;
2758
4691a0f3 2759our @ISA = ('PLXML::listop');
6a28abbc
NC
2760
2761sub key { 'ssockopt' }
2762sub desc { 'setsockopt' }
2763sub check { 'ck_fun' }
2764sub flags { 'is@' }
2765sub args { 'Fs S S S' }
2766
2767
2768
2769package PLXML::op_getsockname;
2770
4691a0f3 2771our @ISA = ('PLXML::baseop_unop');
6a28abbc
NC
2772
2773sub key { 'getsockname' }
2774sub desc { 'getsockname' }
2775sub check { 'ck_fun' }
2776sub flags { 'is%' }
2777sub args { 'Fs' }
2778
2779
2780package PLXML::op_getpeername;
2781
4691a0f3 2782our @ISA = ('PLXML::baseop_unop');
6a28abbc
NC
2783
2784sub key { 'getpeername' }
2785sub desc { 'getpeername' }
2786sub check { 'ck_fun' }
2787sub flags { 'is%' }
2788sub args { 'Fs' }
2789
2790
2791
2792# Stat calls.
2793
2794package PLXML::op_lstat;
2795
4691a0f3 2796our @ISA = ('PLXML::filestatop');
6a28abbc
NC
2797
2798sub key { 'lstat' }
2799sub desc { 'lstat' }
2800sub check { 'ck_ftst' }
2801sub flags { 'u-' }
2802sub args { 'F' }
2803
2804
2805package PLXML::op_stat;
2806
4691a0f3 2807our @ISA = ('PLXML::filestatop');
6a28abbc
NC
2808
2809sub key { 'stat' }
2810sub desc { 'stat' }
2811sub check { 'ck_ftst' }
2812sub flags { 'u-' }
2813sub args { 'F' }
2814
2815
2816package PLXML::op_ftrread;
2817
4691a0f3 2818our @ISA = ('PLXML::filestatop');
6a28abbc
NC
2819
2820sub key { 'ftrread' }
2821sub desc { '-R' }
2822sub check { 'ck_ftst' }
2823sub flags { 'isu-' }
2824sub args { 'F-' }
2825
2826
2827package PLXML::op_ftrwrite;
2828
4691a0f3 2829our @ISA = ('PLXML::filestatop');
6a28abbc
NC
2830
2831sub key { 'ftrwrite' }
2832sub desc { '-W' }
2833sub check { 'ck_ftst' }
2834sub flags { 'isu-' }
2835sub args { 'F-' }
2836
2837
2838package PLXML::op_ftrexec;
2839
4691a0f3 2840our @ISA = ('PLXML::filestatop');
6a28abbc
NC
2841
2842sub key { 'ftrexec' }
2843sub desc { '-X' }
2844sub check { 'ck_ftst' }
2845sub flags { 'isu-' }
2846sub args { 'F-' }
2847
2848
2849package PLXML::op_fteread;
2850
4691a0f3 2851our @ISA = ('PLXML::filestatop');
6a28abbc
NC
2852
2853sub key { 'fteread' }
2854sub desc { '-r' }
2855sub check { 'ck_ftst' }
2856sub flags { 'isu-' }
2857sub args { 'F-' }
2858
2859
2860package PLXML::op_ftewrite;
2861
4691a0f3 2862our @ISA = ('PLXML::filestatop');
6a28abbc
NC
2863
2864sub key { 'ftewrite' }
2865sub desc { '-w' }
2866sub check { 'ck_ftst' }
2867sub flags { 'isu-' }
2868sub args { 'F-' }
2869
2870
2871package PLXML::op_fteexec;
2872
4691a0f3 2873our @ISA = ('PLXML::filestatop');
6a28abbc
NC
2874
2875sub key { 'fteexec' }
2876sub desc { '-x' }
2877sub check { 'ck_ftst' }
2878sub flags { 'isu-' }
2879sub args { 'F-' }
2880
2881
2882package PLXML::op_ftis;
2883
4691a0f3 2884our @ISA = ('PLXML::filestatop');
6a28abbc
NC
2885
2886sub key { 'ftis' }
2887sub desc { '-e' }
2888sub check { 'ck_ftst' }
2889sub flags { 'isu-' }
2890sub args { 'F-' }
2891
2892
2893package PLXML::op_fteowned;
2894
4691a0f3 2895our @ISA = ('PLXML::filestatop');
6a28abbc
NC
2896
2897sub key { 'fteowned' }
2898sub desc { '-O' }
2899sub check { 'ck_ftst' }
2900sub flags { 'isu-' }
2901sub args { 'F-' }
2902
2903
2904package PLXML::op_ftrowned;
2905
4691a0f3 2906our @ISA = ('PLXML::filestatop');
6a28abbc
NC
2907
2908sub key { 'ftrowned' }
2909sub desc { '-o' }
2910sub check { 'ck_ftst' }
2911sub flags { 'isu-' }
2912sub args { 'F-' }
2913
2914
2915package PLXML::op_ftzero;
2916
4691a0f3 2917our @ISA = ('PLXML::filestatop');
6a28abbc
NC
2918
2919sub key { 'ftzero' }
2920sub desc { '-z' }
2921sub check { 'ck_ftst' }
2922sub flags { 'isu-' }
2923sub args { 'F-' }
2924
2925
2926package PLXML::op_ftsize;
2927
4691a0f3 2928our @ISA = ('PLXML::filestatop');
6a28abbc
NC
2929
2930sub key { 'ftsize' }
2931sub desc { '-s' }
2932sub check { 'ck_ftst' }
2933sub flags { 'istu-' }
2934sub args { 'F-' }
2935
2936
2937package PLXML::op_ftmtime;
2938
4691a0f3 2939our @ISA = ('PLXML::filestatop');
6a28abbc
NC
2940
2941sub key { 'ftmtime' }
2942sub desc { '-M' }
2943sub check { 'ck_ftst' }
2944sub flags { 'stu-' }
2945sub args { 'F-' }
2946
2947
2948package PLXML::op_ftatime;
2949
4691a0f3 2950our @ISA = ('PLXML::filestatop');
6a28abbc
NC
2951
2952sub key { 'ftatime' }
2953sub desc { '-A' }
2954sub check { 'ck_ftst' }
2955sub flags { 'stu-' }
2956sub args { 'F-' }
2957
2958
2959package PLXML::op_ftctime;
2960
4691a0f3 2961our @ISA = ('PLXML::filestatop');
6a28abbc
NC
2962
2963sub key { 'ftctime' }
2964sub desc { '-C' }
2965sub check { 'ck_ftst' }
2966sub flags { 'stu-' }
2967sub args { 'F-' }
2968
2969
2970package PLXML::op_ftsock;
2971
4691a0f3 2972our @ISA = ('PLXML::filestatop');
6a28abbc
NC
2973
2974sub key { 'ftsock' }
2975sub desc { '-S' }
2976sub check { 'ck_ftst' }
2977sub flags { 'isu-' }
2978sub args { 'F-' }
2979
2980
2981package PLXML::op_ftchr;
2982
4691a0f3 2983our @ISA = ('PLXML::filestatop');
6a28abbc
NC
2984
2985sub key { 'ftchr' }
2986sub desc { '-c' }
2987sub check { 'ck_ftst' }
2988sub flags { 'isu-' }
2989sub args { 'F-' }
2990
2991
2992package PLXML::op_ftblk;
2993
4691a0f3 2994our @ISA = ('PLXML::filestatop');
6a28abbc
NC
2995
2996sub key { 'ftblk' }
2997sub desc { '-b' }
2998sub check { 'ck_ftst' }
2999sub flags { 'isu-' }
3000sub args { 'F-' }
3001
3002
3003package PLXML::op_ftfile;
3004
4691a0f3 3005our @ISA = ('PLXML::filestatop');
6a28abbc
NC
3006
3007sub key { 'ftfile' }
3008sub desc { '-f' }
3009sub check { 'ck_ftst' }
3010sub flags { 'isu-' }
3011sub args { 'F-' }
3012
3013
3014package PLXML::op_ftdir;
3015
4691a0f3 3016our @ISA = ('PLXML::filestatop');
6a28abbc
NC
3017
3018sub key { 'ftdir' }
3019sub desc { '-d' }
3020sub check { 'ck_ftst' }
3021sub flags { 'isu-' }
3022sub args { 'F-' }
3023
3024
3025package PLXML::op_ftpipe;
3026
4691a0f3 3027our @ISA = ('PLXML::filestatop');
6a28abbc
NC
3028
3029sub key { 'ftpipe' }
3030sub desc { '-p' }
3031sub check { 'ck_ftst' }
3032sub flags { 'isu-' }
3033sub args { 'F-' }
3034
3035
3036package PLXML::op_ftlink;
3037
4691a0f3 3038our @ISA = ('PLXML::filestatop');
6a28abbc
NC
3039
3040sub key { 'ftlink' }
3041sub desc { '-l' }
3042sub check { 'ck_ftst' }
3043sub flags { 'isu-' }
3044sub args { 'F-' }
3045
3046
3047package PLXML::op_ftsuid;
3048
4691a0f3 3049our @ISA = ('PLXML::filestatop');
6a28abbc
NC
3050
3051sub key { 'ftsuid' }
3052sub desc { '-u' }
3053sub check { 'ck_ftst' }
3054sub flags { 'isu-' }
3055sub args { 'F-' }
3056
3057
3058package PLXML::op_ftsgid;
3059
4691a0f3 3060our @ISA = ('PLXML::filestatop');
6a28abbc
NC
3061
3062sub key { 'ftsgid' }
3063sub desc { '-g' }
3064sub check { 'ck_ftst' }
3065sub flags { 'isu-' }
3066sub args { 'F-' }
3067
3068
3069package PLXML::op_ftsvtx;
3070
4691a0f3 3071our @ISA = ('PLXML::filestatop');
6a28abbc
NC
3072
3073sub key { 'ftsvtx' }
3074sub desc { '-k' }
3075sub check { 'ck_ftst' }
3076sub flags { 'isu-' }
3077sub args { 'F-' }
3078
3079
3080package PLXML::op_fttty;
3081
4691a0f3 3082our @ISA = ('PLXML::filestatop');
6a28abbc
NC
3083
3084sub key { 'fttty' }
3085sub desc { '-t' }
3086sub check { 'ck_ftst' }
3087sub flags { 'is-' }
3088sub args { 'F-' }
3089
3090
3091package PLXML::op_fttext;
3092
4691a0f3 3093our @ISA = ('PLXML::filestatop');
6a28abbc
NC
3094
3095sub key { 'fttext' }
3096sub desc { '-T' }
3097sub check { 'ck_ftst' }
3098sub flags { 'isu-' }
3099sub args { 'F-' }
3100
3101
3102package PLXML::op_ftbinary;
3103
4691a0f3 3104our @ISA = ('PLXML::filestatop');
6a28abbc
NC
3105
3106sub key { 'ftbinary' }
3107sub desc { '-B' }
3108sub check { 'ck_ftst' }
3109sub flags { 'isu-' }
3110sub args { 'F-' }
3111
3112
3113
3114# File calls.
3115
3116package PLXML::op_chdir;
3117
4691a0f3 3118our @ISA = ('PLXML::baseop_unop');
6a28abbc
NC
3119
3120sub key { 'chdir' }
3121sub desc { 'chdir' }
3122sub check { 'ck_fun' }
3123sub flags { 'isT%' }
3124sub args { 'S?' }
3125
3126
3127package PLXML::op_chown;
3128
4691a0f3 3129our @ISA = ('PLXML::listop');
6a28abbc
NC
3130
3131sub key { 'chown' }
3132sub desc { 'chown' }
3133sub check { 'ck_fun' }
3134sub flags { 'imsT@' }
3135sub args { 'L' }
3136
3137
3138package PLXML::op_chroot;
3139
4691a0f3 3140our @ISA = ('PLXML::baseop_unop');
6a28abbc
NC
3141
3142sub key { 'chroot' }
3143sub desc { 'chroot' }
3144sub check { 'ck_fun' }
3145sub flags { 'isTu%' }
3146sub args { 'S?' }
3147
3148
3149package PLXML::op_unlink;
3150
4691a0f3 3151our @ISA = ('PLXML::listop');
6a28abbc
NC
3152
3153sub key { 'unlink' }
3154sub desc { 'unlink' }
3155sub check { 'ck_fun' }
3156sub flags { 'imsTu@' }
3157sub args { 'L' }
3158
3159
3160package PLXML::op_chmod;
3161
4691a0f3 3162our @ISA = ('PLXML::listop');
6a28abbc
NC
3163
3164sub key { 'chmod' }
3165sub desc { 'chmod' }
3166sub check { 'ck_fun' }
3167sub flags { 'imsT@' }
3168sub args { 'L' }
3169
3170
3171package PLXML::op_utime;
3172
4691a0f3 3173our @ISA = ('PLXML::listop');
6a28abbc
NC
3174
3175sub key { 'utime' }
3176sub desc { 'utime' }
3177sub check { 'ck_fun' }
3178sub flags { 'imsT@' }
3179sub args { 'L' }
3180
3181
3182package PLXML::op_rename;
3183
4691a0f3 3184our @ISA = ('PLXML::listop');
6a28abbc
NC
3185
3186sub key { 'rename' }
3187sub desc { 'rename' }
3188sub check { 'ck_fun' }
3189sub flags { 'isT@' }
3190sub args { 'S S' }
3191
3192
3193package PLXML::op_link;
3194
4691a0f3 3195our @ISA = ('PLXML::listop');
6a28abbc
NC
3196
3197sub key { 'link' }
3198sub desc { 'link' }
3199sub check { 'ck_fun' }
3200sub flags { 'isT@' }
3201sub args { 'S S' }
3202
3203
3204package PLXML::op_symlink;
3205
4691a0f3 3206our @ISA = ('PLXML::listop');
6a28abbc
NC
3207
3208sub key { 'symlink' }
3209sub desc { 'symlink' }
3210sub check { 'ck_fun' }
3211sub flags { 'isT@' }
3212sub args { 'S S' }
3213
3214
3215package PLXML::op_readlink;
3216
4691a0f3 3217our @ISA = ('PLXML::baseop_unop');
6a28abbc
NC
3218
3219sub key { 'readlink' }
3220sub desc { 'readlink' }
3221sub check { 'ck_fun' }
3222sub flags { 'stu%' }
3223sub args { 'S?' }
3224
3225
3226package PLXML::op_mkdir;
3227
4691a0f3 3228our @ISA = ('PLXML::listop');
6a28abbc
NC
3229
3230sub key { 'mkdir' }
3231sub desc { 'mkdir' }
3232sub check { 'ck_fun' }
3233sub flags { 'isT@' }
3234sub args { 'S S?' }
3235
3236
3237package PLXML::op_rmdir;
3238
4691a0f3 3239our @ISA = ('PLXML::baseop_unop');
6a28abbc
NC
3240
3241sub key { 'rmdir' }
3242sub desc { 'rmdir' }
3243sub check { 'ck_fun' }
3244sub flags { 'isTu%' }
3245sub args { 'S?' }
3246
3247
3248
3249# Directory calls.
3250
3251package PLXML::op_open_dir;
3252
4691a0f3 3253our @ISA = ('PLXML::listop');
6a28abbc
NC
3254
3255sub key { 'open_dir' }
3256sub desc { 'opendir' }
3257sub check { 'ck_fun' }
3258sub flags { 'is@' }
3259sub args { 'F S' }
3260
3261
3262package PLXML::op_readdir;
3263
4691a0f3 3264our @ISA = ('PLXML::baseop_unop');
6a28abbc
NC
3265
3266sub key { 'readdir' }
3267sub desc { 'readdir' }
3268sub check { 'ck_fun' }
3269sub flags { '%' }
3270sub args { 'F' }
3271
3272
3273package PLXML::op_telldir;
3274
4691a0f3 3275our @ISA = ('PLXML::baseop_unop');
6a28abbc
NC
3276
3277sub key { 'telldir' }
3278sub desc { 'telldir' }
3279sub check { 'ck_fun' }
3280sub flags { 'st%' }
3281sub args { 'F' }
3282
3283
3284package PLXML::op_seekdir;
3285
4691a0f3 3286our @ISA = ('PLXML::listop');
6a28abbc
NC
3287
3288sub key { 'seekdir' }
3289sub desc { 'seekdir' }
3290sub check { 'ck_fun' }
3291sub flags { 's@' }
3292sub args { 'F S' }
3293
3294
3295package PLXML::op_rewinddir;
3296
4691a0f3 3297our @ISA = ('PLXML::baseop_unop');
6a28abbc
NC
3298
3299sub key { 'rewinddir' }
3300sub desc { 'rewinddir' }
3301sub check { 'ck_fun' }
3302sub flags { 's%' }
3303sub args { 'F' }
3304
3305
3306package PLXML::op_closedir;
3307
4691a0f3 3308our @ISA = ('PLXML::baseop_unop');
6a28abbc
NC
3309
3310sub key { 'closedir' }
3311sub desc { 'closedir' }
3312sub check { 'ck_fun' }
3313sub flags { 'is%' }
3314sub args { 'F' }
3315
3316
3317
3318# Process control.
3319
3320package PLXML::op_fork;
3321
4691a0f3 3322our @ISA = ('PLXML::baseop');
6a28abbc
NC
3323
3324sub key { 'fork' }
3325sub desc { 'fork' }
3326sub check { 'ck_null' }
3327sub flags { 'ist0' }
3328sub args { '' }
3329
3330
3331package PLXML::op_wait;
3332
4691a0f3 3333our @ISA = ('PLXML::baseop');
6a28abbc
NC
3334
3335sub key { 'wait' }
3336sub desc { 'wait' }
3337sub check { 'ck_null' }
3338sub flags { 'isT0' }
3339sub args { '' }
3340
3341
3342package PLXML::op_waitpid;
3343
4691a0f3 3344our @ISA = ('PLXML::listop');
6a28abbc
NC
3345
3346sub key { 'waitpid' }
3347sub desc { 'waitpid' }
3348sub check { 'ck_fun' }
3349sub flags { 'isT@' }
3350sub args { 'S S' }
3351
3352
3353package PLXML::op_system;
3354
4691a0f3 3355our @ISA = ('PLXML::listop');
6a28abbc
NC
3356
3357sub key { 'system' }
3358sub desc { 'system' }
3359sub check { 'ck_exec' }
3360sub flags { 'imsT@' }
3361sub args { 'S? L' }
3362
3363
3364package PLXML::op_exec;
3365
4691a0f3 3366our @ISA = ('PLXML::listop');
6a28abbc
NC
3367
3368sub key { 'exec' }
3369sub desc { 'exec' }
3370sub check { 'ck_exec' }
3371sub flags { 'dimsT@' }
3372sub args { 'S? L' }
3373
3374
3375package PLXML::op_kill;
3376
4691a0f3 3377our @ISA = ('PLXML::listop');
6a28abbc
NC
3378
3379sub key { 'kill' }
3380sub desc { 'kill' }
3381sub check { 'ck_fun' }
3382sub flags { 'dimsT@' }
3383sub args { 'L' }
3384
3385
3386package PLXML::op_getppid;
3387
4691a0f3 3388our @ISA = ('PLXML::baseop');
6a28abbc
NC
3389
3390sub key { 'getppid' }
3391sub desc { 'getppid' }
3392sub check { 'ck_null' }
3393sub flags { 'isT0' }
3394sub args { '' }
3395
3396
3397package PLXML::op_getpgrp;
3398
4691a0f3 3399our @ISA = ('PLXML::baseop_unop');
6a28abbc
NC
3400
3401sub key { 'getpgrp' }
3402sub desc { 'getpgrp' }
3403sub check { 'ck_fun' }
3404sub flags { 'isT%' }
3405sub args { 'S?' }
3406
3407
3408package PLXML::op_setpgrp;
3409
4691a0f3 3410our @ISA = ('PLXML::listop');
6a28abbc
NC
3411
3412sub key { 'setpgrp' }
3413sub desc { 'setpgrp' }
3414sub check { 'ck_fun' }
3415sub flags { 'isT@' }
3416sub args { 'S? S?' }
3417
3418
3419package PLXML::op_getpriority;
3420
4691a0f3 3421our @ISA = ('PLXML::listop');
6a28abbc
NC
3422
3423sub key { 'getpriority' }
3424sub desc { 'getpriority' }
3425sub check { 'ck_fun' }
3426sub flags { 'isT@' }
3427sub args { 'S S' }
3428
3429
3430package PLXML::op_setpriority;
3431
4691a0f3 3432our @ISA = ('PLXML::listop');
6a28abbc
NC
3433
3434sub key { 'setpriority' }
3435sub desc { 'setpriority' }
3436sub check { 'ck_fun' }
3437sub flags { 'isT@' }
3438sub args { 'S S S' }
3439
3440
3441
3442# Time calls.
3443
3444# NOTE: MacOS patches the 'i' of time() away later when the interpreter
3445# is created because in MacOS time() is already returning times > 2**31-1,
3446# that is, non-integers.
3447
3448package PLXML::op_time;
3449
4691a0f3 3450our @ISA = ('PLXML::baseop');
6a28abbc
NC
3451
3452sub key { 'time' }
3453sub desc { 'time' }
3454sub check { 'ck_null' }
3455sub flags { 'isT0' }
3456sub args { '' }
3457
3458
3459package PLXML::op_tms;
3460
4691a0f3 3461our @ISA = ('PLXML::baseop');
6a28abbc
NC
3462
3463sub key { 'tms' }
3464sub desc { 'times' }
3465sub check { 'ck_null' }
3466sub flags { '0' }
3467sub args { '' }
3468
3469
3470package PLXML::op_localtime;
3471
4691a0f3 3472our @ISA = ('PLXML::baseop_unop');
6a28abbc
NC
3473
3474sub key { 'localtime' }
3475sub desc { 'localtime' }
3476sub check { 'ck_fun' }
3477sub flags { 't%' }
3478sub args { 'S?' }
3479
3480
3481package PLXML::op_gmtime;
3482
4691a0f3 3483our @ISA = ('PLXML::baseop_unop');
6a28abbc
NC
3484
3485sub key { 'gmtime' }
3486sub desc { 'gmtime' }
3487sub check { 'ck_fun' }
3488sub flags { 't%' }
3489sub args { 'S?' }
3490
3491
3492package PLXML::op_alarm;
3493
4691a0f3 3494our @ISA = ('PLXML::baseop_unop');
6a28abbc
NC
3495
3496sub key { 'alarm' }
3497sub desc { 'alarm' }
3498sub check { 'ck_fun' }
3499sub flags { 'istu%' }
3500sub args { 'S?' }
3501
3502
3503package PLXML::op_sleep;
3504
4691a0f3 3505our @ISA = ('PLXML::baseop_unop');
6a28abbc
NC
3506
3507sub key { 'sleep' }
3508sub desc { 'sleep' }
3509sub check { 'ck_fun' }
3510sub flags { 'isT%' }
3511sub args { 'S?' }
3512
3513
3514
3515# Shared memory.
3516
3517package PLXML::op_shmget;
3518
4691a0f3 3519our @ISA = ('PLXML::listop');
6a28abbc
NC
3520
3521sub key { 'shmget' }
3522sub desc { 'shmget' }
3523sub check { 'ck_fun' }
3524sub flags { 'imst@' }
3525sub args { 'S S S' }
3526
3527
3528package PLXML::op_shmctl;
3529
4691a0f3 3530our @ISA = ('PLXML::listop');
6a28abbc
NC
3531
3532sub key { 'shmctl' }
3533sub desc { 'shmctl' }
3534sub check { 'ck_fun' }
3535sub flags { 'imst@' }
3536sub args { 'S S S' }
3537
3538
3539package PLXML::op_shmread;
3540
4691a0f3 3541our @ISA = ('PLXML::listop');
6a28abbc
NC
3542
3543sub key { 'shmread' }
3544sub desc { 'shmread' }
3545sub check { 'ck_fun' }
3546sub flags { 'imst@' }
3547sub args { 'S S S S' }
3548
3549
3550package PLXML::op_shmwrite;
3551
4691a0f3 3552our @ISA = ('PLXML::listop');
6a28abbc
NC
3553
3554sub key { 'shmwrite' }
3555sub desc { 'shmwrite' }
3556sub check { 'ck_fun' }
3557sub flags { 'imst@' }
3558sub args { 'S S S S' }
3559
3560
3561
3562# Message passing.
3563
3564package PLXML::op_msgget;
3565
4691a0f3 3566our @ISA = ('PLXML::listop');
6a28abbc
NC
3567
3568sub key { 'msgget' }
3569sub desc { 'msgget' }
3570sub check { 'ck_fun' }
3571sub flags { 'imst@' }
3572sub args { 'S S' }
3573
3574
3575package PLXML::op_msgctl;
3576
4691a0f3 3577our @ISA = ('PLXML::listop');
6a28abbc
NC
3578
3579sub key { 'msgctl' }
3580sub desc { 'msgctl' }
3581sub check { 'ck_fun' }
3582sub flags { 'imst@' }
3583sub args { 'S S S' }
3584
3585
3586package PLXML::op_msgsnd;
3587
4691a0f3 3588our @ISA = ('PLXML::listop');
6a28abbc
NC
3589
3590sub key { 'msgsnd' }
3591sub desc { 'msgsnd' }
3592sub check { 'ck_fun' }
3593sub flags { 'imst@' }
3594sub args { 'S S S' }
3595
3596
3597package PLXML::op_msgrcv;
3598
4691a0f3 3599our @ISA = ('PLXML::listop');
6a28abbc
NC
3600
3601sub key { 'msgrcv' }
3602sub desc { 'msgrcv' }
3603sub check { 'ck_fun' }
3604sub flags { 'imst@' }
3605sub args { 'S S S S S' }
3606
3607
3608
3609# Semaphores.
3610
3611package PLXML::op_semget;
3612
4691a0f3 3613our @ISA = ('PLXML::listop');
6a28abbc
NC
3614
3615sub key { 'semget' }
3616sub desc { 'semget' }
3617sub check { 'ck_fun' }
3618sub flags { 'imst@' }
3619sub args { 'S S S' }
3620
3621
3622package PLXML::op_semctl;
3623
4691a0f3 3624our @ISA = ('PLXML::listop');
6a28abbc
NC
3625
3626sub key { 'semctl' }
3627sub desc { 'semctl' }
3628sub check { 'ck_fun' }
3629sub flags { 'imst@' }
3630sub args { 'S S S S' }
3631
3632
3633package PLXML::op_semop;
3634
4691a0f3 3635our @ISA = ('PLXML::listop');
6a28abbc
NC
3636
3637sub key { 'semop' }
3638sub desc { 'semop' }
3639sub check { 'ck_fun' }
3640sub flags { 'imst@' }
3641sub args { 'S S' }
3642
3643
3644
3645# Eval.
3646
3647package PLXML::op_require;
3648
4691a0f3 3649our @ISA = ('PLXML::baseop_unop');
6a28abbc
NC
3650
3651sub key { 'require' }
3652sub desc { 'require' }
3653sub check { 'ck_require' }
3654sub flags { 'du%' }
3655sub args { 'S?' }
3656
3657
3658package PLXML::op_dofile;
3659
4691a0f3 3660our @ISA = ('PLXML::unop');
6a28abbc
NC
3661
3662sub key { 'dofile' }
3663sub desc { 'do "file"' }
3664sub check { 'ck_fun' }
3665sub flags { 'd1' }
3666sub args { 'S' }
3667
3668
3669package PLXML::op_entereval;
3670
4691a0f3 3671our @ISA = ('PLXML::baseop_unop');
6a28abbc
NC
3672
3673sub key { 'entereval' }
3674sub desc { 'eval "string"' }
3675sub check { 'ck_eval' }
3676sub flags { 'd%' }
3677sub args { 'S' }
3678
3679
3680package PLXML::op_leaveeval;
3681
4691a0f3 3682our @ISA = ('PLXML::unop');
6a28abbc
NC
3683
3684sub key { 'leaveeval' }
3685sub desc { 'eval "string" exit' }
3686sub check { 'ck_null' }
3687sub flags { '1' }
3688sub args { 'S' }
3689
3690
3691#evalonce eval constant string ck_null d1 S
3692package PLXML::op_entertry;
3693
4691a0f3 3694our @ISA = ('PLXML::logop');
6a28abbc
NC
3695
3696sub key { 'entertry' }
3697sub desc { 'eval {block}' }
3698sub check { 'ck_null' }
3699sub flags { '|' }
3700sub args { '' }
3701
3702
3703package PLXML::op_leavetry;
3704
4691a0f3 3705our @ISA = ('PLXML::listop');
6a28abbc
NC
3706
3707sub key { 'leavetry' }
3708sub desc { 'eval {block} exit' }
3709sub check { 'ck_null' }
3710sub flags { '@' }
3711sub args { '' }
3712
3713
3714
3715# Get system info.
3716
3717package PLXML::op_ghbyname;
3718
4691a0f3 3719our @ISA = ('PLXML::baseop_unop');
6a28abbc
NC
3720
3721sub key { 'ghbyname' }
3722sub desc { 'gethostbyname' }
3723sub check { 'ck_fun' }
3724sub flags { '%' }
3725sub args { 'S' }
3726
3727
3728package PLXML::op_ghbyaddr;
3729
4691a0f3 3730our @ISA = ('PLXML::listop');
6a28abbc
NC
3731
3732sub key { 'ghbyaddr' }
3733sub desc { 'gethostbyaddr' }
3734sub check { 'ck_fun' }
3735sub flags { '@' }
3736sub args { 'S S' }
3737
3738
3739package PLXML::op_ghostent;
3740
4691a0f3 3741our @ISA = ('PLXML::baseop');
6a28abbc
NC
3742
3743sub key { 'ghostent' }
3744sub desc { 'gethostent' }
3745sub check { 'ck_null' }
3746sub flags { '0' }
3747sub args { '' }
3748
3749
3750package PLXML::op_gnbyname;
3751
4691a0f3 3752our @ISA = ('PLXML::baseop_unop');
6a28abbc
NC
3753
3754sub key { 'gnbyname' }
3755sub desc { 'getnetbyname' }
3756sub check { 'ck_fun' }
3757sub flags { '%' }
3758sub args { 'S' }
3759
3760
3761package PLXML::op_gnbyaddr;
3762
4691a0f3 3763our @ISA = ('PLXML::listop');
6a28abbc
NC
3764
3765sub key { 'gnbyaddr' }
3766sub desc { 'getnetbyaddr' }
3767sub check { 'ck_fun' }
3768sub flags { '@' }
3769sub args { 'S S' }
3770
3771
3772package PLXML::op_gnetent;
3773
4691a0f3 3774our @ISA = ('PLXML::baseop');
6a28abbc
NC
3775
3776sub key { 'gnetent' }
3777sub desc { 'getnetent' }
3778sub check { 'ck_null' }
3779sub flags { '0' }
3780sub args { '' }
3781
3782
3783package PLXML::op_gpbyname;
3784
4691a0f3 3785our @ISA = ('PLXML::baseop_unop');
6a28abbc
NC
3786
3787sub key { 'gpbyname' }
3788sub desc { 'getprotobyname' }
3789sub check { 'ck_fun' }
3790sub flags { '%' }
3791sub args { 'S' }
3792
3793
3794package PLXML::op_gpbynumber;
3795
4691a0f3 3796our @ISA = ('PLXML::listop');
6a28abbc
NC
3797
3798sub key { 'gpbynumber' }
3799sub desc { 'getprotobynumber' }
3800sub check { 'ck_fun' }
3801sub flags { '@' }
3802sub args { 'S' }
3803
3804
3805package PLXML::op_gprotoent;
3806
4691a0f3 3807our @ISA = ('PLXML::baseop');
6a28abbc
NC
3808
3809sub key { 'gprotoent' }
3810sub desc { 'getprotoent' }
3811sub check { 'ck_null' }
3812sub flags { '0' }
3813sub args { '' }
3814
3815
3816package PLXML::op_gsbyname;
3817
4691a0f3 3818our @ISA = ('PLXML::listop');
6a28abbc
NC
3819
3820sub key { 'gsbyname' }
3821sub desc { 'getservbyname' }
3822sub check { 'ck_fun' }
3823sub flags { '@' }
3824sub args { 'S S' }
3825
3826
3827package PLXML::op_gsbyport;
3828
4691a0f3 3829our @ISA = ('PLXML::listop');
6a28abbc
NC
3830
3831sub key { 'gsbyport' }
3832sub desc { 'getservbyport' }
3833sub check { 'ck_fun' }
3834sub flags { '@' }
3835sub args { 'S S' }
3836
3837
3838package PLXML::op_gservent;
3839
4691a0f3 3840our @ISA = ('PLXML::baseop');
6a28abbc
NC
3841
3842sub key { 'gservent' }
3843sub desc { 'getservent' }
3844sub check { 'ck_null' }
3845sub flags { '0' }
3846sub args { '' }
3847
3848
3849package PLXML::op_shostent;
3850
4691a0f3 3851our @ISA = ('PLXML::baseop_unop');
6a28abbc
NC
3852
3853sub key { 'shostent' }
3854sub desc { 'sethostent' }
3855sub check { 'ck_fun' }
3856sub flags { 'is%' }
3857sub args { 'S' }
3858
3859
3860package PLXML::op_snetent;
3861
4691a0f3 3862our @ISA = ('PLXML::baseop_unop');
6a28abbc
NC
3863
3864sub key { 'snetent' }
3865sub desc { 'setnetent' }
3866sub check { 'ck_fun' }
3867sub flags { 'is%' }
3868sub args { 'S' }
3869
3870
3871package PLXML::op_sprotoent;
3872
4691a0f3 3873our @ISA = ('PLXML::baseop_unop');
6a28abbc
NC
3874
3875sub key { 'sprotoent' }
3876sub desc { 'setprotoent' }
3877sub check { 'ck_fun' }
3878sub flags { 'is%' }
3879sub args { 'S' }
3880
3881
3882package PLXML::op_sservent;
3883
4691a0f3 3884our @ISA = ('PLXML::baseop_unop');
6a28abbc
NC
3885
3886sub key { 'sservent' }
3887sub desc { 'setservent' }
3888sub check { 'ck_fun' }
3889sub flags { 'is%' }
3890sub args { 'S' }
3891
3892
3893package PLXML::op_ehostent;
3894
4691a0f3 3895our @ISA = ('PLXML::baseop');
6a28abbc
NC
3896
3897sub key { 'ehostent' }
3898sub desc { 'endhostent' }
3899sub check { 'ck_null' }
3900sub flags { 'is0' }
3901sub args { '' }
3902
3903
3904package PLXML::op_enetent;
3905
4691a0f3 3906our @ISA = ('PLXML::baseop');
6a28abbc
NC
3907
3908sub key { 'enetent' }
3909sub desc { 'endnetent' }
3910sub check { 'ck_null' }
3911sub flags { 'is0' }
3912sub args { '' }
3913
3914
3915package PLXML::op_eprotoent;
3916
4691a0f3 3917our @ISA = ('PLXML::baseop');
6a28abbc
NC
3918
3919sub key { 'eprotoent' }
3920sub desc { 'endprotoent' }
3921sub check { 'ck_null' }
3922sub flags { 'is0' }
3923sub args { '' }
3924
3925
3926package PLXML::op_eservent;
3927
4691a0f3 3928our @ISA = ('PLXML::baseop');
6a28abbc
NC
3929
3930sub key { 'eservent' }
3931sub desc { 'endservent' }
3932sub check { 'ck_null' }
3933sub flags { 'is0' }
3934sub args { '' }
3935
3936
3937package PLXML::op_gpwnam;
3938
4691a0f3 3939our @ISA = ('PLXML::baseop_unop');
6a28abbc
NC
3940
3941sub key { 'gpwnam' }
3942sub desc { 'getpwnam' }
3943sub check { 'ck_fun' }
3944sub flags { '%' }
3945sub args { 'S' }
3946
3947
3948package PLXML::op_gpwuid;
3949
4691a0f3 3950our @ISA = ('PLXML::baseop_unop');
6a28abbc
NC
3951
3952sub key { 'gpwuid' }
3953sub desc { 'getpwuid' }
3954sub check { 'ck_fun' }
3955sub flags { '%' }
3956sub args { 'S' }
3957
3958
3959package PLXML::op_gpwent;
3960
4691a0f3 3961our @ISA = ('PLXML::baseop');
6a28abbc
NC
3962
3963sub key { 'gpwent' }
3964sub desc { 'getpwent' }
3965sub check { 'ck_null' }
3966sub flags { '0' }
3967sub args { '' }
3968
3969
3970package PLXML::op_spwent;
3971
4691a0f3 3972our @ISA = ('PLXML::baseop');
6a28abbc
NC
3973
3974sub key { 'spwent' }
3975sub desc { 'setpwent' }
3976sub check { 'ck_null' }
3977sub flags { 'is0' }
3978sub args { '' }
3979
3980
3981package PLXML::op_epwent;
3982
4691a0f3 3983our @ISA = ('PLXML::baseop');
6a28abbc
NC
3984
3985sub key { 'epwent' }
3986sub desc { 'endpwent' }
3987sub check { 'ck_null' }
3988sub flags { 'is0' }
3989sub args { '' }
3990
3991
3992package PLXML::op_ggrnam;
3993
4691a0f3 3994our @ISA = ('PLXML::baseop_unop');
6a28abbc
NC
3995
3996sub key { 'ggrnam' }
3997sub desc { 'getgrnam' }
3998sub check { 'ck_fun' }
3999sub flags { '%' }
4000sub args { 'S' }
4001
4002
4003package PLXML::op_ggrgid;
4004
4691a0f3 4005our @ISA = ('PLXML::baseop_unop');
6a28abbc
NC
4006
4007sub key { 'ggrgid' }
4008sub desc { 'getgrgid' }
4009sub check { 'ck_fun' }
4010sub flags { '%' }
4011sub args { 'S' }
4012
4013
4014package PLXML::op_ggrent;
4015
4691a0f3 4016our @ISA = ('PLXML::baseop');
6a28abbc
NC
4017
4018sub key { 'ggrent' }
4019sub desc { 'getgrent' }
4020sub check { 'ck_null' }
4021sub flags { '0' }
4022sub args { '' }
4023
4024
4025package PLXML::op_sgrent;
4026
4691a0f3 4027our @ISA = ('PLXML::baseop');
6a28abbc
NC
4028
4029sub key { 'sgrent' }
4030sub desc { 'setgrent' }
4031sub check { 'ck_null' }
4032sub flags { 'is0' }
4033sub args { '' }
4034
4035
4036package PLXML::op_egrent;
4037
4691a0f3 4038our @ISA = ('PLXML::baseop');
6a28abbc
NC
4039
4040sub key { 'egrent' }
4041sub desc { 'endgrent' }
4042sub check { 'ck_null' }
4043sub flags { 'is0' }
4044sub args { '' }
4045
4046
4047package PLXML::op_getlogin;
4048
4691a0f3 4049our @ISA = ('PLXML::baseop');
6a28abbc
NC
4050
4051sub key { 'getlogin' }
4052sub desc { 'getlogin' }
4053sub check { 'ck_null' }
4054sub flags { 'st0' }
4055sub args { '' }
4056
4057
4058
4059# Miscellaneous.
4060
4061package PLXML::op_syscall;
4062
4691a0f3 4063our @ISA = ('PLXML::listop');
6a28abbc
NC
4064
4065sub key { 'syscall' }
4066sub desc { 'syscall' }
4067sub check { 'ck_fun' }
4068sub flags { 'imst@' }
4069sub args { 'S L' }
4070
4071
4072
4073# For multi-threading
4074package PLXML::op_lock;
4075
4691a0f3 4076our @ISA = ('PLXML::baseop_unop');
6a28abbc
NC
4077
4078sub key { 'lock' }
4079sub desc { 'lock' }
4080sub check { 'ck_rfun' }
4081sub flags { 's%' }
4082sub args { 'R' }
4083
4084
4085package PLXML::op_threadsv;
4086
4691a0f3 4087our @ISA = ('PLXML::baseop');
6a28abbc
NC
4088
4089sub key { 'threadsv' }
4090sub desc { 'per-thread value' }
4091sub check { 'ck_null' }
4092sub flags { 'ds0' }
4093sub args { '' }
4094
4095
4096
4097# Control (contd.)
4098package PLXML::op_setstate;
4099
4691a0f3 4100our @ISA = ('PLXML::cop');
6a28abbc
NC
4101
4102sub key { 'setstate' }
4103sub desc { 'set statement info' }
4104sub check { 'ck_null' }
4105sub flags { 's;' }
4106sub args { '' }
4107
4108
4109package PLXML::op_method_named;
4110
4691a0f3 4111our @ISA = ('PLXML::padop_svop');
6a28abbc
NC
4112
4113sub key { 'method_named' }
4114sub desc { 'method with known name' }
4115sub check { 'ck_null' }
4116sub flags { 'd$' }
4117sub args { '' }
4118
4119
4120
4121package PLXML::op_dor;
4122
4691a0f3 4123our @ISA = ('PLXML::logop');
6a28abbc
NC
4124
4125sub key { 'dor' }
4126sub desc { 'defined or (//)' }
4127sub check { 'ck_null' }
4128sub flags { '|' }
4129sub args { '' }
4130
4131
4132package PLXML::op_dorassign;
4133
4691a0f3 4134our @ISA = ('PLXML::logop');
6a28abbc
NC
4135
4136sub key { 'dorassign' }
4137sub desc { 'defined or assignment (//=)' }
4138sub check { 'ck_null' }
4139sub flags { 's|' }
4140sub args { '' }
4141
4142
4143
4144# Add new ops before this, the custom operator.
4145
4146package PLXML::op_custom;
4147
4691a0f3 4148our @ISA = ('PLXML::baseop');
6a28abbc
NC
4149
4150sub key { 'custom' }
4151sub desc { 'unknown custom operator' }
4152sub check { 'ck_null' }
4153sub flags { '0' }
4154sub args { '' }
4155
4156