Algorithm-SpatialIndex
view release on metacpan or search on metacpan
lib/Algorithm/SpatialIndex/Strategy.pm view on Meta::CPAN
package Algorithm::SpatialIndex::Strategy;
use 5.008001;
use strict;
use warnings;
use Carp qw(croak);
use Algorithm::SpatialIndex::Storage;
use Scalar::Util 'weaken';
use Class::XSAccessor {
getters => [qw(
index
storage
bucket_size
)],
};
sub new {
my $class = shift;
my %opt = @_;
my $self = bless {
bucket_size => 100,
%opt,
} => $class;
weaken($self->{index});
$self->init() if $self->can('init');
return $self;
}
sub _super_init_storage {
my $self = shift;
$self->init_storage if $self->can('init_storage');
}
sub _set_storage {
my $self = shift;
my $storage = shift;
$self->{storage} = $storage;
Scalar::Util::weaken($self->{storage});
}
sub no_of_subnodes {
croak("no_of_subnodes needs to be implemented in a subclass");
}
sub no_of_dimensions {
croak("no_of_dimensions needs to be implemented in a subclass");
}
sub coord_types {
croak("coord_types needs to be implemented in a subclass");
}
sub item_coord_types {
croak("item_coord_types needs to be implemented in a subclass");
}
sub insert {
croak("insert needs to be implemented in a subclass");
}
sub find_node_for {
croak("find_node_for needs to be implemented in a subclass");
}
sub find_nodes_for {
croak("find_nodes_for needs to be implemented in a subclass");
}
sub filter_items_in_rect {
croak("filter_items_in_rect needs to be implemented in a subclass");
}
1;
__END__
=head1 NAME
( run in 1.988 second using v1.01-cache-2.11-cpan-5837b0d9d2c )