use
CLI
qw(INTEGER FLOAT STRING SSTRING TIME DEGREE
BOOLEAN typeStr)
;
sub
new {
my
$proto
=
shift
;
my
$class
=
ref
(
$proto
) ||
$proto
;
my
$name
=
shift
;
my
$value
=
shift
;
my
$type
=
shift
;
my
$self
= {
NAME
=>
$name
,
TYPE
=>
$type
,
VALUE
=>
$value
,
FUNC
=>
undef
,
MIN
=>
undef
,
MAX
=>
undef
};
bless
(
$self
,
$class
);
return
$self
;
}
sub
value {
my
$self
=
shift
;
if
(
@_
) {
$self
->{VALUE} =
shift
}
return
$self
->{VALUE};
}
sub
type {
my
$self
=
shift
;
if
(
@_
) {
$self
->{TYPE} =
shift
}
return
$self
->{TYPE};
}
sub
name {
my
$self
=
shift
;
if
(
@_
) {
$self
->{NAME} =
shift
}
return
$self
->{NAME};
}
sub
function {
my
$self
=
shift
;
if
(
@_
) {
$self
->{FUNC} =
shift
}
return
$self
->{FUNC};
}
sub
min {
my
$self
=
shift
;
if
(
@_
) {
my
$type
=
$self
->type();
if
(!(
$type
== INTEGER ||
$type
== FLOAT ||
$type
== TIME ||
$type
== DEGREE)) {
carp
'Cannot set minimum value for type '
, typeStr(
$self
->type()),
"\n"
;
return
undef
;
}
$self
->{MIN} =
shift
;
}
return
$self
->{MIN};
}
sub
max {
my
$self
=
shift
;
if
(
@_
) {
my
$type
=
$self
->type();
if
(!(
$type
== INTEGER ||
$type
== FLOAT ||
$type
== TIME ||
$type
== DEGREE)) {
carp
'Cannot set maximum value for type '
,
$self
->type(),
"\n"
;
return
undef
;
}
$self
->{MAX} =
shift
;
}
return
$self
->{MAX};
}
sub
parse {
my
$self
=
shift
;
my
$string
=
shift
;
my
$name
=
$self
->{NAME};
carp
"Could not parse \"$name $string\""
;
}
1;