The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
package Misc::Quality;

=head1 NAME

Astro::Quality - Class for handling quality flags for astronomical objects.

=head1 SYNOPSIS

  use Astro::Quality;

  $quality = new Astro::Quality( 'derived' => 1 );

  $derived = $quality->query('derived');

  $quality->set( 'derived' => 0 );

=head1 DESCRIPTION

Class for handling quality flags for astronomical objects. This class
can handle any type of flag used.

=cut

use 5.006;
use strict;
use warnings;
use warnings::register;
use Carp;

# CVS version $Id: Quality.pm,v 1.2 2005/06/10 00:50:04 aa Exp $
our $VERSION = '0.01';

sub new {
  my $proto = shift;
  my $class = ref( $proto ) || $proto;

  my $quality = ();

  my %args = @_;

  foreach my $key ( keys %args ) {
    $quality->{uc($key)} = $args{$key};
  }

  bless( $quality, $class );
  return $quality;
}

sub query {
  my $self = shift;
  my $flag = uc(shift);

  if( exists( $self->{$flag} ) ) {
    return $self->{$flag};
  } else {
    return undef;
  }
}

sub set {
  my $self = shift;
  my $flag = uc(shift);
  my $value = shift;

  $self->{$flag} = $value;
}

1;