annotate Lib/IMPL/Class/MemberInfo.pm @ 270:3f59fd828d5f

merge
author cin
date Fri, 25 Jan 2013 00:25:02 +0400
parents 2904da230022
children 6253872024a4
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
49
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 0
diff changeset
1 package IMPL::Class::MemberInfo;
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 0
diff changeset
2 use strict;
165
76515373dac0 Added Class::Template,
wizard
parents: 163
diff changeset
3 use parent qw(IMPL::Object::Accessor);
49
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 0
diff changeset
4
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 0
diff changeset
5 require IMPL::Exception;
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 0
diff changeset
6
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 0
diff changeset
7 __PACKAGE__->mk_accessors(
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 0
diff changeset
8 qw(
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 0
diff changeset
9 Name
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 0
diff changeset
10 Access
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 0
diff changeset
11 Class
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 0
diff changeset
12 Frozen
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 0
diff changeset
13 Implementor
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 0
diff changeset
14 Attributes
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 0
diff changeset
15 )
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 0
diff changeset
16 );
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 0
diff changeset
17 __PACKAGE__->PassThroughArgs;
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 0
diff changeset
18
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 0
diff changeset
19 sub CTOR {
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 0
diff changeset
20 my $this = shift;
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 0
diff changeset
21
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 0
diff changeset
22 die new IMPL::Exception('The name is required for the member') unless $this->Name;
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 0
diff changeset
23 die new IMPL::Exception('The class is required for the member') unless $this->Class;
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 0
diff changeset
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
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 0
diff changeset
26 $this->Frozen(0);
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 0
diff changeset
27 $this->Access(3) unless $this->Access;
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 0
diff changeset
28 }
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 0
diff changeset
29
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 0
diff changeset
30 sub Implement {
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 0
diff changeset
31 my ($this) = @_;
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 0
diff changeset
32 $this->Implementor->Make($this);
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 0
diff changeset
33 $this->Frozen(1);
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 0
diff changeset
34 $this->Class->set_meta($this);
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 0
diff changeset
35 return;
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 0
diff changeset
36 }
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 0
diff changeset
37
236
2904da230022 DOM refactoring
sergey
parents: 230
diff changeset
38 sub access {
2904da230022 DOM refactoring
sergey
parents: 230
diff changeset
39 goto &Access;
2904da230022 DOM refactoring
sergey
parents: 230
diff changeset
40 }
2904da230022 DOM refactoring
sergey
parents: 230
diff changeset
41
2904da230022 DOM refactoring
sergey
parents: 230
diff changeset
42 sub name {
2904da230022 DOM refactoring
sergey
parents: 230
diff changeset
43 goto &Name;
2904da230022 DOM refactoring
sergey
parents: 230
diff changeset
44 }
2904da230022 DOM refactoring
sergey
parents: 230
diff changeset
45
163
6ce1f052b90a temp commit
wizard
parents: 134
diff changeset
46 1;
6ce1f052b90a temp commit
wizard
parents: 134
diff changeset
47
6ce1f052b90a temp commit
wizard
parents: 134
diff changeset
48 __END__
6ce1f052b90a temp commit
wizard
parents: 134
diff changeset
49
6ce1f052b90a temp commit
wizard
parents: 134
diff changeset
50 =pod
6ce1f052b90a temp commit
wizard
parents: 134
diff changeset
51
6ce1f052b90a temp commit
wizard
parents: 134
diff changeset
52 =head1 NAME
6ce1f052b90a temp commit
wizard
parents: 134
diff changeset
53
180
d1676be8afcc Перекодировка в utf-8
sourcer
parents: 165
diff changeset
54 C<IMPL::Class::MemberInfo> - информация о члене класса.
163
6ce1f052b90a temp commit
wizard
parents: 134
diff changeset
55
6ce1f052b90a temp commit
wizard
parents: 134
diff changeset
56 =head1 DESCRIPTION
6ce1f052b90a temp commit
wizard
parents: 134
diff changeset
57
180
d1676be8afcc Перекодировка в utf-8
sourcer
parents: 165
diff changeset
58 Данный класс является базовым для таких классов как C<IMPL::Class::PropertyInfo>, C<IMPL::Class::MethodInfo> и
d1676be8afcc Перекодировка в utf-8
sourcer
parents: 165
diff changeset
59 предназначен для хренения метаданных.
163
6ce1f052b90a temp commit
wizard
parents: 134
diff changeset
60
180
d1676be8afcc Перекодировка в utf-8
sourcer
parents: 165
diff changeset
61 Данный класс наследуется от C<IMPL::Object::Accessor> и не содержит в себе метаданных о своих членах.
163
6ce1f052b90a temp commit
wizard
parents: 134
diff changeset
62
6ce1f052b90a temp commit
wizard
parents: 134
diff changeset
63 =head1 MEMBERS
6ce1f052b90a temp commit
wizard
parents: 134
diff changeset
64
6ce1f052b90a temp commit
wizard
parents: 134
diff changeset
65 =over
6ce1f052b90a temp commit
wizard
parents: 134
diff changeset
66
6ce1f052b90a temp commit
wizard
parents: 134
diff changeset
67 =item C<[get,set] Name>
6ce1f052b90a temp commit
wizard
parents: 134
diff changeset
68
180
d1676be8afcc Перекодировка в utf-8
sourcer
parents: 165
diff changeset
69 Имя члена.
163
6ce1f052b90a temp commit
wizard
parents: 134
diff changeset
70
6ce1f052b90a temp commit
wizard
parents: 134
diff changeset
71 =item C<[get,set] Access>
6ce1f052b90a temp commit
wizard
parents: 134
diff changeset
72
6ce1f052b90a temp commit
wizard
parents: 134
diff changeset
73 Default public.
49
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 0
diff changeset
74
180
d1676be8afcc Перекодировка в utf-8
sourcer
parents: 165
diff changeset
75 Атрибут доступа ( public | private | protected )
163
6ce1f052b90a temp commit
wizard
parents: 134
diff changeset
76
6ce1f052b90a temp commit
wizard
parents: 134
diff changeset
77 =item C<[get,set] Class>
6ce1f052b90a temp commit
wizard
parents: 134
diff changeset
78
180
d1676be8afcc Перекодировка в utf-8
sourcer
parents: 165
diff changeset
79 Класс владелец
163
6ce1f052b90a temp commit
wizard
parents: 134
diff changeset
80
6ce1f052b90a temp commit
wizard
parents: 134
diff changeset
81 =item C<[get,set] Frozen>
6ce1f052b90a temp commit
wizard
parents: 134
diff changeset
82
180
d1676be8afcc Перекодировка в utf-8
sourcer
parents: 165
diff changeset
83 Флаг невозможности внесения изменений
163
6ce1f052b90a temp commit
wizard
parents: 134
diff changeset
84
6ce1f052b90a temp commit
wizard
parents: 134
diff changeset
85 =item C<[get,set] Attributes>
6ce1f052b90a temp commit
wizard
parents: 134
diff changeset
86
180
d1676be8afcc Перекодировка в utf-8
sourcer
parents: 165
diff changeset
87 Дополнительные атрибуты
163
6ce1f052b90a temp commit
wizard
parents: 134
diff changeset
88
6ce1f052b90a temp commit
wizard
parents: 134
diff changeset
89 =item C<Implement()>
6ce1f052b90a temp commit
wizard
parents: 134
diff changeset
90
180
d1676be8afcc Перекодировка в utf-8
sourcer
parents: 165
diff changeset
91 Устанавливает C<Frozen> в C<1>, добавляет в метаданные класса.
163
6ce1f052b90a temp commit
wizard
parents: 134
diff changeset
92
180
d1676be8afcc Перекодировка в utf-8
sourcer
parents: 165
diff changeset
93 При реализации собственного субкласса, данный метод может быть переопределен для
d1676be8afcc Перекодировка в utf-8
sourcer
parents: 165
diff changeset
94 реализации дополнительной обработки (например, создание методов доступа для свойств).
163
6ce1f052b90a temp commit
wizard
parents: 134
diff changeset
95
6ce1f052b90a temp commit
wizard
parents: 134
diff changeset
96 =back
6ce1f052b90a temp commit
wizard
parents: 134
diff changeset
97
6ce1f052b90a temp commit
wizard
parents: 134
diff changeset
98 =cut