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">