SEARCH
NEW RPMS
DIRECTORIES
ABOUT
FAQ
VARIOUS
BLOG
DONATE


YUM REPOSITORY

 
 

MAN page from Fedora 28 perl-Class-MakeMethods-1.009-11.fc28.noarch.rpm

MakeMethods::Emulator::MethodMaker

Section: User Contributed Perl Documentation (3)
Updated: 2003-09-06
Index 

NAME

Class::MakeMethods::Emulator::MethodMaker - Emulate Class::MethodMaker 

SYNOPSIS

  package MyObject;  use Class::MakeMethods::Emulator::MethodMaker(     new_with_init => 'new',    get_set       => [ qw / foo bar baz / ];  );  ... OR ...  package MyObject;  use Class::MakeMethods::Emulator::MethodMaker '-take_namespace';  use Class::MethodMaker (     new_with_init => 'new',    get_set       => [ qw / foo bar baz / ];  );
 

DESCRIPTION

This module provides emulation of Class::MethodMaker, using the Class::MakeMethods framework.

Although originally based on Class::MethodMaker, the calling conventionfor Class::MakeMethods differs in a variety of ways; most notably, the namesgiven to various types of methods have been changed, and the format forspecifying method attributes has been standardized. This package usesthe aliasing capability provided by Class::MakeMethods, defining methodsthat modify the declaration arguments as necessary and pass them off tovarious subclasses of Class::MakeMethods. 

COMPATIBILITY

Full compatibility is maintained with version 1.03; some of thechanges in versions 1.04 through 1.10 are not yet included.

The test suite from Class::MethodMaker version 1.10 is includedwith this package, in the t/emulator_class_methodmaker/ directory. The unsupported tests have names ending in ``.todo''.

The tests are unchanged from those in the Class::MethodMakerdistribution, except for the substitution of"Class::MakeMethods::Emulator::MethodMaker" in the place of"Class::MethodMaker".

