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