[SCM] Debian packaging of Tie-IxHash CPAN distribution branch, master, updated. upstream/1.21-11-g7236cd6
Xavier
x.guimard at free.fr
Fri Dec 28 18:14:44 UTC 2012
The following commit has been merged in the master branch:
commit d1e1b6a93c3ee90ea6f2946bc9d76ec0ced6d1b3
Author: Xavier <x.guimard at free.fr>
Date: Fri Dec 28 19:07:57 2012 +0100
Remove unwanted files
diff --git a/blib/lib/Tie/IxHash.pm b/blib/lib/Tie/IxHash.pm
deleted file mode 100644
index 0babe16..0000000
--- a/blib/lib/Tie/IxHash.pm
+++ /dev/null
@@ -1,630 +0,0 @@
-#
-# Tie/IxHash.pm
-#
-# Indexed hash implementation for Perl
-#
-# See below for documentation.
-#
-
-require 5.003;
-
-package Tie::IxHash;
-use integer;
-require Tie::Hash;
- at ISA = qw(Tie::Hash);
-
-$VERSION = $VERSION = '1.21';
-
-#
-# standard tie functions
-#
-
-sub TIEHASH {
- my($c) = shift;
- my($s) = [];
- $s->[0] = {}; # hashkey index
- $s->[1] = []; # array of keys
- $s->[2] = []; # array of data
- $s->[3] = 0; # iter count
-
- bless $s, $c;
-
- $s->Push(@_) if @_;
-
- return $s;
-}
-
-#sub DESTROY {} # costly if there's nothing to do
-
-sub FETCH {
- my($s, $k) = (shift, shift);
- return exists( $s->[0]{$k} ) ? $s->[2][ $s->[0]{$k} ] : undef;
-}
-
-sub STORE {
- my($s, $k, $v) = (shift, shift, shift);
-
- if (exists $s->[0]{$k}) {
- my($i) = $s->[0]{$k};
- $s->[1][$i] = $k;
- $s->[2][$i] = $v;
- $s->[0]{$k} = $i;
- }
- else {
- push(@{$s->[1]}, $k);
- push(@{$s->[2]}, $v);
- $s->[0]{$k} = $#{$s->[1]};
- }
-}
-
-sub DELETE {
- my($s, $k) = (shift, shift);
-
- if (exists $s->[0]{$k}) {
- my($i) = $s->[0]{$k};
- for ($i+1..$#{$s->[1]}) { # reset higher elt indexes
- $s->[0]{$s->[1][$_]}--; # timeconsuming, is there is better way?
- }
- delete $s->[0]{$k};
- splice @{$s->[1]}, $i, 1;
- return (splice(@{$s->[2]}, $i, 1))[0];
- }
- return undef;
-}
-
-sub EXISTS {
- exists $_[0]->[0]{ $_[1] };
-}
-
-sub FIRSTKEY {
- $_[0][3] = 0;
- &NEXTKEY;
-}
-
-sub NEXTKEY {
- return $_[0][1][$_[0][3]++] if ($_[0][3] <= $#{$_[0][1]});
- return undef;
-}
-
-
-
-#
-#
-# class functions that provide additional capabilities
-#
-#
-
-sub new { TIEHASH(@_) }
-
-#
-# add pairs to end of indexed hash
-# note that if a supplied key exists, it will not be reordered
-#
-sub Push {
- my($s) = shift;
- while (@_) {
- $s->STORE(shift, shift);
- }
- return scalar(@{$s->[1]});
-}
-
-sub Push2 {
- my($s) = shift;
- $s->Splice($#{$s->[1]}+1, 0, @_);
- return scalar(@{$s->[1]});
-}
-
-#
-# pop last k-v pair
-#
-sub Pop {
- my($s) = shift;
- my($k, $v, $i);
- $k = pop(@{$s->[1]});
- $v = pop(@{$s->[2]});
- if (defined $k) {
- delete $s->[0]{$k};
- return ($k, $v);
- }
- return undef;
-}
-
-sub Pop2 {
- return $_[0]->Splice(-1);
-}
-
-#
-# shift
-#
-sub Shift {
- my($s) = shift;
- my($k, $v, $i);
- $k = shift(@{$s->[1]});
- $v = shift(@{$s->[2]});
- if (defined $k) {
- delete $s->[0]{$k};
- for (keys %{$s->[0]}) {
- $s->[0]{$_}--;
- }
- return ($k, $v);
- }
- return undef;
-}
-
-sub Shift2 {
- return $_[0]->Splice(0, 1);
-}
-
-#
-# unshift
-# if a supplied key exists, it will not be reordered
-#
-sub Unshift {
- my($s) = shift;
- my($k, $v, @k, @v, $len, $i);
-
- while (@_) {
- ($k, $v) = (shift, shift);
- if (exists $s->[0]{$k}) {
- $i = $s->[0]{$k};
- $s->[1][$i] = $k;
- $s->[2][$i] = $v;
- $s->[0]{$k} = $i;
- }
- else {
- push(@k, $k);
- push(@v, $v);
- $len++;
- }
- }
- if (defined $len) {
- for (keys %{$s->[0]}) {
- $s->[0]{$_} += $len;
- }
- $i = 0;
- for (@k) {
- $s->[0]{$_} = $i++;
- }
- unshift(@{$s->[1]}, @k);
- return unshift(@{$s->[2]}, @v);
- }
- return scalar(@{$s->[1]});
-}
-
-sub Unshift2 {
- my($s) = shift;
- $s->Splice(0,0, at _);
- return scalar(@{$s->[1]});
-}
-
-#
-# splice
-#
-# any existing hash key order is preserved. the value is replaced for
-# such keys, and the new keys are spliced in the regular fashion.
-#
-# supports -ve offsets but only +ve lengths
-#
-# always assumes a 0 start offset
-#
-sub Splice {
- my($s, $start, $len) = (shift, shift, shift);
- my($k, $v, @k, @v, @r, $i, $siz);
- my($end); # inclusive
-
- # XXX inline this
- ($start, $end, $len) = $s->_lrange($start, $len);
-
- if (defined $start) {
- if ($len > 0) {
- my(@k) = splice(@{$s->[1]}, $start, $len);
- my(@v) = splice(@{$s->[2]}, $start, $len);
- while (@k) {
- $k = shift(@k);
- delete $s->[0]{$k};
- push(@r, $k, shift(@v));
- }
- for ($start..$#{$s->[1]}) {
- $s->[0]{$s->[1][$_]} -= $len;
- }
- }
- while (@_) {
- ($k, $v) = (shift, shift);
- if (exists $s->[0]{$k}) {
- # $s->STORE($k, $v);
- $i = $s->[0]{$k};
- $s->[1][$i] = $k;
- $s->[2][$i] = $v;
- $s->[0]{$k} = $i;
- }
- else {
- push(@k, $k);
- push(@v, $v);
- $siz++;
- }
- }
- if (defined $siz) {
- for ($start..$#{$s->[1]}) {
- $s->[0]{$s->[1][$_]} += $siz;
- }
- $i = $start;
- for (@k) {
- $s->[0]{$_} = $i++;
- }
- splice(@{$s->[1]}, $start, 0, @k);
- splice(@{$s->[2]}, $start, 0, @v);
- }
- }
- return @r;
-}
-
-#
-# delete elements specified by key
-# other elements higher than the one deleted "slide" down
-#
-sub Delete {
- my($s) = shift;
-
- for (@_) {
- #
- # XXX potential optimization: could do $s->DELETE only if $#_ < 4.
- # otherwise, should reset all the hash indices in one loop
- #
- $s->DELETE($_);
- }
-}
-
-#
-# replace hash element at specified index
-#
-# if the optional key is not supplied the value at index will simply be
-# replaced without affecting the order.
-#
-# if an element with the supplied key already exists, it will be deleted first.
-#
-# returns the key of replaced value if it succeeds.
-#
-sub Replace {
- my($s) = shift;
- my($i, $v, $k) = (shift, shift, shift);
- if (defined $i and $i <= $#{$s->[1]} and $i >= 0) {
- if (defined $k) {
- delete $s->[0]{ $s->[1][$i] };
- $s->DELETE($k) ; #if exists $s->[0]{$k};
- $s->[1][$i] = $k;
- $s->[2][$i] = $v;
- $s->[0]{$k} = $i;
- return $k;
- }
- else {
- $s->[2][$i] = $v;
- return $s->[1][$i];
- }
- }
- return undef;
-}
-
-#
-# Given an $start and $len, returns a legal start and end (where start <= end)
-# for the current hash.
-# Legal range is defined as 0 to $#s+1
-# $len defaults to number of elts upto end of list
-#
-# 0 1 2 ...
-# | X | X | X ... X | X | X |
-# -2 -1 (no -0 alas)
-# X's above are the elements
-#
-sub _lrange {
- my($s) = shift;
- my($offset, $len) = @_;
- my($start, $end); # both inclusive
- my($size) = $#{$s->[1]}+1;
-
- return undef unless defined $offset;
- if($offset < 0) {
- $start = $offset + $size;
- $start = 0 if $start < 0;
- }
- else {
- ($offset > $size) ? ($start = $size) : ($start = $offset);
- }
-
- if (defined $len) {
- $len = -$len if $len < 0;
- $len = $size - $start if $len > $size - $start;
- }
- else {
- $len = $size - $start;
- }
- $end = $start + $len - 1;
-
- return ($start, $end, $len);
-}
-
-#
-# Return keys at supplied indices
-# Returns all keys if no args.
-#
-sub Keys {
- my($s) = shift;
- return ( @_ == 1
- ? $s->[1][$_[0]]
- : ( @_
- ? @{$s->[1]}[@_]
- : @{$s->[1]} ) );
-}
-
-#
-# Returns values at supplied indices
-# Returns all values if no args.
-#
-sub Values {
- my($s) = shift;
- return ( @_ == 1
- ? $s->[2][$_[0]]
- : ( @_
- ? @{$s->[2]}[@_]
- : @{$s->[2]} ) );
-}
-
-#
-# get indices of specified hash keys
-#
-sub Indices {
- my($s) = shift;
- return ( @_ == 1 ? $s->[0]{$_[0]} : @{$s->[0]}{@_} );
-}
-
-#
-# number of k-v pairs in the ixhash
-# note that this does not equal the highest index
-# owing to preextended arrays
-#
-sub Length {
- return scalar @{$_[0]->[1]};
-}
-
-#
-# Reorder the hash in the supplied key order
-#
-# warning: any unsupplied keys will be lost from the hash
-# any supplied keys that dont exist in the hash will be ignored
-#
-sub Reorder {
- my($s) = shift;
- my(@k, @v, %x, $i);
- return unless @_;
-
- $i = 0;
- for (@_) {
- if (exists $s->[0]{$_}) {
- push(@k, $_);
- push(@v, $s->[2][ $s->[0]{$_} ] );
- $x{$_} = $i++;
- }
- }
- $s->[1] = \@k;
- $s->[2] = \@v;
- $s->[0] = \%x;
- return $s;
-}
-
-sub SortByKey {
- my($s) = shift;
- $s->Reorder(sort $s->Keys);
-}
-
-sub SortByValue {
- my($s) = shift;
- $s->Reorder(sort { $s->FETCH($a) cmp $s->FETCH($b) } $s->Keys)
-}
-
-1;
-__END__
-
-=head1 NAME
-
-Tie::IxHash - ordered associative arrays for Perl
-
-
-=head1 SYNOPSIS
-
- # simple usage
- use Tie::IxHash;
- tie HASHVARIABLE, Tie::IxHash [, LIST];
-
- # OO interface with more powerful features
- use Tie::IxHash;
- TIEOBJECT = Tie::IxHash->new( [LIST] );
- TIEOBJECT->Splice( OFFSET [, LENGTH [, LIST]] );
- TIEOBJECT->Push( LIST );
- TIEOBJECT->Pop;
- TIEOBJECT->Shift;
- TIEOBJECT->Unshift( LIST );
- TIEOBJECT->Keys( [LIST] );
- TIEOBJECT->Values( [LIST] );
- TIEOBJECT->Indices( LIST );
- TIEOBJECT->Delete( [LIST] );
- TIEOBJECT->Replace( OFFSET, VALUE, [KEY] );
- TIEOBJECT->Reorder( LIST );
- TIEOBJECT->SortByKey;
- TIEOBJECT->SortByValue;
- TIEOBJECT->Length;
-
-
-=head1 DESCRIPTION
-
-This Perl module implements Perl hashes that preserve the order in which the
-hash elements were added. The order is not affected when values
-corresponding to existing keys in the IxHash are changed. The elements can
-also be set to any arbitrary supplied order. The familiar perl array
-operations can also be performed on the IxHash.
-
-
-=head2 Standard C<TIEHASH> Interface
-
-The standard C<TIEHASH> mechanism is available. This interface is
-recommended for simple uses, since the usage is exactly the same as
-regular Perl hashes after the C<tie> is declared.
-
-
-=head2 Object Interface
-
-This module also provides an extended object-oriented interface that can be
-used for more powerful operations with the IxHash. The following methods
-are available:
-
-=over 8
-
-=item FETCH, STORE, DELETE, EXISTS
-
-These standard C<TIEHASH> methods mandated by Perl can be used directly.
-See the C<tie> entry in perlfunc(1) for details.
-
-=item Push, Pop, Shift, Unshift, Splice
-
-These additional methods resembling Perl functions are available for
-operating on key-value pairs in the IxHash. The behavior is the same as the
-corresponding perl functions, except when a supplied hash key already exists
-in the hash. In that case, the existing value is updated but its order is
-not affected. To unconditionally alter the order of a supplied key-value
-pair, first C<DELETE> the IxHash element.
-
-=item Keys
-
-Returns an array of IxHash element keys corresponding to the list of supplied
-indices. Returns an array of all the keys if called without arguments.
-Note the return value is mostly only useful when used in a list context
-(since perl will convert it to the number of elements in the array when
-used in a scalar context, and that may not be very useful).
-
-If a single argument is given, returns the single key corresponding to
-the index. This is usable in either scalar or list context.
-
-=item Values
-
-Returns an array of IxHash element values corresponding to the list of supplied
-indices. Returns an array of all the values if called without arguments.
-Note the return value is mostly only useful when used in a list context
-(since perl will convert it to the number of elements in the array when
-used in a scalar context, and that may not be very useful).
-
-If a single argument is given, returns the single value corresponding to
-the index. This is usable in either scalar or list context.
-
-=item Indices
-
-Returns an array of indices corresponding to the supplied list of keys.
-Note the return value is mostly only useful when used in a list context
-(since perl will convert it to the number of elements in the array when
-used in a scalar context, and that may not be very useful).
-
-If a single argument is given, returns the single index corresponding to
-the key. This is usable in either scalar or list context.
-
-=item Delete
-
-Removes elements with the supplied keys from the IxHash.
-
-=item Replace
-
-Substitutes the IxHash element at the specified index with the supplied
-value-key pair. If a key is not supplied, simply substitutes the value at
-index with the supplied value. If an element with the supplied key already
-exists, it will be removed from the IxHash first.
-
-=item Reorder
-
-This method can be used to manipulate the internal order of the IxHash
-elements by supplying a list of keys in the desired order. Note however,
-that any IxHash elements whose keys are not in the list will be removed from
-the IxHash.
-
-=item Length
-
-Returns the number of IxHash elements.
-
-=item SortByKey
-
-Reorders the IxHash elements by textual comparison of the keys.
-
-=item SortByValue
-
-Reorders the IxHash elements by textual comparison of the values.
-
-=back
-
-
-=head1 EXAMPLE
-
- use Tie::IxHash;
-
- # simple interface
- $t = tie(%myhash, Tie::IxHash, 'a' => 1, 'b' => 2);
- %myhash = (first => 1, second => 2, third => 3);
- $myhash{fourth} = 4;
- @keys = keys %myhash;
- @values = values %myhash;
- print("y") if exists $myhash{third};
-
- # OO interface
- $t = Tie::IxHash->new(first => 1, second => 2, third => 3);
- $t->Push(fourth => 4); # same as $myhash{'fourth'} = 4;
- ($k, $v) = $t->Pop; # $k is 'fourth', $v is 4
- $t->Unshift(neg => -1, zeroth => 0);
- ($k, $v) = $t->Shift; # $k is 'neg', $v is -1
- @oneandtwo = $t->Splice(1, 2, foo => 100, bar => 101);
-
- @keys = $t->Keys;
- @values = $t->Values;
- @indices = $t->Indices('foo', 'zeroth');
- @itemkeys = $t->Keys(@indices);
- @itemvals = $t->Values(@indices);
- $t->Replace(2, 0.3, 'other');
- $t->Delete('second', 'zeroth');
- $len = $t->Length; # number of key-value pairs
-
- $t->Reorder(reverse @keys);
- $t->SortByKey;
- $t->SortByValue;
-
-
-=head1 BUGS
-
-You cannot specify a negative length to C<Splice>. Negative indexes are OK,
-though.
-
-Indexing always begins at 0 (despite the current C<$[> setting) for
-all the functions.
-
-
-=head1 TODO
-
-Addition of elements with keys that already exist to the end of the IxHash
-must be controlled by a switch.
-
-Provide C<TIEARRAY> interface when it stabilizes in Perl.
-
-Rewrite using XSUBs for efficiency.
-
-
-=head1 AUTHOR
-
-Gurusamy Sarathy gsar at umich.edu
-
-Copyright (c) 1995 Gurusamy Sarathy. All rights reserved.
-This program is free software; you can redistribute it and/or
-modify it under the same terms as Perl itself.
-
-
-=head1 VERSION
-
-Version 1.21 20 Nov 1997
-
-
-=head1 SEE ALSO
-
-perl(1)
-
-=cut
diff --git a/blib/man3/Tie::IxHash.3pm b/blib/man3/Tie::IxHash.3pm
deleted file mode 100644
index 32d1a96..0000000
--- a/blib/man3/Tie::IxHash.3pm
+++ /dev/null
@@ -1,319 +0,0 @@
-.\" Automatically generated by Pod::Man version 1.16
-.\" Tue Aug 7 19:04:44 2001
-.\"
-.\" Standard preamble:
-.\" ======================================================================
-.de Sh \" Subsection heading
-.br
-.if t .Sp
-.ne 5
-.PP
-\fB\\$1\fR
-.PP
-..
-.de Sp \" Vertical space (when we can't use .PP)
-.if t .sp .5v
-.if n .sp
-..
-.de Ip \" List item
-.br
-.ie \\n(.$>=3 .ne \\$3
-.el .ne 3
-.IP "\\$1" \\$2
-..
-.de Vb \" Begin verbatim text
-.ft CW
-.nf
-.ne \\$1
-..
-.de Ve \" End verbatim text
-.ft R
-
-.fi
-..
-.\" Set up some character translations and predefined strings. \*(-- will
-.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
-.\" double quote, and \*(R" will give a right double quote. | will give a
-.\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used
-.\" to do unbreakable dashes and therefore won't be available. \*(C` and
-.\" \*(C' expand to `' in nroff, nothing in troff, for use with C<>
-.tr \(*W-|\(bv\*(Tr
-.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
-.ie n \{\
-. ds -- \(*W-
-. ds PI pi
-. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
-. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
-. ds L" ""
-. ds R" ""
-. ds C` ""
-. ds C' ""
-'br\}
-.el\{\
-. ds -- \|\(em\|
-. ds PI \(*p
-. ds L" ``
-. ds R" ''
-'br\}
-.\"
-.\" If the F register is turned on, we'll generate index entries on stderr
-.\" for titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and
-.\" index entries marked with X<> in POD. Of course, you'll have to process
-.\" the output yourself in some meaningful fashion.
-.if \nF \{\
-. de IX
-. tm Index:\\$1\t\\n%\t"\\$2"
-..
-. nr % 0
-. rr F
-.\}
-.\"
-.\" For nroff, turn off justification. Always turn off hyphenation; it
-.\" makes way too many mistakes in technical documents.
-.hy 0
-.if n .na
-.\"
-.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
-.\" Fear. Run. Save yourself. No user-serviceable parts.
-.bd B 3
-. \" fudge factors for nroff and troff
-.if n \{\
-. ds #H 0
-. ds #V .8m
-. ds #F .3m
-. ds #[ \f1
-. ds #] \fP
-.\}
-.if t \{\
-. ds #H ((1u-(\\\\n(.fu%2u))*.13m)
-. ds #V .6m
-. ds #F 0
-. ds #[ \&
-. ds #] \&
-.\}
-. \" simple accents for nroff and troff
-.if n \{\
-. ds ' \&
-. ds ` \&
-. ds ^ \&
-. ds , \&
-. ds ~ ~
-. ds /
-.\}
-.if t \{\
-. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
-. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
-. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
-. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
-. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
-. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
-.\}
-. \" troff and (daisy-wheel) nroff accents
-.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
-.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
-.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
-.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
-.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
-.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
-.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
-.ds ae a\h'-(\w'a'u*4/10)'e
-.ds Ae A\h'-(\w'A'u*4/10)'E
-. \" corrections for vroff
-.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
-.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
-. \" for low resolution devices (crt and lpr)
-.if \n(.H>23 .if \n(.V>19 \
-\{\
-. ds : e
-. ds 8 ss
-. ds o a
-. ds d- d\h'-1'\(ga
-. ds D- D\h'-1'\(hy
-. ds th \o'bp'
-. ds Th \o'LP'
-. ds ae ae
-. ds Ae AE
-.\}
-.rm #[ #] #H #V #F C
-.\" ======================================================================
-.\"
-.IX Title "Tie::IxHash 3"
-.TH Tie::IxHash 3 "perl v5.6.1" "1997-11-20" "User Contributed Perl Documentation"
-.UC
-.SH "NAME"
-Tie::IxHash \- ordered associative arrays for Perl
-.SH "SYNOPSIS"
-.IX Header "SYNOPSIS"
-.Vb 3
-\& # simple usage
-\& use Tie::IxHash;
-\& tie HASHVARIABLE, Tie::IxHash [, LIST];
-.Ve
-.Vb 17
-\& # OO interface with more powerful features
-\& use Tie::IxHash;
-\& TIEOBJECT = Tie::IxHash->new( [LIST] );
-\& TIEOBJECT->Splice( OFFSET [, LENGTH [, LIST]] );
-\& TIEOBJECT->Push( LIST );
-\& TIEOBJECT->Pop;
-\& TIEOBJECT->Shift;
-\& TIEOBJECT->Unshift( LIST );
-\& TIEOBJECT->Keys( [LIST] );
-\& TIEOBJECT->Values( [LIST] );
-\& TIEOBJECT->Indices( LIST );
-\& TIEOBJECT->Delete( [LIST] );
-\& TIEOBJECT->Replace( OFFSET, VALUE, [KEY] );
-\& TIEOBJECT->Reorder( LIST );
-\& TIEOBJECT->SortByKey;
-\& TIEOBJECT->SortByValue;
-\& TIEOBJECT->Length;
-.Ve
-.SH "DESCRIPTION"
-.IX Header "DESCRIPTION"
-This Perl module implements Perl hashes that preserve the order in which the
-hash elements were added. The order is not affected when values
-corresponding to existing keys in the IxHash are changed. The elements can
-also be set to any arbitrary supplied order. The familiar perl array
-operations can also be performed on the IxHash.
-.if n .Sh "Standard \f(CW""TIEHASH""\fP Interface"
-.el .Sh "Standard \f(CWTIEHASH\fP Interface"
-.IX Subsection "Standard TIEHASH Interface"
-The standard \f(CW\*(C`TIEHASH\*(C'\fR mechanism is available. This interface is
-recommended for simple uses, since the usage is exactly the same as
-regular Perl hashes after the \f(CW\*(C`tie\*(C'\fR is declared.
-.Sh "Object Interface"
-.IX Subsection "Object Interface"
-This module also provides an extended object-oriented interface that can be
-used for more powerful operations with the IxHash. The following methods
-are available:
-.Ip "\s-1FETCH\s0, \s-1STORE\s0, \s-1DELETE\s0, \s-1EXISTS\s0" 8
-.IX Item "FETCH, STORE, DELETE, EXISTS"
-These standard \f(CW\*(C`TIEHASH\*(C'\fR methods mandated by Perl can be used directly.
-See the \f(CW\*(C`tie\*(C'\fR entry in \fIperlfunc\fR\|(1) for details.
-.Ip "Push, Pop, Shift, Unshift, Splice" 8
-.IX Item "Push, Pop, Shift, Unshift, Splice"
-These additional methods resembling Perl functions are available for
-operating on key-value pairs in the IxHash. The behavior is the same as the
-corresponding perl functions, except when a supplied hash key already exists
-in the hash. In that case, the existing value is updated but its order is
-not affected. To unconditionally alter the order of a supplied key-value
-pair, first \f(CW\*(C`DELETE\*(C'\fR the IxHash element.
-.Ip "Keys" 8
-.IX Item "Keys"
-Returns an array of IxHash element keys corresponding to the list of supplied
-indices. Returns an array of all the keys if called without arguments.
-Note the return value is mostly only useful when used in a list context
-(since perl will convert it to the number of elements in the array when
-used in a scalar context, and that may not be very useful).
-.Sp
-If a single argument is given, returns the single key corresponding to
-the index. This is usable in either scalar or list context.
-.Ip "Values" 8
-.IX Item "Values"
-Returns an array of IxHash element values corresponding to the list of supplied
-indices. Returns an array of all the values if called without arguments.
-Note the return value is mostly only useful when used in a list context
-(since perl will convert it to the number of elements in the array when
-used in a scalar context, and that may not be very useful).
-.Sp
-If a single argument is given, returns the single value corresponding to
-the index. This is usable in either scalar or list context.
-.Ip "Indices" 8
-.IX Item "Indices"
-Returns an array of indices corresponding to the supplied list of keys.
-Note the return value is mostly only useful when used in a list context
-(since perl will convert it to the number of elements in the array when
-used in a scalar context, and that may not be very useful).
-.Sp
-If a single argument is given, returns the single index corresponding to
-the key. This is usable in either scalar or list context.
-.Ip "Delete" 8
-.IX Item "Delete"
-Removes elements with the supplied keys from the IxHash.
-.Ip "Replace" 8
-.IX Item "Replace"
-Substitutes the IxHash element at the specified index with the supplied
-value-key pair. If a key is not supplied, simply substitutes the value at
-index with the supplied value. If an element with the supplied key already
-exists, it will be removed from the IxHash first.
-.Ip "Reorder" 8
-.IX Item "Reorder"
-This method can be used to manipulate the internal order of the IxHash
-elements by supplying a list of keys in the desired order. Note however,
-that any IxHash elements whose keys are not in the list will be removed from
-the IxHash.
-.Ip "Length" 8
-.IX Item "Length"
-Returns the number of IxHash elements.
-.Ip "SortByKey" 8
-.IX Item "SortByKey"
-Reorders the IxHash elements by textual comparison of the keys.
-.Ip "SortByValue" 8
-.IX Item "SortByValue"
-Reorders the IxHash elements by textual comparison of the values.
-.SH "EXAMPLE"
-.IX Header "EXAMPLE"
-.Vb 1
-\& use Tie::IxHash;
-.Ve
-.Vb 7
-\& # simple interface
-\& $t = tie(%myhash, Tie::IxHash, 'a' => 1, 'b' => 2);
-\& %myhash = (first => 1, second => 2, third => 3);
-\& $myhash{fourth} = 4;
-\& @keys = keys %myhash;
-\& @values = values %myhash;
-\& print("y") if exists $myhash{third};
-.Ve
-.Vb 7
-\& # OO interface
-\& $t = Tie::IxHash->new(first => 1, second => 2, third => 3);
-\& $t->Push(fourth => 4); # same as $myhash{'fourth'} = 4;
-\& ($k, $v) = $t->Pop; # $k is 'fourth', $v is 4
-\& $t->Unshift(neg => -1, zeroth => 0);
-\& ($k, $v) = $t->Shift; # $k is 'neg', $v is -1
-\& @oneandtwo = $t->Splice(1, 2, foo => 100, bar => 101);
-.Ve
-.Vb 8
-\& @keys = $t->Keys;
-\& @values = $t->Values;
-\& @indices = $t->Indices('foo', 'zeroth');
-\& @itemkeys = $t->Keys(@indices);
-\& @itemvals = $t->Values(@indices);
-\& $t->Replace(2, 0.3, 'other');
-\& $t->Delete('second', 'zeroth');
-\& $len = $t->Length; # number of key-value pairs
-.Ve
-.Vb 3
-\& $t->Reorder(reverse @keys);
-\& $t->SortByKey;
-\& $t->SortByValue;
-.Ve
-.SH "BUGS"
-.IX Header "BUGS"
-You cannot specify a negative length to \f(CW\*(C`Splice\*(C'\fR. Negative indexes are \s-1OK\s0,
-though.
-.PP
-Indexing always begins at 0 (despite the current \f(CW\*(C`$[\*(C'\fR setting) for
-all the functions.
-.SH "TODO"
-.IX Header "TODO"
-Addition of elements with keys that already exist to the end of the IxHash
-must be controlled by a switch.
-.PP
-Provide \f(CW\*(C`TIEARRAY\*(C'\fR interface when it stabilizes in Perl.
-.PP
-Rewrite using XSUBs for efficiency.
-.SH "AUTHOR"
-.IX Header "AUTHOR"
-Gurusamy Sarathy gsar at umich.edu
-.PP
-Copyright (c) 1995 Gurusamy Sarathy. All rights reserved.
-This program is free software; you can redistribute it and/or
-modify it under the same terms as Perl itself.
-.SH "VERSION"
-.IX Header "VERSION"
-Version 1.21 20 Nov 1997
-.SH "SEE ALSO"
-.IX Header "SEE ALSO"
-\&\fIperl\fR\|(1)
--
Debian packaging of Tie-IxHash CPAN distribution
More information about the Pkg-perl-cvs-commits
mailing list