Provided by: libffi-c-perl_0.15-2_all 

NAME
FFI::C::ArrayDef - Array data definition for FFI
VERSION
version 0.15
SYNOPSIS
In your C code:
#include <stdio.h>
typedef struct {
double x, y;
} point_t;
void
print_rectangle(point_t rec[2])
{
printf("[[%g %g] [%g %g]]\n",
rec[0].x, rec[0].y,
rec[1].x, rec[1].y
);
}
In your Perl code:
use FFI::Platypus 1.00;
use FFI::C::ArrayDef;
use FFI::C::StructDef;
my $ffi = FFI::Platypus->new( api => 1 );
# See FFI::Platypus::Bundle for how bundle works.
$ffi->bundle;
my $point_def = FFI::C::StructDef->new(
$ffi,
name => 'point_t',
class => 'Point',
members => [
x => 'double',
y => 'double',
],
);
my $rect_def = FFI::C::ArrayDef->new(
$ffi,
name => 'rectangle_t',
class => 'Rectangle',
members => [
$point_def, 2,
]
);
$ffi->attach( print_rectangle => ['rectangle_t'] );
my $rect = Rectangle->new([
{ x => 1.5, y => 2.0 },
{ x => 3.14, y => 11.0 },
]);
print_rectangle($rect); # [[1.5 2] [3.14 11]]
# move rectangle on the y axis
$rect->[$_]->y( $rect->[$_]->y + 1.0 ) for 0..1;
print_rectangle($rect); # [[1.5 3] [3.14 12]]
DESCRIPTION
This class creates a def for a C array of structured data. Usually the def contains a FFI::C::StructDef
or FFI::C::UnionDef and optionally a number of elements.
CONSTRUCTOR
new
my $def = FFI::C::ArrayDef->new(%opts);
my $def = FFI::C::ArrayDef->new($ffi, %opts);
For standard def options, see FFI::C::Def.
members
This should be an array reference the member type, and optionally the number of elements. Examples:
my $struct = FFI::C::StructDef->new(...);
my $fixed = FFI::C::ArrayDef->new(
members => [ $struct, 10 ],
);
my $var = FFI::C::ArrayDef->new(
members => [ $struct ],
);
METHODS
create
my $instance = $def->create;
my $instance = $def->class->new; # if class was specified
my $instance = $def->create($count);
my $instance = $def->class->new($count); # if class was specified
my $instance = $def->create(\@init);
my $instance = $def->class->new(\@init); # if class was specified
This creates an instance of the array. If $count is given, this is used for the element count, possibly
overriding what was specified when the def was created. If the def doesn't have an element count
specified, then you MUST provide it here. Returns a FFI::C::Array.
You can optionally initialize member values using @init.
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.
perl v5.36.0 2023-02-06 FFI::C::ArrayDef(3pm)