Merge branch 'topic/unified-method-generation-w-xs' of gitmo@moose.perl.org:Class...
gfx [Mon, 31 Aug 2009 07:46:59 +0000 (16:46 +0900)]
Conflicts:
lib/Class/MOP/Class.pm
lib/Class/MOP/Instance.pm
lib/Class/MOP/Method/Accessor.pm
lib/Class/MOP/Method/Constructor.pm
xs/Class.xs
xs/MOP.xs

lib/Class/MOP/Class.pm
lib/Class/MOP/Instance.pm
lib/Class/MOP/Method/Accessor.pm
lib/Class/MOP/Method/Constructor.pm
xs/Class.xs

index e6bfe19..ae730a3 100644 (file)
@@ -322,6 +322,7 @@ sub create {
     return $meta;
 }
 
+
 # Instance Construction & Cloning
 
 sub new_object {
index a27024b..8cfeaab 100644 (file)
@@ -75,6 +75,15 @@ sub _class_name { $_[0]->{_class_name} ||= $_[0]->associated_metaclass->name }
 #    bless {}, $self->_class_name;
 #}
 
+# for compatibility
+sub bless_instance_structure {
+    Carp::cluck('The bless_instance_structure method is deprecated.'
+        . " It will be removed in a future release.\n");
+
+    my ($self, $instance_structure) = @_;
+    bless $instance_structure, $self->_class_name;
+}
+
 sub clone_instance {
     my ($self, $instance) = @_;
     bless { %$instance }, $self->_class_name;
index 1c7b8cd..fca0e8e 100644 (file)
@@ -98,6 +98,69 @@ sub _generate_accessor_method {
     }
 
     return $self->_generate_accessor_method_basic();
+<<<<<<< HEAD:lib/Class/MOP/Method/Accessor.pm
+}
+
+sub _generate_reader_method {
+    my ($self) = @_;
+
+    if(my $xs = $self->associated_metaclass->instance_metaclass->can_xs()){
+        return $self->_generate_reader_method_xs($xs);
+    }
+
+    if($self->is_inline){
+        return $self->_generate_reader_method_inline();
+    }
+
+    return $self->_generate_reader_method_basic();
+}
+
+sub _generate_writer_method {
+    my ($self) = @_;
+
+    if(my $xs = $self->associated_metaclass->instance_metaclass->can_xs()){
+        return $self->_generate_writer_method_xs($xs);
+    }
+
+    if($self->is_inline){
+        return $self->_generate_writer_method_inline();
+    }
+
+    return $self->_generate_writer_method_basic();
+}
+
+sub _generate_clearer_method {
+    my ($self) = @_;
+
+    if(my $xs = $self->associated_metaclass->instance_metaclass->can_xs()){
+        return $self->_generate_clearer_method_xs($xs);
+    }
+
+    if($self->is_inline){
+        return $self->_generate_clearer_method_inline();
+    }
+
+    return $self->_generate_clearer_method_basic();
+}
+
+sub _generate_predicate_method {
+    my ($self) = @_;
+
+    if(my $xs = $self->associated_metaclass->instance_metaclass->can_xs()){
+        return $self->_generate_predicate_method_xs($xs);
+    }
+
+    if($self->is_inline){
+        return $self->_generate_predicate_method_inline();
+    }
+
+    return $self->_generate_predicate_method_basic();
+}
+
+
+## basic generators
+
+=======
 }
 
 sub _generate_reader_method {
index 9706e3e..01d6d51 100644 (file)
@@ -85,6 +85,7 @@ sub _initialize_body {
     $self->{'body'} = $self->_generate_constructor_method();
 }
 
+
 sub _generate_constructor_method {
     my ($self) = @_;
 
index 6cfb5bc..9b49679 100644 (file)
@@ -1,8 +1,9 @@
 #include "mop.h"
 
-
 MODULE = Class::MOP::Class    PACKAGE = Class::MOP::Class
 
+PROTOTYPES: DISABLE
+
 VERSIONCHECK: DISABLE
 
 BOOT: