Implement get_all_attributes in XS
[gitmo/Mouse.git] / lib / Mouse / Meta / Class.pm
index 5aab15e..eb0aadc 100644 (file)
@@ -17,9 +17,9 @@ sub destructor_class()    { 'Mouse::Meta::Method::Destructor'  }
 sub _construct_meta {
     my($class, %args) = @_;
 
-    $args{attributes} ||= {};
-    $args{methods}    ||= {};
-    $args{roles}      ||= [];
+    $args{attributes} = {};
+    $args{methods}    = {};
+    $args{roles}      = [];
 
     $args{superclasses} = do {
         no strict 'refs';
@@ -56,7 +56,7 @@ sub superclasses {
         foreach my $super(@_){
             Mouse::Util::load_class($super);
             my $meta = Mouse::Util::get_metaclass_by_name($super);
-            if(Mouse::Util::TypeConstraints::_is_a_metarole($meta)){
+            if(Mouse::Util::is_a_metarole($meta)){
                 $self->throw_error("You cannot inherit from a Mouse Role ($super)");
             }
         }
@@ -154,23 +154,6 @@ sub compute_all_applicable_attributes {
     return shift->get_all_attributes(@_)
 }
 
-sub get_all_attributes {
-    my $self = shift;
-    my (@attr, %seen);
-
-    for my $class ($self->linearized_isa) {
-        my $meta = Mouse::Util::get_metaclass_by_name($class)
-            or next;
-
-        for my $name ($meta->get_attribute_list) {
-            next if $seen{$name}++;
-            push @attr, $meta->get_attribute($name);
-        }
-    }
-
-    return @attr;
-}
-
 sub linearized_isa;
 
 sub new_object {
@@ -479,7 +462,7 @@ Mouse::Meta::Class - The Mouse class metaclass
 
 =head1 VERSION
 
-This document describes Mouse version 0.40_03
+This document describes Mouse version 0.40_05
 
 =head1 METHODS