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

NAME

FFI::Raw::MemPtr - FFI::Raw memory pointer type

VERSION

version 0.21

DESCRIPTION

A FFI::Raw::MemPtr represents a memory pointer which can be passed to functions taking a FFI::Raw::ptr argument.

METHODS

new( $length )

Allocate a new FFI::Raw::MemPtr of size $length bytes.

new_from_buf( $buffer, $length )

Allocate a new FFI::Raw::MemPtr of size $length bytes and copy $buffer into it. This can be used, for example, to pass a pointer to a function that takes a C struct pointer, by using pack() or the Convert::Binary::C module to create the actual struct content.

For example, consider a C function:

    struct some_struct {
      int some_int;
      char some_str[];
    };

    extern void take_one_struct(struct some_struct *arg) {
      if (arg -> some_int == 42)
        puts(arg -> some_str);
    }

It can be called using FFI::Raw as follows:

    use FFI::Raw;

    my $struct = pack('iZ', 42, 'hello');
    my $arg = FFI::Raw::MemPtr -> new_from_buf($packed, 10);

    my $take_one_struct = FFI::Raw -> new(
      $shared, 'take_one_struct',
      FFI::Raw::void, FFI::Raw::ptr
    );

    $take_one_struct -> ($arg);

Which would print hello.

new_from_ptr( $ptr )

Allocate a new FFI::Raw::MemPtr pointing to the $ptr, which can be either a FFI::Raw::MemPtr or a pointer returned by another function.

This is the FFI::Raw equivalent of a pointer to a pointer.

tostr( [$length] )

Convert a FFI::Raw::MemPtr to a Perl string.

AUTHOR

Alessandro Ghedini <alexbio@cpan.org>

LICENSE AND COPYRIGHT

Copyright 2013 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.