Moose
view release on metacpan - search on metacpan
view release on metacpan or search on metacpan
lib/Class/MOP/Instance.pm view on Meta::CPAN
$self->set_slot_value($instance, $RESERVED_MOP_SLOT, $value);
}
sub _clear_mop_slot {
my ($self, $instance) = @_;
$self->deinitialize_slot($instance, $RESERVED_MOP_SLOT);
}
# inlinable operation snippets
sub is_inlinable { 1 }
sub inline_create_instance {
my ($self, $class_variable) = @_;
'bless {} => ' . $class_variable;
}
sub inline_slot_access {
my ($self, $instance, $slot_name) = @_;
sprintf q[%s->{"%s"}], $instance, quotemeta($slot_name);
}
sub inline_get_is_lvalue { 1 }
sub inline_get_slot_value {
my ($self, $instance, $slot_name) = @_;
$self->inline_slot_access($instance, $slot_name);
}
sub inline_set_slot_value {
my ($self, $instance, $slot_name, $value) = @_;
$self->inline_slot_access($instance, $slot_name) . " = $value",
}
sub inline_initialize_slot {
my ($self, $instance, $slot_name) = @_;
return '';
}
sub inline_deinitialize_slot {
my ($self, $instance, $slot_name) = @_;
"delete " . $self->inline_slot_access($instance, $slot_name);
}
sub inline_is_slot_initialized {
my ($self, $instance, $slot_name) = @_;
"exists " . $self->inline_slot_access($instance, $slot_name);
}
sub inline_weaken_slot_value {
my ($self, $instance, $slot_name) = @_;
sprintf "Scalar::Util::weaken( %s )", $self->inline_slot_access($instance, $slot_name);
}
sub inline_strengthen_slot_value {
my ($self, $instance, $slot_name) = @_;
$self->inline_set_slot_value($instance, $slot_name, $self->inline_slot_access($instance, $slot_name));
}
sub inline_rebless_instance_structure {
my ($self, $instance, $class_variable) = @_;
"bless $instance => $class_variable";
}
sub _inline_get_mop_slot {
my ($self, $instance) = @_;
$self->inline_get_slot_value($instance, $RESERVED_MOP_SLOT);
}
sub _inline_set_mop_slot {
my ($self, $instance, $value) = @_;
$self->inline_set_slot_value($instance, $RESERVED_MOP_SLOT, $value);
}
sub _inline_clear_mop_slot {
my ($self, $instance) = @_;
$self->inline_deinitialize_slot($instance, $RESERVED_MOP_SLOT);
}
1;
# ABSTRACT: Instance Meta Object
__END__
=pod
=encoding UTF-8
=head1 NAME
Class::MOP::Instance - Instance Meta Object
=head1 VERSION
version 2.2207
=head1 DESCRIPTION
The Instance Protocol controls the creation of object instances, and
the storage of attribute values in those instances.
Using this API directly in your own code violates encapsulation, and
we recommend that you use the appropriate APIs in L<Class::MOP::Class>
and L<Class::MOP::Attribute> instead. Those APIs in turn call the
methods in this class as appropriate.
This class also participates in generating inlined code by providing
snippets of code to access an object instance.
=head1 METHODS
=head2 Object construction
=over 4
=item B<< Class::MOP::Instance->new(%options) >>
This method creates a new meta-instance object.
It accepts the following keys in C<%options>:
view all matches for this distributionview release on metacpan - search on metacpan
( run in 1.170 second using v1.00-cache-2.02-grep-82fe00e-cpan-1925d2aa809 )