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;voidprint_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 specifiedmy $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 <[email protected]>
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.