### ### Copyright 2002-2003 University of Illinois Board of Trustees ### Copyright 2002-2003 Mark D. Roth ### All rights reserved. ### ### Config::Objective::Integer - integer data type for Config::Objective ### ### Mark D. Roth ### Campus Information Technologies and Educational Services ### University of Illinois at Urbana-Champaign ### package Config::Objective::Integer; use strict; use integer; #use overload # '""' => 'get', ## '0+' => 'get', # '+' => 'numeric_add', # '=' => 'set', # 'eq' => 'equals', ## 'fallback' => 1 # ; use Config::Objective::DataType; our @ISA = qw(Config::Objective::DataType); ############################################################################### ### equals method (for conditional expressions) ############################################################################### sub equals { my ($self, $value) = @_; return $self->eq($value); } sub eq { my ($self, $value) = @_; # print "==> equals(" . ref($self) . "='$self->{'value'}', '$value')\n"; return ($self->{'value'} == $value); } ############################################################################### ### not-equals method (for conditional expressions) ############################################################################### sub ne { my ($self, $value) = @_; return ($self->{'value'} != $value); } ############################################################################### ### greater-than method (for conditional expressions) ############################################################################### sub gt { my ($self, $value) = @_; return ($self->{'value'} > $value); } ############################################################################### ### less-than method (for conditional expressions) ############################################################################### sub lt { my ($self, $value) = @_; return ($self->{'value'} < $value); } ############################################################################### ### less-than-or-equal-to method (for conditional expressions) ############################################################################### sub le { my ($self, $value) = @_; return ($self->{'value'} <= $value); } ############################################################################### ### greater-than-or-equal-to method (for conditional expressions) ############################################################################### sub ge { my ($self, $value) = @_; return ($self->{'value'} >= $value); } ############################################################################### ### set method ############################################################################### sub set { my ($self, $value) = @_; # print "==> Integer::set($value)\n"; die "value required\n" if (!defined($value)); die "non-scalar value specified for integer variable\n" if (ref($value)); die "non-numeric value specified for integer variable\n" if ($value !~ m/^-?\d+$/); $self->{'value'} = $value; } ############################################################################### ### add method ############################################################################### sub add { my ($self, $value) = @_; $self->{'value'} += $value; } ############################################################################### ### subtract method ############################################################################### sub sub { my ($self, $value) = @_; $self->{'value'} -= $value; } ############################################################################### ### divide method ############################################################################### sub div { my ($self, $value) = @_; $self->{'value'} = int($self->{'value'} / $value); } ############################################################################### ### multiply method ############################################################################### sub mult { my ($self, $value) = @_; $self->{'value'} *= $value; } ############################################################################### ### increment method ############################################################################### sub incr { my ($self) = @_; $self->{'value'}++; } ############################################################################### ### decrement method ############################################################################### sub decr { my ($self) = @_; $self->{'value'}--; } ############################################################################### ### cleanup and documentation ############################################################################### 1; __END__ =head1 NAME Config::Objective::Integer - integer data type class for Config::Objective =head1 SYNOPSIS use Config::Objective; use Config::Objective::Integer; my $conf = Config::Objective->new('filename', { 'intobj' => Config::Objective::Integer->new() }); =head1 DESCRIPTION The B module provides a class that represents an integer value in an object so that it can be used with B. Its methods can be used to manipulate the encapsulated integer value from the config file. The B class is derived from the B class, but it defines/overrides the following methods: =over 4 =item set() Sets the object's value to the supplied value. The value must consist of only digit characters, with an optional leading "-" character to denote a negative value. =item add() Adds the supplied value to the object's value. =item sub() Subtracts the supplied value from the object's value. =item div() Divides the object's value by the supplied value. =item mult() Multiplies the object's value by the supplied value. =item incr() Increments the object's value by one. =item decr() Decrements the object's value by one. =item equals() Same as the eq() method. =item eq() Returns true if the object's value is equal to the supplied value. =item ne() Returns true if the object's value is not equal to the supplied value. =item gt() Returns true if the object's value is greater than the supplied value. =item lt() Returns true if the object's value is less than the supplied value. =item ge() Returns true if the object's value is greater than or equal to the supplied value. =item le() Returns true if the object's value is less than or equal to the supplied value. =back =head1 AUTHOR Mark D. Roth Eroth@uiuc.eduE =head1 SEE ALSO L L L =cut