view Lib/IMPL/Class/Property.pm @ 275:6253872024a4

*refactoring IMPL::Class
author cin
date Thu, 31 Jan 2013 02:18:31 +0400
parents 76515373dac0
children 8a5da17d7ef9
line wrap: on
line source

package IMPL::Class::Property;
use strict;
use parent qw(Exporter);
BEGIN {
    our @EXPORT = qw(property prop_get prop_set owner_set prop_none prop_all prop_list CreateProperty);
}

require IMPL::Class::Member;
require IMPL::Class::PropertyInfo;

sub import {
    __PACKAGE__->export_to_level(1,@_);
    IMPL::Class::Member->export_to_level(1,@_);
}

sub prop_get { 1 };
sub prop_set { 2 };
sub owner_set { 10 };
sub prop_none { 0 };
sub prop_all { 3 };
sub prop_list { 4 };

sub property($$;$) {
    my ($propName,$mutators,$attributes) = @_;
    my $Info = new IMPL::Class::PropertyInfo( {name => $propName, mutators => $mutators, class => scalar(caller), attributes => $attributes } );
    return $Info;
}

sub CreateProperty {
    my ($class,$propName,$mutators,$attributes) = @_;
    my $Info = new IMPL::Class::PropertyInfo( {name => $propName, mutators => $mutators, class => $class, attributes => $attributes} );
    return $Info;
};

1;