NAME

Clownfish::Vector - Variable-sized array.

SYNOPSIS

my $vector = Clownfish::Vector->new;
$vector->store($tick, $value);
my $value = $vector->fetch($tick);

DESCRIPTION

CONSTRUCTORS

new

my $vector = Clownfish::Vector->new(
    capacity => $capacity  # default: 0
);

Return a new Vector.

  • capacity - Initial number of elements that the object will be able to hold before reallocation.

METHODS

push

$vector->push($element);
$vector->push();  # default: undef

Push an item onto the end of a Vector.

push_all

$vector->push_all($other);

Push all the elements of another Vector onto the end of this one.

pop

my $obj = $vector->pop();

Pop an item off of the end of a Vector.

Returns: the element or undef if the Vector is empty.

insert

$vector->insert(
    tick    => $tick     # required
    element => $element  # default: undef
);

Insert an element at tick moving the following elements.

insert_all

$vector->insert_all(
    tick  => $tick   # required
    other => $other  # required
);

Inserts elements from other vector at tick moving the following elements.

fetch

my $obj = $vector->fetch($tick);

Fetch the element at tick.

Returns: the element or undef if tick is out of bounds.

store

$vector->store($tick, $elem)

Store an element at index tick, possibly displacing an existing element.

delete

my $obj = $vector->delete($tick);

Replace an element in the Vector with undef and return it.

Returns: the element stored at tick or undef if tick is out of bounds.

excise

$vector->excise(
    offset => $offset  # required
    length => $length  # required
);

Remove length elements from the Vector, starting at offset. Move elements over to fill in the gap.

clone

my $arrayref = $vector->clone();

Clone the Vector but merely increment the refcounts of its elements rather than clone them.

sort

$vector->sort();

Sort the Vector. Sort order is guaranteed to be stable: the relative order of elements which compare as equal will not change.

resize

$vector->resize($size);

Set the size for the Vector. If the new size is larger than the current size, grow the object to accommodate undef elements; if smaller than the current size, decrement and discard truncated elements.

clear

$vector->clear();

Empty the Vector.

get_size

my $int = $vector->get_size();

Return the size of the Vector.

slice

my $arrayref = $vector->slice(
    offset => $offset  # required
    length => $length  # required
);

Return a slice of the Vector consisting of elements from a contiguous range. If the specified range is out of bounds, return a slice with fewer elements – potentially none.

  • offset - The index of the element to start at.

  • length - The maximum number of elements to slice.

INHERITANCE

Clownfish::Vector isa Clownfish::Obj.