sub
new {
my
(
$class
,
$type
,
$key
,
$fields
,
$rawfields
) =
@_
;
my
$self
= {
type
=>
$type
,
key
=>
$key
,
fieldlist
=>
$fields
,
rawfieldlist
=>
$rawfields
,
fieldmap
=> {
map
{ (
$$_
[0] =>
$$_
[1]) }
@$fields
},
rawfieldmap
=> {
map
{ (
$$_
[0] =>
$$_
[1]) }
@$rawfields
} };
bless
$self
,
$class
;
return
$self
; }
sub
getType {
my
(
$self
) =
@_
;
return
$$self
{type}; }
sub
getKey {
my
(
$self
) =
@_
;
return
$$self
{key}; }
sub
getFields {
my
(
$self
) =
@_
;
return
@{
$$self
{fieldlist} }; }
sub
getField {
my
(
$self
,
$key
) =
@_
;
return
$$self
{fieldmap}{
$key
}; }
sub
getRawField {
my
(
$self
,
$key
) =
@_
;
return
$$self
{rawfieldmap}{
$key
}; }
sub
addField {
my
(
$self
,
$field
,
$value
) =
@_
;
push
(@{
$$self
{fieldlist} }, [
$field
,
$value
]);
$$self
{fieldmap}{
$field
} =
$value
;
return
; }
sub
addRawField {
my
(
$self
,
$field
,
$value
) =
@_
;
push
(@{
$$self
{rawfieldlist} }, [
$field
,
$value
]);
$$self
{rawfieldmap}{
$field
} =
$value
;
return
; }
sub
prettyPrint {
my
(
$self
) =
@_
;
return
join
(
",\n"
,
"@"
.
$$self
{type} .
"{"
.
$$self
{key},
(
map
{ (
" "
x max(1, (10 -
length
(
$$_
[0])))) .
$$_
[0] .
" = {"
.
$$_
[1] .
"}"
}
@{
$$self
{fieldlist} })
) .
"}\n"
; }
1;