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