Class::MakeMethods::Emulator::AccessorFast - Emulate Class::Accessor::Fast


Class-MakeMethods documentation Contained in the Class-MakeMethods distribution.

Index


Code Index:

NAME

Top

Class::MakeMethods::Emulator::AccessorFast - Emulate Class::Accessor::Fast

SYNOPSIS

Top

    package Foo;

    use base qw(Class::MakeMethods::Emulator::AccessorFast);
    Foo->mk_accessors(qw(this that whatever));

    # Meanwhile, in a nearby piece of code!
    # Emulator::AccessorFast provides new().
    my $foo = Foo->new;

    my $whatever = $foo->whatever;    # gets $foo->{whatever}
    $foo->this('likmi');              # sets $foo->{this} = 'likmi'




DESCRIPTION

Top

This module emulates the functionality of Class::Accessor::Fast, using Class::MakeMethods to generate similar methods.

You may use it directly, as shown in the SYNOPSIS above,

Furthermore, you may call use Class::MakeMethods::Emulator::AccessorFast '-take_namespace'; to alias the Class::Accessor::Fast namespace to this package, and subsequent calls to the original package will be transparently handled by this emulator. To remove the emulation aliasing, call use Class::MakeMethods::Emulator::AccessorFast '-release_namespace'.

Caution: This affects all subsequent uses of Class::Accessor::Fast in your program, including those in other modules, and might cause unexpected effects.

SEE ALSO

Top

See Class::MakeMethods for general information about this distribution.

See Class::MakeMethods::Emulator for more about this family of subclasses.

See Class::Accessor::Fast for documentation of the original module.


Class-MakeMethods documentation Contained in the Class-MakeMethods distribution.

package Class::MakeMethods::Emulator::AccessorFast;

use strict;
use Class::MakeMethods::Composite::Hash;
use Class::MakeMethods::Emulator '-isasubclass';

sub _emulator_target { 'Class::Accessor::Fast' }

sub import {
  my $class = shift;  
  $class->_handle_namespace( $class->_emulator_target, $_[0] ) and shift;
}

########################################################################

sub mk_accessors {
  Class::MakeMethods::Composite::Hash->make(
    -TargetClass => (shift),
    'new' => { name => 'new', modifier => 'with_values' },
    'scalar' => [ map { 
	$_, 
	"_${_}_accessor", { 'hash_key' => $_ } 
    } @_ ],
  );
}

sub mk_ro_accessors {
  Class::MakeMethods::Composite::Hash->make(
    -TargetClass => (shift),
    'new' => { name => 'new', modifier => 'with_values' },
    'scalar' => [ map { 
	$_, { permit => 'ro' }, 
	"_${_}_accessor", { 'hash_key' => $_, permit => 'ro' }
    } @_ ],
  );
}

sub mk_wo_accessors {
  Class::MakeMethods::Composite::Hash->make(
    -TargetClass => (shift),
    'new' => { name => 'new', modifier => 'with_values' },
    'scalar' => [ map { 
	$_, { permit => 'wo' }, 
	"_${_}_accessor", { 'hash_key' => $_, permit => 'wo' } 
    } @_ ],
  );
}

########################################################################

1;

__END__