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 )