The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

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.