[libffi-platypus-perl] 01/04: Imported Upstream version 0.42.01
gregor herrmann
gregoa at debian.org
Wed Jul 6 21:35:59 UTC 2016
This is an automated email from the git hooks/post-receive script.
gregoa pushed a commit to branch master
in repository libffi-platypus-perl.
commit 76339bbae20df6ea7e7a7b5e8ed2cff6c0b6eecd
Author: gregor herrmann <gregoa at debian.org>
Date: Wed Jul 6 23:26:35 2016 +0200
Imported Upstream version 0.42.01
---
Build.PL | 4 +-
CONTRIBUTING | 2 +-
Changes | 5 ++
INSTALL | 14 ++--
MANIFEST | 21 ++---
META.json | 10 +--
META.yml | 5 +-
README | 109 +++++++++++++-------------
xt/release/release.yml => author.yml | 0
cpanfile | 4 -
dist.ini | 8 +-
examples/char.pl | 10 +--
examples/closure-opaque.pl | 20 +++--
examples/closure.pl | 22 +++---
examples/getpid.pl | 10 ++-
examples/integer.pl | 10 ++-
examples/list_integer_types.pl | 6 +-
examples/malloc.pl | 7 +-
examples/math.pl | 13 +--
examples/notify.pl | 15 ++--
examples/pipe.pl | 7 +-
examples/string.pl | 13 +--
examples/uuid.pl | 14 ++--
inc/My/AutoConf.pm | 41 ++++++----
inc/My/ModuleBuild.pm | 2 +-
inc/probe/bigendian64.c | 27 +++++++
include/ffi_platypus.h | 18 ++++-
include/ffi_platypus_call.h | 52 +++++++++---
lib/FFI/Platypus.pm | 113 ++++++++++++++-------------
lib/FFI/Platypus/API.pm | 4 +-
lib/FFI/Platypus/Buffer.pm | 8 +-
lib/FFI/Platypus/Declare.pm | 16 +++-
lib/FFI/Platypus/Lang/ASM.pm | 4 +-
lib/FFI/Platypus/Lang/C.pm | 4 +-
lib/FFI/Platypus/Lang/Win32.pm | 4 +-
lib/FFI/Platypus/Memory.pm | 8 +-
lib/FFI/Platypus/Record.pm | 4 +-
lib/FFI/Platypus/Record/TieArray.pm | 4 +-
lib/FFI/Platypus/Type.pod | 73 ++++++++---------
lib/FFI/Platypus/Type/PointerSizeBuffer.pm | 17 ++--
lib/FFI/Platypus/Type/StringPointer.pm | 19 ++---
lib/Module/Build/FFI.pm | 19 ++---
t/00_diag.t | 4 +
xs/closure.c | 24 +++++-
xt/{release => author}/eol.t | 2 +
xt/{release => author}/no_tabs.t | 1 +
xt/{release => author}/pod.t | 1 +
xt/{release => author}/pod_coverage.t | 3 +-
xt/{release => author}/pod_spelling_common.t | 6 +-
xt/{release => author}/pod_spelling_system.t | 11 +--
xt/{release => author}/strict.t | 7 ++
xt/{release => author}/version.t | 3 +-
xt/release/changes.t | 2 +
xt/release/fixme.t | 1 +
54 files changed, 478 insertions(+), 353 deletions(-)
diff --git a/Build.PL b/Build.PL
index 61ac86b..c670dfa 100644
--- a/Build.PL
+++ b/Build.PL
@@ -6,7 +6,7 @@ BEGIN {
}
}
-# This file was automatically generated by Dist::Zilla::Plugin::ModuleBuild v6.003.
+# This file was automatically generated by Dist::Zilla::Plugin::ModuleBuild v6.006.
use strict;
use warnings;
@@ -30,7 +30,7 @@ my %module_build_args = (
"Graham Ollis <plicease\@cpan.org>"
],
"dist_name" => "FFI-Platypus",
- "dist_version" => "0.42",
+ "dist_version" => "0.42_01",
"license" => "perl",
"module_name" => "FFI::Platypus",
"recursive_test_files" => 1,
diff --git a/CONTRIBUTING b/CONTRIBUTING
index ff4b33f..d7fd37c 100644
--- a/CONTRIBUTING
+++ b/CONTRIBUTING
@@ -79,7 +79,7 @@ CONTRIBUTING
DEBUG_FAKE32:
- + making Math::Int64 a prerequsite (not normally done on 64 bit Perls)
+ + making Math::Int64 a prerequisite (not normally done on 64 bit Perls)
+ using Math::Int64's C API to manipulate 64 bit values (not normally done on 64 bit Perls)
Created MYMETA.yml and MYMETA.json
diff --git a/Changes b/Changes
index f8bfcb3..3aceced 100644
--- a/Changes
+++ b/Changes
@@ -1,5 +1,10 @@
Revision history for FFI-Platypus
+0.42_01 2016-07-06 15:06:41 -0400
+ - Numerous fixes for systems with 64bit big-endian arch
+ (previously only 32bit big-endian had been tested)
+ - Officially discourage the use of FFI::Platypus::Declare
+
0.42 2016-05-06 16:31:01 -0400
- Support for MSYS2
diff --git a/INSTALL b/INSTALL
index b76bb61..2ed64bf 100644
--- a/INSTALL
+++ b/INSTALL
@@ -8,10 +8,10 @@ If you have cpanm, you only need one line:
% cpanm FFI::Platypus
-If you are installing into a system-wide directory, you may need to pass the
-"-S" flag to cpanm, which uses sudo to install the module:
-
- % cpanm -S FFI::Platypus
+If it does not have permission to install modules to the current perl, cpanm
+will automatically set up and install to a local::lib in your home directory.
+See the local::lib documentation (https://metacpan.org/pod/local::lib) for
+details on enabling it in your environment.
## Installing with the CPAN shell
@@ -31,9 +31,9 @@ Then install it:
% ./Build install
-If you are installing into a system-wide directory, you may need to run:
-
- % sudo ./Build install
+If your perl is system-managed, you can create a local::lib in your home
+directory to install modules to. For details, see the local::lib documentation:
+https://metacpan.org/pod/local::lib
## Documentation
diff --git a/MANIFEST b/MANIFEST
index d4fd539..ec70eb0 100644
--- a/MANIFEST
+++ b/MANIFEST
@@ -1,4 +1,4 @@
-# This file was automatically generated by Dist::Zilla::Plugin::Manifest v6.003.
+# This file was automatically generated by Dist::Zilla::Plugin::Manifest v6.006.
Build.PL
CONTRIBUTING
Changes
@@ -9,6 +9,7 @@ META.json
META.yml
README
SUPPORT
+author.yml
cpanfile
dist.ini
examples/archive.pl
@@ -50,6 +51,7 @@ inc/eg/complex.c
inc/eg/small.c
inc/probe/abi.c
inc/probe/bigendian.c
+inc/probe/bigendian64.c
inc/probe/complex.c
inc/probe/longdouble.c
inc/run/after_build2.pl
@@ -185,14 +187,13 @@ xs/record_opaque.c
xs/record_simple.c
xs/record_string.c
xs/windl.c
+xt/author/eol.t
+xt/author/no_tabs.t
+xt/author/pod.t
+xt/author/pod_coverage.t
+xt/author/pod_spelling_common.t
+xt/author/pod_spelling_system.t
+xt/author/strict.t
+xt/author/version.t
xt/release/changes.t
-xt/release/eol.t
xt/release/fixme.t
-xt/release/no_tabs.t
-xt/release/pod.t
-xt/release/pod_coverage.t
-xt/release/pod_spelling_common.t
-xt/release/pod_spelling_system.t
-xt/release/release.yml
-xt/release/strict.t
-xt/release/version.t
diff --git a/META.json b/META.json
index b0daef5..02934c1 100644
--- a/META.json
+++ b/META.json
@@ -4,7 +4,7 @@
"Graham Ollis <plicease at cpan.org>"
],
"dynamic_config" : "1",
- "generated_by" : "Dist::Zilla version 6.003, CPAN::Meta::Converter version 2.150005",
+ "generated_by" : "Dist::Zilla version 6.006, CPAN::Meta::Converter version 2.150005",
"license" : [
"perl_5"
],
@@ -35,9 +35,6 @@
}
},
"develop" : {
- "recommends" : {
- "YAML::XS" : "0"
- },
"requires" : {
"Devel::PPPort" : "3.28",
"FindBin" : "0",
@@ -73,7 +70,7 @@
}
}
},
- "release_status" : "stable",
+ "release_status" : "testing",
"resources" : {
"bugtracker" : {
"web" : "https://github.com/plicease/FFI-Platypus/issues"
@@ -86,6 +83,7 @@
},
"x_IRC" : "irc://irc.perl.org/#native"
},
- "version" : "0.42"
+ "version" : "0.42_01",
+ "x_serialization_backend" : "Cpanel::JSON::XS version 3.0217"
}
diff --git a/META.yml b/META.yml
index 39e21f9..3d8c665 100644
--- a/META.yml
+++ b/META.yml
@@ -15,7 +15,7 @@ configure_requires:
Module::Build: '0.3601'
perl: '5.008001'
dynamic_config: '1'
-generated_by: 'Dist::Zilla version 6.003, CPAN::Meta::Converter version 2.150005'
+generated_by: 'Dist::Zilla version 6.006, CPAN::Meta::Converter version 2.150005'
license: perl
meta-spec:
url: http://module-build.sourceforge.net/META-spec-v1.4.html
@@ -37,4 +37,5 @@ resources:
bugtracker: https://github.com/plicease/FFI-Platypus/issues
homepage: http://perl.wdlabs.com/FFI-Platypus
repository: git://github.com/plicease/FFI-Platypus.git
-version: '0.42'
+version: 0.42_01
+x_serialization_backend: 'YAML::Tiny version 1.69'
diff --git a/README b/README
index 0f3391b..8ff5c1a 100644
--- a/README
+++ b/README
@@ -5,7 +5,7 @@ NAME
VERSION
- version 0.42
+ version 0.42_01
SYNOPSIS
@@ -87,9 +87,6 @@ DESCRIPTION
to Platypus or FFI, you may want to skip down to the EXAMPLES to get a
taste of what you can do with Platypus.
- Platypus also provides an declarative interface you may want to use
- instead of the object oriented interface called FFI::Platypus::Declare.
-
Platypus has extensive documentation of types at FFI::Platypus::Type
and its custom types API at FFI::Platypus::API.
@@ -467,19 +464,19 @@ METHODS
EXAMPLES
- Here are some examples. Some of them use the FFI::Platypus::Declare
- interface, but the principles apply to the OO interface. These examples
- are provided in full with the Platypus distribution in the "examples"
- directory. There are also some more examples in FFI::Platypus::Type
- that are related to types.
+ Here are some examples. These examples are provided in full with the
+ Platypus distribution in the "examples" directory. There are also some
+ more examples in FFI::Platypus::Type that are related to types.
Integer conversions
- use FFI::Platypus::Declare qw( int string );
+ use FFI::Platypus;
- lib undef;
- attach puts => [string] => int;
- attach atoi => [string] => int;
+ my $ffi = FFI::Platypus->new;
+ $ffi->lib(undef);
+
+ $ffi->attach(puts => ['string'] => 'int');
+ $ffi->attach(atoi => ['string'] => 'int');
puts(atoi('56'));
@@ -492,20 +489,21 @@ EXAMPLES
libnotify
use FFI::CheckLib;
- use FFI::Platypus::Declare qw( void string opaque );
+ use FFI::Platypus;
# NOTE: I ported this from the like named eg/notify.pl that came with FFI::Raw
# and it seems to work most of the time, but also seems to SIGSEGV sometimes.
# I saw the same behavior in the FFI::Raw version, and am not really familiar
# with the libnotify API to say what is the cause. Patches welcome to fix it.
- lib find_lib_or_exit lib => 'notify';
+ my $ffi = FFI::Platypus->new;
+ $ffi->lib(find_lib_or_exit lib => 'notify');
- attach notify_init => [string] => void;
- attach notify_uninit => [] => void;
- attach [notify_notification_new => 'notify_new'] => [string,string,string] => opaque;
- attach [notify_notification_update => 'notify_update'] => [opaque, string, string, string] => void;
- attach [notify_notification_show => 'notify_show'] => [opaque, opaque] => void;
+ $ffi->attach(notify_init => ['string'] => 'void');
+ $ffi->attach(notify_uninit => [] => 'void');
+ $ffi->attach([notify_notification_new => 'notify_new'] => ['string', 'string', 'string'] => 'opaque');
+ $ffi->attach([notify_notification_update => 'notify_update'] => ['opaque', 'string', 'string', 'string'] => 'void');
+ $ffi->attach([notify_notification_show => 'notify_show'] => ['opaque', 'opaque'] => 'void');
notify_init('FFI::Platypus');
my $n = notify_new('','','');
@@ -547,14 +545,15 @@ EXAMPLES
Allocating and freeing memory
- use FFI::Platypus::Declare;
+ use FFI::Platypus;
use FFI::Platypus::Memory qw( malloc free memcpy );
+ my $ffi = FFI::Platypus->new;
my $buffer = malloc 12;
- memcpy $buffer, cast('string' => 'opaque', "hello there"), length "hello there\0";
+ memcpy $buffer, $ffi->cast('string' => 'opaque', "hello there"), length "hello there\0";
- print cast('opaque' => 'string', $buffer), "\n";
+ print $ffi->cast('opaque' => 'string', $buffer), "\n";
free $buffer;
@@ -618,16 +617,16 @@ EXAMPLES
libuuid
use FFI::CheckLib;
- use FFI::Platypus::Declare
- 'void',
- [ 'string(37)' => 'uuid_string' ],
- [ 'record(16)' => 'uuid_t' ];
+ use FFI::Platypus;
use FFI::Platypus::Memory qw( malloc free );
- lib find_lib_or_exit lib => 'uuid';
+ my $ffi = FFI::Platypus->new;
+ $ffi->lib(find_lib_or_exit lib => 'uuid');
+ $ffi->type('string(37)' => 'uuid_string');
+ $ffi->type('record(16)' => 'uuid_t');
- attach uuid_generate => [uuid_t] => void;
- attach uuid_unparse => [uuid_t,uuid_string] => void;
+ $ffi->attach(uuid_generate => ['uuid_t'] => 'void');
+ $ffi->attach(uuid_unparse => ['uuid_t','uuid_string'] => 'void');
my $uuid = "\0" x 16; # uuid_t
uuid_generate($uuid);
@@ -649,11 +648,13 @@ EXAMPLES
puts and getpid
- use FFI::Platypus::Declare qw( string int );
+ use FFI::Platypus;
- lib undef;
- attach puts => [string] => int;
- attach getpid => [] => int;
+ my $ffi = FFI::Platypus->new;
+ $ffi->lib(undef);
+
+ $ffi->attach(puts => ['string'] => 'int');
+ $ffi->attach(getpid => [] => 'int');
puts(getpid());
@@ -662,20 +663,21 @@ EXAMPLES
Math library
- use FFI::Platypus::Declare qw( string int double );
+ use FFI::Platypus;
use FFI::CheckLib;
- lib undef;
- attach puts => [string] => int;
- attach fdim => [double,double] => double;
+ my $ffi = FFI::Platypus->new;
+ $ffi->lib(undef);
+ $ffi->attach(puts => ['string'] => 'int');
+ $ffi->attach(fdim => ['double','double'] => 'double');
puts(fdim(7.0, 2.0));
- attach cos => [double] => double;
+ $ffi->attach(cos => ['double'] => 'double');
puts(cos(2.0));
- attach fmax => [double, double] => double;
+ $ffi->attach(fmax => ['double', 'double'] => 'double');
puts(fmax(2.0,3.0));
@@ -688,15 +690,16 @@ EXAMPLES
Strings
- use FFI::Platypus::Declare qw( int string );
+ use FFI::Platypus;
- lib undef;
- attach puts => [string] => int;
- attach strlen => [string] => int;
+ my $ffi = FFI::Platypus->new;
+ $ffi->lib(undef);
+ $ffi->attach(puts => ['string'] => 'int');
+ $ffi->attach(strlen => ['string'] => 'int');
puts(strlen('somestring'));
- attach strstr => [string,string] => string;
+ $ffi->attach(strstr => ['string','string'] => 'string');
puts(strstr('somestring', 'string'));
@@ -704,7 +707,7 @@ EXAMPLES
puts(puts("lol"));
- attach strerror => [int] => string;
+ $ffi->attach(strerror => ['int'] => 'string');
puts(strerror(2));
@@ -809,8 +812,8 @@ EXAMPLES
print "recv_message = $recv_message\n";
};
- Discussion: ÃÂMQ is a high-performance asynchronous messaging
- library. There are a few things to note here.
+ Discussion: ØMQ is a high-performance asynchronous messaging library.
+ There are a few things to note here.
Firstly, sometimes there may be multiple versions of a library in the
wild and you may need to verify that the library on a system meets your
@@ -834,8 +837,8 @@ EXAMPLES
interface.
Finally we attach the necessary functions, send and receive a message.
- If you are interested, there is a fully fleshed out ÃÂMQ Perl
- interface implemented using FFI called ZMQ::FFI.
+ If you are interested, there is a fully fleshed out ØMQ Perl interface
+ implemented using FFI called ZMQ::FFI.
libarchive
@@ -1314,7 +1317,7 @@ CONTRIBUTING
DEBUG_FAKE32:
- + making Math::Int64 a prerequsite (not normally done on 64 bit Perls)
+ + making Math::Int64 a prerequisite (not normally done on 64 bit Perls)
+ using Math::Int64's C API to manipulate 64 bit values (not normally done on 64 bit Perls)
Created MYMETA.yml and MYMETA.json
@@ -1378,9 +1381,9 @@ CONTRIBUTING
SEE ALSO
- FFI::Platypus::Declare
+ NativeCall
- Declarative interface to Platypus.
+ Promising interface to Platypus inspired by Perl 6.
FFI::Platypus::Type
diff --git a/xt/release/release.yml b/author.yml
similarity index 100%
rename from xt/release/release.yml
rename to author.yml
diff --git a/cpanfile b/cpanfile
index 0a5533a..711faad 100644
--- a/cpanfile
+++ b/cpanfile
@@ -40,7 +40,3 @@ on 'develop' => sub {
requires "Test::Strict" => "0";
requires "YAML" => "0";
};
-
-on 'develop' => sub {
- recommends "YAML::XS" => "0";
-};
diff --git a/dist.ini b/dist.ini
index 0b7635c..f5383b5 100644
--- a/dist.ini
+++ b/dist.ini
@@ -3,10 +3,10 @@ author = Graham Ollis <plicease at cpan.org>
license = Perl_5
copyright_holder = Graham Ollis
copyright_year = 2015
-version = 0.42
+version = 0.42_01
[@Author::Plicease]
-:version = 1.94
+:version = 2.07
release_tests = 1
installer = ModuleBuild
copy_mb = 1
@@ -59,6 +59,10 @@ diag_preamble = | foreach my $key (sort keys %$abi)
diag_preamble = | {
diag_preamble = | diag sprintf(" %-20s %s", $key, $abi->{$key});
diag_preamble = | }
+diag_preamble = | spacer();
+diag_preamble = | diag "Probes:";
+diag_preamble = | my $probe = FFI::Platypus::ConfigData->config("probe");
+diag_preamble = | diag sprintf(" %-20s %s", $_, $probe->{$_}) for keys %$probe;
diag_preamble = | };
diag_preamble = | diag "extended diagnostic failed: $@" if $@;
diag_preamble = | };
diff --git a/examples/char.pl b/examples/char.pl
index 95b70e0..98c2657 100644
--- a/examples/char.pl
+++ b/examples/char.pl
@@ -1,17 +1,17 @@
use strict;
use warnings;
-use FFI::Platypus::Declare
- 'int',
- [int => 'character'];
+use FFI::Platypus;
-lib undef;
+my $ffi = FFI::Platypus->new;
+$ffi->lib(undef);
+$ffi->type('int' => 'character');
my @list = qw(
alnum alpha ascii blank cntrl digit lower print punct
space upper xdigit
);
-attach "is$_" => [character] => int for @list;
+$ffi->attach("is$_" => ['character'] => 'int') for @list;
my $char = shift(@ARGV) || 'a';
diff --git a/examples/closure-opaque.pl b/examples/closure-opaque.pl
index 4194ad4..fc89161 100644
--- a/examples/closure-opaque.pl
+++ b/examples/closure-opaque.pl
@@ -1,17 +1,15 @@
use strict;
use warnings;
-use FFI::Platypus::Declare
- 'int', 'void', 'string',
- ['(int)->int' => 'closure_t'];
+use FFI::Platypus;
-lib './closure.so';
-lib undef; # for puts
+my $ffi = FFI::Platypus->new;
+$ffi->lib('./closure.so');
+$ffi->type('(int)->int' => 'closure_t');
-attach set_closure => [closure_t] => void;
-attach call_closure => [int] => int;
-attach puts => [string] => int;
+$ffi->attach(set_closure => ['closure_t'] => 'void');
+$ffi->attach(call_closure => ['int'] => 'int');
-my $closure = closure { $_[0] * 6 };
-my $opaque = cast closure_t => 'opaque', $closure;
+my $closure = $ffi->closure(sub { $_[0] * 6 });
+my $opaque = $ffi->cast(closure_t => 'opaque', $closure);
set_closure($opaque);
-puts(call_closure(2)); # prints "12"
+print call_closure(2), "\n"; # prints "12"
diff --git a/examples/closure.pl b/examples/closure.pl
index e4e80ca..049d495 100644
--- a/examples/closure.pl
+++ b/examples/closure.pl
@@ -1,20 +1,18 @@
use strict;
use warnings;
-use FFI::Platypus::Declare
- 'int', 'void', 'string',
- ['(int)->int' => 'closure_t'];
+use FFI::Platypus;
-lib './closure.so';
-lib undef; # for puts
+my $ffi = FFI::Platypus->new;
+$ffi->lib('./closure.so');
+$ffi->type('(int)->int' => 'closure_t');
-attach set_closure => [closure_t] => void;
-attach call_closure => [int] => int;
-attach puts => [string] => int;
+$ffi->attach(set_closure => ['closure_t'] => 'void');
+$ffi->attach(call_closure => ['int'] => 'int');
-my $closure1 = closure { $_[0] * 2 };
+my $closure1 = $ffi->closure(sub { $_[0] * 2 });
set_closure($closure1);
-puts(call_closure(2)); # prints "4"
+print call_closure(2), "\n"; # prints "4"
-my $closure2 = closure { $_[0] * 4 };
+my $closure2 = $ffi->closure(sub { $_[0] * 4 });
set_closure($closure2);
-puts(call_closure(2)); # prints "8"
+print call_closure(2), "\n"; # prints "8"
diff --git a/examples/getpid.pl b/examples/getpid.pl
index 3708f44..36ef441 100644
--- a/examples/getpid.pl
+++ b/examples/getpid.pl
@@ -1,9 +1,11 @@
use strict;
use warnings;
-use FFI::Platypus::Declare qw( string int );
+use FFI::Platypus;
-lib undef;
-attach puts => [string] => int;
-attach getpid => [] => int;
+my $ffi = FFI::Platypus->new;
+$ffi->lib(undef);
+
+$ffi->attach(puts => ['string'] => 'int');
+$ffi->attach(getpid => [] => 'int');
puts(getpid());
diff --git a/examples/integer.pl b/examples/integer.pl
index cbbdc2a..6f69ac7 100644
--- a/examples/integer.pl
+++ b/examples/integer.pl
@@ -1,9 +1,11 @@
use strict;
use warnings;
-use FFI::Platypus::Declare qw( int string );
+use FFI::Platypus;
-lib undef;
-attach puts => [string] => int;
-attach atoi => [string] => int;
+my $ffi = FFI::Platypus->new;
+$ffi->lib(undef);
+
+$ffi->attach(puts => ['string'] => 'int');
+$ffi->attach(atoi => ['string'] => 'int');
puts(atoi('56'));
diff --git a/examples/list_integer_types.pl b/examples/list_integer_types.pl
index 19f6198..c60add7 100644
--- a/examples/list_integer_types.pl
+++ b/examples/list_integer_types.pl
@@ -1,10 +1,12 @@
use strict;
use warnings;
-use FFI::Platypus::Declare;
+use FFI::Platypus;
+
+my $ffi = FFI::Platypus->new;
foreach my $type_name (sort FFI::Platypus->types)
{
- my $meta = type_meta $type_name;
+ my $meta = $ffi->type_meta($type_name);
next unless $meta->{element_type} eq 'int';
printf "%20s %s\n", $type_name, $meta->{ffi_type};
}
diff --git a/examples/malloc.pl b/examples/malloc.pl
index 0141191..d5754b3 100644
--- a/examples/malloc.pl
+++ b/examples/malloc.pl
@@ -1,12 +1,13 @@
use strict;
use warnings;
-use FFI::Platypus::Declare;
+use FFI::Platypus;
use FFI::Platypus::Memory qw( malloc free memcpy );
+my $ffi = FFI::Platypus->new;
my $buffer = malloc 12;
-memcpy $buffer, cast('string' => 'opaque', "hello there"), length "hello there\0";
+memcpy $buffer, $ffi->cast('string' => 'opaque', "hello there"), length "hello there\0";
-print cast('opaque' => 'string', $buffer), "\n";
+print $ffi->cast('opaque' => 'string', $buffer), "\n";
free $buffer;
diff --git a/examples/math.pl b/examples/math.pl
index 37b1676..3c676dd 100644
--- a/examples/math.pl
+++ b/examples/math.pl
@@ -1,18 +1,19 @@
use strict;
use warnings;
-use FFI::Platypus::Declare qw( string int double );
+use FFI::Platypus;
use FFI::CheckLib;
-lib undef;
-attach puts => [string] => int;
-attach fdim => [double,double] => double;
+my $ffi = FFI::Platypus->new;
+$ffi->lib(undef);
+$ffi->attach(puts => ['string'] => 'int');
+$ffi->attach(fdim => ['double','double'] => 'double');
puts(fdim(7.0, 2.0));
-attach cos => [double] => double;
+$ffi->attach(cos => ['double'] => 'double');
puts(cos(2.0));
-attach fmax => [double, double] => double;
+$ffi->attach(fmax => ['double', 'double'] => 'double');
puts(fmax(2.0,3.0));
diff --git a/examples/notify.pl b/examples/notify.pl
index d3019a6..3ca9415 100644
--- a/examples/notify.pl
+++ b/examples/notify.pl
@@ -1,20 +1,21 @@
use strict;
use warnings;
use FFI::CheckLib;
-use FFI::Platypus::Declare qw( void string opaque );
+use FFI::Platypus;
# NOTE: I ported this from the like named eg/notify.pl that came with FFI::Raw
# and it seems to work most of the time, but also seems to SIGSEGV sometimes.
# I saw the same behavior in the FFI::Raw version, and am not really familiar
# with the libnotify API to say what is the cause. Patches welcome to fix it.
-lib find_lib_or_exit lib => 'notify';
+my $ffi = FFI::Platypus->new;
+$ffi->lib(find_lib_or_exit lib => 'notify');
-attach notify_init => [string] => void;
-attach notify_uninit => [] => void;
-attach [notify_notification_new => 'notify_new'] => [string,string,string] => opaque;
-attach [notify_notification_update => 'notify_update'] => [opaque, string, string, string] => void;
-attach [notify_notification_show => 'notify_show'] => [opaque, opaque] => void;
+$ffi->attach(notify_init => ['string'] => 'void');
+$ffi->attach(notify_uninit => [] => 'void');
+$ffi->attach([notify_notification_new => 'notify_new'] => ['string', 'string', 'string'] => 'opaque');
+$ffi->attach([notify_notification_update => 'notify_update'] => ['opaque', 'string', 'string', 'string'] => 'void');
+$ffi->attach([notify_notification_show => 'notify_show'] => ['opaque', 'opaque'] => 'void');
notify_init('FFI::Platypus');
my $n = notify_new('','','');
diff --git a/examples/pipe.pl b/examples/pipe.pl
index 136967e..3fd1c46 100644
--- a/examples/pipe.pl
+++ b/examples/pipe.pl
@@ -1,9 +1,10 @@
use strict;
use warnings;
-use FFI::Platypus::Declare qw( int );
+use FFI::Platypus;
-lib undef;
-attach [pipe=>'mypipe'] => ['int[2]'] => int;
+my $ffi = FFI::Platypus->new;
+$ffi->lib(undef);
+$ffi->attach([pipe=>'mypipe'] => ['int[2]'] => 'int');
my @fd = (0,0);
mypipe(\@fd);
diff --git a/examples/string.pl b/examples/string.pl
index 3015698..7f87f2c 100644
--- a/examples/string.pl
+++ b/examples/string.pl
@@ -1,14 +1,15 @@
use strict;
use warnings;
-use FFI::Platypus::Declare qw( int string );
+use FFI::Platypus;
-lib undef;
-attach puts => [string] => int;
-attach strlen => [string] => int;
+my $ffi = FFI::Platypus->new;
+$ffi->lib(undef);
+$ffi->attach(puts => ['string'] => 'int');
+$ffi->attach(strlen => ['string'] => 'int');
puts(strlen('somestring'));
-attach strstr => [string,string] => string;
+$ffi->attach(strstr => ['string','string'] => 'string');
puts(strstr('somestring', 'string'));
@@ -16,6 +17,6 @@ puts(strstr('somestring', 'string'));
puts(puts("lol"));
-attach strerror => [int] => string;
+$ffi->attach(strerror => ['int'] => 'string');
puts(strerror(2));
diff --git a/examples/uuid.pl b/examples/uuid.pl
index 233d38c..3d6d0f0 100644
--- a/examples/uuid.pl
+++ b/examples/uuid.pl
@@ -1,16 +1,16 @@
use strict;
use warnings;
use FFI::CheckLib;
-use FFI::Platypus::Declare
- 'void',
- [ 'string(37)' => 'uuid_string' ],
- [ 'record(16)' => 'uuid_t' ];
+use FFI::Platypus;
use FFI::Platypus::Memory qw( malloc free );
-lib find_lib_or_exit lib => 'uuid';
+my $ffi = FFI::Platypus->new;
+$ffi->lib(find_lib_or_exit lib => 'uuid');
+$ffi->type('string(37)' => 'uuid_string');
+$ffi->type('record(16)' => 'uuid_t');
-attach uuid_generate => [uuid_t] => void;
-attach uuid_unparse => [uuid_t,uuid_string] => void;
+$ffi->attach(uuid_generate => ['uuid_t'] => 'void');
+$ffi->attach(uuid_unparse => ['uuid_t','uuid_string'] => 'void');
my $uuid = "\0" x 16; # uuid_t
uuid_generate($uuid);
diff --git a/inc/My/AutoConf.pm b/inc/My/AutoConf.pm
index 189b8ac..5c882dd 100644
--- a/inc/My/AutoConf.pm
+++ b/inc/My/AutoConf.pm
@@ -38,10 +38,25 @@ unsigned int
long
signed long
unsigned long
+uint8_t
+int8_t
+uint16_t
+int16_t
+uint32_t
+int32_t
+uint64_t
+int64_t
+size_t
+float
+double
+bool
+_Bool
+EOF
+
+my @extra_probe_types = split /\n/, <<EOF;
long long
signed long long
unsigned long long
-size_t
dev_t
ino_t
mode_t
@@ -52,14 +67,6 @@ off_t
blksize_t
blkcnt_t
time_t
-uint8_t
-int8_t
-uint16_t
-int16_t
-uint32_t
-int32_t
-uint64_t
-int64_t
int_least8_t
int_least16_t
int_least32_t
@@ -71,12 +78,10 @@ uint_least64_t
ptrdiff_t
wchar_t
wint_t
-float
-double
-bool
-_Bool
EOF
+push @probe_types, @extra_probe_types unless $ENV{FFI_PLATYPUS_NO_EXTRA_TYPES};
+
my $config_h = File::Spec->rel2abs( File::Spec->catfile( 'include', 'ffi_platypus_config.h' ) );
sub configure
@@ -140,7 +145,15 @@ sub configure
foreach my $type (@probe_types)
{
- my $size = $ac->check_sizeof_type($type);
+ my $size;
+ if($type =~ /^u?int(8|16|32|64)_t$/)
+ {
+ $size = $1 / 8;
+ }
+ else
+ {
+ $size = $ac->check_sizeof_type($type);
+ }
if($size)
{
if($type !~ /^(float|double|long double)$/)
diff --git a/inc/My/ModuleBuild.pm b/inc/My/ModuleBuild.pm
index 2eed9be..1c7a213 100644
--- a/inc/My/ModuleBuild.pm
+++ b/inc/My/ModuleBuild.pm
@@ -149,7 +149,7 @@ sub new
{
print "\n\n";
print "DEBUG_FAKE32:\n";
- print " + making Math::Int64 a prerequsite (not normally done on 64 bit Perls)\n";
+ print " + making Math::Int64 a prerequisite (not normally done on 64 bit Perls)\n";
print " + using Math::Int64's C API to manipulate 64 bit values (not normally done on 64 bit Perls)\n";
print "\n\n";
$self->config_data(config_debug_fake32 => 1);
diff --git a/inc/probe/bigendian64.c b/inc/probe/bigendian64.c
new file mode 100644
index 0000000..b6fc0e5
--- /dev/null
+++ b/inc/probe/bigendian64.c
@@ -0,0 +1,27 @@
+#include "ffi_platypus.h"
+
+unsigned char
+my_foo(void)
+{
+ return 0xaa;
+}
+
+int
+main(int argc, char *argv[])
+{
+ ffi_cif cif;
+ ffi_type *args[1];
+ void *values[1];
+ unsigned char bytes[8] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
+
+ if(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 0, &ffi_type_uint8, args) ==FFI_OK)
+ {
+ ffi_call(&cif, (void *) my_foo, &bytes, values);
+ if(bytes[7] == 0xaa)
+ {
+ return 0;
+ }
+ }
+
+ return 2;
+}
diff --git a/include/ffi_platypus.h b/include/ffi_platypus.h
index ef74786..31a7883 100644
--- a/include/ffi_platypus.h
+++ b/include/ffi_platypus.h
@@ -140,14 +140,28 @@ typedef union _ffi_pl_result {
const char *string;
int8_t sint8;
uint8_t uint8;
+#if defined FFI_PL_PROBE_BIGENDIAN
int8_t sint8_array[4];
uint8_t uint8_array[4];
+#elif defined FFI_PL_PROBE_BIGENDIAN64
+ int8_t sint8_array[8];
+ uint8_t uint8_array[8];
+#endif
int16_t sint16;
uint16_t uint16;
+#if defined FFI_PL_PROBE_BIGENDIAN
int16_t sint16_array[2];
uint16_t uint16_array[2];
+#elif defined FFI_PL_PROBE_BIGENDIAN64
+ int16_t sint16_array[4];
+ uint16_t uint16_array[4];
+#endif
int32_t sint32;
uint32_t uint32;
+#if defined FFI_PL_PROBE_BIGENDIAN64
+ uint32_t uint32_array[2];
+ int32_t sint32_array[2];
+#endif
int64_t sint64;
uint64_t uint64;
float xfloat;
@@ -223,11 +237,11 @@ typedef struct _ffi_pl_record_member {
#if defined(_MSC_VER)
#define Newx_or_alloca(ptr, count, type) ptr = _alloca(sizeof(type)*count)
-#define Safefree_or_alloca(ptr)
+#define Safefree_or_alloca(ptr)
#define HAVE_ALLOCA 1
#elif defined(HAVE_ALLOCA)
#define Newx_or_alloca(ptr, count, type) ptr = alloca(sizeof(type)*count)
-#define Safefree_or_alloca(ptr)
+#define Safefree_or_alloca(ptr)
#else
#define Newx_or_alloca(ptr, count, type) Newx(ptr, count, type)
#define Safefree_or_alloca(ptr) Safefree(ptr)
diff --git a/include/ffi_platypus_call.h b/include/ffi_platypus_call.h
index 79c0b11..9cc2674 100644
--- a/include/ffi_platypus_call.h
+++ b/include/ffi_platypus_call.h
@@ -94,7 +94,7 @@
else if(platypus_type == FFI_PL_POINTER)
{
void *ptr;
-
+
if(SvROK(arg)) /* TODO: and a scalar ref */
{
SV *arg2 = SvRV(arg);
@@ -567,7 +567,7 @@
{
platypus_type platypus_type;
platypus_type = self->argument_types[i]->platypus_type;
-
+
if(platypus_type == FFI_PL_POINTER)
{
void *ptr = ffi_pl_arguments_get_pointer(arguments, i);
@@ -792,38 +792,54 @@
switch(self->return_type->ffi_type->type)
{
case FFI_TYPE_UINT8:
-#ifdef FFI_PL_PROBE_BIGENDIAN
+#if defined FFI_PL_PROBE_BIGENDIAN
XSRETURN_UV(result.uint8_array[3]);
+#elif defined FFI_PL_PROBE_BIGENDIAN64
+ XSRETURN_UV(result.uint8_array[7]);
#else
XSRETURN_UV(result.uint8);
#endif
break;
case FFI_TYPE_SINT8:
-#ifdef FFI_PL_PROBE_BIGENDIAN
+#if defined FFI_PL_PROBE_BIGENDIAN
XSRETURN_IV(result.sint8_array[3]);
+#elif defined FFI_PL_PROBE_BIGENDIAN64
+ XSRETURN_IV(result.sint8_array[7]);
#else
XSRETURN_IV(result.sint8);
#endif
break;
case FFI_TYPE_UINT16:
-#ifdef FFI_PL_PROBE_BIGENDIAN
+#if defined FFI_PL_PROBE_BIGENDIAN
XSRETURN_UV(result.uint16_array[1]);
+#elif defined FFI_PL_PROBE_BIGENDIAN64
+ XSRETURN_UV(result.uint16_array[3]);
#else
XSRETURN_UV(result.uint16);
#endif
break;
case FFI_TYPE_SINT16:
-#ifdef FFI_PL_PROBE_BIGENDIAN
+#if defined FFI_PL_PROBE_BIGENDIAN
XSRETURN_IV(result.sint16_array[1]);
+#elif defined FFI_PL_PROBE_BIGENDIAN64
+ XSRETURN_IV(result.sint16_array[3]);
#else
XSRETURN_IV(result.sint16);
#endif
break;
case FFI_TYPE_UINT32:
+#if defined FFI_PL_PROBE_BIGENDIAN64
+ XSRETURN_UV(result.uint32_array[1]);
+#else
XSRETURN_UV(result.uint32);
+#endif
break;
case FFI_TYPE_SINT32:
+#if defined FFI_PL_PROBE_BIGENDIAN64
+ XSRETURN_IV(result.sint32_array[1]);
+#else
XSRETURN_IV(result.sint32);
+#endif
break;
case FFI_TYPE_UINT64:
#ifdef HAVE_IV_IS_64
@@ -1103,38 +1119,54 @@
switch(self->return_type->ffi_type->type)
{
case FFI_TYPE_UINT8:
-#ifdef FFI_PL_PROBE_BIGENDIAN
+#if defined FFI_PL_PROBE_BIGENDIAN
ret_in = newSVuv(result.uint8_array[3]);
+#elif defined FFI_PL_PROBE_BIGENDIAN64
+ ret_in = newSVuv(result.uint8_array[7]);
#else
ret_in = newSVuv(result.uint8);
#endif
break;
case FFI_TYPE_SINT8:
-#ifdef FFI_PL_PROBE_BIGENDIAN
+#if defined FFI_PL_PROBE_BIGENDIAN
ret_in = newSViv(result.sint8_array[3]);
+#elif defined FFI_PL_PROBE_BIGENDIAN64
+ ret_in = newSViv(result.sint8_array[7]);
#else
ret_in = newSViv(result.sint8);
#endif
break;
case FFI_TYPE_UINT16:
-#ifdef FFI_PL_PROBE_BIGENDIAN
+#if defined FFI_PL_PROBE_BIGENDIAN
ret_in = newSVuv(result.uint16_array[1]);
+#elif defined FFI_PL_PROBE_BIGENDIAN64
+ ret_in = newSVuv(result.uint16_array[3]);
#else
ret_in = newSVuv(result.uint16);
#endif
break;
case FFI_TYPE_SINT16:
-#ifdef FFI_PL_PROBE_BIGENDIAN
+#if defined FFI_PL_PROBE_BIGENDIAN
ret_in = newSViv(result.sint16_array[1]);
+#elif defined FFI_PL_PROBE_BIGENDIAN64
+ ret_in = newSViv(result.sint16_array[3]);
#else
ret_in = newSViv(result.sint16);
#endif
break;
case FFI_TYPE_UINT32:
+#if defined FFI_PL_PROBE_BIGENDIAN64
+ ret_in = newSVuv(result.uint32_array[1]);
+#else
ret_in = newSVuv(result.uint32);
+#endif
break;
case FFI_TYPE_SINT32:
+#if defined FFI_PL_PROBE_BIGENDIAN64
+ ret_in = newSViv(result.sint32_array[1]);
+#else
ret_in = newSViv(result.sint32);
+#endif
break;
case FFI_TYPE_UINT64:
#ifdef HAVE_IV_IS_64
diff --git a/lib/FFI/Platypus.pm b/lib/FFI/Platypus.pm
index dcf4d3d..13f145c 100644
--- a/lib/FFI/Platypus.pm
+++ b/lib/FFI/Platypus.pm
@@ -6,7 +6,7 @@ use 5.008001;
use Carp qw( croak );
# ABSTRACT: Write Perl bindings to non-Perl libraries with FFI. No XS required.
-our $VERSION = '0.42'; # VERSION
+our $VERSION = '0.42_01'; # TRIAL VERSION
# Platypus Man,
# Platypus Man,
@@ -530,7 +530,7 @@ sub _have_pm
package FFI::Platypus::Function;
-our $VERSION = '0.42'; # VERSION
+our $VERSION = '0.42_01'; # TRIAL VERSION
use overload '&{}' => sub {
my $ffi = shift;
@@ -551,7 +551,7 @@ use overload '&{}' => sub {
sub { $self->{code}->(@_) };
};
-our $VERSION = '0.42'; # VERSION
+our $VERSION = '0.42_01'; # TRIAL VERSION
sub new
{
@@ -580,13 +580,13 @@ sub get_data
package FFI::Platypus::ClosureData;
-our $VERSION = '0.42'; # VERSION
+our $VERSION = '0.42_01'; # TRIAL VERSION
package FFI::Platypus::Type;
use Carp qw( croak );
-our $VERSION = '0.42'; # VERSION
+our $VERSION = '0.42_01'; # TRIAL VERSION
sub new
{
@@ -680,7 +680,7 @@ FFI::Platypus - Write Perl bindings to non-Perl libraries with FFI. No XS requir
=head1 VERSION
-version 0.42
+version 0.42_01
=head1 SYNOPSIS
@@ -772,14 +772,10 @@ support and development (for contributors) information. If you are new
to Platypus or FFI, you may want to skip down to the
L<EXAMPLES|/EXAMPLES> to get a taste of what you can do with Platypus.
-Platypus also provides an declarative interface you may want to use
-instead of the object oriented interface called
-L<FFI::Platypus::Declare>.
-
Platypus has extensive documentation of types at L<FFI::Platypus::Type>
and its custom types API at L<FFI::Platypus::API>.
-=for stopwords ÃMQ
+=for stopwords ØMQ
=head1 CONSTRUCTORS
@@ -1163,19 +1159,20 @@ value from the L</abis> method above.
=head1 EXAMPLES
-Here are some examples. Some of them use the L<FFI::Platypus::Declare>
-interface, but the principles apply to the OO interface. These examples
+Here are some examples. These examples
are provided in full with the Platypus distribution in the "examples"
directory. There are also some more examples in L<FFI::Platypus::Type>
that are related to types.
=head2 Integer conversions
- use FFI::Platypus::Declare qw( int string );
+ use FFI::Platypus;
- lib undef;
- attach puts => [string] => int;
- attach atoi => [string] => int;
+ my $ffi = FFI::Platypus->new;
+ $ffi->lib(undef);
+
+ $ffi->attach(puts => ['string'] => 'int');
+ $ffi->attach(atoi => ['string'] => 'int');
puts(atoi('56'));
@@ -1188,20 +1185,21 @@ includes the standard c library.
=head2 libnotify
use FFI::CheckLib;
- use FFI::Platypus::Declare qw( void string opaque );
+ use FFI::Platypus;
# NOTE: I ported this from the like named eg/notify.pl that came with FFI::Raw
# and it seems to work most of the time, but also seems to SIGSEGV sometimes.
# I saw the same behavior in the FFI::Raw version, and am not really familiar
# with the libnotify API to say what is the cause. Patches welcome to fix it.
- lib find_lib_or_exit lib => 'notify';
+ my $ffi = FFI::Platypus->new;
+ $ffi->lib(find_lib_or_exit lib => 'notify');
- attach notify_init => [string] => void;
- attach notify_uninit => [] => void;
- attach [notify_notification_new => 'notify_new'] => [string,string,string] => opaque;
- attach [notify_notification_update => 'notify_update'] => [opaque, string, string, string] => void;
- attach [notify_notification_show => 'notify_show'] => [opaque, opaque] => void;
+ $ffi->attach(notify_init => ['string'] => 'void');
+ $ffi->attach(notify_uninit => [] => 'void');
+ $ffi->attach([notify_notification_new => 'notify_new'] => ['string', 'string', 'string'] => 'opaque');
+ $ffi->attach([notify_notification_update => 'notify_update'] => ['opaque', 'string', 'string', 'string'] => 'void');
+ $ffi->attach([notify_notification_show => 'notify_show'] => ['opaque', 'opaque'] => 'void');
notify_init('FFI::Platypus');
my $n = notify_new('','','');
@@ -1243,14 +1241,15 @@ We are really calling the C function C<notify_notification_new>.
=head2 Allocating and freeing memory
- use FFI::Platypus::Declare;
+ use FFI::Platypus;
use FFI::Platypus::Memory qw( malloc free memcpy );
+ my $ffi = FFI::Platypus->new;
my $buffer = malloc 12;
- memcpy $buffer, cast('string' => 'opaque', "hello there"), length "hello there\0";
+ memcpy $buffer, $ffi->cast('string' => 'opaque', "hello there"), length "hello there\0";
- print cast('opaque' => 'string', $buffer), "\n";
+ print $ffi->cast('opaque' => 'string', $buffer), "\n";
free $buffer;
@@ -1314,16 +1313,16 @@ structured data records).
=head2 libuuid
use FFI::CheckLib;
- use FFI::Platypus::Declare
- 'void',
- [ 'string(37)' => 'uuid_string' ],
- [ 'record(16)' => 'uuid_t' ];
+ use FFI::Platypus;
use FFI::Platypus::Memory qw( malloc free );
- lib find_lib_or_exit lib => 'uuid';
+ my $ffi = FFI::Platypus->new;
+ $ffi->lib(find_lib_or_exit lib => 'uuid');
+ $ffi->type('string(37)' => 'uuid_string');
+ $ffi->type('record(16)' => 'uuid_t');
- attach uuid_generate => [uuid_t] => void;
- attach uuid_unparse => [uuid_t,uuid_string] => void;
+ $ffi->attach(uuid_generate => ['uuid_t'] => 'void');
+ $ffi->attach(uuid_unparse => ['uuid_t','uuid_string'] => 'void');
my $uuid = "\0" x 16; # uuid_t
uuid_generate($uuid);
@@ -1345,11 +1344,13 @@ this case it is simply 16 bytes). We also know that the strings
=head2 puts and getpid
- use FFI::Platypus::Declare qw( string int );
+ use FFI::Platypus;
- lib undef;
- attach puts => [string] => int;
- attach getpid => [] => int;
+ my $ffi = FFI::Platypus->new;
+ $ffi->lib(undef);
+
+ $ffi->attach(puts => ['string'] => 'int');
+ $ffi->attach(getpid => [] => 'int');
puts(getpid());
@@ -1358,20 +1359,21 @@ C<getpid> is available on Unix type platforms.
=head2 Math library
- use FFI::Platypus::Declare qw( string int double );
+ use FFI::Platypus;
use FFI::CheckLib;
- lib undef;
- attach puts => [string] => int;
- attach fdim => [double,double] => double;
+ my $ffi = FFI::Platypus->new;
+ $ffi->lib(undef);
+ $ffi->attach(puts => ['string'] => 'int');
+ $ffi->attach(fdim => ['double','double'] => 'double');
puts(fdim(7.0, 2.0));
- attach cos => [double] => double;
+ $ffi->attach(cos => ['double'] => 'double');
puts(cos(2.0));
- attach fmax => [double, double] => double;
+ $ffi->attach(fmax => ['double', 'double'] => 'double');
puts(fmax(2.0,3.0));
@@ -1384,15 +1386,16 @@ use C<undef> as the library to find them.
=head2 Strings
- use FFI::Platypus::Declare qw( int string );
+ use FFI::Platypus;
- lib undef;
- attach puts => [string] => int;
- attach strlen => [string] => int;
+ my $ffi = FFI::Platypus->new;
+ $ffi->lib(undef);
+ $ffi->attach(puts => ['string'] => 'int');
+ $ffi->attach(strlen => ['string'] => 'int');
puts(strlen('somestring'));
- attach strstr => [string,string] => string;
+ $ffi->attach(strstr => ['string','string'] => 'string');
puts(strstr('somestring', 'string'));
@@ -1400,7 +1403,7 @@ use C<undef> as the library to find them.
puts(puts("lol"));
- attach strerror => [int] => string;
+ $ffi->attach(strerror => ['int'] => 'string');
puts(strerror(2));
@@ -1506,7 +1509,7 @@ just-in-time (JIT) compilation service for FFI.
print "recv_message = $recv_message\n";
};
-B<Discussion>: ÃMQ is a high-performance asynchronous messaging library.
+B<Discussion>: ØMQ is a high-performance asynchronous messaging library.
There are a few things to note here.
Firstly, sometimes there may be multiple versions of a library in the
@@ -1531,7 +1534,7 @@ the same, it is useful form of documentation that helps describe the
functionality of the interface.
Finally we attach the necessary functions, send and receive a message.
-If you are interested, there is a fully fleshed out ÃMQ Perl interface
+If you are interested, there is a fully fleshed out ØMQ Perl interface
implemented using FFI called L<ZMQ::FFI>.
=head2 libarchive
@@ -2014,7 +2017,7 @@ bit Perl as well.
DEBUG_FAKE32:
- + making Math::Int64 a prerequsite (not normally done on 64 bit Perls)
+ + making Math::Int64 a prerequisite (not normally done on 64 bit Perls)
+ using Math::Int64's C API to manipulate 64 bit values (not normally done on 64 bit Perls)
Created MYMETA.yml and MYMETA.json
@@ -2096,9 +2099,9 @@ C<PERL5LIB> path when you build Platypus. For example:
=over 4
-=item L<FFI::Platypus::Declare>
+=item L<NativeCall>
-Declarative interface to Platypus.
+Promising interface to Platypus inspired by Perl 6.
=item L<FFI::Platypus::Type>
diff --git a/lib/FFI/Platypus/API.pm b/lib/FFI/Platypus/API.pm
index 47037ef..1b4aacf 100644
--- a/lib/FFI/Platypus/API.pm
+++ b/lib/FFI/Platypus/API.pm
@@ -8,7 +8,7 @@ use base qw( Exporter );
our @EXPORT = grep /^arguments_/, keys %FFI::Platypus::API::;
# ABSTRACT: Platypus arguments and return value API for custom types
-our $VERSION = '0.42'; # VERSION
+our $VERSION = '0.42_01'; # TRIAL VERSION
1;
@@ -25,7 +25,7 @@ FFI::Platypus::API - Platypus arguments and return value API for custom types
=head1 VERSION
-version 0.42
+version 0.42_01
=head1 SYNOPSIS
diff --git a/lib/FFI/Platypus/Buffer.pm b/lib/FFI/Platypus/Buffer.pm
index 8f3db33..3839857 100644
--- a/lib/FFI/Platypus/Buffer.pm
+++ b/lib/FFI/Platypus/Buffer.pm
@@ -7,7 +7,7 @@ use base qw( Exporter );
our @EXPORT = qw( scalar_to_buffer buffer_to_scalar );
# ABSTRACT: Convert scalars to C buffers
-our $VERSION = '0.42'; # VERSION
+our $VERSION = '0.42_01'; # TRIAL VERSION
use constant _incantation =>
@@ -41,7 +41,7 @@ FFI::Platypus::Buffer - Convert scalars to C buffers
=head1 VERSION
-version 0.42
+version 0.42_01
=head1 SYNOPSIS
@@ -93,10 +93,6 @@ scalar.
Main Platypus documentation.
-=item L<FFI::Platypus::Declare>
-
-Declarative interface to Platypus.
-
=back
=head1 AUTHOR
diff --git a/lib/FFI/Platypus/Declare.pm b/lib/FFI/Platypus/Declare.pm
index c10bb6a..8576174 100644
--- a/lib/FFI/Platypus/Declare.pm
+++ b/lib/FFI/Platypus/Declare.pm
@@ -5,7 +5,7 @@ use warnings;
use FFI::Platypus;
# ABSTRACT: Declarative interface to FFI::Platypus
-our $VERSION = '0.42'; # VERSION
+our $VERSION = '0.42_01'; # TRIAL VERSION
our $ffi = {};
@@ -174,7 +174,7 @@ FFI::Platypus::Declare - Declarative interface to FFI::Platypus
=head1 VERSION
-version 0.42
+version 0.42_01
=head1 SYNOPSIS
@@ -187,6 +187,18 @@ version 0.42
=head1 DESCRIPTION
+This module is officially B<discouraged>. The idea was to provide a
+simpler declarative interface without the need of (directly) creating
+an L<FFI::Platypus> instance. In practice it is almost as complicated
+and makes it difficult to upgrade to the proper OO interface if the
+need arises. I have stopped using it mainly for this reason. It will
+remain as part of the Platypus core distribution to keep old code working,
+but you are encouraged to write new code using the OO interface.
+Alternatively, you can try the Perl 6 inspired L<NativeCall>, which
+provides most of the goals this module was intended for (that is
+a simple interface at the cost of some power), without much of the
+complexity. The remainder of this document describes the interface.
+
This module provides a declarative interface to L<FFI::Platypus>. It
provides a more concise interface at the cost of a little less power,
and a little more namespace pollution.
diff --git a/lib/FFI/Platypus/Lang/ASM.pm b/lib/FFI/Platypus/Lang/ASM.pm
index 4b0b4de..8584a94 100644
--- a/lib/FFI/Platypus/Lang/ASM.pm
+++ b/lib/FFI/Platypus/Lang/ASM.pm
@@ -4,7 +4,7 @@ use strict;
use warnings;
# ABSTRACT: Documentation and tools for using Platypus with the Assembly
-our $VERSION = '0.42'; # VERSION
+our $VERSION = '0.42_01'; # TRIAL VERSION
sub native_type_map
@@ -26,7 +26,7 @@ FFI::Platypus::Lang::ASM - Documentation and tools for using Platypus with the A
=head1 VERSION
-version 0.42
+version 0.42_01
=head1 SYNOPSIS
diff --git a/lib/FFI/Platypus/Lang/C.pm b/lib/FFI/Platypus/Lang/C.pm
index 3e2c77c..dc2972d 100644
--- a/lib/FFI/Platypus/Lang/C.pm
+++ b/lib/FFI/Platypus/Lang/C.pm
@@ -4,7 +4,7 @@ use strict;
use warnings;
# ABSTRACT: Documentation and tools for using Platypus with the C programming language
-our $VERSION = '0.42'; # VERSION
+our $VERSION = '0.42_01'; # TRIAL VERSION
sub native_type_map
@@ -27,7 +27,7 @@ FFI::Platypus::Lang::C - Documentation and tools for using Platypus with the C p
=head1 VERSION
-version 0.42
+version 0.42_01
=head1 SYNOPSIS
diff --git a/lib/FFI/Platypus/Lang/Win32.pm b/lib/FFI/Platypus/Lang/Win32.pm
index 17945ff..419d09f 100644
--- a/lib/FFI/Platypus/Lang/Win32.pm
+++ b/lib/FFI/Platypus/Lang/Win32.pm
@@ -5,7 +5,7 @@ use warnings;
use Config;
# ABSTRACT: Documentation and tools for using Platypus with the Windows API
-our $VERSION = '0.42'; # VERSION
+our $VERSION = '0.42_01'; # TRIAL VERSION
sub abi
@@ -187,7 +187,7 @@ FFI::Platypus::Lang::Win32 - Documentation and tools for using Platypus with the
=head1 VERSION
-version 0.42
+version 0.42_01
=head1 SYNOPSIS
diff --git a/lib/FFI/Platypus/Memory.pm b/lib/FFI/Platypus/Memory.pm
index dd7007a..6a4c409 100644
--- a/lib/FFI/Platypus/Memory.pm
+++ b/lib/FFI/Platypus/Memory.pm
@@ -6,7 +6,7 @@ use FFI::Platypus;
use base qw( Exporter );
# ABSTRACT: Memory functions for FFI
-our $VERSION = '0.42'; # VERSION
+our $VERSION = '0.42_01'; # TRIAL VERSION
our @EXPORT = qw( malloc free calloc realloc memcpy memset strdup );
@@ -46,7 +46,7 @@ FFI::Platypus::Memory - Memory functions for FFI
=head1 VERSION
-version 0.42
+version 0.42_01
=head1 SYNOPSIS
@@ -140,10 +140,6 @@ is slower.
Main Platypus documentation.
-=item L<FFI::Platypus::Declare>
-
-Declarative interface for Platypus.
-
=back
=head1 AUTHOR
diff --git a/lib/FFI/Platypus/Record.pm b/lib/FFI/Platypus/Record.pm
index 2bc8654..5f7bb53 100644
--- a/lib/FFI/Platypus/Record.pm
+++ b/lib/FFI/Platypus/Record.pm
@@ -10,7 +10,7 @@ use constant 1.32 ();
our @EXPORT = qw( record_layout );
# ABSTRACT: FFI support for structured records data
-our $VERSION = '0.42'; # VERSION
+our $VERSION = '0.42_01'; # TRIAL VERSION
sub record_layout
@@ -128,7 +128,7 @@ FFI::Platypus::Record - FFI support for structured records data
=head1 VERSION
-version 0.42
+version 0.42_01
=head1 SYNOPSIS
diff --git a/lib/FFI/Platypus/Record/TieArray.pm b/lib/FFI/Platypus/Record/TieArray.pm
index 6f1141f..a891cbc 100644
--- a/lib/FFI/Platypus/Record/TieArray.pm
+++ b/lib/FFI/Platypus/Record/TieArray.pm
@@ -5,7 +5,7 @@ use warnings;
use Carp qw( croak );
# ABSTRACT: Tied array interface for record array members
-our $VERSION = '0.42'; # VERSION
+our $VERSION = '0.42_01'; # TRIAL VERSION
sub TIEARRAY
@@ -62,7 +62,7 @@ FFI::Platypus::Record::TieArray - Tied array interface for record array members
=head1 VERSION
-version 0.42
+version 0.42_01
=head1 SYNOPSIS
diff --git a/lib/FFI/Platypus/Type.pod b/lib/FFI/Platypus/Type.pod
index f86b757..5287326 100644
--- a/lib/FFI/Platypus/Type.pod
+++ b/lib/FFI/Platypus/Type.pod
@@ -14,7 +14,7 @@ FFI::Platypus::Type - Defining types for FFI::Platypus
=head1 VERSION
-version 0.42
+version 0.42_01
=head1 SYNOPSIS
@@ -24,12 +24,6 @@ OO Interface:
my $ffi = FFI::Platypus->new;
$ffi->type('int' => 'my_int');
-Declarative interface:
-
- use FFI::Platypus::Declare
- qw( int void ),
- ['int' => 'my_int'];
-
=head1 DESCRIPTION
This document describes how to define types using L<FFI::Platypus>.
@@ -211,18 +205,18 @@ takes a character you want to use the perl L<ord|perlfunc#ord> function.
Here is an example that uses the standard libc C<isalpha>, C<isdigit>
type functions:
- use FFI::Platypus::Declare
- 'int',
- [int => 'character'];
+ use FFI::Platypus;
- lib undef;
+ my $ffi = FFI::Platypus->new;
+ $ffi->lib(undef);
+ $ffi->type('int' => 'character');
my @list = qw(
alnum alpha ascii blank cntrl digit lower print punct
space upper xdigit
);
- attach "is$_" => [character] => int for @list;
+ $ffi->attach("is$_" => ['character'] => 'int') for @list;
my $char = shift(@ARGV) || 'a';
@@ -247,11 +241,13 @@ things like C<wchar_t>, C<off_t>, C<wint_t>. You can use this script to
list all the integer types that L<FFI::Platypus> knows about, plus how
they are implemented.
- use FFI::Platypus::Declare;
+ use FFI::Platypus;
+
+ my $ffi = FFI::Platypus->new;
foreach my $type_name (sort FFI::Platypus->types)
{
- my $meta = type_meta $type_name;
+ my $meta = $ffi->type_meta($type_name);
next unless $meta->{element_type} eq 'int';
printf "%20s %s\n", $type_name, $meta->{ffi_type};
}
@@ -658,10 +654,11 @@ function these changes will be reflected when it returns to Perl space.
An example of using this is the Unix C<pipe> command which returns a
list of two file descriptors as an array.
- use FFI::Platypus::Declare qw( int );
+ use FFI::Platypus;
- lib undef;
- attach [pipe=>'mypipe'] => ['int[2]'] => int;
+ my $ffi = FFI::Platypus->new;
+ $ffi->lib(undef);
+ $ffi->attach([pipe=>'mypipe'] => ['int[2]'] => 'int');
my @fd = (0,0);
mypipe(\@fd);
@@ -745,43 +742,39 @@ as closure return types. Here is an example, with C code:
And the Perl code:
- use FFI::Platypus::Declare
- 'int', 'void', 'string',
- ['(int)->int' => 'closure_t'];
+ use FFI::Platypus;
- lib './closure.so';
- lib undef; # for puts
+ my $ffi = FFI::Platypus->new;
+ $ffi->lib('./closure.so');
+ $ffi->type('(int)->int' => 'closure_t');
- attach set_closure => [closure_t] => void;
- attach call_closure => [int] => int;
- attach puts => [string] => int;
+ $ffi->attach(set_closure => ['closure_t'] => 'void');
+ $ffi->attach(call_closure => ['int'] => 'int');
- my $closure1 = closure { $_[0] * 2 };
+ my $closure1 = $ffi->closure(sub { $_[0] * 2 });
set_closure($closure1);
- puts(call_closure(2)); # prints "4"
+ print call_closure(2), "\n"; # prints "4"
- my $closure2 = closure { $_[0] * 4 };
+ my $closure2 = $ffi->closure(sub { $_[0] * 4 });
set_closure($closure2);
- puts(call_closure(2)); # prints "8"
+ print call_closure(2), "\n"; # prints "8"
If you have a pointer to a function in the form of an C<opaque> type,
you can pass this in place of a closure type:
- use FFI::Platypus::Declare
- 'int', 'void', 'string',
- ['(int)->int' => 'closure_t'];
+ use FFI::Platypus;
- lib './closure.so';
- lib undef; # for puts
+ my $ffi = FFI::Platypus->new;
+ $ffi->lib('./closure.so');
+ $ffi->type('(int)->int' => 'closure_t');
- attach set_closure => [closure_t] => void;
- attach call_closure => [int] => int;
- attach puts => [string] => int;
+ $ffi->attach(set_closure => ['closure_t'] => 'void');
+ $ffi->attach(call_closure => ['int'] => 'int');
- my $closure = closure { $_[0] * 6 };
- my $opaque = cast closure_t => 'opaque', $closure;
+ my $closure = $ffi->closure(sub { $_[0] * 6 });
+ my $opaque = $ffi->cast(closure_t => 'opaque', $closure);
set_closure($opaque);
- puts(call_closure(2)); # prints "12"
+ print call_closure(2), "\n"; # prints "12"
The syntax for specifying a closure type is a list of comma separated
types in parentheticals followed by a narrow arrow C<-E<gt>>, followed
diff --git a/lib/FFI/Platypus/Type/PointerSizeBuffer.pm b/lib/FFI/Platypus/Type/PointerSizeBuffer.pm
index da9ecbb..ac30707 100644
--- a/lib/FFI/Platypus/Type/PointerSizeBuffer.pm
+++ b/lib/FFI/Platypus/Type/PointerSizeBuffer.pm
@@ -12,7 +12,7 @@ use FFI::Platypus::Buffer qw( scalar_to_buffer );
use FFI::Platypus::Buffer qw( buffer_to_scalar );
# ABSTRACT: Convert string scalar to a buffer as a pointer / size_t combination
-our $VERSION = '0.42'; # VERSION
+our $VERSION = '0.42_01'; # TRIAL VERSION
my @stack;
@@ -60,7 +60,7 @@ FFI::Platypus::Type::PointerSizeBuffer - Convert string scalar to a buffer as a
=head1 VERSION
-version 0.42
+version 0.42_01
=head1 SYNOPSIS
@@ -74,11 +74,12 @@ In your C code:
In your Platypus::FFI code:
- use FFI::Platypus::Declare
- 'void',
- [ '::PointerSizeBuffer' => 'buffer' ];
+ use FFI::Platypus;
- attach function_with_buffer => [buffer] => void;
+ my $ffi = FFI::Platypus->new;
+ $ffi->load_custom_type('::PointerSizeBuffer' => 'buffer');
+
+ $ffi->attach(function_with_buffer => ['buffer'] => 'void');
my $string = "content of buffer";
function_with_buffer($string);
@@ -98,10 +99,6 @@ pass in a string scalar as a pointer / size buffer pair.
Main Platypus documentation.
-=item L<FFI::Platypus::Declare>
-
-Declarative interface for Platypus.
-
=item L<FFI::Platypus::Type>
Platypus types documentation.
diff --git a/lib/FFI/Platypus/Type/StringPointer.pm b/lib/FFI/Platypus/Type/StringPointer.pm
index 5b3cfc8..6c7c6cb 100644
--- a/lib/FFI/Platypus/Type/StringPointer.pm
+++ b/lib/FFI/Platypus/Type/StringPointer.pm
@@ -7,7 +7,7 @@ use Scalar::Util qw( readonly );
use Config ();
# ABSTRACT: Convert a pointer to a string and back
-our $VERSION = '0.42'; # VERSION
+our $VERSION = '0.42_01'; # TRIAL VERSION
use constant _incantation =>
@@ -76,7 +76,7 @@ FFI::Platypus::Type::StringPointer - Convert a pointer to a string and back
=head1 VERSION
-version 0.42
+version 0.42_01
=head1 SYNOPSIS
@@ -95,12 +95,13 @@ In your C code:
In your Platypus::FFI code:
- use FFI::Platypus::Declare
- 'void',
- [ '::StringPointer' => 'string_pointer' ];
+ use FFI::Platypus;
- attach string_pointer_argument => [string_pointer] => void;
- attach string_pointer_return => [] => string_pointer;
+ my $ffi = FFI::Platypus->new;
+ $ffi->load_custom_type('::StringPointer' => 'string_pointer');
+
+ $ffi->attach(string_pointer_argument => ['string_pointer'] => 'void');
+ $ffi->attach(string_pointer_return => [] => 'string_pointer');
my $string = "foo";
@@ -123,10 +124,6 @@ strings.
Main Platypus documentation.
-=item L<FFI::Platypus::Declare>
-
-Declarative interface for Platypus.
-
=item L<FFI::Platypus::Type>
Platypus types documentation.
diff --git a/lib/Module/Build/FFI.pm b/lib/Module/Build/FFI.pm
index eb8a5e4..e1b465c 100644
--- a/lib/Module/Build/FFI.pm
+++ b/lib/Module/Build/FFI.pm
@@ -12,7 +12,7 @@ use Config;
use base qw( Module::Build );
# ABSTRACT: Build Perl extensions in C with FFI
-our $VERSION = '0.42'; # VERSION
+our $VERSION = '0.42_01'; # TRIAL VERSION
__PACKAGE__->add_property( ffi_libtest_dir =>
@@ -303,7 +303,7 @@ Module::Build::FFI - Build Perl extensions in C with FFI
=head1 VERSION
-version 0.42
+version 0.42_01
=head1 SYNOPSIS
@@ -334,16 +334,7 @@ Put your .c and .h files in C<ffi> (C<ffi/example.c>):
printf("hello world\n");
}
-Attach it to Perl in your main module (C<lib/Foo/Bar.pm>) using
-the declarative interface:
-
- package Foo::Bar;
-
- use FFI::Platypus::Declare qw( void );
-
- attach hello_world => [] => void;
-
-or use the OO interface:
+Attach it to Perl in your main module (C<lib/Foo/Bar.pm>):
package Foo::Bar;
@@ -388,10 +379,10 @@ can use to test your FFI module with. You can use FFI::CheckLib to
find the library from your test:
use Test::More;
- use FFI::Platypus::Declare;
+ use FFI::Platypus;
use FFI::CheckLib;
- lib find_lib lib => 'test', libpath => 'libtest';
+ FFI::Platypus->new->lib(find_lib lib => 'test', libpath => 'libtest');
[version 0.18]
diff --git a/t/00_diag.t b/t/00_diag.t
index 342a0bc..13bcc33 100644
--- a/t/00_diag.t
+++ b/t/00_diag.t
@@ -65,6 +65,10 @@ $post_diag = sub {
{
diag sprintf(" %-20s %s", $key, $abi->{$key});
}
+ spacer();
+ diag "Probes:";
+ my $probe = FFI::Platypus::ConfigData->config("probe");
+ diag sprintf(" %-20s %s", $_, $probe->{$_}) for keys %$probe;
};
diag "extended diagnostic failed: $@" if $@;
};
diff --git a/xs/closure.c b/xs/closure.c
index 971d5e0..eac39c4 100644
--- a/xs/closure.c
+++ b/xs/closure.c
@@ -196,38 +196,54 @@ ffi_pl_closure_call(ffi_cif *ffi_cif, void *result, void **arguments, void *user
switch(extra->return_type->ffi_type->type)
{
case FFI_TYPE_UINT8:
-#ifdef FFI_PL_PROBE_BIGENDIAN
+#if defined FFI_PL_PROBE_BIGENDIAN
((uint8_t*)result)[3] = SvUV(sv);
+#elif defined FFI_PL_PROBE_BIGENDIAN64
+ ((uint8_t*)result)[7] = SvUV(sv);
#else
*((uint8_t*)result) = SvUV(sv);
#endif
break;
case FFI_TYPE_SINT8:
-#ifdef FFI_PL_PROBE_BIGENDIAN
+#if defined FFI_PL_PROBE_BIGENDIAN
((int8_t*)result)[3] = SvIV(sv);
+#elif defined FFI_PL_PROBE_BIGENDIAN64
+ ((int8_t*)result)[7] = SvIV(sv);
#else
*((int8_t*)result) = SvIV(sv);
#endif
break;
case FFI_TYPE_UINT16:
-#ifdef FFI_PL_PROBE_BIGENDIAN
+#if defined FFI_PL_PROBE_BIGENDIAN
((uint16_t*)result)[1] = SvUV(sv);
+#elif defined FFI_PL_PROBE_BIGENDIAN64
+ ((uint16_t*)result)[3] = SvUV(sv);
#else
*((uint16_t*)result) = SvUV(sv);
#endif
break;
case FFI_TYPE_SINT16:
-#ifdef FFI_PL_PROBE_BIGENDIAN
+#if defined FFI_PL_PROBE_BIGENDIAN
((int16_t*)result)[1] = SvIV(sv);
+#elif defined FFI_PL_PROBE_BIGENDIAN64
+ ((int16_t*)result)[3] = SvIV(sv);
#else
*((int16_t*)result) = SvIV(sv);
#endif
break;
case FFI_TYPE_UINT32:
+#if defined FFI_PL_PROBE_BIGENDIAN64
+ ((uint32_t*)result)[1] = SvUV(sv);
+#else
*((uint32_t*)result) = SvUV(sv);
+#endif
break;
case FFI_TYPE_SINT32:
+#if defined FFI_PL_PROBE_BIGENDIAN64
+ ((int32_t*)result)[1] = SvIV(sv);
+#else
*((int32_t*)result) = SvIV(sv);
+#endif
break;
case FFI_TYPE_UINT64:
#ifdef HAVE_IV_IS_64
diff --git a/xt/release/eol.t b/xt/author/eol.t
similarity index 99%
rename from xt/release/eol.t
rename to xt/author/eol.t
index 3f2e816..21395b5 100644
--- a/xt/release/eol.t
+++ b/xt/author/eol.t
@@ -12,3 +12,5 @@ use File::Spec;
chdir(File::Spec->catdir($FindBin::Bin, File::Spec->updir, File::Spec->updir));
all_perl_files_ok(grep { -e $_ } qw( bin lib t Makefile.PL ));
+
+
diff --git a/xt/release/no_tabs.t b/xt/author/no_tabs.t
similarity index 99%
rename from xt/release/no_tabs.t
rename to xt/author/no_tabs.t
index 0a6d2b6..d62d42f 100644
--- a/xt/release/no_tabs.t
+++ b/xt/author/no_tabs.t
@@ -13,3 +13,4 @@ chdir(File::Spec->catdir($FindBin::Bin, File::Spec->updir, File::Spec->updir));
all_perl_files_ok( grep { -e $_ } qw( bin lib t Makefile.PL ));
+
diff --git a/xt/release/pod.t b/xt/author/pod.t
similarity index 99%
rename from xt/release/pod.t
rename to xt/author/pod.t
index 2603675..282ed97 100644
--- a/xt/release/pod.t
+++ b/xt/author/pod.t
@@ -13,3 +13,4 @@ chdir(File::Spec->catdir($FindBin::Bin, File::Spec->updir, File::Spec->updir));
all_pod_files_ok( grep { -e $_ } qw( bin lib ));
+
diff --git a/xt/release/pod_coverage.t b/xt/author/pod_coverage.t
similarity index 96%
rename from xt/release/pod_coverage.t
rename to xt/author/pod_coverage.t
index 07b26b1..bd70549 100644
--- a/xt/release/pod_coverage.t
+++ b/xt/author/pod_coverage.t
@@ -15,7 +15,7 @@ use FindBin;
use File::Spec;
my $config_filename = File::Spec->catfile(
- $FindBin::Bin, 'release.yml'
+ $FindBin::Bin, File::Spec->updir, File::Spec->updir, 'author.yml'
);
my $config;
@@ -72,3 +72,4 @@ foreach my $class (@classes)
};
}
+
diff --git a/xt/release/pod_spelling_common.t b/xt/author/pod_spelling_common.t
similarity index 86%
rename from xt/release/pod_spelling_common.t
rename to xt/author/pod_spelling_common.t
index ad8dffd..75b9f8d 100644
--- a/xt/release/pod_spelling_common.t
+++ b/xt/author/pod_spelling_common.t
@@ -12,7 +12,7 @@ use FindBin;
use File::Spec;
my $config_filename = File::Spec->catfile(
- $FindBin::Bin, 'release.yml'
+ $FindBin::Bin, File::Spec->updir, File::Spec->updir, 'author.yml'
);
my $config;
@@ -23,5 +23,7 @@ plan skip_all => 'disabled' if $config->{pod_spelling_common}->{skip};
chdir(File::Spec->catdir($FindBin::Bin, File::Spec->updir, File::Spec->updir));
-# FIXME test files in bin too.
+# TODO: test files in bin too.
all_pod_files_ok;
+
+
diff --git a/xt/release/pod_spelling_system.t b/xt/author/pod_spelling_system.t
similarity index 92%
rename from xt/release/pod_spelling_system.t
rename to xt/author/pod_spelling_system.t
index 3773353..0c24c58 100644
--- a/xt/release/pod_spelling_system.t
+++ b/xt/author/pod_spelling_system.t
@@ -13,7 +13,7 @@ use FindBin;
use File::Spec;
my $config_filename = File::Spec->catfile(
- $FindBin::Bin, 'release.yml'
+ $FindBin::Bin, File::Spec->updir, File::Spec->updir, 'author.yml'
);
my $config;
@@ -25,10 +25,7 @@ plan skip_all => 'disabled' if $config->{pod_spelling_system}->{skip};
chdir(File::Spec->catdir($FindBin::Bin, File::Spec->updir, File::Spec->updir));
add_stopwords(@{ $config->{pod_spelling_system}->{stopwords} });
-add_stopwords(<DATA>);
-all_pod_files_spelling_ok;
-
-__DATA__
+add_stopwords(qw(
Plicease
stdout
stderr
@@ -99,3 +96,7 @@ OpenVMS
URI
URL
CGI
+));
+all_pod_files_spelling_ok;
+
+
diff --git a/xt/release/strict.t b/xt/author/strict.t
similarity index 64%
rename from xt/release/strict.t
rename to xt/author/strict.t
index 2dbad08..5bbb07b 100644
--- a/xt/release/strict.t
+++ b/xt/author/strict.t
@@ -11,5 +11,12 @@ use File::Spec;
chdir(File::Spec->catdir($FindBin::Bin, File::Spec->updir, File::Spec->updir));
+unshift @Test::Strict::MODULES_ENABLING_STRICT,
+ 'sips',
+ 'Test2::Bundle::SIPS',
+ 'Test2::Bundle::Extended';
+note "enabling strict = $_" for @Test::Strict::MODULES_ENABLING_STRICT;
+
all_perl_files_ok( grep { -e $_ } qw( bin lib t Makefile.PL ));
+
diff --git a/xt/release/version.t b/xt/author/version.t
similarity index 93%
rename from xt/release/version.t
rename to xt/author/version.t
index c3d96c4..31dfc98 100644
--- a/xt/release/version.t
+++ b/xt/author/version.t
@@ -28,7 +28,7 @@ plan skip_all => "test not built yet (run dzil test)"
|| -e dir( $FindBin::Bin)->parent->parent->file('Build.PL');
my $config_filename = File::Spec->catfile(
- $FindBin::Bin, 'release.yml'
+ $FindBin::Bin, File::Spec->updir, File::Spec->updir, 'author.yml'
);
my $config;
@@ -42,3 +42,4 @@ if($config->{version}->{dir})
version_all_ok($config->{version}->{dir} ? ($config->{version}->{dir}) : ());
done_testing;
+
diff --git a/xt/release/changes.t b/xt/release/changes.t
index 88cf462..24c81ca 100644
--- a/xt/release/changes.t
+++ b/xt/release/changes.t
@@ -25,3 +25,5 @@ do {
changes_file_ok;
done_testing;
+
+
diff --git a/xt/release/fixme.t b/xt/release/fixme.t
index 9dac4c6..dedc7f3 100644
--- a/xt/release/fixme.t
+++ b/xt/release/fixme.t
@@ -17,3 +17,4 @@ run_tests(
warn => 1,
);
+
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-perl/packages/libffi-platypus-perl.git
More information about the Pkg-perl-cvs-commits
mailing list