Class::MOP::Overload

Section: User Contributed Perl Documentation (3)
Updated: 2018-05-16
Page Index
 

NAME

Class::MOP::Overload - Overload Meta Object  

VERSION

version 2.2011  

SYNOPSIS

    my $meta     = Class->meta;
    my $overload = $meta->get_overloaded_operator('+');

    if ( $overload->has_method_name ) {
        print 'Method for + is ', $overload->method_name, "\n";
    }
    else {
        print 'Overloading for + is implemented by ',
            $overload->coderef_name, " sub\n";
    }

 

DESCRIPTION

This class provides meta information for overloading in classes and roles.  

INHERITANCE

"Class::MOP::Overload" is a subclass of Class::MOP::Object.  

METHODS

 

Class::MOP::Overload->new(%options)

This method creates a new "Class::MOP::Overload" object. It accepts a number of options:
operator

This is a string that matches an operator known by the overload module, such as "" or "+". This is required.

method_name

The name of the method which implements the overloading. Note that this does not need to actually correspond to a real method, since it's okay to declare a not-yet-implemented overloading.

Either this or the "coderef" option must be passed.

method

A Class::MOP::Method object for the method which implements the overloading.

This is optional.

coderef

A coderef which implements the overloading.

Either this or the "method_name" option must be passed.

coderef_package

The package where the coderef was defined.

This is required if "coderef" is passed.

coderef_name

The name of the coderef. This can be ``__ANON__''.

This is required if "coderef" is passed.

associated_metaclass

A Class::MOP::Module object for the associated class or role.

This is optional.

 

$overload->operator

Returns the operator for this overload object.  

$overload->method_name

Returns the method name that implements overloading, if it has one.  

$overload->has_method_name

Returns true if the object has a method name.  

$overload->method

Returns the Class::MOP::Method that implements overloading, if it has one.  

$overload->has_method

Returns true if the object has a method.  

$overload->coderef

Returns the coderef that implements overloading, if it has one.  

$overload->has_coderef

Returns true if the object has a coderef.  

$overload->coderef_package

Returns the package for the coderef that implements overloading, if it has one.  

$overload->has_coderef

Returns true if the object has a coderef package.  

$overload->coderef_name

Returns the sub name for the coderef that implements overloading, if it has one.  

$overload->has_coderef_name

Returns true if the object has a coderef name.  

$overload->is_anonymous

Returns true if the overloading is implemented by an anonymous coderef.  

$overload->associated_metaclass

Returns the Class::MOP::Module (class or role) that is associated with the overload object.  

$overload->clone

Clones the overloading object, setting "original_overload" in the process.  

$overload->original_overload

For cloned objects, this returns the Class::MOP::Overload object from which they were cloned. This can be used to determine the source of an overloading in a class that came from a role, for example.  

AUTHORS

Stevan Little <stevan.little@iinteractive.com>
Dave Rolsky <autarch@urth.org>
Jesse Luehrs <doy@tozt.net>
Shawn M Moore <code@sartak.org>
יובל קוג'מן (Yuval Kogman) <nothingmuch@woobling.org>
Karen Etheridge <ether@cpan.org>
Florian Ragwitz <rafl@debian.org>
Hans Dieter Pearcey <hdp@weftsoar.net>
Chris Prather <chris@prather.org>
Matt S Trout <mst@shadowcat.co.uk>
 

COPYRIGHT AND LICENSE

This software is copyright (c) 2006 by Infinity Interactive, Inc.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.


 

Index

NAME
VERSION
SYNOPSIS
DESCRIPTION
INHERITANCE
METHODS
Class::MOP::Overload->new(%options)
$overload->operator
$overload->method_name
$overload->has_method_name
$overload->method
$overload->has_method
$overload->coderef
$overload->has_coderef
$overload->coderef_package
$overload->has_coderef
$overload->coderef_name
$overload->has_coderef_name
$overload->is_anonymous
$overload->associated_metaclass
$overload->clone
$overload->original_overload
AUTHORS
COPYRIGHT AND LICENSE