NAME
MOP::Util - For MOP External Use Only
VERSION
version 0.14
DESCRIPTION
This is a public API of MOP related utility functions.
METHODS
get_meta( $package )-
First this will check to see if
$packagehas aMETACLASSmethod, and if so, will use it to construct the metaclass and return it to you.If no
METACLASSmethod is found, this function will next attempt to guess the most sensible type of meta object for the$packagesupplied.The test is simple, if there is anything in the
@ISAarray inside$package, then it is clearly a class and then this function returns a MOP::Class instance. However, if there is nothing in@ISAwe conservatively estimate that this is a role and then return a MOP::Role instance.In pretty much all cases that matter, a role and a class are entirely interchangable. The only real difference is that a class has methods in the MOP for manipulating inheritance relationships (
@ISA)and roles do not. compose_roles( $meta )-
This will look to see if the
$metaobject has any roles stored in it's@DOESarray, if so it will compose the roles together and apply that result to$meta.Note, if this is called more than once, the results are undefined.
inherit_slots( $meta )-
This will look to see if the
$metaobject is a MOP::Class instance and if so, will then loop through the direct superclasses (thouse in the@ISAarray of$meta) and alias all the slots into the$metanamespace.Note, if this is called more than once, the results are undefined.
defer_until_UNITCHECK( $cb )-
Given a CODE reference, this will defer the execution of that
$cbuntil the next available UNITCHECK phase.Note, it is not receommended to heavily abuse closures here, it might get messy, might not, better to keep it clean and just not go there.
AUTHOR
Stevan Little <stevan@cpan.org>
COPYRIGHT AND LICENSE
This software is copyright (c) 2017, 2018 by Stevan Little.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.