comparison lib/IMPL/Object/Meta.pm @ 407:c6e90e02dd17 ref20150831

renamed Lib->lib
author cin
date Fri, 04 Sep 2015 19:40:23 +0300
parents
children
comparison
equal deleted inserted replaced
406:f23fcb19d3c1 407:c6e90e02dd17
1 package IMPL::Object::Meta;
2 use strict;
3 use warnings;
4
5 use IMPL::Const qw(:prop);
6 use IMPL::declare {
7 base => [
8 'IMPL::Object' => undef
9 ],
10 props => [
11 owner => PROP_RO
12 ]
13 };
14
15 sub meta {
16 my $class = shift;
17 my $caller = caller;
18 my $meta = $class->surrogate();
19 $meta->owner(scalar caller);
20 $meta->callCTOR(@_);
21 $caller->SetMeta($meta);
22 }
23
24 1;
25
26 __END__
27
28 =pod
29
30 =head1 SYNOPSIS
31
32 package Foo;
33
34 meta BarAttribute('Simple bar attribute'); #mark Foo with BarAttribute
35
36 =head1 DESCRIPTION
37
38 Базовый класс для мета-свойств класса. Определяет оператор C< meta > для создания метаданных в вызвавшем классе.
39
40 =head1 MEMBERS
41
42 =over
43
44 =item C< Container >
45
46 Свойство заполняется до вызова конструктора и содержит имя модуля к которому применяется атрибут.
47
48 =back
49
50 =cut