view Lib/IMPL/Object/PublicSerializable.pm @ 122:a7efb3117295

Fixed bug in IMPL::DOM::Navigator::selectNodes Fixed bug in IMPL::DOM::Node::selectNodes renamed operator 'type' to 'typeof' in IMPL::Object::Abstract A proper implementation of the IMPL::DOM::Node::nodeProperty and a related changes in the IMPL::DOM::Property module, now the last is very simple.
author wizard
date Tue, 08 Jun 2010 20:12:45 +0400
parents 8d0ae27d15c1
children d1676be8afcc
line wrap: on
line source

package IMPL::Object::PublicSerializable;
use strict;

use IMPL::Class::Member;

sub restore {
    my ($class,$data,$refSurrogate) = @_;
    
    if ($refSurrogate) {
        $refSurrogate->callCTOR(@$data);
        return $refSurrogate;
    } else {
        return $class->new(@$data);
    }
}

sub save {
	my ($this,$ctx) = @_;
	
	my %seen;
	
	my $val;
	
	defined($val = $this->$_()) and $ctx->AddVar($_,$val) foreach
		map $_->Name,$this->get_meta(
			'IMPL::Class::PropertyInfo',
			sub {
				$_->Access == IMPL::Class::Member::MOD_PUBLIC and
				$_->canGet and
				not $_->ownerSet and
				not $seen{$_->Name} ++
			},
			1
		);
}

1;