Base.pm 1.1 KB

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