Mercurial > pub > Impl
comparison Lib/IMPL/Class/MemberInfo.pm @ 275:6253872024a4
*refactoring IMPL::Class
author | cin |
---|---|
date | Thu, 31 Jan 2013 02:18:31 +0400 |
parents | 2904da230022 |
children | 4ddb27ff4a0b |
comparison
equal
deleted
inserted
replaced
274:8d36073411b1 | 275:6253872024a4 |
---|---|
4 | 4 |
5 require IMPL::Exception; | 5 require IMPL::Exception; |
6 | 6 |
7 __PACKAGE__->mk_accessors( | 7 __PACKAGE__->mk_accessors( |
8 qw( | 8 qw( |
9 Name | 9 name |
10 Access | 10 access |
11 Class | 11 class |
12 Frozen | 12 implementor |
13 Implementor | 13 attributes |
14 Attributes | |
15 ) | 14 ) |
16 ); | 15 ); |
17 __PACKAGE__->PassThroughArgs; | 16 __PACKAGE__->PassThroughArgs; |
18 | 17 |
19 sub CTOR { | 18 sub CTOR { |
20 my $this = shift; | 19 my $this = shift; |
21 | 20 |
22 die new IMPL::Exception('The name is required for the member') unless $this->Name; | 21 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; | 22 die new IMPL::Exception('The class is required for the member') unless $this->class; |
24 | 23 |
25 $this->Attributes({}) unless defined $this->Attributes; | 24 $this->attributes({}) unless defined $this->attributes; |
26 $this->Frozen(0); | 25 $this->access(3) unless $this->access; |
27 $this->Access(3) unless $this->Access; | |
28 } | 26 } |
29 | 27 |
30 sub Implement { | 28 sub Implement { |
31 my ($this) = @_; | 29 my ($this) = @_; |
32 $this->Implementor->Make($this); | 30 $this->implementor->Make($this); |
33 $this->Frozen(1); | 31 $this->class->set_meta($this); |
34 $this->Class->set_meta($this); | |
35 return; | 32 return; |
36 } | |
37 | |
38 sub access { | |
39 goto &Access; | |
40 } | |
41 | |
42 sub name { | |
43 goto &Name; | |
44 } | 33 } |
45 | 34 |
46 1; | 35 1; |
47 | 36 |
48 __END__ | 37 __END__ |
62 | 51 |
63 =head1 MEMBERS | 52 =head1 MEMBERS |
64 | 53 |
65 =over | 54 =over |
66 | 55 |
67 =item C<[get,set] Name> | 56 =item C<[get,set] name> |
68 | 57 |
69 Имя члена. | 58 Имя члена. |
70 | 59 |
71 =item C<[get,set] Access> | 60 =item C<[get,set] access> |
72 | 61 |
73 Default public. | 62 Default public. |
74 | 63 |
75 Атрибут доступа ( public | private | protected ) | 64 Атрибут доступа ( public | private | protected ) |
76 | 65 |
77 =item C<[get,set] Class> | 66 =item C<[get,set] class> |
78 | 67 |
79 Класс владелец | 68 Класс владелец |
80 | 69 |
81 =item C<[get,set] Frozen> | 70 =item C<[get,set] attributes> |
82 | |
83 Флаг невозможности внесения изменений | |
84 | |
85 =item C<[get,set] Attributes> | |
86 | 71 |
87 Дополнительные атрибуты | 72 Дополнительные атрибуты |
88 | 73 |
89 =item C<Implement()> | 74 =item C<Implement()> |
90 | |
91 Устанавливает C<Frozen> в C<1>, добавляет в метаданные класса. | |
92 | 75 |
93 При реализации собственного субкласса, данный метод может быть переопределен для | 76 При реализации собственного субкласса, данный метод может быть переопределен для |
94 реализации дополнительной обработки (например, создание методов доступа для свойств). | 77 реализации дополнительной обработки (например, создание методов доступа для свойств). |
95 | 78 |
96 =back | 79 =back |