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

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.