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