754fb90e6f10ab7b577084e79c532e2c519b5ac0
[libwww-opensearch-perl.git] / inc / Module / Install / Base.pm
1 #line 1
2 package Module::Install::Base;
3
4 use strict 'vars';
5 use vars qw{$VERSION};
6 BEGIN {
7         $VERSION = '0.97';
8 }
9
10 # Suspend handler for "redefined" warnings
11 BEGIN {
12         my $w = $SIG{__WARN__};
13         $SIG{__WARN__} = sub { $w };
14 }
15
16 #line 42
17
18 sub 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
31 sub AUTOLOAD {
32         local $@;
33         my $func = eval { shift->_top->autoload } or return;
34         goto &$func;
35 }
36
37 #line 75
38
39 sub _top {
40         $_[0]->{_top};
41 }
42
43 #line 90
44
45 sub admin {
46         $_[0]->_top->{admin}
47         or
48         Module::Install::Base::FakeAdmin->new;
49 }
50
51 #line 106
52
53 sub is_admin {
54         ! $_[0]->admin->isa('Module::Install::Base::FakeAdmin');
55 }
56
57 sub DESTROY {}
58
59 package Module::Install::Base::FakeAdmin;
60
61 use vars qw{$VERSION};
62 BEGIN {
63         $VERSION = $Module::Install::Base::VERSION;
64 }
65
66 my $fake;
67
68 sub new {
69         $fake ||= bless(\@_, $_[0]);
70 }
71
72 sub AUTOLOAD {}
73
74 sub DESTROY {}
75
76 # Restore warning handler
77 BEGIN {
78         $SIG{__WARN__} = $SIG{__WARN__}->();
79 }
80
81 1;
82
83 #line 159