Mercurial > pub > Impl
comparison Lib/IMPL/Object.pm @ 276:8a5da17d7ef9
*IMPL::Class refactoring property definition mechanism (incomplete).
| author | sergey |
|---|---|
| date | Thu, 31 Jan 2013 17:37:44 +0400 |
| parents | 6d8092d8ce1b |
| children | 4ddb27ff4a0b |
comparison
equal
deleted
inserted
replaced
| 275:6253872024a4 | 276:8a5da17d7ef9 |
|---|---|
| 1 package IMPL::Object; | 1 package IMPL::Object; |
| 2 use strict; | 2 use strict; |
| 3 | 3 |
| 4 use parent qw(IMPL::Object::Abstract); | 4 use parent qw(IMPL::Object::Abstract); |
| 5 require IMPL::Class::Property::Direct; | 5 require IMPL::Class::Property::Direct; |
| 6 use IMPL::Const qw(:prop); | |
| 6 | 7 |
| 7 sub surrogate { | 8 sub surrogate { |
| 8 bless {}, ref $_[0] || $_[0]; | 9 bless {}, ref $_[0] || $_[0]; |
| 9 } | 10 } |
| 10 | |
| 11 __PACKAGE__->static_accessor( propertyInfoClass => 'IMPL::Class::DirectPropertyInfo' ); | |
| 12 | 11 |
| 13 sub new { | 12 sub new { |
| 14 my $class = shift; | 13 my $class = shift; |
| 15 my $self = bless {}, ref($class) || $class; | 14 my $self = bless {}, ref($class) || $class; |
| 16 $self->callCTOR(@_); | 15 $self->callCTOR(@_); |
| 18 $self; | 17 $self; |
| 19 } | 18 } |
| 20 | 19 |
| 21 sub _PropertyImplementor { | 20 sub _PropertyImplementor { |
| 22 'IMPL::Class::Property::Direct' | 21 'IMPL::Class::Property::Direct' |
| 22 } | |
| 23 | |
| 24 sub ImplementProperty { | |
| 25 my ($self,$name,$attributes) = @_; | |
| 26 | |
| 27 $attributes = { | |
| 28 get => $attributes & PROP_GET, | |
| 29 set => $attributes & PROP_SET, | |
| 30 isList => $attributes & PROP_LIST | |
| 31 } unless ref $attributes; | |
| 32 | |
| 33 $self->_ProppertyImplementor->Implement($name,$attributes); | |
| 23 } | 34 } |
| 24 | 35 |
| 25 1; | 36 1; |
| 26 | 37 |
| 27 __END__ | 38 __END__ |
