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

renamed Lib->lib
author cin
date Fri, 04 Sep 2015 19:40:23 +0300
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/lib/IMPL/Object/Meta.pm	Fri Sep 04 19:40:23 2015 +0300
@@ -0,0 +1,50 @@
+package IMPL::Object::Meta;
+use strict;
+use warnings;
+
+use IMPL::Const qw(:prop);
+use IMPL::declare {
+    base => [
+        'IMPL::Object' => undef
+    ],
+    props => [
+        owner => PROP_RO
+    ]
+};
+
+sub meta {
+    my $class = shift;
+    my $caller = caller;
+    my $meta = $class->surrogate();
+    $meta->owner(scalar caller);
+    $meta->callCTOR(@_);
+    $caller->SetMeta($meta);
+}
+
+1;
+
+__END__
+
+=pod
+
+=head1 SYNOPSIS
+
+package Foo;
+
+meta BarAttribute('Simple bar attribute'); #mark Foo with BarAttribute
+
+=head1 DESCRIPTION
+
+Базовый класс для мета-свойств класса. Определяет оператор C< meta > для создания метаданных в вызвавшем классе.
+
+=head1 MEMBERS
+
+=over
+
+=item C< Container >
+
+Свойство заполняется до вызова конструктора и содержит имя модуля к которому применяется атрибут.
+
+=back
+
+=cut