Affix
view release on metacpan or search on metacpan
lib/Affix.pm view on Meta::CPAN
package Affix v1.0.9 { # 'FFI' is my middle name!
#~ |-----------------------------------|-----------------------------------||
#~ |--------------------------4---5~---|--4--------------------------------||
#~ |--7~\-----4---44-/777--------------|------7/4~-------------------------||
#~ |-----------------------------------|-----------------------------------||
use v5.40;
use Exporter qw[import];
use vars qw[@EXPORT_OK @EXPORT %EXPORT_TAGS];
use warnings::register qw[Type];
no warnings qw[experimental::try];
use Carp qw[];
use Config qw[%Config];
use File::Spec::Functions qw[rel2abs canonpath curdir path catdir];
use File::Basename qw[basename dirname];
use File::Find qw[find];
use File::Temp qw[tempdir];
my $okay = 0;
BEGIN {
use XSLoader;
$DynaLoad::dl_debug = $DynaLoad::dl_debug = 1;
$okay = XSLoader::load();
my $platform
= 'Affix::Platform::' .
( ( $^O eq 'MSWin32' ) ? 'Windows' :
$^O eq 'darwin' ? 'MacOS' :
( $^O eq 'freebsd' || $^O eq 'openbsd' || $^O eq 'netbsd' || $^O eq 'dragonfly' ) ? 'BSD' :
'Unix' );
#~ warn $platform;
#~ use base $platform;
eval 'use ' . $platform . ' qw[:all];';
$@ && die $@;
our @ISA = ($platform);
}
push @{ $EXPORT_TAGS{lib} }, qw[libm libc];
$EXPORT_TAGS{types} = [
qw[ typedef
Void Bool
Char UChar SChar WChar
Short UShort
Int UInt
Long ULong
LongLong ULongLong
Float16 Float Double LongDouble
Int8 SInt8 UInt8 Int16 SInt16 UInt16 Int32 SInt32 UInt32 Int64 SInt64 UInt64 Int128 SInt128 UInt128
Float32 Float64
Size_t SSize_t
String WString
Pointer Array Live Struct Union Enum Callback CodeRef Complex Vector Live
ThisCall attach_destructor
Packed VarArgs
SV
File PerlIO
StringList
Buffer SockAddr
M256 M256d M512 M512d M512i
]
];
{
my %seen;
push @{ $EXPORT_TAGS{default} }, grep { !$seen{$_}++ } @{ $EXPORT_TAGS{$_} } for qw[core types lib];
}
{
my %seen;
push @{ $EXPORT_TAGS{all} }, grep { !$seen{$_}++ } @{ $EXPORT_TAGS{$_} } for keys %EXPORT_TAGS;
}
#
@EXPORT = sort @{ $EXPORT_TAGS{default} }; # XXX: Don't do this...
@EXPORT_OK = sort @{ $EXPORT_TAGS{all} };
#
sub libm() { CORE::state $m //= find_library('m'); $m }
sub libc() { CORE::state $c //= find_library('c'); $c }
sub attach_destructor ( $pin, $destructor, $lib //= () ) {
Affix::_attach_destructor( $pin, $destructor, $lib );
}
#
our $OS = $^O;
my $is_win = $OS eq 'MSWin32';
my $is_mac = $OS eq 'darwin';
( run in 2.410 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )