# Copyright 2009, 2010 Kevin Ryde

# This file is part of Chart.
#
# Chart is free software; you can redistribute it and/or modify it under the
# terms of the GNU General Public License as published by the Free Software
# Foundation; either version 3, or (at your option) any later version.
#
# Chart is distributed in the hope that it will be useful, but WITHOUT ANY
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
# details.
#
# You should have received a copy of the GNU General Public License along
# with Chart.  If not, see <http://www.gnu.org/licenses/>.

package App::Chart::Tie::GetSetMethod;
use strict;
use warnings;

sub TIESCALAR {
  my ($class, $obj, $method) = @_;
  my $oldval = $obj->$method;
  return bless [$obj, $method, $oldval], $class;
}
sub FETCH {
  my ($self) = @_;
  my ($obj, $method) = @$self;
  return $obj->$method;
}
sub STORE {
  my ($self, $value) = @_;
  my ($obj, $method) = @$self;
  return $obj->$method ($value);
}
sub UNTIE {
  my ($self) = @_;
  my ($obj, $method, $oldval) = @$self;
  return $obj->$method ($oldval);
}

1;
__END__