Class::MOP::Immutable - A class to transform Class::MOP::Class metaclasses |
Class::MOP::Immutable - A class to transform Class::MOP::Class metaclasses
use Class::MOP::Immutable;
my $immutable_metaclass = Class::MOP::Immutable->new($metaclass, { read_only => [qw/superclasses/], cannot_call => [qw/ add_method alias_method remove_method add_attribute remove_attribute add_package_symbol remove_package_symbol /], memoize => { class_precedence_list => 'ARRAY', compute_all_applicable_attributes => 'ARRAY', get_meta_instance => 'SCALAR', get_method_map => 'SCALAR', } });
$immutable_metaclass->make_metaclass_immutable(@_)
This is basically a module for applying a transformation on a given metaclass. Current features include making methods read-only, making methods un-callable and memoizing methods (in a type specific way too).
This module is not for the feint of heart, it does some whacky things to the metaclass in order to make it immutable. If you are just curious, I suggest you turn back now, there is nothing to see here.
$metaclass
and a set of %options
this module will
prepare an immutable version of the $metaclass
, which can then
be applied to the $metaclass
using the make_metaclass_immutable
method.
new
.
new
.
new
.
$metaclass
, but will
not actually change the original metaclass.
%options
passed into new
.
$metaclass
into the immutable version.
$metaclass
into the mutable version by reversing
the immutable process. %options
should be the same options that were
given to make_metaclass_immutable.
Stevan Little <stevan@iinteractive.com>
Copyright 2006-2008 by Infinity Interactive, Inc.
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
Class::MOP::Immutable - A class to transform Class::MOP::Class metaclasses |