X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBM%2FDeep%2FArray.pm;h=247d7307c3998c747cde8262928e830e6c1afde4;hb=2ba14e04118fbfa4f41947ac9273b97ca1cb78e2;hp=552147720a0609c2e09a1fb74c1603b5782ee035;hpb=9c87a079060af9b367681cd1f96d0abd36745836;p=dbsrgits%2FDBM-Deep.git diff --git a/lib/DBM/Deep/Array.pm b/lib/DBM/Deep/Array.pm index 5521477..247d730 100644 --- a/lib/DBM/Deep/Array.pm +++ b/lib/DBM/Deep/Array.pm @@ -3,9 +3,9 @@ package DBM::Deep::Array; use 5.006_000; use strict; -use warnings; +use warnings FATAL => 'all'; -our $VERSION = q(1.0013); +our $VERSION = $DBM::Deep::VERSION; # This is to allow DBM::Deep::Array to handle negative indices on # its own. Otherwise, Perl would intercept the call to negative @@ -171,9 +171,9 @@ sub DELETE { return $rv; } -# Now that we have a real Reference sector, we should store arrayzize there. However, -# arraysize needs to be transactionally-aware, so a simple location to store it isn't -# going to work. +# Now that we have a real Reference sector, we should store arrayzize there. +# However, arraysize needs to be transactionally-aware, so a simple location to +# store it isn't going to work. sub FETCHSIZE { my $self = shift->_get_self; @@ -378,12 +378,9 @@ sub SPLICE { # We don't need to populate it, yet. # It will be useful, though, when we split out HASH and ARRAY -sub EXTEND { - ## - # Perl will call EXTEND() when the array is likely to grow. - # We don't care, but include it because it gets called at times. - ## -} +# Perl will call EXTEND() when the array is likely to grow. +# We don't care, but include it because it gets called at times. +sub EXTEND {} sub _copy_node { my $self = shift; @@ -397,14 +394,23 @@ sub _copy_node { return 1; } -## -# Public method aliases -## -sub length { (shift)->FETCHSIZE(@_) } -sub pop { (shift)->POP(@_) } -sub push { (shift)->PUSH(@_) } -sub unshift { (shift)->UNSHIFT(@_) } -sub splice { (shift)->SPLICE(@_) } +sub _clear { + my $self = shift; + + my $size = $self->FETCHSIZE; + for my $key ( 0 .. $size - 1 ) { + $self->_engine->delete_key( $self, $key, $key ); + } + $self->STORESIZE( 0 ); + + return; +} + +sub length { (shift)->FETCHSIZE(@_) } +sub pop { (shift)->POP(@_) } +sub push { (shift)->PUSH(@_) } +sub unshift { (shift)->UNSHIFT(@_) } +sub splice { (shift)->SPLICE(@_) } # This must be last otherwise we have to qualify all other calls to shift # as calls to CORE::shift