oracular (3) FFI::C::StructDef.3pm.gz

NAME
FFI::C::StructDef - Structured data definition for FFI
VERSION
version 0.15
SYNOPSIS
In your C code: #include <stdint.h> #include <stdio.h> typedef struct { uint8_t red; uint8_t green; uint8_t blue; } color_t; void print_color(color_t *c) { printf("[%02x %02x %02x]\n", c->red, c->green, c->blue ); } In your Perl code: use FFI::Platypus 1.00; use FFI::C::StructDef; my $ffi = FFI::Platypus->new( api => 1 ); # See FFI::Platypus::Bundle for how bundle works. $ffi->bundle; my $def = FFI::C::StructDef->new( $ffi, name => 'color_t', class => 'Color', members => [ red => 'uint8', green => 'uint8', blue => 'uint8', ], ); my $red = Color->new({ red => 255 }); my $green = Color->new({ green => 255 }); $ffi->attach( print_color => ['color_t'] ); print_color($red); # [ff 00 00] print_color($green); # [00 ff 00] # that red is a tad bright! $red->red( 200 ); print_color($red); # [c8 00 00]
DESCRIPTION
This class creates a def for a C "struct".
CONSTRUCTOR
new my $def = FFI::C::StructDef->new(%opts); my $def = FFI::C::StructDef->new($ffi, %opts); For standard def options, see FFI::C::Def. members This should be an array reference containing name, type pairs, in the order that they will be stored in the struct. trim_string If true, fixed-length strings should be treated as null terminated strings and be trimmed.
METHODS
create my $instance = $def->create; my $instance = $def->class->new; # 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 "struct", returns a FFI::C::Struct. You can optionally initialize member values using %init. trim_string my $bool = $def->trim_string; Returns true if fixed-length strings should be treated as null terminated strings and be trimmed.
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.