1#line 1
2package Module::Install::Base;
3
4use strict 'vars';
5use vars qw{$VERSION};
6BEGIN {
7	$VERSION = '1.01';
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