NAME
FFI::Raw - Raw FFI library for Perl
VERSION
version 0.04
SYNOPSIS
use FFI::Raw;
my $cos = FFI::Raw -> new(
'libm.so', 'cos',
FFI::Raw::double, # return value
FFI::Raw::double # arg #1
);
say $cos -> call(2.0);
DESCRIPTION
FFI::Raw provides a raw foreign function interface for Perl. It can access and call functions exported by shared libraries without the need to write C/XS code. Dynamic symbols are automatically resolved at runtime so that the only information needed to use FFI::Raw is the name (or path) of the target library, the name of the function to call and its signature.
Attention: this is experimental code, use at your own risk
METHODS
new( $library, $function, $return_type [, $arg_type ...] )
Create a new FFI::Raw
object. It loads $library
, finds the function $function
with return type $return_type
and creates a calling interface.
This function takes also a variable number of types, representing the argument of the wanted function.
call( [$arg ...] )
Execute the FFI::Raw
function $self
. This function takes also a variable number of arguments, which are passed to the called function. The argument types must match the types passed to new
.
memptr( $number )
Allocate $number
bytes and return a FFI::Raw::MemPtr
pointing to the allocated memory. This can be passed to functions which take a FFI::Raw::ptr argument.
TYPES
FFI::Raw::void
Return a FFI::Raw void type.
FFI::Raw::int
Return a FFI::Raw integer type.
FFI::Raw::uint
Return a FFI::Raw unsigned integer type.
FFI::Raw::char
Return a FFI::Raw char type.
FFI::Raw::uchar
Return a FFI::Raw unsigned char type.
FFI::Raw::float
Return a FFI::Raw float type.
FFI::Raw::double
Return a FFI::Raw double type.
FFI::Raw::str
Return a FFI::Raw string type.
FFI::Raw::ptr
Return a FFI::Raw pointer type.
AUTHOR
Alessandro Ghedini <alexbio@cpan.org>
LICENSE AND COPYRIGHT
Copyright 2012 Alessandro Ghedini.
This program is free software; you can redistribute it and/or modify it under the terms of either: the GNU General Public License as published by the Free Software Foundation; or the Artistic License.
See http://dev.perl.org/licenses/ for more information.