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