Revision history for Perl extension Class::Maker.

0.01  Tue Jun  4 05:20:50 2002
	- original version; created by h2xs 1.21 with options
		-A -X -a -n Class::Maker

0.02  18.06.2002 22:31
	- Fixed a bug in Class::Maker::Examples::Array which lead
	to failure of other cpan module SQL::Generator

0.03 19.06.2002 23:07
	- Added private field: All privat attributes are automatically
	prefixed with an '_' (This feature wasn't working before).

0.04 26.06.2002 00:57
	- Added a couple of very usefull Example:: objects.

0.05_01 01.07.2002 00:49
	- changed the usage of Class::Maker::Fields::_make_method()
	- now supporting '<attr>' syntax in the attribute section for
	making these attribute fields private (Inspired by Terrence
	Brannon). Example:

	attributes =>
	{
		scalar => [qw(name address <internal> age)],

		array => [qw(friends <pattri> visits)],
	}

	Result: 'internal' and 'pattri' are privat (as if the were
	written into an private => { } attribute section. Also the
	reflection is modified after this.

	TODO: the brackets should include multiple attribute values,
	like qw(one <two three four> five) , should make two, three,
	four private.
	This bracket-private feature should work only in public and
	attributes fields.

0.05_02 01.07.2002 00:49

	- compilation failed on Class::Maker::Example::* classes fixed.

0.05_03 04.07.2002 03:18

	- updated dependencies (Data::Verify)

0.05_04 05.07.2002 18:49

	- swapped the examples into a seperate dist, because of main-
	tanance problems (Should be available at CPAN under
	Class::Maker:::Examples).

0.05_05 06.07.2002 01:43

=head1 find

	- added 'find' function to Class::Maker::Reflection

	find (Returns a snapshot-aref to all instances (objects) of a class in a given package)

0.05_06 21.07.2002 00:35

	- class field 'default' is working now

		#!perl

		Class::Maker::class
		{
			isa => [qw( Something )],

			public =>
			{
				string => [qw( name desc )],
			},

			default =>
			{
				name => 'Role Name',

				desc => 'Role Descrition',

				xxx => 'DEFAULTS TO XXX',
			},
		};

		my $role = Human::Role->new( );

		__END__

		Even we called an empty 'new' we got

		$role->name eq 'Role Name'

		$role->desc eq 'Role Description'

		and

		Something->xxx( 'DEFAULTS TO XXX' ) is called

		which may be an accessor or a function/method that does anything.

	- Class::Maker::Reflection::reflect() now returns all reflections of the
	@ISA classes as a href. This will be a ie. "Class::Maker::Reflex" object in future.
	Also it better sync's the ->{isa} class fields with the real @ISA.
	Additionally non Class::Maker classes can be introspected, so they will have at least information
	in the 'isa' and 'methods' fields.

	{
		package Human::Role::Simple;

		@ISA = qw(Human::Role);

		sub new : method
		{
			my $this = shift;

			return $this->SUPER::new( name => $_[0] );
		}
	}

	$reflex =
	(
		'Human::Role::Simple' =>
		{
			'isa' => [ 'Human::Role' ],

			'methods' => [ 'new' ].
		}
	)

0.05_09 27.07.2002 10:40

	- attribute handlers (accessors) are now in "Class::Maker::Basic::Handler::Attributes". Therefore
	if new accessors types are into that package (see _make_method in Maker.pm).

	- 'attribute' field is now obsolete ! Now only private/public/protected are allowed.

0.05_10 01.09.2002 16:14

	- Class::Maker::Basic::Constructor new() supports cloning (use args for clone modification).

		$new_obj = Pkg::Name->new( name => 'name', email => 'email@server.org' );

		$clone_obj = $new_obj->new( name => 'othername' );

0.05_12 29.9.2002 18:53

	- Added explicitly
	
		use attributes;
		
	to Maker.pm because under perl5.8.0 it seems to be needed.

0.5.14

   - Class::Maker::Exception added. See pod.

0.5.15

	* package Class::Maker::Basic::Handler::Attributes
		-- now handlers are using "Delegation" to methods
			- get() 
			- set() 
			- init()   called from 'new' (or 'default' field) constructor
			- reset() 
			
		This now eases the interception via hooks and also makes things more transparent.	

		Example exploit of that:
		
		use Hook::Heckle;
		
		foreach my $method ( qw(max text) )
		{
			Hook::Heckle->new( victim => $method, post => sub { my $this = shift; print "Model is informing observers of '$method' change\n" and $_[0]->notify_observers( 'update', $method ) if $_[1]; @_ }, sub { @_ } );
		}

	* class->_arginit (if exists) is called before anything with @_ happens to the constructor ('new').	
		-- it received \@_ and should do changes in place.

0.5.17

	* Bug in lvalue attribute handler (default) fixed

		because C<return $val; this doesn't work, don't say "return">
