view lib/IMPL/Class/Member.pm @ 414:ec6f2d389d1e ref20150831

working on IMPL::Config::Bag
author cin
date Fri, 02 Oct 2015 06:56:24 +0300
parents c6e90e02dd17
children
line wrap: on
line source

package IMPL::Class::Member;
use strict;
use parent qw(Exporter);
our @EXPORT = qw(&public &private &protected &_direct);


use IMPL::Const qw(:access);

require IMPL::Class::MemberInfo;

sub public($) {
	my $info = shift;
    $info->{access} = ACCESS_PUBLIC;
    my $implementor = delete $info->{implementor};
    $implementor->Implement($info);
}

sub private($) {
    my $info = shift;
    $info->{access} = ACCESS_PRIVATE;
    my $implementor = delete $info->{implementor};
    $implementor->Implement($info);
}

sub protected($) {
    my $info = shift;
    $info->{access} = ACCESS_PROTECTED;
    my $implementor = delete $info->{implementor};
    $implementor->Implement($info);
}

sub _direct($) {
    my $info = shift;
    $info->{direct} = 1;
    return $info;
}

1;