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 )