Mercurial > pub > Impl
comparison Lib/IMPL/Object/PublicSerializable.pm @ 60:b0c068da93ac
Lazy activation for the configuration objects (final concept)
small fixes
author | wizard |
---|---|
date | Tue, 09 Mar 2010 19:47:39 +0300 |
parents | |
children | 8d0ae27d15c1 |
comparison
equal
deleted
inserted
replaced
59:0f3e369553bd | 60:b0c068da93ac |
---|---|
1 package IMPL::Object::PublicSerializable; | |
2 use strict; | |
3 | |
4 use IMPL::Class::Member; | |
5 | |
6 sub restore { | |
7 my ($class,$data,$refSurrogate) = @_; | |
8 | |
9 if ($refSurrogate) { | |
10 $refSurrogate->callCTOR(@$data); | |
11 return $refSurrogate; | |
12 } else { | |
13 return $class->new(@$data); | |
14 } | |
15 } | |
16 | |
17 sub save { | |
18 my ($this,$ctx) = @_; | |
19 | |
20 my %seen; | |
21 | |
22 $ctx->AddVar($_,$this->$_()) foreach | |
23 map $_->Name,$this->get_meta( | |
24 'IMPL::Class::PropertyInfo', | |
25 sub { | |
26 $_->Access == IMPL::Class::Member::MOD_PUBLIC and | |
27 $_->canGet and | |
28 not $_->ownerSet and | |
29 not $seen{$_->Name} ++ | |
30 }, | |
31 1 | |
32 ); | |
33 } | |
34 | |
35 1; |