Mercurial > pub > Impl
comparison Lib/IMPL/Class/Meta.pm @ 279:af8af4b8337e
sync
| author | sergey |
|---|---|
| date | Mon, 04 Feb 2013 17:16:45 +0400 |
| parents | 0f59b2de72af |
| children | c6d0f889ef87 |
comparison
equal
deleted
inserted
replaced
| 278:4ddb27ff4a0b | 279:af8af4b8337e |
|---|---|
| 1 package IMPL::Class::Meta; | 1 package IMPL::Class::Meta; |
| 2 use strict; | 2 use strict; |
| 3 | 3 |
| 4 use Carp qw(carp); | 4 use Carp qw(carp confess); |
| 5 use IMPL::clone qw(clone); | 5 use IMPL::clone qw(clone); |
| 6 | 6 |
| 7 my %class_meta; | 7 my %class_meta; |
| 8 my %class_data; | 8 my %class_data; |
| 9 | 9 |
| 10 sub SetMeta { | 10 sub SetMeta { |
| 11 my ($class,$meta_data) = @_; | 11 my ($class,$meta_data) = @_; |
| 12 $class = ref $class if ref $class; | 12 $class = ref $class || $class; |
| 13 | 13 |
| 14 # тут нельзя использовать стандартное исключение, поскольку для него используется | 14 # тут нельзя использовать стандартное исключение, поскольку для него используется |
| 15 # класс IMPL::Object::Accessor, который наследуется от текущего класса | 15 # класс IMPL::Object::Accessor, который наследуется от текущего класса |
| 16 die "The meta_data parameter should be an object" if not ref $meta_data; | 16 confess "The meta_data parameter should be an object" if not ref $meta_data; |
| 17 | 17 |
| 18 push @{$class_meta{$class}{ref $meta_data}},$meta_data; | 18 push @{$class_meta{$class}{ref $meta_data}},$meta_data; |
| 19 } | 19 } |
| 20 | 20 |
| 21 sub set_meta { | 21 sub set_meta { |
