Mercurial > pub > Impl
annotate Lib/IMPL/Class/MemberInfo.pm @ 270:3f59fd828d5f
merge
author | cin |
---|---|
date | Fri, 25 Jan 2013 00:25:02 +0400 |
parents | 2904da230022 |
children | 6253872024a4 |
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 | |
236 | 38 sub access { |
39 goto &Access; | |
40 } | |
41 | |
42 sub name { | |
43 goto &Name; | |
44 } | |
45 | |
163 | 46 1; |
47 | |
48 __END__ | |
49 | |
50 =pod | |
51 | |
52 =head1 NAME | |
53 | |
180 | 54 C<IMPL::Class::MemberInfo> - информация о члене класса. |
163 | 55 |
56 =head1 DESCRIPTION | |
57 | |
180 | 58 Данный класс является базовым для таких классов как C<IMPL::Class::PropertyInfo>, C<IMPL::Class::MethodInfo> и |
59 предназначен для хренения метаданных. | |
163 | 60 |
180 | 61 Данный класс наследуется от C<IMPL::Object::Accessor> и не содержит в себе метаданных о своих членах. |
163 | 62 |
63 =head1 MEMBERS | |
64 | |
65 =over | |
66 | |
67 =item C<[get,set] Name> | |
68 | |
180 | 69 Имя члена. |
163 | 70 |
71 =item C<[get,set] Access> | |
72 | |
73 Default public. | |
49 | 74 |
180 | 75 Атрибут доступа ( public | private | protected ) |
163 | 76 |
77 =item C<[get,set] Class> | |
78 | |
180 | 79 Класс владелец |
163 | 80 |
81 =item C<[get,set] Frozen> | |
82 | |
180 | 83 Флаг невозможности внесения изменений |
163 | 84 |
85 =item C<[get,set] Attributes> | |
86 | |
180 | 87 Дополнительные атрибуты |
163 | 88 |
89 =item C<Implement()> | |
90 | |
180 | 91 Устанавливает C<Frozen> в C<1>, добавляет в метаданные класса. |
163 | 92 |
180 | 93 При реализации собственного субкласса, данный метод может быть переопределен для |
94 реализации дополнительной обработки (например, создание методов доступа для свойств). | |
163 | 95 |
96 =back | |
97 | |
98 =cut |