sub pack {
my ( $self, @args ) = @_;
- my $e = $self->_storage_get_engine( object => $self );
+ my $e = $self->_storage_get_engine_class->new( object => $self );
$e->collapse_object(@args);
}
sub unpack {
my ($class, $data, %args) = @_;
- my $e = $class->_storage_get_engine(class => $class);
+ my $e = $class->_storage_get_engine_class->new(class => $class);
$class->_storage_construct_instance(
$e->expand_object($data, %args),
);
}
-sub _storage_get_engine {
- my $self = shift;
- MooseX::Storage::Engine->new( @_ );
+sub _storage_get_engine_class {
+ 'MooseX::Storage::Engine';
}
sub _storage_construct_instance {
=over 4
-=item B<pack>
+=item B<pack ([ disable_cycle_check => 1])>
+
+Providing the C<disable_cycle_check> argument disables checks for any cyclical
+references. The current implementation for this check is rather naive, so if
+you know what you are doing, you can bypass this check.
+
+This trait is applied on a perl-case basis. To set this flag for all objects
+that inherit from this role, see L<MooseX::Storage::Traits::DisableCycleDetection>.
=item B<unpack ($data [, insert => { key => val, ... } ] )>