In cases where earlier distributions of Class::MethodMaker containeda different version of a test, it is also included. (Note thatversion 0.92's get_concat returned '' for empty values, but inversion 0.96 this was changed to undef; this emulator follows thelater behavior. To avoid ``use of undefined value'' warnings fromthe 0.92 version of get_concat.t, that test has been modified byappending a new flag after the name, 'get_concat --noundef',which restores the earlier behavior.) 

USAGE

There are several ways to call this emulation module:
*
Direct Access

Replace occurances in your code of "Class::MethodMaker" with "Class::MakeMethods::Emulator::MethodMaker".

*
Install Emulation

If you "use Class::MakeMethods::Emulator::MethodMaker '-take_namespace'", the Class::MethodMaker namespace will be aliased to this package, and calls to the original package will be transparently handled by this emulator.

To remove the emulation aliasing, call "use Class::MakeMethods::Emulator::MethodMaker '-release_namespace'".

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

*
The -sugar Option

Passing '-sugar' as the first argument in a use or import call will cause the 'methods' package to be declared as an alias to this one.

This allows you to write declarations in the following manner.

  use Class::MakeMethods::Emulator::MethodMaker '-sugar';  make methods    get_set => [ qw / foo bar baz / ],    list    => [ qw / a b c / ];

Note: This feature is deprecated in Class::MethodMaker version 0.96 and later.

 

METHOD CATALOG

NOTE: The documentation below is derived from version 1.02 ofClass::MethodMaker. Class::MakeMethods::Emulator::MethodMakerprovides support for all of the features and examples shown below,with no changes required. 

CONSTRUCTOR METHODS

 

new

Equivalent to Class::MakeMethods 'Template::Hash:new --with_values'. 

new_with_init

Equivalent to Class::MakeMethods 'Template::Hash:new --with_init'. 

new_hash_init

Equivalent to Class::MakeMethods 'Template::Hash:new --instance_with_methods'. 

new_with_args

Equivalent to Class::MakeMethods 'Template::Hash:new --with_values'. 

copy

Equivalent to Class::MakeMethods 'Template::Hash:new --copy_with_values'. 

SCALAR ACCESSORS

 

get_set

Basically equivalent to Class::MakeMethods 'Template::Hash:scalar', except that various arguments are intercepted and converted into the parallel Class::MakeMethods::Template interface declarations. 

get_concat

Equivalent to Class::MakeMethods 'Template::Hash:string' with a special interface declaration that provides the get_concat and clear behaviors. 

counter

Equivalent to Class::MakeMethods 'Template::Hash:number --counter'. 

OBJECT ACCESSORS

Basically equivalent to Class::MakeMethods 'Template::Hash:object' with an declaration that provides the ``delete_x'' interface. Due to a difference in expected argument syntax, the incoming arguments are revised before being delegated to Template::Hash:object. 

object_list

Basically equivalent to Class::MakeMethods 'Template::Hash:object_list' with an declaration that provides the relevant helper methods. Due to a difference in expected argument syntax, the incoming arguments are revised before being delegated to Template::Hash:object_list. 

forward

Basically equivalent to Class::MakeMethods 'Template::Universal:forward_methods'. Due to a difference in expected argument syntax, the incoming arguments are revised before being delegated to Template::Universal:forward_methods.

  forward => [ comp => 'method1', comp2 => 'method2' ]

Define pass-through methods for certain fields. The above defines thatmethod "method1" will be handled by component "comp", whilst method"method2" will be handled by component "comp2". 

REFERENCE ACCESSORS

 

list

Equivalent to Class::MakeMethods 'Template::Hash:array' with a custom method naming interface. 

hash

Equivalent to Class::MakeMethods 'Template::Hash:hash' with a custom method naming interface. 

tie_hash

Equivalent to Class::MakeMethods 'Template::Hash:tiedhash' with a custom method naming interface. 

hash_of_lists

Equivalent to Class::MakeMethods 'Template::Hash:hash_of_arrays', or if the -static flag is present, to 'Template::Static:hash_of_arrays'. 

STATIC ACCESSORS

 

static_get_set

Equivalent to Class::MakeMethods 'Template::Static:scalar' with a custom method naming interface. 

static_list

Equivalent to Class::MakeMethods 'Template::Static:array' with a custom method naming interface. 

static_hash

Equivalent to Class::MakeMethods 'Template::Static:hash' with a custom method naming interface. 

GROUPED ACCESSORS

 

boolean

Equivalent to Class::MakeMethods 'Template::Static:bits' with a custom method naming interface. 

grouped_fields

Creates get/set methods like get_set but also defines a method whichreturns a list of the slots in the group.

  use Class::MakeMethods::Emulator::MethodMaker    grouped_fields => [      some_group => [ qw / field1 field2 field3 / ],    ];

Its argument list is parsed as a hash of group-name => field-listpairs. Get-set methods are defined for all the fields and a method withthe name of the group is defined which returns the list of fields in thegroup. 

struct

Equivalent to Class::MakeMethods 'Template::Hash::struct'.

Note: This feature is included but not documented in Class::MethodMaker version 1. 

INDEXED ACCESSORS

 

listed_attrib

Equivalent to Class::MakeMethods 'Template::Flyweight:boolean_index' with a custom method naming interface. 

key_attrib

Equivalent to Class::MakeMethods 'Template::Hash:string_index'. 

key_with_create

Equivalent to Class::MakeMethods 'Template::Hash:string_index --find_or_new'. 

CODE ACCESSORS

 

code

Equivalent to Class::MakeMethods 'Template::Hash:code'. 

method

Equivalent to Class::MakeMethods 'Template::Hash:code --method'. 

abstract

Equivalent to Class::MakeMethods 'Template::Universal:croak --abstract'. 

ARRAY CONSTRUCTOR AND ACCESSORS

 

builtin_class (EXPERIMENTAL)

Equivalent to Class::MakeMethods 'Template::StructBuiltin:builtin_isa' with a modified argument order. 

CONVERSION

If you wish to convert your code from use of the Class::MethodMaker emulator to direct use of Class::MakeMethods, you will need to adjust the arguments specified in your "use" or "make" calls.

Often this is simply a matter of replacing the names of aliased method-types listed below with the new equivalents.

For example, suppose that you code contained the following declaration:

  use Class::MethodMaker (     counter => [ 'foo' ]  );

Consulting the listings below you can find that "counter" is an alias for "Hash:number --counter" and you could thus revise your declaration to read:

  use Class::MakeMethods (     'Hash:number --counter' => [ 'foo' ]   );

However, note that those methods marked ``(with custom interface)'' below have a different default naming convention for helper methods in Class::MakeMethods, and you will need to either supply a similar interface or alter your module's calling interface.

Also note that the "forward", "object", and "object_list" method types, marked ``(with modified arguments)'' below, require their arguments to be specified differently.

See Class::MakeMethods::Template::Generic for more information about the default interfaces of these method types. 

Hash methods

The following equivalencies are declared for old meta-method names that are now handled by the Hash implementation:

  new              'Template::Hash:new --with_values'  new_with_init    'Template::Hash:new --with_init'  new_hash_init    'Template::Hash:new --instance_with_methods'  copy             'Template::Hash:copy'  get_set          'Template::Hash:scalar' (with custom interfaces)  counter          'Template::Hash:number --counter'  get_concat       'Template::Hash:string --get_concat' (with custom interface)  boolean          'Template::Hash:bits' (with custom interface)  list             'Template::Hash:array' (with custom interface)  struct           'Template::Hash:struct'  hash             'Template::Hash:hash' (with custom interface)  tie_hash         'Template::Hash:tiedhash' (with custom interface)  hash_of_lists    'Template::Hash:hash_of_arrays'  code             'Template::Hash:code'  method           'Template::Hash:code --method'  object           'Template::Hash:object' (with custom interface and modified arguments)  object_list      'Template::Hash:array_of_objects' (with custom interface and modified arguments)  key_attrib       'Template::Hash:string_index'  key_with_create  'Template::Hash:string_index --find_or_new'
 

Static methods

The following equivalencies are declared for old meta-method namesthat are now handled by the Static implementation:

  static_get_set   'Template::Static:scalar' (with custom interface)  static_hash      'Template::Static:hash' (with custom interface)
 

Flyweight method

The following equivalency is declared for the one old meta-method namethat us now handled by the Flyweight implementation:

  listed_attrib   'Template::Flyweight:boolean_index'
 

Struct methods

The following equivalencies are declared for old meta-method namesthat are now handled by the Struct implementation:

  builtin_class   'Template::Struct:builtin_isa'
 

Universal methods

The following equivalencies are declared for old meta-method namesthat are now handled by the Universal implementation:

  abstract         'Template::Universal:croak --abstract'  forward          'Template::Universal:forward_methods' (with modified arguments)
 

EXTENDING

In order to enable third-party subclasses of MethodMaker to run under this emulator, several aliases or stub replacements are provided for internal Class::MethodMaker methods which have been eliminated or renamed.
*
install_methods - now simply return the desired methods
*
find_target_class - now passed in as the target_class attribute
*
ima_method_maker - no longer supported; use target_class instead
 

BUGS

This module aims to provide a 100% compatible drop-in replacement for Class::MethodMaker; if you detect a difference when using this emulation, please inform the author. 

SEE ALSO

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

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

See Class::MethodMaker for more information about the original module.

A good introduction to Class::MethodMaker is provided by pages 222-234 of Object Oriented Perl, by Damian Conway (Manning, 1999).

  http://www.browsebooks.com/Conway/


 

Index

NAME
SYNOPSIS
DESCRIPTION
COMPATIBILITY
USAGE
METHOD CATALOG
CONSTRUCTOR METHODS
new
new_with_init
new_hash_init
new_with_args
copy
SCALAR ACCESSORS
get_set
get_concat
counter
OBJECT ACCESSORS
object_list
forward
REFERENCE ACCESSORS
list
hash
tie_hash
hash_of_lists
STATIC ACCESSORS
static_get_set
static_list
static_hash
GROUPED ACCESSORS
boolean
grouped_fields
struct
INDEXED ACCESSORS
listed_attrib
key_attrib
key_with_create
CODE ACCESSORS
code
method
abstract
ARRAY CONSTRUCTOR AND ACCESSORS
builtin_class (EXPERIMENTAL)
CONVERSION
Hash methods
Static methods
Flyweight method
Struct methods
Universal methods
EXTENDING
BUGS
SEE ALSO

This document was created byman2html,using the manual pages.