Mercurial > pub > Impl
view Lib/IMPL/Class/MemberInfo.pm @ 270:3f59fd828d5f
merge
author | cin |
---|---|
date | Fri, 25 Jan 2013 00:25:02 +0400 |
parents | 2904da230022 |
children | 6253872024a4 |
line wrap: on
line source
package IMPL::Class::MemberInfo; use strict; use parent qw(IMPL::Object::Accessor); require IMPL::Exception; __PACKAGE__->mk_accessors( qw( Name Access Class Frozen Implementor Attributes ) ); __PACKAGE__->PassThroughArgs; sub CTOR { my $this = shift; die new IMPL::Exception('The name is required for the member') unless $this->Name; die new IMPL::Exception('The class is required for the member') unless $this->Class; $this->Attributes({}) unless defined $this->Attributes; $this->Frozen(0); $this->Access(3) unless $this->Access; } sub Implement { my ($this) = @_; $this->Implementor->Make($this); $this->Frozen(1); $this->Class->set_meta($this); return; } sub access { goto &Access; } sub name { goto &Name; } 1; __END__ =pod =head1 NAME C<IMPL::Class::MemberInfo> - информация о члене класса. =head1 DESCRIPTION Данный класс является базовым для таких классов как C<IMPL::Class::PropertyInfo>, C<IMPL::Class::MethodInfo> и предназначен для хренения метаданных. Данный класс наследуется от C<IMPL::Object::Accessor> и не содержит в себе метаданных о своих членах. =head1 MEMBERS =over =item C<[get,set] Name> Имя члена. =item C<[get,set] Access> Default public. Атрибут доступа ( public | private | protected ) =item C<[get,set] Class> Класс владелец =item C<[get,set] Frozen> Флаг невозможности внесения изменений =item C<[get,set] Attributes> Дополнительные атрибуты =item C<Implement()> Устанавливает C<Frozen> в C<1>, добавляет в метаданные класса. При реализации собственного субкласса, данный метод может быть переопределен для реализации дополнительной обработки (например, создание методов доступа для свойств). =back =cut