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
#
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.395 second using v1.01-cache-2.11-cpan-64827b87656 )