X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FMouse%2FMeta%2FClass.pm;h=73264d12ca511c847411e677d5d851119f69ee6b;hb=8fcbe7fb24ac710b860595ae1ecea066c3add1f5;hp=0e3c34afda3c4eb3f8f341688a5857278212209c;hpb=60e2164ad9cf3ad7605fda95d3fa5be750e6d720;p=gitmo%2FMouse.git diff --git a/lib/Mouse/Meta/Class.pm b/lib/Mouse/Meta/Class.pm index 0e3c34a..73264d1 100644 --- a/lib/Mouse/Meta/Class.pm +++ b/lib/Mouse/Meta/Class.pm @@ -3,10 +3,10 @@ package Mouse::Meta::Class; use strict; use warnings; -use Scalar::Util 'blessed'; +use Mouse::Util qw/get_linear_isa blessed/; use Carp 'confess'; -use MRO::Compat; +use Class::Method::Modifiers (); do { my %METACLASS_CACHE; @@ -93,7 +93,7 @@ sub get_attribute_map { $_[0]->{attributes} } sub has_attribute { exists $_[0]->{attributes}->{$_[1]} } sub get_attribute { $_[0]->{attributes}->{$_[1]} } -sub linearized_isa { @{ mro::get_linear_isa($_[0]->name) } } +sub linearized_isa { @{ get_linear_isa($_[0]->name) } } sub clone_object { my $class = shift; @@ -126,6 +126,39 @@ sub clone_instance { } sub make_immutable {} +sub is_immutable { 0 } + +sub attribute_metaclass { "Mouse::Meta::Class" } + +sub add_before_method_modifier { + my ($self, $name, $code) = @_; + Class::Method::Modifiers::_install_modifier( + $self->name, + 'before', + $name, + $code, + ); +} + +sub add_around_method_modifier { + my ($self, $name, $code) = @_; + Class::Method::Modifiers::_install_modifier( + $self->name, + 'around', + $name, + $code, + ); +} + +sub add_after_method_modifier { + my ($self, $name, $code) = @_; + Class::Method::Modifiers::_install_modifier( + $self->name, + 'after', + $name, + $code, + ); +} 1;