diff options
Diffstat (limited to 'beagle/debian-rfs/usr/lib/perl/5.10.1/Hash/Util.pm')
| -rw-r--r-- | beagle/debian-rfs/usr/lib/perl/5.10.1/Hash/Util.pm | 191 |
1 files changed, 0 insertions, 191 deletions
diff --git a/beagle/debian-rfs/usr/lib/perl/5.10.1/Hash/Util.pm b/beagle/debian-rfs/usr/lib/perl/5.10.1/Hash/Util.pm deleted file mode 100644 index 45b1ce4..0000000 --- a/beagle/debian-rfs/usr/lib/perl/5.10.1/Hash/Util.pm +++ /dev/null @@ -1,191 +0,0 @@ -package Hash::Util; - -require 5.007003; -use strict; -use Carp; -use warnings; -use warnings::register; -use Scalar::Util qw(reftype); - -require Exporter; -our @ISA = qw(Exporter); -our @EXPORT_OK = qw( - fieldhash fieldhashes - - all_keys - lock_keys unlock_keys - lock_value unlock_value - lock_hash unlock_hash - lock_keys_plus hash_locked - hidden_keys legal_keys - - lock_ref_keys unlock_ref_keys - lock_ref_value unlock_ref_value - lock_hashref unlock_hashref - lock_ref_keys_plus hashref_locked - hidden_ref_keys legal_ref_keys - - hash_seed hv_store - - ); -our $VERSION = 0.07; -require DynaLoader; -local @ISA = qw(DynaLoader); -bootstrap Hash::Util $VERSION; - -sub import { - my $class = shift; - if ( grep /fieldhash/, @_ ) { - require Hash::Util::FieldHash; - Hash::Util::FieldHash->import(':all'); # for re-export - } - unshift @_, $class; - goto &Exporter::import; -} - -sub lock_ref_keys { - my($hash, @keys) = @_; - - Internals::hv_clear_placeholders %$hash; - if( @keys ) { - my %keys = map { ($_ => 1) } @keys; - my %original_keys = map { ($_ => 1) } keys %$hash; - foreach my $k (keys %original_keys) { - croak "Hash has key '$k' which is not in the new key set" - unless $keys{$k}; - } - - foreach my $k (@keys) { - $hash->{$k} = undef unless exists $hash->{$k}; - } - Internals::SvREADONLY %$hash, 1; - - foreach my $k (@keys) { - delete $hash->{$k} unless $original_keys{$k}; - } - } - else { - Internals::SvREADONLY %$hash, 1; - } - - return $hash; -} - -sub unlock_ref_keys { - my $hash = shift; - - Internals::SvREADONLY %$hash, 0; - return $hash; -} - -sub lock_keys (\%;@) { lock_ref_keys(@_) } -sub unlock_keys (\%) { unlock_ref_keys(@_) } - -sub lock_ref_keys_plus { - my ($hash,@keys)=@_; - my @delete; - Internals::hv_clear_placeholders(%$hash); - foreach my $key (@keys) { - unless (exists($hash->{$key})) { - $hash->{$key}=undef; - push @delete,$key; - } - } - Internals::SvREADONLY(%$hash,1); - delete @{$hash}{@delete}; - return $hash -} - -sub lock_keys_plus(\%;@) { lock_ref_keys_plus(@_) } - -sub lock_ref_value { - my($hash, $key) = @_; - # I'm doubtful about this warning, as it seems not to be true. - # Marking a value in the hash as RO is useful, regardless - # of the status of the hash itself. - carp "Cannot usefully lock values in an unlocked hash" - if !Internals::SvREADONLY(%$hash) && warnings::enabled; - Internals::SvREADONLY $hash->{$key}, 1; - return $hash -} - -sub unlock_ref_value { - my($hash, $key) = @_; - Internals::SvREADONLY $hash->{$key}, 0; - return $hash -} - -sub lock_value (\%$) { lock_ref_value(@_) } -sub unlock_value (\%$) { unlock_ref_value(@_) } - -sub lock_hashref { - my $hash = shift; - - lock_ref_keys($hash); - - foreach my $value (values %$hash) { - Internals::SvREADONLY($value,1); - } - - return $hash; -} - -sub unlock_hashref { - my $hash = shift; - - foreach my $value (values %$hash) { - Internals::SvREADONLY($value, 0); - } - - unlock_ref_keys($hash); - - return $hash; -} - -sub lock_hash (\%) { lock_hashref(@_) } -sub unlock_hash (\%) { unlock_hashref(@_) } - -sub lock_hashref_recurse { - my $hash = shift; - - lock_ref_keys($hash); - foreach my $value (values %$hash) { - if (reftype($value) eq 'HASH') { - lock_hashref_recurse($value); - } - Internals::SvREADONLY($value,1); - } - return $hash -} - -sub unlock_hashref_recurse { - my $hash = shift; - - foreach my $value (values %$hash) { - if (reftype($value) eq 'HASH') { - unlock_hashref_recurse($value); - } - Internals::SvREADONLY($value,1); - } - unlock_ref_keys($hash); - return $hash; -} - -sub lock_hash_recurse (\%) { lock_hashref_recurse(@_) } -sub unlock_hash_recurse (\%) { unlock_hashref_recurse(@_) } - -sub hashref_unlocked { - my $hash=shift; - return Internals::SvREADONLY($hash) -} - -sub hash_unlocked(\%) { hashref_unlocked(@_) } - -sub legal_keys(\%) { legal_ref_keys(@_) } -sub hidden_keys(\%){ hidden_ref_keys(@_) } - -sub hash_seed () { - Internals::rehash_seed(); -} - -1; |
