The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

FFI::C::Struct - Structured data instance for FFI

VERSION

version 0.15

SYNOPSIS

use FFI::C::StructDef;

my $def = FFI::C::StructDef->new(
  name  => 'color_t',
  class => 'Color',
  members => [
    red   => 'uint8',
    green => 'uint8',
    blue  => 'uint8',
  ],
);

my $red = $def->create({ red => 255 });    # creates a FFI::C::Stuct

printf "[%02x %02x %02x]\n", $red->red, $red->green, $red->blue;  # [ff 00 00]

# that red is too bright!
$red->red(200);

printf "[%02x %02x %02x]\n", $red->red, $red->green, $red->blue;  # [c8 00 00]


my $green = Color->new({ green => 255 });  # creates a FFI::C::Stuct

printf "[%02x %02x %02x]\n", $green->red, $green->green, $green->blue;  # [00 ff 00]

DESCRIPTION

This class represents an instance of a C struct. This class can be created using new on the generated class, if that was specified for the FFI::C::StructDef, or by using the create method on FFI::C::StructDef.

For each member defined in the FFI::C::StructDef there is an accessor for the FFI::C::Struct instance.

CONSTRUCTOR

new

FFI::C::StructDef->new( class => 'User::Struct::Class', ... );
my $instance = User::Struct::Class->new;

Creates a new instance of the struct.

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.