return $class->$orig( $name, $options );
};
-around attach_to_class => sub {
- my $orig = shift;
+after attach_to_class => sub {
my $self = shift;
my $meta = shift;
- $self->$orig($meta);
-
$self->_initialize($meta)
unless $self->is_lazy();
};
-around detach_from_class => sub {
- my $orig = shift;
+before detach_from_class => sub {
my $self = shift;
my $meta = shift;
$self->clear_value($meta);
-
- $self->$orig($meta);
};
sub _initialize {
->clear_class_attribute_value( $self->name() );
};
-around inline_get => sub {
- shift;
- my $self = shift;
-
- return $self->associated_class()
- ->inline_get_class_slot_value( $self->slots() );
-};
-
-around inline_set => sub {
- shift;
- my $self = shift;
- shift;
- my $value = shift;
-
- my $meta = $self->associated_class();
-
- my $code
- = $meta->inline_set_class_slot_value( $self->slots(), $value ) . ";";
- $code
- .= $meta->inline_weaken_class_slot_value( $self->slots(), $value )
- . " if ref $value;"
- if $self->is_weak_ref();
-
- return $code;
-};
-
-around inline_has => sub {
- shift;
- my $self = shift;
-
- return $self->associated_class()
- ->inline_is_class_slot_initialized( $self->slots() );
-};
-
-around inline_clear => sub {
- shift;
- my $self = shift;
-
- return $self->associated_class()
- ->inline_deinitialize_class_slot( $self->slots() );
-};
+if ( $Moose::VERSION < 1.99 ) {
+ around inline_get => sub {
+ shift;
+ my $self = shift;
+
+ return $self->associated_class()
+ ->_inline_get_class_slot_value( $self->slots() );
+ };
+
+ around inline_set => sub {
+ shift;
+ my $self = shift;
+ shift;
+ my $value = shift;
+
+ my $meta = $self->associated_class();
+
+ my $code
+ = $meta->_inline_set_class_slot_value( $self->slots(), $value )
+ . ";";
+ $code
+ .= $meta->_inline_weaken_class_slot_value( $self->slots(), $value )
+ . " if ref $value;"
+ if $self->is_weak_ref();
+
+ return $code;
+ };
+
+ around inline_has => sub {
+ shift;
+ my $self = shift;
+
+ return $self->associated_class()
+ ->_inline_is_class_slot_initialized( $self->slots() );
+ };
+
+ around inline_clear => sub {
+ shift;
+ my $self = shift;
+
+ return $self->associated_class()
+ ->_inline_deinitialize_class_slot( $self->slots() );
+ };
+}
+else {
+ around _inline_instance_get => sub {
+ shift;
+ my $self = shift;
+
+ return $self->associated_class()
+ ->_inline_get_class_slot_value( $self->slots() );
+ };
+
+ around _inline_instance_set => sub {
+ shift;
+ my $self = shift;
+ shift;
+ my $value = shift;
+
+ return $self->associated_class()
+ ->_inline_set_class_slot_value( $self->slots(), $value );
+ };
+
+ around _inline_instance_has => sub {
+ shift;
+ my $self = shift;
+
+ return $self->associated_class()
+ ->_inline_is_class_slot_initialized( $self->slots() );
+ };
+
+ around _inline_instance_clear => sub {
+ shift;
+ my $self = shift;
+
+ return $self->associated_class()
+ ->_inline_deinitialize_class_slot( $self->slots() );
+ };
+
+ around _inline_weaken_value => sub {
+ shift;
+ my $self = shift;
+ shift;
+ my $value = shift;
+
+ return unless $self->is_weak_ref();
+
+ return (
+ $self->associated_class->_inline_weaken_class_slot_value(
+ $self->slots(), $value
+ ),
+ 'if ref ' . $value . ';',
+ );
+ };
+}
1;