my
%value_of
:ATTR(:get<value> :init_arg<value> :
default
<()>);
our
$___value
= \
%value_of
;
sub
set_value {
$value_of
{ ${
$_
[0] } } =
$_
[1] }
sub
attr {
}
sub
serialize {
$_
[1] ||= {};
if
(not
defined
$value_of
{ ${
$_
[0]} }) {
return
$_
[0]->start_tag({ %{
$_
[1] },
nil
=> 1 },
undef
);
}
return
join
q{}
,
$_
[0]->start_tag(
$_
[1],
$value_of
{ ${
$_
[0]} })
,
$value_of
{ ${
$_
[0]} }
,
$_
[0]->end_tag(
$_
[1]);
}
sub
as_string :STRINGIFY {
return
defined
(
$value_of
{ ${
$_
[0] } }) ?
$value_of
{ ${
$_
[0] } } :
q{}
;
}
sub
as_bool :BOOLIFY {
return
$value_of
{ ${
$_
[0] } };
}
my
$OBJECT_CACHE_REF
= Class::Std::Fast::OBJECT_CACHE_REF();
sub
new {
my
$self
=
pop
@{
$OBJECT_CACHE_REF
->{
$_
[0] } };
$self
=
bless
\(
my
$o
= Class::Std::Fast::ID()),
$_
[0]
if
not
defined
$self
;
$value_of
{
$$self
} =
$_
[1]->{ value }
if
((
$#_
) &&
exists
$_
[1]->{ value });
return
$self
;
}
Class::Std::initialize();
1;