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

	      $d,
	      $q0, $F
	     ],
	     [sub { shift == 4 }, "vA0",
	      sub {
		  # array of array of integer
		  return 0 unless (ref $d eq "ARRAY");
		  for my $row (@$d) {
		      return 0 unless (ref $row eq "ARRAY");
		      for my $i (@$row) {
			  return 0 unless (looks_like_number($i));
		      }
		  }
		  return 1;
	      },
	      "I","iA0"
	     ],
	     "Usage: Regular([vars], [table(QxS)], q0, [F])");

    # $q0 must be in valid states
    return unless (0 <= $q0 && $q0 < scalar(@$d));

lib/Algorithm/CP/IZ/ParamValidator.pm  view on Meta::CPAN


use base qw(Exporter);

use vars qw(@EXPORT_OK);
@EXPORT_OK = qw(validate);

use Carp;
use vars qw(@CARP_NOT);
@CARP_NOT = qw(Algorithm::CP::IZ);

use Scalar::Util qw(looks_like_number);
use List::Util qw(first);

my $INT_CLASS = "Algorithm::CP::IZ::Int";

sub _is_int {
    my ($x) = @_;
    return looks_like_number($x);
}

sub _is_var_or_int {
    my ($x) = @_;
    my $r = ref $x;
    if ($r) {
	return $r eq $INT_CLASS;
    }
    else {
	return looks_like_number($x);
    }
}

sub _is_code {
    my ($x) = @_;
    return ref $x eq 'CODE';
}

sub _is_code_if_defined {
    my ($x) = @_;

lib/Algorithm/CP/IZ/ParamValidator.pm  view on Meta::CPAN

    return 1 unless (defined($x));
    return ref $x eq $INT_CLASS;
}

sub _is_array_of_int {
    my ($n, $x) = @_;
    return 0 unless (ref $x eq 'ARRAY');
    return 0 unless (scalar @$x >= $n);

    my $bad = first {
	!looks_like_number($_);
    } @$x;

    return !defined($bad);
}

sub _is_array_of_var_or_int {
    my ($n, $x) = @_;
    return 0 unless (ref $x eq 'ARRAY');
    return 0 unless (scalar @$x >= $n);

lib/Algorithm/CP/IZ/ParamValidator.pm  view on Meta::CPAN

	    if ($r) {
		if ($r eq $INT_CLASS) {
		    0;
		}
		else  {
		    $bad++;
		    1;
		}
	    }
	    else {
		if (defined($v) && looks_like_number($v)) {
		    0;
		}
		else {
		    $bad++;
		    1;
		}
	    }
	}
	else {
	    $bad++;

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
#

ppport.h  view on Meta::CPAN

lex_stuff_pvn||5.011002|
lex_stuff_pvs||5.013005|
lex_stuff_pv||5.013006|
lex_stuff_sv||5.011002|
lex_unstuff||5.011002|
listkids|||
list|||
load_module_nocontext|||vn
load_module|5.006000||pv
localize|||
looks_like_bool|||
looks_like_number|||
lop|||
mPUSHi|5.009002||p
mPUSHn|5.009002||p
mPUSHp|5.009002||p
mPUSHs|5.010001||p
mPUSHu|5.009002||p
mXPUSHi|5.009002||p
mXPUSHn|5.009002||p
mXPUSHp|5.009002||p
mXPUSHs|5.010001||p



( run in 0.543 second using v1.01-cache-2.11-cpan-64827b87656 )