Provided by: libmoose-perl_2.1005-1_amd64 bug

NAME

       Moose::Meta::Role - The Moose Role metaclass

VERSION

       version 2.1005

DESCRIPTION

       This class is a subclass of Class::MOP::Module that provides additional Moose-specific
       functionality.

       Its API looks a lot like Moose::Meta::Class, but internally it implements many things
       differently. This may change in the future.

INHERITANCE

       "Moose::Meta::Role" is a subclass of Class::MOP::Module.

METHODS

   Construction
       Moose::Meta::Role->initialize($role_name)
           This method creates a new role object with the provided name.

       Moose::Meta::Role->combine( [ $role => { ... } ], [ $role ], ... )
           This method accepts a list of array references. Each array reference should contain a
           role name or Moose::Meta::Role object as its first element. The second element is an
           optional hash reference. The hash reference can contain "-excludes" and "-alias" keys
           to control how methods are composed from the role.

           The return value is a new Moose::Meta::Role::Composite that represents the combined
           roles.

       $metarole->composition_class_roles
           When combining multiple roles using "combine", this method is used to obtain a list of
           role names to be applied to the Moose::Meta::Role::Composite instance returned by
           "combine". The default implementation returns an empty list. Extensions that need to
           hook into role combination may wrap this method to return additional role names.

       Moose::Meta::Role->create($name, %options)
           This method is identical to the Moose::Meta::Class "create" method.

       Moose::Meta::Role->create_anon_role
           This method is identical to the Moose::Meta::Class "create_anon_class" method.

       $metarole->is_anon_role
           Returns true if the role is an anonymous role.

       $metarole->consumers
           Returns a list of names of classes and roles which consume this role.

   Role application
       $metarole->apply( $thing, @options )
           This method applies a role to the given $thing. That can be another Moose::Meta::Role,
           object, a Moose::Meta::Class object, or a (non-meta) object instance.

           The options are passed directly to the constructor for the appropriate
           Moose::Meta::Role::Application subclass.

           Note that this will apply the role even if the $thing in question already "does" this
           role.  "does_role" in Moose::Util is a convenient wrapper for finding out if role
           application is necessary.

   Roles and other roles
       $metarole->get_roles
           This returns an array reference of roles which this role does. This list may include
           duplicates.

       $metarole->calculate_all_roles
           This returns a unique list of all roles that this role does, and all the roles that
           its roles do.

       $metarole->does_role($role)
           Given a role name or Moose::Meta::Role object, returns true if this role does the
           given role.

       $metarole->add_role($role)
           Given a Moose::Meta::Role object, this adds the role to the list of roles that the
           role does.

       $metarole->get_excluded_roles_list
           Returns a list of role names which this role excludes.

       $metarole->excludes_role($role_name)
           Given a role name, returns true if this role excludes the named role.

       $metarole->add_excluded_roles(@role_names)
           Given one or more role names, adds those roles to the list of excluded roles.

   Methods
       The methods for dealing with a role's methods are all identical in API and behavior to the
       same methods in Class::MOP::Class.

       $metarole->method_metaclass
           Returns the method metaclass name for the role. This defaults to
           Moose::Meta::Role::Method.

       $metarole->get_method($name)
       $metarole->has_method($name)
       $metarole->add_method( $name, $body )
       $metarole->get_method_list
       $metarole->find_method_by_name($name)
           These methods are all identical to the methods of the same name in Class::MOP::Package

   Attributes
       As with methods, the methods for dealing with a role's attribute are all identical in API
       and behavior to the same methods in Class::MOP::Class.

       However, attributes stored in this class are not stored as objects. Rather, the attribute
       definition is stored as a hash reference. When a role is composed into a class, this hash
       reference is passed directly to the metaclass's "add_attribute" method.

       This is quite likely to change in the future.

       $metarole->get_attribute($attribute_name)
       $metarole->has_attribute($attribute_name)
       $metarole->get_attribute_list
       $metarole->add_attribute($name, %options)
       $metarole->remove_attribute($attribute_name)

   Overload introspection and creation
       The methods for dealing with a role's overloads are all identical in API and behavior to
       the same methods in Class::MOP::Class. Note that these are not particularly useful (yet),
       because overloads do not participate in role composition.

       $metarole->is_overloaded
       $metarole->get_overloaded_operator($op)
       $metarole->has_overloaded_operator($op)
       $metarole->get_overload_list
       $metarole->get_all_overloaded_operators
       $metarole->add_overloaded_operator($op, $impl)
       $metarole->remove_overloaded_operator($op)

   Required methods
       $metarole->get_required_method_list
           Returns the list of methods required by the role.

       $metarole->requires_method($name)
           Returns true if the role requires the named method.

       $metarole->add_required_methods(@names)
           Adds the named methods to the role's list of required methods.

       $metarole->remove_required_methods(@names)
           Removes the named methods from the role's list of required methods.

       $metarole->add_conflicting_method(%params)
           Instantiate the parameters as a Moose::Meta::Role::Method::Conflicting object, then
           add it to the required method list.

   Method modifiers
       These methods act like their counterparts in Class::MOP::Class and Moose::Meta::Class.

       However, method modifiers are simply stored internally, and are not applied until the role
       itself is applied to a class.

       $metarole->add_after_method_modifier($method_name, $method)
       $metarole->add_around_method_modifier($method_name, $method)
       $metarole->add_before_method_modifier($method_name, $method)
       $metarole->add_override_method_modifier($method_name, $method)
           These methods all add an appropriate modifier to the internal list of modifiers.

       $metarole->has_after_method_modifiers
       $metarole->has_around_method_modifiers
       $metarole->has_before_method_modifiers
       $metarole->has_override_method_modifier
           Return true if the role has any modifiers of the given type.

       $metarole->get_after_method_modifiers($method_name)
       $metarole->get_around_method_modifiers($method_name)
       $metarole->get_before_method_modifiers($method_name)
           Given a method name, returns a list of the appropriate modifiers for that method.

       $metarole->get_override_method_modifier($method_name)
           Given a method name, returns the override method modifier for that method, if it has
           one.

   Introspection
       Moose::Meta::Role->meta
           This will return a Class::MOP::Class instance for this class.

BUGS

       See "BUGS" in Moose for details on reporting bugs.

AUTHOR

       Moose is maintained by the Moose Cabal, along with the help of many contributors. See
       "CABAL" in Moose and "CONTRIBUTORS" in Moose for details.

COPYRIGHT AND LICENSE

       This software is copyright (c) 2013 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.