1#line 1 2package Module::Install::Base; 3 4use strict 'vars'; 5use vars qw{$VERSION}; 6BEGIN { 7 $VERSION = '1.19'; 8} 9 10# Suspend handler for "redefined" warnings 11BEGIN { 12 my $w = $SIG{__WARN__}; 13 $SIG{__WARN__} = sub { $w }; 14} 15 16#line 42 17 18sub new { 19 my $class = shift; 20 unless ( defined &{"${class}::call"} ) { 21 *{"${class}::call"} = sub { shift->_top->call(@_) }; 22 } 23 unless ( defined &{"${class}::load"} ) { 24 *{"${class}::load"} = sub { shift->_top->load(@_) }; 25 } 26 bless { @_ }, $class; 27} 28 29#line 61 30 31sub AUTOLOAD { 32 local $@; 33 my $func = eval { shift->_top->autoload } or return; 34 goto &$func; 35} 36 37#line 75 38 39sub _top { 40 $_[0]->{_top}; 41} 42 43#line 90 44 45sub admin { 46 $_[0]->_top->{admin} 47 or 48 Module::Install::Base::FakeAdmin->new; 49} 50 51#line 106 52 53sub is_admin { 54 ! $_[0]->admin->isa('Module::Install::Base::FakeAdmin'); 55} 56 57sub DESTROY {} 58 59package Module::Install::Base::FakeAdmin; 60 61use vars qw{$VERSION}; 62BEGIN { 63 $VERSION = $Module::Install::Base::VERSION; 64} 65 66my $fake; 67 68sub new { 69 $fake ||= bless(\@_, $_[0]); 70} 71 72sub AUTOLOAD {} 73 74sub DESTROY {} 75 76# Restore warning handler 77BEGIN { 78 $SIG{__WARN__} = $SIG{__WARN__}->(); 79} 80 811; 82 83#line 159 84