annotate Lib/IMPL/Class/MemberInfo.pm @ 234:2530d1bb9638

sync
author sergey
date Thu, 11 Oct 2012 20:11:45 +0400
parents 6d8092d8ce1b
children 2904da230022
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
163
6ce1f052b90a temp commit
wizard
parents: 134
diff changeset
38 1;
6ce1f052b90a temp commit
wizard
parents: 134
diff changeset
39
6ce1f052b90a temp commit
wizard
parents: 134
diff changeset
40 __END__
6ce1f052b90a temp commit
wizard
parents: 134
diff changeset
41
6ce1f052b90a temp commit
wizard
parents: 134
diff changeset
42 =pod
6ce1f052b90a temp commit
wizard
parents: 134
diff changeset
43
6ce1f052b90a temp commit
wizard
parents: 134
diff changeset
44 =head1 NAME
6ce1f052b90a temp commit
wizard
parents: 134
diff changeset
45
180
d1676be8afcc Перекодировка в utf-8
sourcer
parents: 165
diff changeset
46 C<IMPL::Class::MemberInfo> - информация о члене класса.
163
6ce1f052b90a temp commit
wizard
parents: 134
diff changeset
47
6ce1f052b90a temp commit
wizard
parents: 134
diff changeset
48 =head1 DESCRIPTION
6ce1f052b90a temp commit
wizard
parents: 134
diff changeset
49
180
d1676be8afcc Перекодировка в utf-8
sourcer
parents: 165
diff changeset
50 Данный класс является базовым для таких классов как C<IMPL::Class::PropertyInfo>, C<IMPL::Class::MethodInfo> и
d1676be8afcc Перекодировка в utf-8
sourcer
parents: 165
diff changeset
51 предназначен для хренения метаданных.
163
6ce1f052b90a temp commit
wizard
parents: 134
diff changeset
52
180
d1676be8afcc Перекодировка в utf-8
sourcer
parents: 165
diff changeset
53 Данный класс наследуется от C<IMPL::Object::Accessor> и не содержит в себе метаданных о своих членах.
163
6ce1f052b90a temp commit
wizard
parents: 134
diff changeset
54
6ce1f052b90a temp commit
wizard
parents: 134
diff changeset
55 =head1 MEMBERS
6ce1f052b90a temp commit
wizard
parents: 134
diff changeset
56
6ce1f052b90a temp commit
wizard
parents: 134
diff changeset
57 =over
6ce1f052b90a temp commit
wizard
parents: 134
diff changeset
58
6ce1f052b90a temp commit
wizard
parents: 134
diff changeset
59 =item C<[get,set] Name>
6ce1f052b90a temp commit
wizard
parents: 134
diff changeset
60
180
d1676be8afcc Перекодировка в utf-8
sourcer
parents: 165
diff changeset
61 Имя члена.
163
6ce1f052b90a temp commit
wizard
parents: 134
diff changeset
62
6ce1f052b90a temp commit
wizard
parents: 134
diff changeset
63 =item C<[get,set] Access>
6ce1f052b90a temp commit
wizard
parents: 134
diff changeset
64
6ce1f052b90a temp commit
wizard
parents: 134
diff changeset
65 Default public.
49
16ada169ca75 migrating to the Eclipse IDE
wizard@linux-odin.local
parents: 0
diff changeset
66
180
d1676be8afcc Перекодировка в utf-8
sourcer
parents: 165
diff changeset
67 Атрибут доступа ( public | private | protected )
163
6ce1f052b90a temp commit
wizard
parents: 134
diff changeset
68
6ce1f052b90a temp commit
wizard
parents: 134
diff changeset
69 =item C<[get,set] Class>
6ce1f052b90a temp commit
wizard
parents: 134
diff changeset
70
180
d1676be8afcc Перекодировка в utf-8
sourcer
parents: 165
diff changeset
71 Класс владелец
163
6ce1f052b90a temp commit
wizard
parents: 134
diff changeset
72
6ce1f052b90a temp commit
wizard
parents: 134
diff changeset
73 =item C<[get,set] Frozen>
6ce1f052b90a temp commit
wizard
parents: 134
diff changeset
74
180
d1676be8afcc Перекодировка в utf-8
sourcer
parents: 165
diff changeset
75 Флаг невозможности внесения изменений
163
6ce1f052b90a temp commit
wizard
parents: 134
diff changeset
76
6ce1f052b90a temp commit
wizard
parents: 134
diff changeset
77 =item C<[get,set] Attributes>
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<Implement()>
6ce1f052b90a temp commit
wizard
parents: 134
diff changeset
82
180
d1676be8afcc Перекодировка в utf-8
sourcer
parents: 165
diff changeset
83 Устанавливает C<Frozen> в C<1>, добавляет в метаданные класса.
163
6ce1f052b90a temp commit
wizard
parents: 134
diff changeset
84
180
d1676be8afcc Перекодировка в utf-8
sourcer
parents: 165
diff changeset
85 При реализации собственного субкласса, данный метод может быть переопределен для
d1676be8afcc Перекодировка в utf-8
sourcer
parents: 165
diff changeset
86 реализации дополнительной обработки (например, создание методов доступа для свойств).
163
6ce1f052b90a temp commit
wizard
parents: 134
diff changeset
87
6ce1f052b90a temp commit
wizard
parents: 134
diff changeset
88 =back
6ce1f052b90a temp commit
wizard
parents: 134
diff changeset
89
6ce1f052b90a temp commit
wizard
parents: 134
diff changeset
90 =cut