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