Provided by: libffi-c-perl_0.15-2_all
NAME
FFI::C::Array - Array instance for FFI
VERSION
version 0.15
SYNOPSIS
use FFI::C::ArrayDef; use FFI::C::StructDef; my $point_def = FFI::C::StructDef->new( name => 'point_t', class => 'Point', members => [ x => 'double', y => 'double', ], ); my $rect_def = FFI::C::ArrayDef->new( name => 'rectangle_t', class => 'Rectangle', members => [ $point_def, 2, ] ); # create a rectangle using the def's create method my $square = $rect_def->create([ { x => 1.0, y => 1.0 }, { x => 2.0, y => 2.0 }, ]); printf "[[%d %d][%d %d]]\n", $square->[0]->x, $square->[0]->y, $square->[1]->x, $square->[1]->y; # [[1 1][2 2]] # move square by 1 on the x axis $square->[$_]->x( $square->[$_]->x + 1 ) for 0..1; printf "[[%d %d][%d %d]]\n", $square->[0]->x, $square->[0]->y, $square->[1]->x, $square->[1]->y; # [[2 1][3 2]] # Create a rectangle using the generated class my $rect = Rectangle->new; $rect->[0]->x(1.0); $rect->[0]->y(1.0); $rect->[1]->x(2.0); $rect->[1]->y(3.0);
DESCRIPTION
This class represents an instance of a C an array. This class can be created using "new" on the generated class, if that was specified for the FFI::C::ArrayDef, or by using the "create" method on FFI::C::ArrayDef. Each element of the array can be accessed using the "get" method below, or by using the object as an array reference, thanks to magical Perl ties.
CONSTRUCTOR
new FFI::C::ArrayDef->new( class => 'User::Array::Class', ... ); my $instance = User::Array::Class->new; my $instance = User::Array::Class->new($count); Creates a new instance of the array. If $count is specified, that will be used as the element count, overriding the count defined by the def. If the def did not specify a count then you MUST provide a count.
METHODS
get my $element = $instance->get($index); my $element = $instance->[$index]; Gets the element at the given $index. count my $count = $instance->count; Returns the number of elements in the array, if known. tie my $arrayref = $instance->tie; Returns a Perl array reference tied to the C array.
SEE ALSO
FFI::C FFI::C::Array FFI::C::ArrayDef FFI::C::Def FFI::C::File FFI::C::PosixFile FFI::C::Struct FFI::C::StructDef FFI::C::Union FFI::C::UnionDef FFI::C::Util FFI::Platypus::Record
AUTHOR
Graham Ollis <plicease@cpan.org>
COPYRIGHT AND LICENSE
This software is copyright (c) 2020-2022 by Graham Ollis. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.