--- a/lib/Quancom.pm Thu Jan 22 04:35:14 2009 +0100
+++ b/lib/Quancom.pm Tue Jan 27 04:13:21 2009 +0100
@@ -84,8 +84,7 @@
sub set {
my $self = shift;
- #my $value = @_ == 1 ? 1 : pop @_ ? 1 : 0;
- croak "need at least 2 values" if @_ < 2;
+ croak "bad usage";
my $value = pop @_ ? 1 : 0;
my @bits = map { $_ - 1 } @_;
my @groups = map { 0 } 0 .. 7;
@@ -175,6 +174,46 @@
return $self->{last_result} = new Quancom::Result($_);
}
+sub TIEARRAY {
+ my $class = shift;
+ my $self = new Quancom @_;
+ return $self;
+}
+
+sub STORE {
+ my $self = shift;
+ warn "@_\n";
+ my ($bit, $value) = @_;
+ $self->set($bit + 1, $value)->ok and return $value;
+ croak "can't set bit $bit to $value";
+}
+
+sub FETCH {
+ my $self = shift;
+ warn "@_\n";
+ my $bit = $_[0];
+ my $value;
+ defined($value = $self->get($bit + 1))
+ and return $value;
+
+ croak "can't get bit $bit\n";
+}
+
+sub PUSH {
+ my $self = shift;
+ warn "@_\n";
+ my @a;
+ @a[0..62] = $self->get(2..64);
+ $a[63] = $_[0];
+ $self->set(@a);
+ return $self->FETCHSIZE;
+}
+
+sub FETCHSIZE {
+ my $self = shift;
+ return 64;
+}
+
1;
__END__