This is the README file for Class::Generate, version 1.02. Class::Generate is a Perl5 module to simplify creating class hierarchies. It offers typed or untyped scalar, array, and hash members, required members, private members, methods (both instance and class), and other common features of object- oriented software development. Of course, you can implement all these things without a special module, but doing it via Class::Generate is much, much more concise. And futhermore, it's much less error prone: if you are using Perl's -w flag, Class::Generate will catch many class specification and usage errors. The distribution consists of the following files: -- README (this file) -- Generate.pm -- Generate.pod -- example.pl Generate.pm is the file containing the Class::Generate module. You will need to install it on your site in directory /Class/Generate.pm. You can then reference it from your Perl scripts as follows: use Class::Generate; assuming is in your Perl include path. Generate.pod contains the documentation, in POD format. It is sufficiently large that I decided to place it in a separate file. example.pl contains some code illustrating how to use the class() and subclass() functions. Copyright (c) 1999 Steven Wartik. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. CHANGES IN VERSION 1.01 Parameter passing from a subclass to its superclass constructor is greatly improved. Several bugs were detected and corrected. The algorithms are smarter. Superclasses not declared via class() or subclass() are handled better. In 1.00, class() and subclass() sometimes modified their parameters. They no longer do. Array members have a new accessor, last_, which is a convenient abbreviation for the oft-used $obj->($obj->_size). Each class now has two methods that operate on instances: copy(), to copy an object instance, and equals(), to test the equality of two instances. New options: -- "class_var", which lets you choose an identifer other than "$class" as the class variable within a class method. -- "instance_var", which lets you choose an identifier other than "$self" as the instance variable within an object method. -- "check_code", which lets you control whether user-defined code is checked for correctness. -- "check_default", which does the same thing for default values of members. Some bug fixes: -- A bug in checking for duplicate member/method names has been corrected. -- A bug wherein class variables with default values were not always being properly declared has been corrected. -- List members were not checking for attempts to set read-only members. They do now. -- The error message emitted regarding an incorrect number of parameters reported the wrong number. It now reports the right number. -- Code checking in "post" code did not have the context of "pre" code. It now does. -- A member's "pre" code needs a trailing semicolon. The error message in 1.00 was not informative. It is improved in 1.01. -- Private members, and members in the own style, were not being assigned their default values in constructors. They are now. CHANGES IN VERSION 1.02 New option "nfi" (New From Instance) lets the constructor be invoked via a reference as well as a class name. New "-exclude" flag permits method exclusion. You get more control over how users can access a class. "parent" is deprecated in favor of "-parent". Values of -instance_var and -class_var flags are now checked to make sure they're valid identifiers. Generation of the base form is more (though not optimally) intelligent. Some bug fixes: -- The use of the -class_var flag wasn't checked in several places. -- In "mix" style, there was a reference to "pp" that should have been to "{pp}".