Acme-Perl-VM
view release on metacpan or search on metacpan
lib/Acme/Perl/VM/PP.pm view on Meta::CPAN
$defined = defined ${$ref};
}
PUSH($defined ? sv_yes : sv_no);
return $PL_op->next;
}
sub pp_range{
if(GIMME_V == G_ARRAY){
return $PL_op->next;
}
if(SvTRUE(GET_TARGET)){
return $PL_op->other;
}
else{
return $PL_op->next;
}
}
sub pp_flip{
if(GIMME_V == G_ARRAY){
return $PL_op->first->other;
}
not_implemented 'flip-flop in scalar context';
}
sub pp_flop{
if(GIMME_V == G_ARRAY){
my $right = POP;
my $left = POP;
my $i = ${$left->object_2svref};
my $max = ${$right->object_2svref};
if(_range_is_numeric($left, $right) && $i >= $max){
return $PL_op->next;
}
$max++;
while($i ne $max){
my $sv = sv_newmortal();
$sv->setval($i);
PUSH($sv);
$i++;
}
}
else{
not_implemented 'flip-flop in scalar context';
}
return $PL_op->next;
}
sub pp_preinc{
${ TOP()->object_2svref }++;
return $PL_op->next;
}
sub pp_postinc{
my $targ = GET_TARGET;
my $sv = TOP;
my $ref = $sv->object_2svref;
if(defined ${$sv}){
$targ->setsv($sv);
}
else{
$targ->setval(0);
}
${$ref}++;
SET($targ);
return $PL_op->next;
}
sub pp_eq{
my $right = POP;
my $left = TOP;
SET(SvNV($left) == SvNV($right) ? sv_yes : sv_no);
return $PL_op->next;
}
sub pp_ne{
my $right = POP;
my $left = TOP;
SET(SvNV($left) != SvNV($right) ? sv_yes : sv_no);
return $PL_op->next;
}
sub pp_lt{
my $right = POP;
my $left = TOP;
SET(SvNV($left) < SvNV($right) ? sv_yes : sv_no);
return $PL_op->next;
}
sub pp_le{
my $right = POP;
my $left = TOP;
SET(SvNV($left) <= SvNV($right) ? sv_yes : sv_no);
return $PL_op->next;
}
sub pp_gt{
my $right = POP;
my $left = TOP;
SET(SvNV($left) > SvNV($right) ? sv_yes : sv_no);
return $PL_op->next;
}
sub pp_ge{
my $right = POP;
my $left = TOP;
SET(SvNV($left) >= SvNV($right) ? sv_yes : sv_no);
return $PL_op->next;
}
sub pp_ncmp{
my $right = POP;
my $left = TOP;
SET(SvNV($left) <=> SvNV($right));
return $PL_op->next;
}
sub pp_seq{
lib/Acme/Perl/VM/PP.pm view on Meta::CPAN
=item pp_and
=item pp_or
=item pp_range
=item pp_preinc
=item pp_lt
=item pp_add
=item pp_concat
=item pp_print
=item pp_aelemfast
=item pp_aelem
=item pp_helem
=item pp_undef
=item pp_scalar
=item pp_not
=item pp_anonhash
=item pp_anonlist
=item pp_defined
=item pp_enterite
=item pp_eq
=item pp_ge
=item pp_gt
=item pp_gvsv
=item pp_enteriter
=item pp_iter
=item pp_keys
=item pp_last
=item pp_le
=item pp_ne
=item pp_next
=item pp_padhv
=item pp_postinc
=item pp_readline
=item pp_redo
=item pp_refgen
=item pp_rv2gv
=item pp_rv2hv
=item pp_rv2sv
=item pp_say
=item pp_srefgen
=item pp_values
=back
=cut
( run in 1.040 second using v1.01-cache-2.11-cpan-ceb78f64989 )