APR-HTTP-Headers-Compat

 view release on metacpan or  search on metacpan

lib/APR/HTTP/Headers/Compat/MagicArray.pm  view on Meta::CPAN

  }, $class;
}

sub FETCH {
  my ( $self, $key ) = @_;
  return $self->{a}[$key];
}

# Sync the table with our state

sub _sync {
  my $self = shift;
  my ( $table, $fld, @vals )
   = ( $self->{m}->table, $self->{f}, @{ $self->{a} } );
  $table->set( $fld, shift @vals );
  $table->add( $fld, $_ ) for @vals;
}

sub STORE {
  my ( $self, $key, $value ) = @_;
  $self->{a}[$key] = $value;
  $self->_sync;
}

sub FETCHSIZE { scalar @{ shift->{a} } }
sub STORESIZE { }

sub CLEAR {
  my $self = shift;
  $self->{a} = [];
  $self->_sync;
}

sub PUSH {
  my ( $self, @list ) = @_;
  push @{ $self->{a} }, @list;
  $self->_sync;
}

sub POP {
  my $self = shift;
  my $val  = pop @{ $self->{a} };
  $self->_sync;
  return $val;
}

sub SHIFT {
  my $self = shift;
  my $val  = shift @{ $self->{a} };
  $self->_sync;
  return $val;
}

sub UNSHIFT {
  my ( $self, @list ) = @_;
  unshift @{ $self->{a} }, @list;
  $self->_sync;
}

sub SPLICE {
  my ( $self, $offset, $length, @list ) = @_;
  splice @{ $self->{a} }, $offset, $length, @list;
  $self->_sync;
}

sub EXISTS {
  my ( $self, $key ) = @_;
  return $key < @{ $self->{a} };
}

sub EXTEND  { }
sub DESTROY { }
sub UNTIE   { }

1;

# vim:ts=2:sw=2:sts=2:et:ft=perl



( run in 1.529 second using v1.01-cache-2.11-cpan-cdf2f3d4e48 )