X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=gitmo%2FMouse.git;a=blobdiff_plain;f=lib%2FMouse%2FMeta%2FClass.pm;h=99e0c6d6b6da5f705831889259455a8f0de1b218;hp=8183a969b634ea1c0b84467391ce0416fc4eee56;hb=e058b279f94cfd76ca59d7972209e1b346492db9;hpb=4e7e3250fdc8eeccfd656270b40f6aa9817da9a9 diff --git a/lib/Mouse/Meta/Class.pm b/lib/Mouse/Meta/Class.pm index 8183a96..99e0c6d 100644 --- a/lib/Mouse/Meta/Class.pm +++ b/lib/Mouse/Meta/Class.pm @@ -3,16 +3,14 @@ use Mouse::Util qw/:meta get_linear_isa not_supported/; # enables strict and war use Scalar::Util qw/blessed weaken/; -use Mouse::Meta::Method::Constructor; -use Mouse::Meta::Method::Destructor; use Mouse::Meta::Module; our @ISA = qw(Mouse::Meta::Module); -sub method_metaclass() { 'Mouse::Meta::Method' } -sub attribute_metaclass() { 'Mouse::Meta::Attribute' } +sub method_metaclass; +sub attribute_metaclass; -sub constructor_class(); # XS -sub destructor_class() { 'Mouse::Meta::Method::Destructor' } +sub constructor_class; +sub destructor_class; sub _construct_meta { my($class, %args) = @_; @@ -200,13 +198,17 @@ sub make_immutable { $self->{is_immutable}++; if ($args{inline_constructor}) { + my $c = $self->constructor_class; + Mouse::Util::load_class($c); $self->add_method($args{constructor_name} => - $self->constructor_class->_generate_constructor($self, \%args)); + $c->_generate_constructor($self, \%args)); } if ($args{inline_destructor}) { + my $c = $self->destructor_class; + Mouse::Util::load_class($c); $self->add_method(DESTROY => - $self->destructor_class->_generate_destructor($self, \%args)); + $c->_generate_destructor($self, \%args)); } # Moose's make_immutable returns true allowing calling code to skip setting an explicit true value @@ -408,7 +410,7 @@ Mouse::Meta::Class - The Mouse class metaclass =head1 VERSION -This document describes Mouse version 0.40_05 +This document describes Mouse version 0.40_06 =head1 METHODS