ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/AnyEvent/lib/AnyEvent.pm
(Generate patch)

Comparing AnyEvent/lib/AnyEvent.pm (file contents):
Revision 1.2 by root, Thu Dec 1 18:56:18 2005 UTC vs.
Revision 1.4 by root, Thu Dec 1 22:04:50 2005 UTC

52 52
53no warnings; 53no warnings;
54use strict 'vars'; 54use strict 'vars';
55use Carp; 55use Carp;
56 56
57our $VERSION = 0.1; 57our $VERSION = 0.2;
58our $MODEL; 58our $MODEL;
59 59
60our $AUTOLOAD; 60our $AUTOLOAD;
61our @ISA; 61our @ISA;
62 62
65 [Event => Event::], 65 [Event => Event::],
66 [Glib => Glib::], 66 [Glib => Glib::],
67 [Tk => Tk::], 67 [Tk => Tk::],
68); 68);
69 69
70our %method = map +($_ => 1), qw(io timer condvar broadcast wait cancel DESTROY);
71
70sub AUTOLOAD { 72sub AUTOLOAD {
71 $AUTOLOAD =~ s/.*://; 73 $AUTOLOAD =~ s/.*://;
74
75 $method{$AUTOLOAD}
76 or croak "$AUTOLOAD: not a valid method for AnyEvent objects";
72 77
73 unless ($MODEL) { 78 unless ($MODEL) {
74 # check for already loaded models 79 # check for already loaded models
75 for (@models) { 80 for (@models) {
76 my ($model, $package) = @$_; 81 my ($model, $package) = @$_;
77 if (scalar keys %{ *{"$package\::"} }) { 82 if (scalar keys %{ *{"$package\::"} }) {
78 eval "require AnyEvent::Impl::$model" 83 eval "require AnyEvent::Impl::$model";
79 or die;
80
81 last if $MODEL; 84 last if $MODEL;
82 } 85 }
83 } 86 }
84 87
85 unless ($MODEL) { 88 unless ($MODEL) {
86 # try to load a model 89 # try to load a model
87 90
88 for (@models) { 91 for (@models) {
89 my ($model, $package) = @$_; 92 my ($model, $package) = @$_;
90 eval "require AnyEvent::Impl::$model" 93 eval "require AnyEvent::Impl::$model";
91 or die;
92
93 last if $MODEL; 94 last if $MODEL;
94 } 95 }
95 96
96 $MODEL 97 $MODEL
97 or die "No event module selected for AnyEvent and autodetect failed. Install any one of these modules: Coro, Event, Glib or Tk."; 98 or die "No event module selected for AnyEvent and autodetect failed. Install any one of these modules: Coro, Event, Glib or Tk.";

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines