Mercurial > pub > Impl
annotate Lib/IMPL/Class/MemberInfo.pm @ 234:2530d1bb9638
sync
author | sergey |
---|---|
date | Thu, 11 Oct 2012 20:11:45 +0400 |
parents | 6d8092d8ce1b |
children | 2904da230022 |
rev | line source |
---|---|
49 | 1 package IMPL::Class::MemberInfo; |
2 use strict; | |
165 | 3 use parent qw(IMPL::Object::Accessor); |
49 | 4 |
5 require IMPL::Exception; | |
6 | |
7 __PACKAGE__->mk_accessors( | |
8 qw( | |
9 Name | |
10 Access | |
11 Class | |
12 Frozen | |
13 Implementor | |
14 Attributes | |
15 ) | |
16 ); | |
17 __PACKAGE__->PassThroughArgs; | |
18 | |
19 sub CTOR { | |
20 my $this = shift; | |
21 | |
22 die new IMPL::Exception('The name is required for the member') unless $this->Name; | |
23 die new IMPL::Exception('The class is required for the member') unless $this->Class; | |
24 | |
59
0f3e369553bd
Rewritten property implementation (probably become slower but more flexible)
wizard
parents:
49
diff
changeset
|
25 $this->Attributes({}) unless defined $this->Attributes; |
49 | 26 $this->Frozen(0); |
27 $this->Access(3) unless $this->Access; | |
28 } | |
29 | |
30 sub Implement { | |
31 my ($this) = @_; | |
32 $this->Implementor->Make($this); | |
33 $this->Frozen(1); | |
34 $this->Class->set_meta($this); | |
35 return; | |
36 } | |
37 | |
163 | 38 1; |
39 | |
40 __END__ | |
41 | |
42 =pod | |
43 | |
44 =head1 NAME | |
45 | |
180 | 46 C<IMPL::Class::MemberInfo> - информация о члене класса. |
163 | 47 |
48 =head1 DESCRIPTION | |
49 | |
180 | 50 Данный класс является базовым для таких классов как C<IMPL::Class::PropertyInfo>, C<IMPL::Class::MethodInfo> и |
51 предназначен для хренения метаданных. | |
163 | 52 |
180 | 53 Данный класс наследуется от C<IMPL::Object::Accessor> и не содержит в себе метаданных о своих членах. |
163 | 54 |
55 =head1 MEMBERS | |
56 | |
57 =over | |
58 | |
59 =item C<[get,set] Name> | |
60 | |
180 | 61 Имя члена. |
163 | 62 |
63 =item C<[get,set] Access> | |
64 | |
65 Default public. | |
49 | 66 |
180 | 67 Атрибут доступа ( public | private | protected ) |
163 | 68 |
69 =item C<[get,set] Class> | |
70 | |
180 | 71 Класс владелец |
163 | 72 |
73 =item C<[get,set] Frozen> | |
74 | |
180 | 75 Флаг невозможности внесения изменений |
163 | 76 |
77 =item C<[get,set] Attributes> | |
78 | |
180 | 79 Дополнительные атрибуты |
163 | 80 |
81 =item C<Implement()> | |
82 | |
180 | 83 Устанавливает C<Frozen> в C<1>, добавляет в метаданные класса. |
163 | 84 |
180 | 85 При реализации собственного субкласса, данный метод может быть переопределен для |
86 реализации дополнительной обработки (например, создание методов доступа для свойств). | |
163 | 87 |
88 =back | |
89 | |
90 =cut |