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