@{ $self->{superclasses} };
}
+sub add_method {
+ my $self = shift;
+ my $name = shift;
+ my $code = shift;
+
+ my $pkg = $self->name;
+
+ no strict 'refs';
+ *{ $pkg . '::' . $name } = $code;
+}
+
sub add_attribute {
my $self = shift;
my $attr = shift;
my $instance = shift;
(blessed($instance) && $instance->isa($class->name))
- || confess "You must pass an instance ($instance) of the metaclass (" . $class->name . ")";
+ || confess "You must pass an instance of the metaclass (" . $class->name . "), not ($instance)";
$class->clone_instance($instance, @_);
}
my ($class, $instance, %params) = @_;
(blessed($instance))
- || confess "You can only clone instances, \$self is not a blessed instance";
+ || confess "You can only clone instances, ($instance) is not a blessed instance";
my $clone = bless { %$instance }, ref $instance;
}
+sub make_immutable {}
+sub is_immutable { 0 }
+
+sub attribute_metaclass { "Mouse::Meta::Class" }
1;
Returns the list of classes in method dispatch order, with duplicates removed.
+=head2 clone_object Instance -> Instance
+
+Clones the given C<Instance> which must be an instance governed by this
+metaclass.
+
+=head2 clone_instance Instance, Parameters -> Instance
+
+Clones the given C<Instance> and sets any additional parameters.
+
=cut