1FFI::Platypus::Closure(U3s)er Contributed Perl DocumentatFiFoIn::Platypus::Closure(3)
2
3
4

NAME

6       FFI::Platypus::Closure - Platypus closure object
7

VERSION

9       version 1.58
10

SYNOPSIS

12       create closure with OO interface
13
14        use FFI::Platypus::Closure;
15        my $closure = FFI::Platypus::Closure->new(sub { print "hello world\n" });
16
17       create closure from Platypus object
18
19        use FFI::Platypus 1.00;
20        my $ffi = FFI::Platypus->new( api => 1 );
21        my $closure = $ffi->closure(sub { print "hello world\n" });
22
23       use closure
24
25        $ffi->function(foo => ['()->void'] => 'void')->call($closure);
26

DESCRIPTION

28       This class represents a Perl code reference that can be called from
29       compiled code.  When you create a closure object, you can pass it into
30       any function that expects a function pointer.  Care needs to be taken
31       with closures because compiled languages typically have a different way
32       of handling lifetimes of objects.  You have to make sure that if the
33       compiled code is going to call a closure that the closure object is
34       still in scope somewhere, or has been made sticky, otherwise you may
35       get a segment violation or other mysterious crash.
36

CONSTRUCTOR

38   new
39        my $closure = FFI::Platypus::Closure->new($coderef);
40
41       Create a new closure object; $coderef must be a subroutine code
42       reference.
43

METHODS

45   call
46        $closure->call(@arguments);
47        $closure->(@arguments);
48
49       Call the closure from Perl space.  May also be invoked by treating the
50       closure object as a code reference.
51
52   sticky
53        $closure->sticky;
54
55       Mark the closure sticky, meaning that it won't be free'd even if all
56       the reference of the object fall out of scope.
57
58   unstick
59        $closure->unstick;
60
61       Unmark the closure as sticky.
62

AUTHOR

64       Author: Graham Ollis <plicease@cpan.org>
65
66       Contributors:
67
68       Bakkiaraj Murugesan (bakkiaraj)
69
70       Dylan Cali (calid)
71
72       pipcet
73
74       Zaki Mughal (zmughal)
75
76       Fitz Elliott (felliott)
77
78       Vickenty Fesunov (vyf)
79
80       Gregor Herrmann (gregoa)
81
82       Shlomi Fish (shlomif)
83
84       Damyan Ivanov
85
86       Ilya Pavlov (Ilya33)
87
88       Petr Písař (ppisar)
89
90       Mohammad S Anwar (MANWAR)
91
92       Håkon Hægland (hakonhagland, HAKONH)
93
94       Meredith (merrilymeredith, MHOWARD)
95
96       Diab Jerius (DJERIUS)
97
98       Eric Brine (IKEGAMI)
99
100       szTheory
101
102       José Joaquín Atria (JJATRIA)
103
104       Pete Houston (openstrike, HOUSTON)
105
107       This software is copyright (c) 2015-2022 by Graham Ollis.
108
109       This is free software; you can redistribute it and/or modify it under
110       the same terms as the Perl 5 programming language system itself.
111
112
113
114perl v5.34.1                      2022-06-20         FFI::Platypus::Closure(3)
Impressum