Algorithm-CP-IZ
view release on metacpan or search on metacpan
lib/Algorithm/CP/IZ.pm view on Meta::CPAN
package Algorithm::CP::IZ;
use 5.010000; # need Newx in XS
use strict;
use warnings;
use Carp;
use Scalar::Util qw(weaken blessed looks_like_number);
require Exporter;
use AutoLoader;
use Algorithm::CP::IZ::Int;
use Algorithm::CP::IZ::RefVarArray;
use Algorithm::CP::IZ::RefIntArray;
use Algorithm::CP::IZ::ParamValidator qw(validate);
use Algorithm::CP::IZ::ValueSelector;
use Algorithm::CP::IZ::CriteriaValueSelector;
lib/Algorithm/CP/IZ.pm view on Meta::CPAN
validate([$var, $index, $handler], ["oV", "I", "C"],
"Usage: backtrack(variable, index, code_ref)");
$var = _safe_var($var) if (defined($var));
my $id = $Backtrack_id++;
$self->{_backtracks}->{$id} = [$var, $index, $handler];
my $backtracks = $self->{_backtracks};
weaken($backtracks);
$self->{_backtrack_code_ref} ||= sub {
my $bid = shift;
my $r = $backtracks->{$bid};
my $bh = $r->[2];
&$bh($r->[0], $r->[1]);
delete $backtracks->{$bid};
};
lib/Algorithm/CP/IZ.pm view on Meta::CPAN
sub _register_variable {
my ($self, $var) = @_;
my $vars = $self->{_vars};
if (scalar @$vars == 0 || defined($vars->[scalar(@$vars)-1])) {
push(@$vars, $var);
}
else {
$vars->[scalar(@$vars)-1] = $var;
}
weaken($vars->[scalar(@$vars)-1]);
}
sub _argv_func {
my $v = shift;
my $N = shift;
my $arg2_func = shift;
my $argv_func = shift;
if (@$v == 1) {
return $v;
sv_pvutf8||5.006000|
sv_pv||5.006000|
sv_recode_to_utf8||5.007003|
sv_reftype|||
sv_ref|||
sv_release_COW|||
sv_replace|||
sv_report_used|||
sv_resetpvn|||
sv_reset|||
sv_rvweaken||5.006000|
sv_sethek|||
sv_setiv_mg|5.004050||p
sv_setiv|||
sv_setnv_mg|5.006000||p
sv_setnv|||
sv_setpv_mg|5.004050||p
sv_setpvf_mg_nocontext|||pvn
sv_setpvf_mg|5.006000|5.004000|pv
sv_setpvf_nocontext|||vn
sv_setpvf||5.004000|v
( run in 0.469 second using v1.01-cache-2.11-cpan-65fba6d93b7 )