/usr/local/CPAN/Wx-Perl-Packager/Wx/Perl/Packager/Mini.pm
###################################################################################
# Distribution Wx::Perl::Packager
# File Wx/Perl/Packager/Mini.pm
# Description: Overload Wx startup
# File Revision: $Id: Mini.pm 48 2010-04-25 00:26:34Z $
# License: This program is free software; you can redistribute it and/or
# modify it under the same terms as Perl itself
# Copyright: Copyright (c) 2006 - 2010 Mark Dootson
###################################################################################
package Wx::Perl::Packager::Mini;
use Carp;
our $VERSION = '0.27';
#########################################################################################
package
Wx;
no warnings;
sub _start {
warnings;
&Wx::_init_binary_loader;
my $_xs_version = $Wx::XS_VERSION;
if ( my $handler = $Wx::Perl::Packager::handler ) {
my $result = Wx::Perl::Packager::Mini::XSLoader::loadwx($handler, 'Wx', $_xs_version);
Wx::wx_boot( 'Wx', $_xs_version ) if !$result;
} else {
Wx::wx_boot( 'Wx', $_xs_version );
}
Wx::_boot_Constant( 'Wx', $_xs_version );
Wx::_boot_GDI( 'Wx', $_xs_version );
Wx::Load();
}
package Wx::Perl::Packager::Mini::XSLoader;
our $VERSION = '0.27';
sub loadwx {
package
DynaLoader;
my $wxloadhandler = shift;
my $file = $wxloadhandler->get_module_core_load_path('wx');
return 0 unless( $file && -f $file );
$wxloadhandler->debug_print('Internal XSLoader used for Wx');
#------------------------------------------
# From XSLoader
#------------------------------------------
my($module) = @_;
my $boots = "$module\::bootstrap";
my $bootname = "boot_$module";
$bootname =~ s/\W/_/g;
@DynaLoader::dl_require_symbols = ($bootname);
my $boot_symbol_ref;
my $libref = dl_load_file($file, 0) or do {
Carp::croak("Can't load '$file' for module $module: " . dl_error());
};
push(@DynaLoader::dl_librefs,$libref); # record loaded object
my @unresolved = dl_undef_symbols();
if (@unresolved) {
Carp::carp("Undefined symbols present after loading $file: @unresolved\n");
}
$boot_symbol_ref = dl_find_symbol($libref, $bootname) or do {
Carp::croak("Can't find '$bootname' symbol in $file\n");
};
push(@DynaLoader::dl_modules, $module); # record loaded module
my $xs = dl_install_xsub($boots, $boot_symbol_ref, $file);
# See comment block above
push(@DynaLoader::dl_shared_objects, $file); # record files loaded
return &$xs(@_);
}
1;