Algorithm-CP-IZ
view release on metacpan or search on metacpan
lib/Algorithm/CP/IZ/ValueSelector.pm view on Meta::CPAN
package Algorithm::CP::IZ::ValueSelector;
use strict;
use warnings;
use Scalar::Util qw(looks_like_number);
use Algorithm::CP::IZ;
sub new {
my $class = shift;
my $iz = shift;
my $something = shift;
my $self;
if (looks_like_number($something)) {
return Algorithm::CP::IZ::ValueSelector::IZ->new($iz, int($something));
}
else {
return Algorithm::CP::IZ::ValueSelector::UD->new($iz, $something);
}
}
#
# ValueSelector probided by iZ
#
package Algorithm::CP::IZ::ValueSelector::IZ;
use base qw(Algorithm::CP::IZ::ValueSelector);
sub new {
my $class = shift;
my ($iz, $id) = @_;
my $vs = Algorithm::CP::IZ::cs_getValueSelector($id);
my $self = {
_iz => $iz,
_vs => $vs,
};
bless $self, $class;
}
sub init {
my $self = shift;
my ($index, $var_array) = @_;
my $iz = $self->{_iz};
my $vs = $self->{_vs};
my $size = scalar @$var_array;
@$var_array = map { ref $_ ? $_ : $iz->_const_var(int($_)) } @$var_array;
my $array = $iz->_create_registered_var_array($var_array);
return unless ($array);
return Algorithm::CP::IZ::ValueSelector::Bound::IZ->new($vs, $index,
$array, $size);
}
sub prepare {
}
#
# ValueSelector bound to variable
#
package Algorithm::CP::IZ::ValueSelector::Bound::IZ;
sub new {
my $class = shift;
my ($vs, $index, $array, $size) = @_;
my $ptr = Algorithm::CP::IZ::valueSelector_init($vs, $index,
$$array, $size);
( run in 0.479 second using v1.01-cache-2.11-cpan-39bf76dae61 )