summaryrefslogtreecommitdiff
path: root/lib/Class/MakeMethods/Docs
diff options
context:
space:
mode:
authorAndreas Brachold <vdr07@deltab.de>2007-11-10 17:53:53 +0000
committerAndreas Brachold <vdr07@deltab.de>2007-11-10 17:53:53 +0000
commitcfdd733c17cfa4f1a43b827a656e9e53cc2524ac (patch)
treeb6f659b1281f77628b36768f0888f67b65f9ca48 /lib/Class/MakeMethods/Docs
parent9c6c30350161efd74faa3c3705096aecb71c0e81 (diff)
downloadxxv-cfdd733c17cfa4f1a43b827a656e9e53cc2524ac.tar.gz
xxv-cfdd733c17cfa4f1a43b827a656e9e53cc2524ac.tar.bz2
* Remove unsed packages
* Reorder exit routines
Diffstat (limited to 'lib/Class/MakeMethods/Docs')
-rw-r--r--lib/Class/MakeMethods/Docs/Catalog.pod888
-rw-r--r--lib/Class/MakeMethods/Docs/Changes.pod661
-rw-r--r--lib/Class/MakeMethods/Docs/Examples.pod554
-rw-r--r--lib/Class/MakeMethods/Docs/ReadMe.pod279
-rw-r--r--lib/Class/MakeMethods/Docs/RelatedModules.pod962
-rw-r--r--lib/Class/MakeMethods/Docs/ToDo.pod296
6 files changed, 0 insertions, 3640 deletions
diff --git a/lib/Class/MakeMethods/Docs/Catalog.pod b/lib/Class/MakeMethods/Docs/Catalog.pod
deleted file mode 100644
index ba17349..0000000
--- a/lib/Class/MakeMethods/Docs/Catalog.pod
+++ /dev/null
@@ -1,888 +0,0 @@
-=head1 NAME
-
-Class::MakeMethods::Docs::Catalog - List of Makable Method Types
-
-
-=head1 DESCRIPTION
-
-This document lists the various subclasses of Class::MakeMethods included
-in this distribution, and the method types each one provides.
-
-See the documentation for each implementation for more details
-about the features it provides.
-
-For each class, a parenthetical comment indicates whether the methods it generates are applicable to individual blessed objects (Instances), to class data (Global), or both (Any)
-=head2 Scoping
-
-The final part of the name of a method-generating subclass typically indicates the scope or applicability of the methods it generates
-
-=over 4
-
-=item Hash
-
-For object instances based on blessed hashes with named values.
-
-=item Array
-
-For object instances based on blessed arrays with positional values.
-
-=item Scalar
-
-For object instances based on blessed scalars with a single value.
-
-=item InsideOut
-
-For any object instance regardless of underlying data type.
-
-=item Ref
-
-For any object instance regardless of underlying data type.
-
-=item Inheritable
-
-For data which can be set at the class, subclass, or instance level.
-
-=item Class
-
-For class data shared by all instances but different for each subclass
-
-=item ClassVar
-
-For class data shared by all instances but different for each subclass
-
-=item ClassInherit
-
-For class data shared by all instances but different for each subclass
-
-=item Global
-
-For global data shared by a class and all its instances and subclasses
-
-=item PackageVar
-
-For global data shared by a class and all its instances and subclasses
-
-=item Universal
-
-# General method types that are widely applicable
-
-=back
-
-=head2 Summary Charts
-
-This table shows which scopes are available in each generator family:
-
- SCOPING Basic Standard Evaled Composite Template
- Hash + + + + +
- Array + + + +
- Scalar +
- InsideOut +
- Ref +
- Inheritable + + +
- Class +
- ClassVar +
- ClassInherit +
- Global + + + +
- PackageVar +
- Universal + +
-
-This table shows which types of methods are typically available in each generator family:
-
- METHOD Basic Standard Evaled Composite Template
- new + + + +
-
- scalar + + + +
- string +
- string_index +
- number +
- boolean +
- boolean_index +
- bits +
-
- array + + + +
- struct +
-
- hash + + + +
- hash_of_arrays +
- tiedhash +
-
- object + + +
- instance +
- array_of_objects +
-
- code +
- code_or_scalar +
-
-
-=head1 BASIC CLASSES
-
-=head2 Basic::Hash (Instances)
-
-Methods for objects based on blessed hashes. See L<Class::MakeMethods::Basic::Hash> for details.
-
-=over 4
-
-=item *
-
-new: create and copy instances
-
-=item *
-
-scalar: get and set scalar values in each instance
-
-=item *
-
-array: get and set values stored in an array refered to in each
-instance
-
-=item *
-
-hash: get and set values in a hash refered to in each instance
-
-=back
-
-=head2 Basic::Array (Instances)
-
-Methods for manipulating positional values in arrays. See L<Class::MakeMethods::Basic::Array> for details.
-
-=over 4
-
-=item *
-
-new: create and copy instances
-
-=item *
-
-scalar: get and set scalar values in each instance
-
-=item *
-
-array: get and set values stored in an array refered to in each
-instance
-
-=item *
-
-hash: get and set values in a hash refered to in each instance
-
-=back
-
-=head2 Basic::Global (Global)
-
-Global methods are not instance-dependent; calling them by class
-name or from any instance or subclass will consistently access the
-same value. See L<Class::MakeMethods::Basic::Global> for details.
-
-=over 4
-
-=item *
-
-scalar: get and set a global scalar value
-
-=item *
-
-array: get and set values in a global array
-
-=item *
-
-hash: get and set values in a global hash
-
-=back
-
-
-=head1 STANDARD CLASSES
-
-=head2 Standard::Hash (Instances)
-
-Methods for objects based on blessed hashes. See L<Class::MakeMethods::Standard::Hash> for details.
-
-=over 4
-
-=item *
-
-new: create and copy instances
-
-=item *
-
-scalar: get and set scalar values in each instance
-
-=item *
-
-array: get and set values stored in an array refered to in each
-instance
-
-=item *
-
-hash: get and set values in a hash refered to in each instance
-
-=item *
-
-object: access an object refered to by each instance
-
-=back
-
-=head2 Standard::Array (Instances)
-
-Methods for manipulating positional values in arrays. See L<Class::MakeMethods::Standard::Array> for details.
-
-=over 4
-
-=item *
-
-new: create and copy instances
-
-=item *
-
-scalar: get and set scalar values in each instance
-
-=item *
-
-array: get and set values stored in an array refered to in each
-instance
-
-=item *
-
-hash: get and set values in a hash refered to in each instance
-
-=item *
-
-object: access an object refered to by each instance
-
-=back
-
-=head2 Standard::Global (Global)
-
-Methods for manipulating global data. See L<Class::MakeMethods::Standard::Global> for details.
-
-=over 4
-
-=item *
-
-scalar: get and set global scalar
-
-=item *
-
-array: get and set values stored in a global array
-
-=item *
-
-hash: get and set values in a global hash
-
-=item *
-
-object: global access to an object ref
-
-=back
-
-
-=head2 Standard::Inheritable (Any)
-
-Methods for manipulating data which may be overridden per class or instance. Uses external data storage, so it works with objects of any underlying data type. See L<Class::MakeMethods::Standard::Inheritable> for details.
-
-=over 4
-
-=item *
-
-scalar: get and set scalar values for each instance or class
-
-=back
-
-
-=head1 COMPOSITE CLASSES
-
-=head2 Composite::Hash (Instances)
-
-Methods for objects based on blessed hashes. See L<Class::MakeMethods::Composite::Hash> for details.
-
-=over 4
-
-=item *
-
-new: create and copy instances
-
-=item *
-
-scalar: get and set scalar values in each instance
-
-=item *
-
-array: get and set values stored in an array refered to in each
-instance
-
-=item *
-
-hash: get and set values in a hash refered to in each instance
-
-=item *
-
-object: access an object refered to by each instance
-
-=back
-
-=head2 Composite::Array (Instances)
-
-Methods for manipulating positional values in arrays. See L<Class::MakeMethods::Composite::Array> for details.
-
-=over 4
-
-=item *
-
-new: create and copy instances
-
-=item *
-
-scalar: get and set scalar values in each instance
-
-=item *
-
-array: get and set values stored in an array refered to in each
-instance
-
-=item *
-
-hash: get and set values in a hash refered to in each instance
-
-=item *
-
-object: access an object refered to by each instance
-
-=back
-
-=head2 Composite::Global (Global)
-
-Methods for manipulating global data. See L<Class::MakeMethods::Composite::Global> for details.
-
-=over 4
-
-=item *
-
-scalar: get and set global scalar
-
-=item *
-
-array: get and set values stored in a global array
-
-=item *
-
-hash: get and set values in a global hash
-
-=item *
-
-object: global access to an object ref
-
-=back
-
-
-=head2 Composite::Inheritable (Any)
-
-Methods for manipulating data which may be overridden per class or instance. Uses external data storage, so it works with objects of any underlying data type. See L<Class::MakeMethods::Composite::Inheritable> for details.
-
-=over 4
-
-=item *
-
-scalar: get and set scalar values for each instance or class
-
-=item *
-
-hook: create a subroutine intended to have operations added to it
-
-=back
-
-
-=head2 Composite::Universal (Any)
-
-Methods for padding pre- and post-conditions to any class. See L<Class::MakeMethods::Composite::Universal> for details.
-
-=over 4
-
-=item *
-
-patch: add pre and post operations to an existing subroutine
-
-=back
-
-
-=head1 TEMPLATE CLASSES
-
-=head2 Template::Universal (Any)
-
-Meta-methods for any type of object. See L<Class::MakeMethods::Template::Universal>.
-
-=over 4
-
-=item *
-
-no_op - a method with an empty body
-
-=item *
-
-croak - a method which will croak if called
-
-=item *
-
-method_init - calls other methods from a list of method name => argument pairs
-
-=item *
-
-forward_methods - delegates to an object provided by another method
-
-=back
-
-=head2 Template::Ref (Any Instance)
-
-Methods for deep copies and comparisons. See L<Class::MakeMethods::Template::Ref>.
-
-=over 4
-
-=item *
-
-clone: make a deep copy of an object instance
-
-=item *
-
-prototype: make new objects by cloning a typical instance
-
-=item *
-
-compare: compare one object to another
-
-=back
-
-
-=head2 Template::Generic (Abstract)
-
-The remaining subclasses inherit a similar collection of templates from Template::Generic, and provide a different type of scoping or binding for the functionality defined by the Generic template. See L<Class::MakeMethods::Template::Generic> for details.
-
-
-=head2 Template::Hash (Instances)
-
-The most commonly used implementation, for objects based on blessed hashes. See L<Class::MakeMethods::Template::Hash>.
-
-=over 4
-
-=item *
-
-new: create and copy instances
-
-=item *
-
-scalar: get and set scalar values in each instance
-
-=item *
-
-string: get and set string values in each instance
-
-=item *
-
-number: get and set numeric values in each instance
-
-=item *
-
-boolean: get and set boolean values in each instance
-
-=item *
-
-bits: get and set boolean values stored in a single value in each
-instance
-
-=item *
-
-array: get and set values stored in an array refered to in each
-instance
-
-=item *
-
-struct - methods for acccessing values which are stored by
-position in an array
-
-=item *
-
-hash: get and set values in a hash refered to in each instance
-
-=item *
-
-tiedhash: get and set values in a tied hash refered to in each
-instance
-
-=item *
-
-hash_of_arrays: for references to hashes of arrays contained in each
-instance
-
-=item *
-
-object: set or access a reference to an object contained in each
-instance
-
-=item *
-
-array_of_objects: manipulate an array of object references within in
-each instance
-
-=item *
-
-code: set or call a function reference contained in each instance
-
-=back
-
-
-=head2 Template::Array (Instances)
-
-Methods for manipulating positional values in arrays. See L<Class::MakeMethods::Template::Array>.
-
-=over 4
-
-=item *
-
-new: create and copy array instances
-
-=item *
-
-scalar: get and set scalar values in a given array position
-
-=item *
-
-string: get and set string values in a given array position
-
-=item *
-
-number: get and set numeric values in a given array position
-
-=item *
-
-boolean: get and set boolean values in a given array position
-
-=item *
-
-builtin_isa: generates a wrapper around some builtin function,
-cacheing the results in the object and providing a by-name interface
-
-=back
-
-
-
-=head2 Template::Scalar (Instances)
-
-For objects based on blessed scalars. See L<Class::MakeMethods::Template::Scalar>.
-
-Note that these objects can generally only have one value accessor method, as all such accessors will refer to the same value.
-
-=over 4
-
-=item *
-
-new: create and copy instances
-
-=item *
-
-scalar: get and set scalar values in each instance
-
-=item *
-
-string: get and set a string value in each instance
-
-=item *
-
-number: get and set a numeric value in each instance
-
-=item *
-
-boolean: get and set a boolean value in each instance
-
-=item *
-
-bits: get and set boolean values stored in a single value in each
-instance
-
-=item *
-
-code: set or call a function reference contained in each instance
-
-=back
-
-
-=head2 Template::InsideOut (Instances)
-
-Stores values for objects in an external location hashed by identity. See L<Class::MakeMethods::Template::InsideOut>.
-
-Note that while the below constructor creates and returns scalar
-references, accessor methods can be created with this implementation
-for use with any type of object.
-
-=over 4
-
-=item *
-
-new: create and copy instances
-
-=item *
-
-scalar: get and set scalar values associated with each instance
-
-=item *
-
-string: get and set string values associated with each instance
-
-=item *
-
-string_index: get and set string values associated with each
-instance, and maintain an index of instances by value
-
-=item *
-
-number: get and set numeric values associated with each instance
-
-=item *
-
-boolean: get and set boolean values associated with each instance
-
-=item *
-
-boolean_index: get and set boolean values associated with each instance, and maintain a list of items which have the flag set
-
-=item *
-
-bits: get and set boolean values stored in a single value associated with each
-instance
-
-=item *
-
-array: get and set values stored in an array associated with each
-instance
-
-=item *
-
-hash: get and set values in a hash associated with each instance
-
-=item *
-
-code: set or call a function reference associated with each instance
-
-=back
-
-
-=head2 Template::Global (Global)
-
-Global methods are not instance-dependent; calling them by class
-name or from any instance will consistently access the same value. See L<Class::MakeMethods::Template::Static>.
-
-=over 4
-
-=item *
-
-scalar: get and set a global scalar value
-
-=item *
-
-string: get and set a global string value
-
-=item *
-
-number: get and set a global number value
-
-=item *
-
-boolean: get and set a global boolean value
-
-=item *
-
-array: get and set values in a global array
-
-=item *
-
-hash: get and set values in a global hash
-
-=item *
-
-tiedhash: get and set values in a global tied hash
-
-=item *
-
-hash_of_arrays: get and set values in a global hash of arrays
-
-=item *
-
-object: set and access a global reference to an object
-
-=item *
-
-instance: set and access a global reference to an object of the declaring class
-
-=item *
-
-code: set and access a global reference to a subroutine.
-
-=back
-
-
-=head2 Template::PackageVar (Global)
-
-PackageVar methods access a variable in the declaring package. Thus,
-they have the same effect as Static methods, while keeping their
-value accessible via the symbol table. See L<Class::MakeMethods::Template::PackageVar>.
-
-=over 4
-
-=item *
-
-scalar: get and set a global scalar value
-
-=item *
-
-string: get and set a global string value
-
-=item *
-
-number: get and set a global number value
-
-=item *
-
-boolean: get and set a global boolean value
-
-=item *
-
-array: get and set values in a global array
-
-=item *
-
-hash: get and set values in a global hash
-
-=back
-
-
-=head2 Template::Class (Global)
-
-Class methods are similar to Static methods, except that each subclass and its instances will access a distinct value. See L<Class::MakeMethods::Template::Class>.
-
-=over 4
-
-=item *
-
-scalar: get and set a class-specific scalar value
-
-=item *
-
-string: get and set a class-specific string value
-
-=item *
-
-number: get and set a class-specific number value
-
-=item *
-
-boolean: get and set a class-specific boolean value
-
-=item *
-
-array: get and set values in a class-specific array
-
-=item *
-
-hash: get and set values in a class-specific hash
-
-=back
-
-
-=head2 Template::ClassVar (Global)
-
-ClassVar methods access a variable in the package on which they
-are called. Thus, they have the same effect as Class methods,
-while keeping their value accessible via the symbol table, like
-PackageVar. See L<Class::MakeMethods::Template::ClassVar>.
-
-=over 4
-
-=item *
-
-scalar: get and set a class-specific scalar value
-
-=item *
-
-string: get and set a class-specific string value
-
-=item *
-
-number: get and set a class-specific number value
-
-=item *
-
-boolean: get and set a class-specific boolean value
-
-=item *
-
-array: get and set values in a class-specific array
-
-=item *
-
-hash: get and set values in a class-specific hash
-
-=back
-
-
-=head2 Template::ClassInherit (Global)
-
-ClassInherit methods are an intermediate point between Static and Class methods; subclasses inherit their superclass's value until they set their own value, after which they become distinct. See L<Class::MakeMethods::Template::ClassInherit>.
-
-=over 4
-
-=item *
-
-scalar: get and set an inheritable class-specific scalar value
-
-=item *
-
-string: get and set an inheritable class-specific string value
-
-=item *
-
-number: get and set an inheritable class-specific number value
-
-=item *
-
-boolean: get and set an inheritable class-specific boolean value
-
-=item *
-
-array: get and set values in an inheritable class-specific array
-
-=item *
-
-hash: get and set values in an inheritable class-specific hash
-
-=back
-
-
-=head2 Template::Inheritable (Any)
-
-Methods for manipulating data which may be overridden per class or instance. Uses external data storage, so it works with objects of any underlying data type. See L<Class::MakeMethods::Template::Inheritable> for details.
-
-=over 4
-
-=item *
-
-scalar: get and set scalar values for each instance or class
-
-=item *
-
-string: get and set string values for each instance or class
-
-=item *
-
-number: get and set numeric values for each instance or class
-
-=item *
-
-boolean: get and set boolean values for each instance or class
-
-=item *
-
-hash: get and set values in a hash refered to in each instance
-
-=back
-
-
-=head1 SEE ALSO
-
-See L<Class::MakeMethods> for general information about this distribution.
-
-=cut
diff --git a/lib/Class/MakeMethods/Docs/Changes.pod b/lib/Class/MakeMethods/Docs/Changes.pod
deleted file mode 100644
index 8b01f0a..0000000
--- a/lib/Class/MakeMethods/Docs/Changes.pod
+++ /dev/null
@@ -1,661 +0,0 @@
-=head1 NAME
-
-Class::MakeMethods::Docs::Changes - History of Class::MakeMethods
-
-=head1 SYNOPSIS
-
-Revision history for Class::MakeMethods.
-
-=head1 CHANGES
-
-=head2 Version 1.010
-
-=over 4
-
-=item 2004/09/06
-
-Moved get_declarations() and associated documentation from Standard module to superclass.
-
-=item 2004/09/03
-
-Developed test.pl test harness with recursive file search to fix Windows "command line too long" errors.
-
-=item 2004/09/01
-
-Moved Template::TextBuilder and Template::DiskCache into Utility:: namespace.
-
-Added support for defaults with -- and -param to Standard get_declarations().
-
-=item 2004/08/12
-
-Began testing and integrating tied-value patches from Dominique Dumont.
-
-=item 2004/04/27
-
-Added method types to Evaled::Hash.
-
-=item 2004/04/23
-
-Added skeleton of a new Evaled::Hash class.
-
-=back
-
-=head2 Version 1.009
-
-=over 4
-
-=item 2003/09/25
-
-Added Emulator::mcoder and compatibility tests.
-
-Released to CPAN as Class-MakeMethods-1.009.tar.gz.
-
-=item 2003/09/22
-
-Added support for lvalue methods to Template and Template::Generic. Added a few tests to demonstrate they're working. Added an example to Docs::Examples.
-
-Added Emulator::accessors and compatibility tests.
-
-Minor documentation improvements.
-
-=back
-
-=head2 Version 1.008
-
-=over 4
-
-=item 2003/09/05
-
-Adjusted layout of test directories in another attempt to solve a MakeMaker/shell-glob issue on Windows that was preventing make test from running correctly.
-
-Removed Template::PseudoHash, since this package never really worked, as pointed out by a question from Mike Castle. Management of array-based objects can be handled by any of the existing ::Array subclasses, and support for pseudo-hashes would not provide any useful new capabilities.
-
-Added support for "Template::Universal:forward_methods -delegate" and "Template::Generic:object --soft_delegate" based on a suggestion from Peter Chen. Extended behavior of Template -subs handling to make it easy to add such functionality in the future.
-
-Released to CPAN as Class-MakeMethods-1.008.tar.gz.
-
-=item 2003/09/02
-
-Adjusted DESTROY behavior of Template::InsideOut and cleaned up documentation.
-
-=back
-
-=head2 Version 1.007
-
-=over 4
-
-=item 2003/09/01
-
-Made Template definitions automatically import their class's generic
-definitions, if present. This eliminates the need for Generic
-subclasses to explicitly redeclare every method it inherits, and
-should obviate the "missing declaration" problems referenced below.
-
-Updated the names of several Template subclasses, with stubs at
-the old names for backwards compatibility: Flyweight becomes
-InsideOut, Static becomes Global, and Struct becomes Array.
-
-Added Template::Inheritable and basic tests for it.
-
-Eliminated use of legacy Test.pm from remaining tests, except for
-MethodMaker emulation.
-
-Rearranged test directories in an effort to avoid a reported bug
-with the test path of t/*/*.t under Windows.
-
-Released to CPAN as Class-MakeMethods-1.007.tar.gz.
-
-=item 2003/08/27
-
-Added section to Class::MakeMethods/EXTENDING documentation based
-on question from Terrence Brannon.
-
-=item 2003/02/07
-
-Fixed missing declaration of Template::Hash:instance, reported via RT.
-
-=back
-
-=head2 Version 1.006
-
-=over 4
-
-=item 2003/01/26
-
-Additional documentation touch-ups. Moved miscellaneous POD files into the Docs directory.
-
-Added new test scripts from Class-MethodMaker-1.08, although we
-don't yet pass them. In particular, I need to add support for the
-new method types added in 1.04: tie_scalar, tie_list, object_tie_list,
-object_tie_hash
-
-Also need to compare against the changes included in Class-MethodMaker-1.09 and 1.10, which don't seem to include any new test code, but do include functionality changes.
-
-=item 2002/12/12
-
-Re-integrated Template and Emulator packages; the separate distribution
-turned out to be a hastle rather than a convenience. However, in
-order to keep test scripts for each subsystem separate, I'm now
-using a Makefile.PL attribute to specify a two-level deep directory
-tree of test scripts; I hope this doesn't break on Windows...
-
-Fixed possible "use of undefined as a reference" problem in
-Standard::*::array method generators, reported by Jared Rhine.
-
-Tried to improve documentation, based on feedback from Jared Rhine.
-Expunged ReadMe.pod. Extracted method catalogs into Catalog.pod.
-Moved examples to new Example.pod, although that underlines how
-few examples there are.
-
-=back
-
-
-=head2 Version 1.005
-
-=over 4
-
-=item 2002/06/06
-
-Added Autoload interface.
-
-Modifed Attribute interface to add "inheritable" default logic for
-Maker class parameter. (Suggested by Malcolm Cook.)
-
-Fixed typo in documentation for Standard::Universal. (Spotted by
-Malcolm Cook.)
-
-=back
-
-
-=head2 Version 1.004
-
-=over 4
-
-=item 2002/03/23
-
-Released to CPAN as Class-MakeMethods-1.004.tar.gz.
-
-=item 2002/03/16
-
-Allow double-colons between package name and method generator name.
-
-=item 2002/02/19
-
-Fixed related use of undef in Standard::*:hash methods.
-
-=item 2002/02/14
-
-Adjusted Standard::*:hash methods to avoid assuming that the hashref
-already exists.
-
-=item 2002/02/07
-
-Added missing *_reset => clear to Template number --counter interface.
-
-=item 2002/02/02
-
-Adjusted error message in Utility::ArraySplicer
-
-=item 2002/01/26
-
-Applied small documentation corrections suggested by Adam Spiers.
-
-Added Standard::Universal:alias.
-
-=back
-
-=head2 Version 1.003
-
-=over 4
-
-=item 2002/01/24
-
-Folded "Getting Started Guide" POD into main module documentation.
-
-Renamed Utility::TakeName to Emulator.
-
-Split Template and Emulator packages into their own distributions.
-
-B<Please Note:> This means that to fully upgrade you must retrieve
-all three of these files:
-
- Class-MakeMethods-1.003.tar.gz
- Class-MakeMethods-Template-1.003.tar.gz
- Class-MakeMethods-Emulator-1.003.tar.gz
-
-Of course, if you're not using the Template or Emulator classes,
-there's no need to download them...
-
-
-=item 2002/01/21
-
-Started bumping sub-version numbers and not using sub-sub-versions,
-to shorten distribution names and more closely match standard
-practice.
-
-Added Composite::Inheritable:hook and matching test. Added
-Composite->CurrentResults method to easily access, update composite
-method results.
-
-=back
-
-=head2 Version 1.000.*
-
-=over 4
-
-=item v1.000.16 - 2002/01/21
-
-Released to CPAN as v1.000.016.
-
-=item v1.000.16 - 2002/01/20
-
-Adjusted the hash and array methods in the Standard::* and Composite::*
-packages to properly accept a set-contents call with a single
-reference argument, and to return contents rather than ref in list
-context.
-
-=item v1.000.16 - 2002/01/14
-
-Fixed a subtle bug in a test script inherited from Class::MethodMaker:
-4_Template_hash_hash_array.t and 7_MethodMaker_hash_of_lists.t both
-relied on "keys %hash" returning the keys in a particular order,
-which *almost* always worked, but caused failures on one or more
-Perl version/platform combinations.
-
-
-=item v1.000.15 - 2002/01/14
-
-Released to CPAN as v1.000.015.
-
-=item v1.000.15 - 2002/01/12
-
-Renamed Basic::Static to Basic::Global for consistency with Standard
-and Composite. Hopefully, there aren't many users of this module
-yet; please accept my apologies if this breaks your code.
-
-Eliminated "local @_ = ...", which appears to cause a scoping
-problem on Perl 5.6. Thanks to Adam Spiers for a thorough bug
-report. (See http://www.perlmonks.org/index.pl?node_id=138370 for
-details.)
-
-Extended Template::Generic to support "array --get_set_ref" method
-style requested by Adam Spiers.
-
-Various documentation tweaks, including feedback from Adam Spiers:
-Adjusted documentation to downplay Basic::* modules as a starting
-point, in favor of Standard::* ones. Trimmed out some duplicated
-documentation in favor of more "See LE<lt>...E<gt>" links. Adjusted
-documentation of *::Inheritable packages in an attempt to clarify
-the way in which the inheritance tree is searched for a value.
-
-Factored out common code from Standard::Inheritable and
-Composite::Inheritable to new module, Utility::Inheritable. Factored
-out common code from Standard::Hash and Standard::Array to new
-module, Utility::ArraySplicer. Factored out common code from
-Template::Universal to new module, Utility::Ref. Renamed
-Emulator::TakeName to Utility::TakeName (this is internal use only,
-so there should be no public impact).
-
-
-=item v1.000.15 - 2001/12/01
-
-Adjusted Template::Universal's code for _CALL_METHODS_FROM_HASH_,
-to ensure that method/arg pairs are called in order they were passed
-in.
-
-=item v1.000.15 - 2001/07/04, 2001/07/19
-
-Minor additions to documentation of various method types.
-
-
-=item v1.000.14 - 2001/07/01
-
-Released as v1.000.014.
-
-
-=item v1.000.14 - 2001/06/25, 2001/06/29, 2001/07/01
-
-Removed Makefile rule from Makefile.PL to avoid warnings when used
-with recent versions of ExtUtils::MakeMaker, which also define a
-similar rule. (Based on bug report from Ron Savage.)
-
-Fixed test failure for machines with P5.6 but no Attribute::Handlers.
-(Reported by Ron Savage, Jay Lawrence.)
-
-Added Template::Flyweight:string_index. (But still needs test
-script.)
-
-Added Standard::Universal. (But still needs test scripts.)
-
-Minor touch-ups to ReadMe and Guide documentation.
-
-
-=item v1.000.13 - 2001/05/16, 2001/05/18, 2001/05/20, 2001/06/02, 2001/06/22, 2001/06/24
-
-To date, this module has been circulated under several provisional
-names: it was originally floated as a possible version-2 rewrite
-of Class::MethodMaker, then renamed to Class::Methods when it forked
-from that project, and then briefly to Class::MethodGenerator.
-(Note that it can be surprisingly difficult to comply with both of
-these L<perlmodlib> guidelines: "To be portable each component of
-a module name should be limited to 11 characters. [...] Always
-try to use two or more whole words.") In the end, I selected
-Class::MakeMethods, as it is two whole words, and is reminiscent
-of Class::MethodMaker without being confusing (I hope!), and I
-believe this issue is now settled.
-
-Standardized syntax for global options; renamed -implementation to
--MakerClass and -target_class to -TargetClass. Moved $TargetClass
-and other context information into %CONTEXT with _context accessor.
-Added ForceInstall.
-
-Completed re-simplification of build directories; we're back to a
-single Makefile, which avoids a warning in P5.6.0.
-
-Added Attribute interface for use with P5.6 and later, based on
-Attribute::Handlers.
-
-Renamed "Simple" subclasses to "Basic". Added documentation and
-initial tests.
-
-Added Standard subclasses with parameter parsing and more powerful
-accessors.
-
-Modified Emulator::Struct to use Standard::* methods. Found struct
-test from P5.7, and added auto_init functionality to match.
-
-Added Composite::* subclasses.
-
-Added Emulator::AccessorFast.
-
-Added Class::MakeMethods::Guide with introduction and examples.
-
-Continued clean-up effort on Template documentation. Renamed Template
-"attributes" to "method parameters" to avoid confusion with Perl
-attributes. Retitled Template naming rules from "templates" to
-"interfaces".
-
-Changed initialization code expressions of Template::Class in hopes
-of P5.6.1 compatibility. (Problem reported by M Schwern.)
-
-Added 'Template::Generic:new --and_then_init' based on feedback
-from Jay Lawrence.
-
-=back
-
-=head2 Early 1.000 versions
-
-=over 4
-
-=item v1.000.12 - 2001/05/14
-
-Renamed module to Class::MethodGenerator, although naming questions
-remain.
-
-Moved Template subclasses into Template::* namespace. Simplified
-build directory and makefile structure.
-
-Changed initialization code expressions of Template::PackageVar,
-ClassVar for P5.6.0 compatibility. (Reported by M Schwern.)
-
-
-=item v1.000.11 - 2001/05/07, 2001/05/12
-
-Eliminated Bundle file. Moved general documentation to cm_base.
-
-Renamed Class::Methods::Base to Class::Methods::Generator.
-
-Extracted code for Template declarations to new Class::Methods::Template
-module. Extracted disk-caching to new Template::DiskCache module.
-Moved TextBuilder into the Template:: tree.
-
-Moved _namespace_capture code to new package
-Class::Methods::Emulator::TakeName.
-
-Added Simple::Hash subclass.
-
-
-=item v1.000.10 - 2001/04/26, 2001/05/02, 2001/05/04
-
-Moved _namespace_capture and _namespace_release to Class::Methods::Base.
-
-Additional doc tweakage. Moved ReadMe documentation to
-Bundle::ClassMethods. Merged Extending documentation into Base.
-
-Removed spurious uses of -default => 'default' in templates.
-
-Added new ClassInherit subclass and Emulator::Inheritable.
-
-Expunged Index subclass in favor of boolean_index and string_index
-types on Generic.
-
-Moved Struct:builtin_isa type to new package, StructBuiltin.
-
-Refactored code templating function as Class::Methods::Base::TextBuilder.
-
-
-=item v1.000.9 - 2001/03/24
-
-Reversed sense of - and --, as it was in 1.000.1.
-
-Separated source files into separate directories with distinct
-Makefiles and test hierarchies. This should clarify the boundaries
-between the core method-generation code, the common constructor/accessor
-methods, and the various emulator and experimental packages.
-
-
-=item v1.000.8 - 2001/01/19
-
-Following receipt of a suggestion to fork from the maintainer of
-Class::MethodMaker, renamed packge from Class::MethodMaker v2.0 to
-Class::Methods v1.000.
-
-Adjusted documentation to reflect fork, although additional cleanup
-is still needed.
-
-Moved backward compatibility to Emulator::MethodMaker subclass.
-
-Added Generic -compatibility array index_* and hash_of_arrays *_last
-and *_set methods to match changes in Class::MethodMaker v1.02.
-Added Emulator::MethodMaker support for the '-static' flag. The
-emulator now completely satisfies the enclosed test suites, from
-Class::MethodMaker v0.92 and v1.02.
-
-
-=item v1.000.7 - 2001/01/05, 2001/01/06, 2001/01/07
-
-Moved core code and internal code to Internals.pm. MethodMaker.pm
-now contains only some require statements and the general user
-guide documentation.
-
-Moved ReadMe.pod, Changes.pod, and ToDo.pod into MethodMaker
-directory. Separated Catalog.pod, Extending.pod, RelatedModules.pod.
-
-Included version 1 docs as Class::Methods::OriginalDocs; minor
-revisions for clarity.
-
-Renamed Package subclass to PackageVar, Class to ClassVar.
-
-Added Emulation::Struct subclass.
-
-Added support for shifting targets with make( -target_class =>
-Package, ... ).
-
-Extended ClassName subclass to handle requiring, rather than creating
-subclases.
-
-
-=item v1.000.6 - 2000/12/29, 2001/01/02, 2001/01/04
-
-Restored -sugar import option for compatibility with earlier
-versions.
-
-Added plural names to "Generic:hash -compatibility" to support
-v0.92 usage.
-
-Replaced use of substr(..., 0, 1) with ... =~ s/^-// for P5.004
-compatibility; problem found by Scott Godin.
-
-Copy @_ before splicing and pushing on to it for P5.004 compatibility.
-
-Expunged duplicate lines from Generic.pm's array_of_objects; found
-by Ron Savage.
-
-Renamed Hash.pm's delete and exists behaviors to avoid possible
-run-time import conflict with Generic.pm's behaviors; failure
-reported by Ron Savage.
-
-Added _STATIC_ATTR_{return_value_undefined} attributes to Generic
-string and number to allow overrides of this functionality.
-
-Minor doc touchups and expanded examples section.
-
-
-=item v1.000.5 - 2000/11/28, 2000/12/16, 2000/12/28
-
-Added Universal -warn_calls modifier.
-
-Folded various pod files together into main module's inline
-documentation. Updated catalog of existing implementations in
-documentation. Added pointers to some tutorials and books which
-discuss Class::Methods.
-
-Standardized naming of test scripts.
-
-Can now specify default template name, via -default=>"foo".
-
-
-=item v1.000.4 - 2000/11/22
-
-Separated string, number, and boolean from the Generic scalar
-methods.
-
-Provide _disk_cache to shortcut the lengthy _interpret_text_builder
-process.
-
-Fixes to ClassName implementation.
-
-Change to forward methods to provide better error messages when
-object is empty.
-
-
-=item v1.000.3 - 2000/11/03
-
-Rearranged documentation into separate files in the pod/ directory.
-
-Collapsed find_target_class and make functionality into import;
-moved support for the old functions to the Compatibility module.
-
-Adjusted tests to generally use standard syntax, and not Compatibility
-hooks.
-
-
-=item v1.000.2.1 - 2000/10/23
-
-Moved commonly-accessible information to Universal.
-
-Added block{...} replacement for enhanced behavior templating.
-
-Added modifier mechanism to support -private and -protected.
-
-May need to be able to specify import ordering so that modifiers
-are applied in the right order. This hasn't bit me yet, but it's
-there. Darn.
-
-
-=item v1.000.2 - 2000/10/22
-
-Completed generalization of Generic methods from Static and Hash.
-Rewrote ClassVar and PackageVar to use Generic framework.
-
-Attribute expansion can now substitute values besides name, using
-*{attr}.
-
-Added _diagnostics function and documentation of all failure
-messages.
-
-Added SEE ALSO section to documentation, brief review of Class::*
-on CPAN. Stumbled across Damian Conway's very nice Class::Contract
-module.
-
-Added Scalar and Flyweight implementations.
-
-
-=item v1.000.1.1 - 2000/10/21
-
-Rolled back change from yesterday; can still pick templates like
-'-java'. Allow attributes to be specified as '--foo'=>'bar' or
-'--'=>{foo=>'bar'}
-
-Automated caching for meta-method definition hashes.
-
-Generalized several Static and Hash interfaces into Generic templates.
-Added Static:array and Static:code support.
-
-Allow global -import to set default sources for templates, exprs,
-behaviors.
-
-
-=item v1.000.1 - 2000/10/19
-
-Support inheritance of templates between meta-methods with -import.
-
-Made "template" an attribute, rather than a special state variable.
-
-Allow any attribute to be specified as -foo=>'bar'. Changed
-selection of standard templates from '-java' to '--java'.
-
-Initial support for string-eval behaviors and code_exprs, and
-Generic.pm
-
-
-=item v1.000.0 - 2000/10/14, 2000/10/15
-
-Completed initial pass of full rewrite.
-
-Assorted cleanup of syntax and documentation.
-
-Moved Hash, Static, and Index implementations into separate packages.
-
-
-=item v0.9.3 - 2000/09/30
-
-Refactored subclass_name and class_registry.
-
-Folded in some misc improvements from Class::MethodMaker 1.0.
-
-
-=item v0.97x - 2000/08/04 to 2000/08/13
-
-Forked from Class::MethodMaker 0.96. Substantial rewrite started
-
-Created build_meta_method and refactored many methods to use it.
-
-Added new_hash, hash_init, new_from_prototype.
-
-Extended arg format. Added -template=>behavior_name. Added support
-for array-of-names arguments.
-
-Performance tuning. Additional refactoring to support AutoSplit
-functionality.
-
-Also folded in some older changes and additions from Evolution's
-internal collection of MethodMaker subclasses:
-
-=back
-
-=head2 Class::MethodMaker::Extensions
-
-Change notes from unreleased collection of extensions to Class::MethodMaker that were later folded into Class::MakeMethods:
-
- 2000/01/12 Added set_foo, clear_foo to class_var hashes.
- 1999/07/27 Added subclass_name.
- 1999/04/15 Changed class_var to use symbol table lookups, not eval "".
- 1999/04/05 Changed determine_once to check again if undefined.
- 1999/03/25 Added singleton method.
- 1998/09/18 Finished integration of class_registry handlers.
- 1998/07/31 Added class_var and classnames handlers.
- 1998/06/12 Added lookup handlers.
- 1998/05/09 Created no_op and determine_once method groups.
-
-=cut
diff --git a/lib/Class/MakeMethods/Docs/Examples.pod b/lib/Class/MakeMethods/Docs/Examples.pod
deleted file mode 100644
index 787ace7..0000000
--- a/lib/Class/MakeMethods/Docs/Examples.pod
+++ /dev/null
@@ -1,554 +0,0 @@
-=head1 NAME
-
-Class::MakeMethods::Docs::Examples - Sample Declarations and Usage
-
-=head1 EXAMPLES
-
-The following examples indicate some of the capabilities of
-Class::MakeMethods.
-
-=head2 A Contrived Example
-
-Object-oriented Perl code is widespread -- you've probably seen code like the below a million times:
-
- my $obj = MyStruct->new( foo=>"Foozle", bar=>"Bozzle" );
- if ( $obj->foo() =~ /foo/i ) {
- $obj->bar("Barbados!");
- }
-
-Here's a possible implementation for the class whose interface is
-shown above:
-
- package MyStruct;
-
- sub new {
- my $callee = shift;
- my $self = bless { @_ }, (ref $callee || $callee);
- return $self;
- }
-
- sub foo {
- my $self = shift;
- if ( scalar @_ ) {
- $self->{'foo'} = shift();
- } else {
- $self->{'foo'}
- }
- }
-
- sub bar {
- my $self = shift;
- if ( scalar @_ ) {
- $self->{'bar'} = shift();
- } else {
- $self->{'bar'}
- }
- }
-
-Class::MakeMethods allows you to simply declare those methods to
-be of a predefined type, and it generates and installs the necessary
-methods in your package at compile-time.
-
-Here's the equivalent declaration for that same basic class:
-
- package MyStruct;
- use Class::MakeMethods::Standard::Hash (
- 'new' => 'new',
- 'scalar' => 'foo',
- 'scalar' => 'bar',
- );
-
-=head2 A Typical Example
-
-The following example shows a common case of constructing a class with several types of accessor methods
-
- package MyObject;
- use Class::MakeMethods::Standard::Hash (
- new => 'new',
- scalar => [ 'foo', 'bar' ],
- array => 'my_list',
- hash => 'my_index',
- );
-
-This class now has a constructor named new, two scalar accessors named foo and bar, and a pair of reference accessors named my_list and my_index. Typical usage of the class might include calls like the following:
-
- my $obj = MyObject->new( foo => 'Foozle' );
- print $obj->foo();
-
- $obj->bar('Barbados');
- print $obj->bar();
-
- $obj->my_list(0 => 'Foozle', 1 => 'Bang!');
- print $obj->my_list(1);
-
- $obj->my_index('broccoli' => 'Blah!', 'foo' => 'Fiddle');
- print $obj->my_index('foo');
-
-=head2 Lvalue Accessors
-
-The Template subclasses support an optional "--lvalue" modifer that causes your accessors method to be marked as returning an lvalue which can be assigned to. (This feature is only available on Perl 5.6 or later.)
-
- package MyStruct;
- use Class::MakeMethods::Template::Hash (
- 'new' => 'new',
- 'scalar --get --lvalue' => 'foo',
- 'array --get --lvalue' => 'bar',
- );
-
- $obj->foo = "Foozle";
- print $obj->foo;
-
- $obj->bar = ( 'baz', 'beep', 'boop' );
- print $obj->bar->[1]; # beep
-
-=head2 String and Numeric Accessors
-
-In addition to the C<scalar> accessor supported by the C<Standard::*> classes, the Template subclasses also provide specialized accessors that can facilitate the use of specific types of data.
-
-For example, we could declare the following class to hold information
-about available Perl packages:
-
- package MyVersionInfo;
- use Class::MakeMethods::Template::Hash (
- 'new' => 'new',
- 'string' => 'package',
- 'number' => 'version',
- );
-
- sub summary {
- my $self = shift;
- return $self->package() . " is at version " . $self->version()
- }
-
-You could use this class as follows:
-
- package main;
- use MyVersionInfo;
-
- my $obj = MyVersionInfo->new( package=>"Class::MakeMethods");
- $obj->version( 2.0 );
- print $obj->summary();
-
-These accessors will provide a bit of diagnostic type checking;
-an attempt to call C<$obj-E<gt>version("foo")> will cause your
-program to croak.
-
-
-=head2 String Concatenation Interface
-
-The following defines a get_concat method C<i>, and specifies
-a string to use when joining additional values when this method is
-called.
-
- use Class::MakeMethods::Template::Hash
- 'string' => [ '--get_concat', 'i', { join => ' - ' } ];
-
-(See L<Class::MakeMethods::Template::Generic> for information about the C<string> C<get_concat> interface.)
-
-
-=head2 Access Control Example
-
-The following defines a secret_password method, which will croak
-if it is called from outside of the declaring package.
-
- use Class::MakeMethods::Composite::Hash
- 'scalar' => [ 'secret_password' => { permit => 'pp' } ];
-
-(See L<Class::MakeMethods::Composite> for information
-about the C<permit> modifier.)
-
-For template classes, the same thing is accomplished with '--private':
-
- use Class::MakeMethods::Template::Hash
- 'scalar' => [ '--private', 'secret_password' ];
-
-(See L<Class::MakeMethods::Template::Universal> for information
-about the C<private> modifier.)
-
-
-=head2 Lazy-Init Interface
-
-Templapte scalar accessors declared with the "init_and_get" interface
-can be used for "memoization" or lazy-evaluation for object
-attributes. If the current accessor value is undefined, they will
-first call a user-provided init_* method and save its value.
-
- package MyWidget;
- use Class::MakeMethods::Template::Hash (
- 'new --with_values' => [ 'new' ],
- 'scalar --init_and_get' => [ 'foo', 'count', 'result' ],
- );
-
- sub init_foo {
- return 'foofle';
- }
-
- sub init_count {
- return '3';
- }
-
- sub init_result {
- my $self = shift;
- return $self->foo x $self->count;
- }
- ...
-
- my $widget = MyWidget->new();
- print $widget->result; # output: fooflefooflefoofle
-
- # if values are predefined, the init methods are not used
- my $other_widget = MyWidget->new( foo => 'bar', count => 2 );
- print $widget->result; # output: barbar
-
-(See L<Class::MakeMethods::Template::Generic> for more information about
-C<init_and_get>. This interface is also supported by all of Generic's
-subclasses, so you can add lazy-init methods for global data, class
-data, array objects, etc. Unfortunately, to date it is only supported
-for scalar-value accessors...)
-
-
-=head2 Helper Methods
-
-Template methods often include similarly-named "helper" methods. For example, specifying the "--with_clear" interface for Template::*:scalar methods creates an extra method for each accessor x named clear_x.
-
- package MyClass;
- use Class::MakeMethods::Template::Hash('scalar --with_clear' => 'foo');
-
- my $obj = MyClass->new;
- $obj->foo(23);
- $obj->clear_foo;
- print $obj->foo();
-
-
-=head2 Reference Accessor and Helper Methods
-
-For references to arrays and hashes, the Template subclasses provide
-accessors with extra "helper methods" to facilitate method-based
-interaction.
-
-Here's a class whose instances each store a string and an array
-reference, along with a method to search the directories:
-
- package MySearchPath;
- use Class::MakeMethods::Template::Hash (
- 'new' => 'new',
- 'string' => 'name',
- 'array' => 'directories',
- );
-
- sub search {
- my $self = shift;
- my $target = shift;
- foreach my $dir ( $self->directories ) {
- my $candidate = $dir . '/' . $target;
- return $candidate if ( -e $candidate );
- }
- return;
- }
-
-Note that the directories accessor returns the contents of the
-array when called in a list context, making it easier to loop over.
-
-And here's a sample usage:
-
- package main;
- use MySearchPath;
-
- my $libs = MySearchPath->new( name=>"libs", directories=>['/usr/lib'] );
- $libs->push_directories( '/usr/local/lib' );
-
- print "Searching in " . $libs->count_directories() . "directories.\n";
- foreach ( 'libtiff', 'libjpeg' ) {
- my $file = $libs->search("$_.so");
- print "Checking $_: " . ( $file || 'not found' ) . "\n";
- }
-
-Note the use of the push_* and count_* "helper" accessor methods,
-which are defined by default for all 'Template::*:array' declarations.
-
-Consult L<Class::MakeMethods::Template::Generic> for more information about
-the available types of reference accessors, and the various methods
-they define.
-
-
-=head2 Object Accessors
-
-There's also a specialized accessor for object references:
-
- package MyStruct;
- use Class::MakeMethods::Template::Hash (
- 'new' => 'new',
- 'object' => [ 'widget' => {class=>'MyWidgetClass', delegate=>"twiddle"} ],
- );
-
-(Note that the C<class> and C<delegate> values specified above are
-method parameters, which provide additional information about the
-C<widget> declaration; see L<"Standard Declaration Syntax"> for more information.)
-
-The above declaration creates methods equivalent to the following:
-
- package MyStruct;
-
- sub widget {
- my $self = shift;
- if ( scalar @_ ) {
- if (ref $_[0] and UNIVERSAL::isa($_[0], 'MyWidgetClass')) {
- $self->{widget} = shift;
- } else {
- $self->{widget} = MyWidgetClass->new(@_);
- }
- } else {
- return $self->{widget};
- }
- }
-
- sub clear_widget {
- my $self = shift;
- $self->{widget} = undef;
- }
-
- sub twiddle {
- my $self = shift;
- my $obj = $self->widget()
- or Carp::croak("Can't forward twiddle because widget is empty");
- $obj->twiddle(@_)
- }
-
-
-=head2 Mixing Object and Global Methods
-
-Here's a package declaration using two of the included subclasses, C<Standard::Hash>, for creating and accessing hash-based objects, and C<Basic::Global>, for simple global-value accessors:
-
- package MyQueueItem;
-
- use Class::MakeMethods::Standard::Hash (
- new => { name => 'new', defaults=>{ foo => 'Foozle' } },
- scalar => [ 'foo', 'bar' ],
- hash => 'history'
- );
-
- use Class::MakeMethods::Basic::Global (
- scalar => 'Debug',
- array => 'InQueue',
- );
-
- sub AddQueueItem {
- my $class = shift;
- my $instance = shift;
- $instance->history('AddQueueItem' => time());
- $class->InQueue([0, 0], $instance);
- }
-
- sub GetQueueItem {
- my $class = shift;
- $class->InQueue([0, 1], []) or $class->new
- }
-
-=head2 Adding Custom Initialization to Constructors
-
-Frequently you'll want to provide some custom code to initialize new objects of your class. Most of the C<*:new> constructor methods provides a way to ensure that this code is consistently called every time a new instance is created.
-
-=over 4
-
-=item Composite::Hash:new { post_rules => [] }
-
-The Composite classes allow you to add pre- and post-operations to any method, so you can pass in a code-ref to be executed after the new() method.
-
- package MyClass;
-
- sub new_post_init {
- my $self = ${(pop)->{result}}; # get result of original new()
- length($self->foo) or $self->foo('FooBar'); # default value
- warn "Initialized new object '$self'";
- }
-
- use Class::MakeMethods (
- 'Composite::Hash:new' => [
- 'new' => { post_rules=>[ \&new_post_init ] }
- ],
- 'Composite::Hash:scalar' => 'foo;,
- );
- ...
- package main;
- my $self = MyClass->new( foo => 'Foozle' )
-
-=item Template::Hash:new --and_then_init
-
-Use 'Template::Hash:new --and_then_init', which will first create the object and initialize it with the provided values, and then call an init() method on the new object before returning it.
-
- package MyClass;
- use Class::MakeMethods::Template::Hash (
- 'new --and_then_init' => 'new'
- 'string' => 'foo'
- );
- sub init {
- my $self = shift;
- length($self->foo) or $self->foo('FooBar'); # default value
- warn "Initialized new object '$self'";
- }
- ...
- package main;
- my $self = MyClass->new( foo => 'Foozle' )
-
-=item Template::Hash:new --with_init
-
-If you don't want your constructor to use the default hash-of-method-names style of initialization, use 'Template::Hash:new --with_init', which will create an empty object, pass its arguments to the init() method on the new object, and then return it.
-
- package MyClass;
- use Class::MakeMethods::Template::Hash (
- 'new --with_init' => 'new'
- 'string' => 'foo'
- );
- sub init {
- my $self = shift;
- $self->foo( shift || 'FooBar' ); # init with arg or default
- warn "Initialized new object '$self'";
- }
- ...
- package main;
- my $self = MyClass->new( 'Foozle' )
-
-=back
-
-Some additional notes about these constructors:
-
-=over 4
-
-=item *
-
-The C<Template::*:new> methods allow you to specify a name for your method other than C<init> by passing the C<init_method> parameter:
-
- use Class::MakeMethods::Template::Hash (
- 'new --and_then_init' => [
- 'new' => { init_method => 'my_init' }
- ],
- );
-
-=item *
-
-If you know that you're not going to have a complex class hierarchy, you can reduce resource consumption a bit by changing the above declarations from "*::Hash" to "*::Array" so your objects end up as blessed arrays rather than blessed hashes.
-
-=back
-
-
-=head2 Changing Method Names
-
-The Template subclasses allow you to control the names assigned to
-the methods you generate by selecting from several naming interfaces.
-
-For example, the accessors declared above use a default, Perl-ish
-style interface, in which a single method can be called without an
-argument to retrieve the value, or with an argument to set it.
-However, you can also select a more Java-like syntax, with separate
-get* and set* methods, by including the '--java' template specification:
-
- package MyStruct;
- use Class::MakeMethods::Template::Hash (
- 'new' => 'new',
- 'scalar' => '--java Foo',
- );
-
-(Note that the declaration of Foo could also have been written as
-C<'scalar --java' =E<gt> 'Foo'> or C<'scalar' =E<gt> ['--java',
-'Foo']>, or C<'scalar' =E<gt> [ 'foo' => { 'interface'=>'java' }
-], all of which are interpreted identically; see the
-L<Class::MakeMethods> section on "Argument Normalization" for
-details.)
-
-Usage of this accessor would then be as follows:
-
- package main;
- use MyStruct;
-
- my $obj = MyStruct->new( setFoo => "Foozle" );
- print $obj->getFoo();
- $obj->setFoo("Bozzle");
-
-
-=head2 Selecting Specific Helper Methods
-
-You can use the ability to specify interfaces to select specific helper methods rather than getting the default collection.
-
-For example, let's say you wanted to use a Template::Hash:array, but you only wanted two methods to be installed in your class, a foo() accessor and a shift_foo() mutator. Any of the below combinations of syntax should do the trick:
-
- use Class::MakeMethods::Template::Hash
- 'array' => [
- 'foo' => { interface=>{'foo'=>'get_set', 'shift_foo'=>'shift'} },
- ];
-
-If you're going to have a lot of methods with the same interface, you could pre-declare a named interface once and use it repeatedly:
-
- BEGIN {
- require Class::MakeMethods::Template::Hash;
- Class::MakeMethods::Template::Hash->named_method('array')->
- {'interface'}->{'my_get_set_shift'} =
- { '*'=>'get_set', 'shift_*'=>'shift' };
- }
-
- use Class::MakeMethods::Template::Hash
- 'array --my_get_set_shift' => [ 'foo', 'bar' ];
-
-
-=head2 Tree Structure Example
-
-In this example we will create a pair of classes with references
-to other objects.
-
-The first class is a single-value data object implemented as a
-reference to a scalar.
-
- package MyTreeData;
- use Class::MakeMethods::Template::Scalar (
- 'new' => 'new',
- 'string' => 'value',
- );
-
-The second class defines a node in a tree, with a constructor, an
-accessor for a data object from the class above, and accessors for
-a list of child nodes.
-
- package MyTreeNode;
- use Class::MakeMethods::Template::Hash (
- 'new' => 'new',
- 'object -class MyTreeData' => 'data',
- 'array_of_objects -class MyTreeNode' => 'children',
- );
-
- sub depth_first_data {
- my $self = shift;
- return $self->data, map { $_->depth_first_data() } $self->children;
- }
-
-Here's a sample of how the above classes could be used in a program.
-
- package main;
- use MyTreeData;
- use MyTreeNode;
-
- my $node = MyTreeNode->new(
- data => { value=>'data1' },
- children => [ { value=>'data3' } ]
- );
- $node->push_children( MyTreeNode->new( data => { value=>'data2' } ) );
-
- foreach my $data ( $node->depth_first_data ) {
- print $data->value();
- }
-
-
-=head1 SEE ALSO
-
-See L<Class::MakeMethods> for general information about this distribution.
-
-=head2 Annotated Tutorials
-
-Ron Savage has posted a pair of annotated examples, linked to below.
-Each demonstrates building a class with MakeMethods, and each
-includes scads of comments that walk you through the logic and
-demonstrate how the various methods work together.
-
- http://savage.net.au/Perl-tutorials.html
- http://savage.net.au/Perl-tutorials/tut-33.tgz
- http://savage.net.au/Perl-tutorials/tut-34.tgz
-
-=cut
diff --git a/lib/Class/MakeMethods/Docs/ReadMe.pod b/lib/Class/MakeMethods/Docs/ReadMe.pod
deleted file mode 100644
index 6fd7890..0000000
--- a/lib/Class/MakeMethods/Docs/ReadMe.pod
+++ /dev/null
@@ -1,279 +0,0 @@
-=head1 NAME
-
-Class::MakeMethods::Docs::ReadMe - About Class::MakeMethods
-
-
-=head1 DESCRIPTION
-
-This is an updated release of Class::MakeMethods, for distribution through
-CPAN.
-
-This distribution includes the Class::MakeMethods::Template and
-Class::MakeMethods::Emulator modules which were packaged sepearately in some
-previous releases.
-
-
-=head1 MOTIVATION
-
-By passing arguments to "use Class::MakeMethods ..." statements, you can
-select from a library of hundreds of common types of methods, which are
-dynamically installed as subroutines in your module, simplifying the code
-for your class.
-
-
-=head1 DISTRIBUTION AND INSTALLATION
-
-=head2 Version
-
-This is Class::MakeMethods v1.010, intended for general use.
-
-This module's CPAN registration should read:
-
- Name DSLIP Description
- -------------- ----- ---------------------------------------------
- Class::
- ::MakeMethods RdpOp Generate common types of methods
-
-=head2 Prerequisites
-
-In general, this module should work with Perl 5.003 or later,
-without requring any modules beyond the core Perl distribution.
-
-The following optional feature may not be available on some platforms:
-
-=over 4
-
-=item *
-
-Class::MakeMethods::Attribute: The C<:MakeMethod> subroutine
-attribute requires Perl version 5.6 and the Attribute::Handlers
-module (from CPAN).
-
-=item *
-
-Class::MakeMethods::Template C<--lvalue>: The lvalue modifier
-provided by the Template generator subclasses will only work on
-Perl version 5.6 or later.
-
-=item *
-
-Some third-party tests used to check the compliance of Emulator modules
-require Test::More and will be automatically skipped on machines which do
-not have this installed.
-
-=back
-
-=head2 Installation
-
-You should be able to install this module using the CPAN shell interface:
-
- perl -MCPAN -e 'install Class::MakeMethods'
-
-Alternately, you may retrieve this package from CPAN or from the author's site:
-
-=over 2
-
-=item *
-
-http://search.cpan.org/~evo/
-
-=item *
-
-http://www.cpan.org/modules/by-authors/id/E/EV/EVO
-
-=item *
-
-http://www.evoscript.org/Class-MakeMethods/dist/
-
-=back
-
-After downloading the distribution, follow the normal procedure to unpack and install it, using the commands shown below or their local equivalents on your system:
-
- tar xzf Class-MakeMethods-*.tar.gz
- cd Class-MakeMethods-*
- perl Makefile.PL
- make test && sudo make install
-
-Thanks to the kind generosity of other members of the Perl community,
-this distribution is also available repackaged in the FreeBSD
-"ports" and Linux RPM formats. This may simplify installation for
-some users, but be aware that these alternate distributions may
-lag a few versions behind the latest release on CPAN.
-
-=over 2
-
-=item *
-
-http://www.freebsd.org/cgi/ports.cgi?query=Class-MakeMethods
-
-=item *
-
-http://www.rpmfind.net/linux/rpm2html/search.php?query=perl-Class-MakeMethods
-
-=back
-
-=head2 Tested Platforms
-
-This release has been tested succesfully on the following platforms:
-
- 5.6.1 on darwin
-
-Earlier releases have also tested OK on the following platforms:
-
- IP30-R12000-irix
- OpenBSD.i386-openbsd
- i386-freebsd / i386-freebsd-thread-multi
- i386-linux
- i386-netbsd / i386-netbsd-thread-multi
- i586-linux / i586-linux-thread-multi-ld
- i686-linux / i686-pld-linux-thread-multi
- ia64-linux
- ppc-linux
- sparc-linux
- sparc-netbsd
- sun4-solaris
-
-Some earlier versions failed to "make test" on MSWin32, although
-a forced installation would still work; that problem should be
-fixed in the most recent releases.
-
-You may also review the current test results from CPAN-Testers:
-
-=over 2
-
-=item *
-
-http://testers.cpan.org/show/Class-MakeMethods.html
-
-=back
-
-=head1 SUPPORT
-
-=head2 Release Status
-
-This module has been used in a variety of production systems and
-has been available on CPAN for over two years, with several other
-distributions dependant on it, so it would be fair to say that it
-is fully released.
-
-However, while the commonly-used portions are well tested, some of
-the more obscure combinations of options are less so, and new bug
-reports do trickle in occasionally. If you do encounter any problems,
-please inform the author and I'll endeavor to patch them promptly.
-
-Additional features have been outlined for future development, but
-the intent is support these by adding more options to the declaration
-interface, while maintaining backward compatibility.
-
-See L<Class::MakeMethods::Docs::ToDo> for other outstanding issues
-and development plans.
-
-=head2 Support
-
-If you have questions or feedback about this module, please feel
-free to contact the author at the below address. Although there is
-no formal support program, I do attempt to answer email promptly.
-
-I would be particularly interested in any suggestions towards
-improving the documentation and correcting any Perl-version or platform
-dependencies, as well as general feedback and suggested additions.
-
-Bug reports that contain a failing test case are greatly appreciated,
-and suggested patches will be promptly considered for inclusion in
-future releases.
-
-To report bugs via the CPAN web tracking system, go to
-C<http://rt.cpan.org/NoAuth/Bugs.html?Dist=Class-MakeMethods> or send mail
-to C<Dist=Class-MakeMethods#rt.cpan.org>, replacing C<#> with C<@>.
-
-=head2 Community
-
-If you've found this module useful or have feedback about your
-experience with it, consider sharing your opinion with other Perl
-users by posting your comment to CPAN's ratings system:
-
-=over 2
-
-=item *
-
-http://cpanratings.perl.org/rate/?distribution=Class-MakeMethods
-
-=back
-
-For more general discussion, you may wish to post a message on PerlMonks or the comp.lang.perl.misc newsgroup:
-
-=over 2
-
-=item *
-
-http://www.perlmonks.org/index.pl?node=Seekers%20of%20Perl%20Wisdom
-
-=item *
-
-http://groups.google.com/groups?group=comp.lang.perl.misc
-
-=back
-
-
-=head1 CREDITS AND COPYRIGHT
-
-=head2 Author
-
-Developed by Matthew Simon Cavalletto at Evolution Softworks.
-More free Perl software is available at C<www.evoscript.org>.
-
-You may contact the author directly at C<evo@cpan.org> or C<simonm@cavalletto.org>.
-
-=head2 Feedback and Suggestions
-
-Thanks to the following people for bug reports, suggestions, and other feedback:
-
- Martyn J. Pearce
- Scott R. Godin
- Ron Savage
- Jay Lawrence
- Adam Spiers
- Malcolm Cook
- Terrence Brannon
- Jared Rhine
- Peter Chen
- Mike Castle
-
-=head2 Source Material
-
-This package was inspired by the ground-breaking original closure-generating method maker module:
-
- Class::MethodMaker, by Peter Seibel.
-
-Additional inspiration, cool tricks, and blocks of useful code for
-this module were extracted from the following CPAN modules:
-
- Class::Accessor, by Michael G Schwern
- Class::Contract, by Damian Conway
- Class::SelfMethods, by Toby Everett
-
-=head2 Copyright
-
-Copyright 2002, 2003 Matthew Simon Cavalletto.
-
-Portions copyright 1998, 1999, 2000, 2001 Evolution Online Systems, Inc.
-
-Based on Class::MethodMaker, originally developed by Peter Seibel. Portions Copyright 1996 Organic Online. Portions Copyright 2000 Martyn J. Pearce.
-
-Class::MakeMethods::Emulator::accessors is based on accessors. Portions by Steve Purkis.
-
-Class::MakeMethods::Emulator::AccessorFast is based on Class::Accessor::Fast. Portions Copyright 2000 Michael G Schwern.
-
-Class::MakeMethods::Emulator::Inheritable is based on Class::Data::Inheritable. Portions Copyright 2000 Damian Conway and Michael G Schwern.
-
-Class::MakeMethods::Emulator::mcoder is based on mcoder. Portions Copyright 2003 by Salvador Fandiņo.
-
-Class::MakeMethods::Emulator::Singleton is based on Class::Singleton, by Andy Wardley. Portions Copyright 1998 Canon Research Centre Europe Ltd.
-
-Class::MakeMethods::Utility::Ref is based on Ref.pm. Portions Copyright 1994 David Muir Sharnoff.
-
-=head2 License
-
-You may use, modify, and distribute this software under the same terms as Perl.
-
-=cut
diff --git a/lib/Class/MakeMethods/Docs/RelatedModules.pod b/lib/Class/MakeMethods/Docs/RelatedModules.pod
deleted file mode 100644
index 93ef930..0000000
--- a/lib/Class/MakeMethods/Docs/RelatedModules.pod
+++ /dev/null
@@ -1,962 +0,0 @@
-=head1 NAME
-
-Class::MakeMethods::Docs::RelatedModules - Survey of Class Builders
-
-
-=head1 SYNOPSIS
-
- http://search.cpan.org/search?mode=module&query=Class
-
-
-=head1 DESCRIPTION
-
-There are a variety of modules on CPAN dedicated to the purpose of
-generating common constructor and accessor methods. Below, I survey
-several of these, summarizing some basic features and technical
-approaches, and comparing them to Class::MakeMethods and other
-modules.
-
-
-=head2 Caution
-
-B<Please note that these comments are for basic comparison purposes
-only and may be incorrect or out of date.> Please consult the
-documentation from a current version of each module for more specific
-details. Corrections and clarifications would by welcomed by the author at the email address below.
-
-
-=head2 Points of Comparison
-
-In general, I compared the following characteristics:
-
-=over 4
-
-=item Distribution
-
-Is it included with Perl, or on CPAN? Is it being actively maintained?
-
-=item Usage
-
-How do you go about declaring your class's methods?
-
-=item Mechanism
-
-How are they generated and delivered?
-
-=item Instance type
-
-Are the objects of your class blessed hashes, or something else?
-
-=item Core Methods
-
-Does the module provide a constructor and basic accessors? Are there specialized methods for hash-ref, array-ref, and object-ref accessors?
-
-=item Extensible
-
-Can you subclass the package to create new types of methods, or is there some other way to extend it?
-
-=item Other Methods
-
-Other types of methods provided.
-
-=item Emulator
-
-Does Class::MakeMethods provide a drop-in replacement for this module?
-
-=item Comments
-
-Other characteristics or features of note.
-
-=back
-
-
-=head1 RELATED MODULES
-
-=head2 accessors
-
-=over 4
-
-=item Distribution
-
-CPAN. Uploaded Sep 2003.
-
-=item Comments
-
-I have not yet reviewed this module in detail.
-
-=item Example
-
- package MyObject;
- use accessors qw( foo bar baz );
-
-=back
-
-=head2 Attribute::Property
-
-=over 4
-
-=item Distribution
-
-CPAN.
-
-=item Comments
-
-I have not yet reviewed this module in detail.
-
-=back
-
-
-=head2 Class::Accessor
-
-=over 4
-
-=item Distribution
-
-CPAN. Last update 4/01.
-
-=item Usage
-
-Inherit and call function with declaration arguments
-
-=item Mechanism
-
-Generates and installs closures
-
-=item Instance Type
-
-Hash.
-
-=item Subclasses Cleanly
-
-Cleanly.
-
-=item Standard Methods
-
-Scalar accessors.
-
-=item Extensible
-
-Yes.
-
-=item Comments
-
-Accessor methods call overwritable C<self-E<lt>get(I<key>)> and
-C<self-E<lt>set(I<key>, I<value>)> methods.
-
-Also includes Class::Accessor::Fast, which creates direct hash keys accessors without calling get and set methods.
-
-=item Emulator
-
-Yes, but only for the Fast variation; see Class::MakeMethods::Emulator::AccessorFast.
-
-=item Example
-
- package MyObject;
- @ISA = qw(Class::Accessor);
- MyObject->mk_accessors(qw( simple ordered mapping obj_ref ));
-
-=back
-
-
-=head2 Class::Class
-
-=over 4
-
-=item Distribution
-
-CPAN. Last update 1/00.
-
-=item Usage
-
-Inherit and fill %MEMBERS hash; methods created when first object is created
-
-=item Mechanism
-
-Generates and installs closures
-
-=item Instance Type
-
-Hash.
-
-=item Subclasses Cleanly
-
-Yes.
-
-=item Standard Methods
-
-Constructor and various accessors.
-
-=item Extensible
-
-No.
-
-=item Example
-
-Usage is similar to Class::Struct:
-
- package MyObject;
- use Class::Class;
- @ISA = qw(Class::Class);
- %MEMBERS = (
- simple => '$',
- ordered => '@',
- mapping => '%',
- obj_ref => 'FooObject'
- );
-
-=item Other Method Types
-
-Provides a polymorph() method that is similar to Class::Method's "ClassName:class_name -require".
-
-=back
-
-
-=head2 Class::Constructor
-
-=over 4
-
-=item Distribution
-
-CPAN. Last update 11/01.
-
-=item Usage
-
-Inherit and call function with declaration arguments
-
-=item Mechanism
-
-Generates and installs closures
-
-=item Instance Type
-
-Hash.
-
-=item Subclasses Cleanly
-
-Cleanly.
-
-=item Standard Methods
-
-Hash constructor, with bells.
-
-=item Extensible
-
-No.
-
-=item Emulator
-
-No, but possible.
-
-=item Example
-
- package MyObject;
- @ISA = qw(Class::Constructor);
- MyObject->mk_constructor( Name => 'new' );
-
-=back
-
-
-=head2 Class::Classgen
-
-=over 4
-
-=item Distribution
-
-CPAN. Last update 12/00.
-
-=item Usage
-
-Pre-processor run against declaration files.
-
-=item Mechanism
-
-Assembles and saves code file
-
-=item Instance Type
-
-Hash.
-
-=item Subclasses Cleanly
-
-Yes. (I think.)
-
-=item Standard Methods
-
-Constructor and various accessors.
-
-=item Extensible
-
-No. (I think.)
-
-=item Example
-
- header:
- package MyObject;
- variables:
- $simple
- @ordered
- %mapping
- $obj_ref
-
-=back
-
-
-=head2 Class::Contract
-
-=over 4
-
-=item Distribution
-
-CPAN. Last update 5/01.
-
-=item Usage
-
-Call function with declaration arguments
-
-=item Mechanism
-
-Generates and installs closures
-
-=item Instance Type
-
-Scalar reference with external data storage.
-
-=item Subclasses Cleanly
-
-Yes.
-
-=item Standard Methods
-
-Constructor and various accessors.
-
-=item Extensible
-
-Yes. (I think.)
-
-=item Comments
-
-Supports pre- and post-conditions, class invariants, and other
-software engineering goodies.
-
-=item Example
-
- package MyObject;
- use Class::Contract;
- contract {
- ctor 'new';
- attr 'simple' => SCALAR;
- attr 'ordered' => ARRAY;
- attr 'mapping' => HASH;
- attr 'obj_ref' => 'FooObject';
- }
-
-=back
-
-
-=head2 Class::Data::Inheritable
-
-=over 4
-
-=item Distribution
-
-CPAN. Last update 4/00.
-
-=item Usage
-
-Inherit and call function with declaration arguments
-
-=item Mechanism
-
-Generates and installs closures
-
-=item Instance Type
-
-Class data, with inheritance.
-
-=item Subclasses Cleanly
-
-Yes, specifically.
-
-=item Standard Methods
-
-Scalar accessors.
-
-=item Extensible
-
-No.
-
-=item Example
-
-Usage is similar to Class::Accessor:
-
- package MyObject;
- @ISA = qw(Class::Data::Inheritable);
- MyObject->mk_classdata(qw( simple ordered mapping obj_ref ));
-
-=item Emulator
-
-Yes, Class::MakeMethods::Emulator::Inheritable, passes original test suite.
-
-=back
-
-
-=head2 Class::Delegate
-
-=over 4
-
-=item Distribution
-
-CPAN. Uploaded 12/0.
-
-=item Comments
-
-I have not yet reviewed this module in detail.
-
-=back
-
-=head2 Class::Delegation
-
-=over 4
-
-=item Distribution
-
-CPAN. Uploaded 12/01.
-
-=item Comments
-
-I have not yet reviewed this module in detail.
-
-=back
-
-=head2 Class::Generate
-
-=over 4
-
-=item Distribution
-
-CPAN. Last update 11/00.
-
-=item Usage
-
-Call function with declaration arguments
-
-=item Mechanism
-
-Assembles and evals code string, or saves code file.
-
-=item Instance Type
-
-Hash.
-
-=item Subclasses Cleanly
-
-Yes.
-
-=item Standard Methods
-
-Constructor and accessors (scalar, array, hash, object, object array, etc).
-
-=item Extensible
-
-Unknown.
-
-=item Comments
-
-Handles private/protected limitations, pre and post conditions,
-assertions, and more.
-
-=item Example
-
-Usage is similar to Class::Struct:
-
- package MyObject;
- use Class::Generate;
- class MyObject => [
- simple => '$',
- ordered => '@',
- mapping => '%',
- obj_ref => 'FooObject'
- ];
-
-=back
-
-=head2 Class::Hook
-
-=item Distribution
-
-CPAN. Uploaded 12/01.
-
-=item Comments
-
-I have not yet reviewed this module in detail.
-
-
-=head2 Class::Holon
-
-=over 4
-
-=item Distribution
-
-CPAN. Experimental/Alpha release 07/2001.
-
-=item Instance Type
-
-Hash, array, or flyweight-index.
-
-=item Subclasses Cleanly
-
-No. (I think.)
-
-=item Standard Methods
-
-Constructor and scalar accessors; flywieght objects also get scalar mutator methods.
-
-=item Extensible
-
-No. (I think.)
-
-=item Comments
-
-I'm not sure I understand the intent of this module; perhaps future versions will make this clearer....
-
-=back
-
-
-=head2 Class::MethodMaker
-
-=over 4
-
-=item Distribution
-
-CPAN. Last update 1/01.
-
-=item Usage
-
-Import, or call function, with declaration arguments
-
-=item Mechanism
-
-Generates and installs closures
-
-=item Instance Type
-
-Hash, Static.
-
-=item Subclasses Cleanly
-
-Yes.
-
-=item Standard Methods
-
-Constructor and various accessors.
-
-=item Extensible
-
-Yes.
-
-=item Example
-
-Usage is similar to Class::MakeMethods:
-
- package MyObject;
- use Class::MethodMaker (
- new => 'new',
- get_set => 'simple',
- list => 'ordered',
- hash => 'mapping',
- object => [ 'FooObject' => 'obj_ref' ],
- );
-
-=item Emulator
-
-Yes, Class::MakeMethods::Emulator::MethodMaker, passes original test suite.
-
-=back
-
-
-=head2 Class::MakeMethods
-
-=over 4
-
-=item Distribution
-
-CPAN.
-
-=item Usage
-
-Import, or call function, with declaration arguments; or if desired, make methods on-demand with Autoload, or declare subroutines with a special Attribute.
-
-=item Mechanism
-
-Generates and installs closures
-
-=item Instance Type
-
-Hash, Array, Scalar, Static, Class data, others.
-
-=item Subclasses Cleanly
-
-Yes.
-
-=item Standard Methods
-
-Constructor and various accessors.
-
-=item Extensible
-
-Yes.
-
-=item Example
-
-Usage is similar to Class::MethodMaker:
-
- package MyObject;
- use Class::MakeMethods::Hash (
- new => 'new',
- scalar => 'simple',
- array => 'ordered',
- hash => 'mapping',
- object => [ 'obj_ref', { class=>'FooObject' } ],
- );
-
-=back
-
-
-=head2 Class::Maker
-
-=over 4
-
-=item Distribution
-
-CPAN. Last update 7/02.
-
-=item Usage
-
-Call function with declaration arguments.
-
-=item Mechanism
-
-Generates and installs closures (I think).
-
-=item Instance Type
-
-Hash (I think).
-
-=item Subclasses Cleanly
-
-Unknown.
-
-=item Standard Methods
-
-Constructor and various scalar and reference accessors.
-
-=item Extensible
-
-Unknown.
-
-=item Comments
-
-I haven't yet reviewed this module closely.
-
-=back
-
-
-=head2 Class::SelfMethods
-
-=over 4
-
-=item Distribution
-
-CPAN. Last update 2/00.
-
-=item Usage
-
-Inherit; methods created via AUTOLOAD
-
-=item Mechanism
-
-Generates and installs closures (I think)
-
-=item Instance Type
-
-Hash.
-
-=item Subclasses Cleanly
-
-Yes.
-
-=item Standard Methods
-
-Constructor and scalar/code accessors (see Comments).
-
-=item Extensible
-
-No.
-
-=item Comments
-
-Individual objects may be assigned a subroutine that will be called as a method on subsequent accesses. If an instance does not have a value for a given accessor, looks for a method defined with a leading underscore.
-
-=back
-
-
-=head2 Class::Struct
-
-=over 4
-
-=item Distribution
-
-Included in the standard Perl distribution. Replaces Class::Template.
-
-=item Usage
-
-Call function with declaration arguments
-
-=item Mechanism
-
-Assembles and evals code string
-
-=item Instance Type
-
-Hash or Array
-
-=item Subclasses Cleanly
-
-No.
-
-=item Standard Methods
-
-Constructor and various accessors.
-
-=item Extensible
-
-No.
-
- package MyObject;
- use Class::Struct;
- struct(
- simple => '$',
- ordered => '@',
- mapping => '%',
- obj_ref => 'FooObject'
- );
-
-=item Emulator
-
-Yes, Class::MakeMethods::Emulator::Struct.
-
-=back
-
-
-=head2 Class::StructTemplate
-
-=over 4
-
-=item Distribution
-
-CPAN. Last update 12/00.
-
-No documentation available.
-
-=item Usage
-
-Unknown.
-
-=item Mechanism
-
-Unknown.
-
-=back
-
-
-=head2 Class::Template
-
-=over 4
-
-=item Distribution
-
-CPAN. Out of date.
-
-=item Usage
-
-Call function with declaration arguments (I think)
-
-=item Mechanism
-
-Assembles and evals code string (I think)
-
-=item Instance Type
-
-Hash.
-
-=item Subclasses Cleanly
-
-Yes. (I think.)
-
-=item Standard Methods
-
-Constructor and various accessors.
-
-=item Extensible
-
-No. (I think.)
-
-=item Example
-
-Usage is similar to Class::Struct:
-
- package MyObject;
- use Class::Template;
- members MyObject {
- simple => '$',
- ordered => '@',
- mapping => '%',
- obj_ref => 'FooObject'
- };
-
-=back
-
-
-=head2 Class::Virtual
-
-Generates methods that fail with a message indicating that they were not implemented by the subclass. (Cf. 'Template::Universal:croak -abstract'.)
-
-Also provides a list of abstract methods that have not been implemented by a subclass.
-
-=over 4
-
-=item Distribution
-
-CPAN. Last update 3/01.
-
-=item Extensible
-
-Unknown.
-
-=item Mechanism
-
-Uses Class::Data::Inheritable and installs additional closures.
-
-=back
-
-
-=head2 CodeGen::PerlBean
-
-=over 4
-
-=item Distribution
-
-CPAN.
-
-=item Usage
-
-Call function with declaration arguments.
-
-=item Mechanism
-
-Generates and writes source code to a file.
-
-=item Instance Type
-
-Hash (I think).
-
-=item Subclasses Cleanly
-
-Unknown.
-
-=item Standard Methods
-
-Constructor and various scalar and reference accessors.
-
-=item Extensible
-
-Unknown.
-
-=item Comments
-
-I haven't yet reviewed this module closely.
-
-=back
-
-
-=head2 HTML::Mason::MethodMaker
-
-=over 4
-
-=item Distribution
-
-CPAN.
-
-=item Usage
-
-Package import with declaration arguments
-
-=item Mechanism
-
-Generates and installs closures
-
-=item Instance Type
-
-Hash.
-
-=item Standard Methods
-
-Scalar accessors.
-
-=item Extensible
-
-No.
-
-=item Example
-
- use HTML::Mason::MethodMaker (
- read_write => [ qw( simple ordered mapping obj_ref ) ]
- );
-
-=back
-
-
-=head1 TO DO
-
-The following modules are relevant but have not yet been cataloged above.
-
-=head2 Attribute::Property
-
-=head2 Class::Accessor::Chained
-
-=head2 Class::Accessor::Lvalue
-
-=head2 Class::Accessor::Ref
-
-=head2 Class::AutoClass
-
-=head2 Class::Builder
-
-=head2 Class::Member
-
-=head2 Class::Trigger
-
-
-=head1 SEE ALSO
-
-See L<Class::MakeMethods> for general information about this distribution.
-
-
-=head1 CREDITS AND COPYRIGHT
-
-=head2 Developed By
-
- M. Simon Cavalletto, simonm@cavalletto.org
- Evolution Softworks, www.evoscript.org
-
-=head2 Copyright
-
-Copyright 2002 Matthew Simon Cavalletto.
-
-Portions copyright 2000, 2001 Evolution Online Systems, Inc.
-
-=head2 License
-
-You may use, modify, and distribute this document under the same terms as Perl.
-
-=cut
diff --git a/lib/Class/MakeMethods/Docs/ToDo.pod b/lib/Class/MakeMethods/Docs/ToDo.pod
deleted file mode 100644
index 312bdc0..0000000
--- a/lib/Class/MakeMethods/Docs/ToDo.pod
+++ /dev/null
@@ -1,296 +0,0 @@
-=head1 NAME
-
-Class::MakeMethods::Docs::ToDo - Ideas, problems, and suggestions
-
-
-=head1 SYNOPSIS
-
-There are lots of things that could be done to improve this module.
-
-
-=head1 DISTRIBUTION ISSUES
-
-Issues about the distribution and supporting files, rather than the code:
-
-=head2 Documentation
-
-=over 4
-
-=item *
-
-Make sure that the documentation is broken up into appropriately-sized
-chunks, and that people will know which section to look at.
-
-=item *
-
-As user questions arrive, add the answers as documentation points or examples.
-
-=item *
-
-Assemble annotated examples and tutorials, and either link to or distribute them.
-
-=item *
-
-Finish overhauling Template documentation.
-
-=item *
-
-Include Global and InsideOut uses in the EXAMPLES section
-
-=item *
-
-Template Internals: Finish documenting disk-based meta-method code-caching.
-
-=back
-
-=head2 Tests
-
-=over 4
-
-=item *
-
-Use Devel::Coverage to measure test coverage, and fill in missing
-cases.
-
-=item *
-
-Finish tests for Standard and Composite modules.
-
-=back
-
-
-=head1 GENERAL ISSUES
-
-=over 4
-
-=item *
-
-It does not appear to be possible to assign subroutine names to
-closures within Perl. As a result, debugging output from Carp and
-similar sources will show all generated methods as "ANON()" rather
-than "YourClass::methodname()".
-
-UPDATE: There now seem to be fixes for this which should be integrated: See the new Sub::Name module and http://perlmonks.org/index.pl?node_id=304883
-
-=item *
-
-For scalar methods (and others) it would be nice to have a simple
-bounds-checking interface to approve or reject (with an exception)
-new values that were passed in.
-
-As pointed out by Terrence Brannon, the right interface to
-adopt is probably that of Attribute::Types:
-
- use Class::MakeMethods::Standard::Hash (
- 'scalar' => [ 'count' => { TYPE => 'INTEGER' } ],
- 'scalar' => [ 'name' => { TYPE => qr/^[A-Z]\w*$/ } ],
- 'scalar' => [ 'account' => { TYPE => &checksum_account_number } ]
- );
-
-=item *
-
-Improve use of _diagnostic hooks for debugging. Add various "(Q)"
-debug diagnostics.
-
-=item *
-
-Finish building Inheritable array and object accessors.
-
-=item *
-
-Finish building Composite::* packages.
-
-=item *
-
-Resolve DESTROY-time issues with Standard::Inheritable, Composite::Inheritable, and Template::InsideOut.
-
-=item *
-
-Add slice and splice functionality to Standard::*:hash and Composite::*:hash.
-
-=back
-
-
-=head1 TEMPLATE CLASSES
-
-=head2 Template::Generic
-
-=over 4
-
-=item *
-
-Allow untyped object accesors if C<class> attribute is not set.
-(Suggested in Jan-01 NY Perl Seminar discussion.)
-
-=item *
-
-Standardize naming templates for array, hash, other method types.
-
-Deprecate verb_x methods? Or at last make them consistently available both ways.
-
-Make list methods consistent with hash_of_lists methods, in action, and
-in name (x_verb). Also for others (e.g., set_ clear_ boolean)
-
-=item *
-
-Should default object template provide auto-create behavior on ->get()?
-
-=item *
-
-Generalize the "Generic:scalar -init_and_get" interface to support
-memoizing values for other accessor types.
-
-=item *
-
-Consider adding hash each and array iterator methods, using a closure
-to provide iteration.
-
-=item *
-
-Add support for tied arrays & scalars, a la tiedhash
-
-=item *
-
-Add string_multiple_index.
-
-=item *
-
-Extend index methods to support weak indexes with WeakRef. Perhaps
-just have it accept a hash ref to use as the index, and then allow
-people to pass in tied hashes?
-
-=item *
-
-Maybe make private or protected method croak if they were called by a
-method_init method which was called by an outside package.
-
-Not entirely clear what the right semantics or security precautions are here...
-
-=back
-
-
-=head2 Template::Generic Subclasses
-
-=over 4
-
-=item *
-
-Finish building code_or_scalar meta-method.
-
-=item *
-
-Finish building Class::MakeMethods::ClassInherit subclass.
-
-Need to work out how to capture changes for non-scalar values. For
-example, if a subclass inherits an array accessor and then pops
-it, is there some way to provide them with copy-on-write?
-
-=item *
-
-Add enumerated string/number type.
-
-Provide helper methods with map of associated values (ex $o->port
-= 80 ... $o->port_readable eq 'HTTP' ). Cf. code for earlier
-unpublished 'lookup' method type.
-
-=item *
-
-For StructBuiltin:
-
-Add -fatal flag to die if core func returns false / undef
-Add call method to recall method with alternative arguments.
-Add -nocall flag to not call core func on new.
-
-=item *
-
-Replace ClassName:static_hash_classname with Class:indexed_string.
-
-=back
-
-
-=head2 Template Internals
-
-=over 4
-
-=item *
-
-Figure out which modules, if any, should actually be using AutoLoader.
-Probably just Template::Generic?
-
-=item *
-
-Give users a way to do meta-method code-caching in Perl library
-hierarchy, rather than in /tmp/auto or other user-specified
-directory..
-
-Provide mechanism for pre-generating these at install time.
-
-Perhaps load these via do, rather than open/read/eval?
-
-Perhaps pre-generate expanded libs with all of the -imports resolved?
-
-=item *
-
-Support generating code files and loading them as needed.
-
-This would be similar to Class::Classgen, except that we'd do the
-generation at run-time the first time it was required, rather than
-in a separate pass.
-
-For example, given the following declaration:
-
- package Foo::Bar;
- Class::MakeMethods::Template::Hash->import(-codecache=>'auto', scalar=>'foo');
-
-We should be able to write out the following file:
-
- cat 'auto/Foo/Bar/methods-line-2.pl'
- # NOTE: Generated for Foo::Bar by the Class::MakeMethods module.
- # Changes made here will be lost when Foo::Bar is modified.
- package Foo::Bar;
- sub foo {
- my $self = shift;
- if ( scalar @_ ) {
- $self->{'foo'} = shift();
- }
- $self->{'foo'}
- }
-
-Then on subsequent uses, we can just re-load the generated code:
-
- require "auto/Foo/Bar/methods-line-2.pl";
-
-To do this, we need to:
-
-=over 4
-
-=item *
-
-Provide an option to select this if desired; maybe ...
-import('-cache' => 'auto/', ...)?
-
-=item *
-
-Figure out which directory we can/should write into.
-
-=item *
-
-Re-evaluate the textual code templates, without generating the
-closures. Substitute in any _STATIC_ATTR_ values. Make other _ATTR_
-values point to some public lookup table or package scalar.
-
-=item *
-
-Notice if the source file (or Class::MakeMethods modules) has
-been updated more recently than the generated file.
-
-=back
-
-=back
-
-
-=head1 SEE ALSO
-
-See L<Class::MakeMethods> for general information about this distribution.
-
-=cut