Algorithm-SpatialIndex
view release on metacpan or search on metacpan
lib/Algorithm/SpatialIndex/Storage/Memory.pm view on Meta::CPAN
package Algorithm::SpatialIndex::Storage::Memory;
use 5.008001;
use strict;
use warnings;
use Carp qw(croak);
use parent 'Algorithm::SpatialIndex::Storage';
use Class::XSAccessor {
getters => {
_options => 'options',
},
};
sub init {
my $self = shift;
$self->{nodes} = [];
$self->{options} = {};
$self->{buckets} = [];
}
sub fetch_node {
my $self = shift;
my $index = shift;
my $nodes = $self->{nodes};
return($index > $#$nodes ? undef : $nodes->[$index]);
}
sub store_node {
my $self = shift;
my $node = shift;
my $nodes = $self->{nodes};
my $id = $node->id;
if (not defined $id) {
$id = $#{$nodes} + 1;
$node->id($id);
}
$nodes->[$id] = $node;
return $id;
}
sub get_option {
my $self = shift;
return $self->_options->{shift()};
}
sub set_option {
my $self = shift;
my $key = shift;
my $value = shift;
$self->_options->{$key} = $value;
}
sub store_bucket {
my $self = shift;
my $bucket = shift;
$self->{buckets}->[$bucket->node_id] = $bucket;
}
sub fetch_bucket {
my $self = shift;
my $node_id = shift;
return $self->{buckets}->[$node_id];
}
sub delete_bucket {
my $self = shift;
( run in 0.787 second using v1.01-cache-2.11-cpan-39bf76dae61 )