| 407 | 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 |