SDL2-FFI
view release on metacpan or search on metacpan
lib/SDL2/FFI.pm view on Meta::CPAN
package SDL2::FFI 0.08 {
use lib '../lib', 'lib';
# ABSTRACT: FFI Wrapper for SDL (Simple DirectMedia Layer) Development Library
use strict;
use warnings;
use experimental 'signatures';
use base 'Exporter::Tiny';
use SDL2::Utils;
our %EXPORT_TAGS;
CORE::state $SDL_ASSERT_LEVEL = 2;
sub SDL_ASSERT_LEVEL { $SDL_ASSERT_LEVEL //= 2; $SDL_ASSERT_LEVEL; }
sub _exporter_validate_opts {
my $class = shift;
my ($globals) = @_;
if ( $globals->{'assert=0'} ) { $SDL_ASSERT_LEVEL = 0 }
elsif ( $globals->{'assert=1'} ) { $SDL_ASSERT_LEVEL = 1 }
elsif ( $globals->{'assert=2'} ) { $SDL_ASSERT_LEVEL = 2 }
elsif ( $globals->{'assert=3'} ) { $SDL_ASSERT_LEVEL = 3 }
#...; # do stuff here
#use Data::Dump;
#ddx $globals;
$class->SUPER::_exporter_validate_opts(@_);
}
my $platform = $^O; # https://perldoc.perl.org/perlport#PLATFORMS
my $Windows = !!( $platform eq 'MSWin32' );
#
load_lib('SDL2');
#
require SDL2::stdinc;
require SDL2::assert; # Enable with use var like C<use SDL2 -assert=3;>
require SDL2::atomic;
require SDL2::rwops; # Does not belong here?
require SDL2::audio;
require SDL2::clipboard;
require SDL2::cpuinfo;
require SDL2::error;
require SDL2::events;
require SDL2::filesystem;
require SDL2::gamecontroller;
require SDL2::haptic;
require SDL2::hints;
require SDL2::joystick;
require SDL2::loadso;
require SDL2::log;
require SDL2::messagebox;
require SDL2::metal;
require SDL2::mutex;
require SDL2::power;
require SDL2::render;
require SDL2::rwops;
require SDL2::sensor;
require SDL2::shape;
require SDL2::system;
require SDL2::thread;
require SDL2::timer;
require SDL2::version;
require SDL2::video;
require SDL2::locale;
require SDL2::misc;
#
require SDL2::platform; # We bypass config.h to get platform.h
require SDL2::syswm;
#
#
define init => [
[ SDL_INIT_TIMER => 0x00000001 ],
[ SDL_INIT_AUDIO => 0x00000010 ],
[ SDL_INIT_VIDEO => 0x00000020 ],
[ SDL_INIT_JOYSTICK => 0x00000200 ],
[ SDL_INIT_HAPTIC => 0x00001000 ],
[ SDL_INIT_GAMECONTROLLER => 0x00002000 ],
[ SDL_INIT_EVENTS => 0x00004000 ],
[ SDL_INIT_SENSOR => 0x00008000 ],
[ SDL_INIT_NOPARACHUTE => 0x00100000 ],
[ SDL_INIT_EVERYTHING => sub {
SDL_INIT_TIMER() | SDL_INIT_AUDIO() | SDL_INIT_VIDEO() | SDL_INIT_EVENTS()
| SDL_INIT_JOYSTICK() | SDL_INIT_HAPTIC() | SDL_INIT_GAMECONTROLLER()
| SDL_INIT_SENSOR();
}
]
];
# https://github.com/libsdl-org/SDL/blob/main/include/SDL.h
push @{ $EXPORT_TAGS{default} }, qw[:init];
attach
init => {
SDL_Init => [ ['uint32'] => 'int' ],
SDL_InitSubSystem => [ ['uint32'] => 'int' ],
SDL_QuitSubSystem => [ ['uint32'] ],
SDL_WasInit => [ ['uint32'] => 'uint32' ],
SDL_Quit => [ [] ],
},
unknown => { SDL_SetMainReady => [ [] => 'void' ] };
( run in 2.843 seconds using v1.01-cache-2.11-cpan-2398b32b56e )