Provided by: libffi-c-perl_0.15-2_all
NAME
FFI::C::UnionDef - Union data definition for FFI
VERSION
version 0.15
SYNOPSIS
In your C code: #include <stdint.h> #include <stdio.h> typedef union { uint8_t u8; uint16_t u16; uint32_t u32; } anyint_t; void print_anyint_as_u32(anyint_t *any) { printf("0x%x\n", any->u32); } In your Perl code: use FFI::Platypus 1.00; use FFI::C::UnionDef; my $ffi = FFI::Platypus->new( api => 1 ); # See FFI::Platypus::Bundle for how bundle works. $ffi->bundle; my $def = FFI::C::UnionDef->new( $ffi, name => 'anyint_t', class => 'AnyInt', members => [ u8 => 'uint8', u16 => 'uint16', u32 => 'uint32', ], ); $ffi->attach( print_anyint_as_u32 => ['anyint_t'] ); my $int = AnyInt->new({ u8 => 42 }); print_anyint_as_u32($int); # 0x2a on Intel,
DESCRIPTION
This class creates a def for a C "union".
CONSTRUCTOR
new my $def = FFI::C::UnionDef->new(%opts); my $def = FFI::C::UnionDef->new($ffi, %opts); For standard def options, see FFI::C::Def. members This should be an array reference containing name, type pairs. For a union, the order doesn't matter.
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 "union", returns a FFI::C::Union. 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.