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