++ed by:
JETEVE
2 non-PAUSE users
Author image Nick Wellnhofer
and 1 contributors

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.