The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
=head1 DISCLAIMER

                                  Class::Maker
                               ============

	        ! THIS IS ALPHA SOFTWARE - DO NOT USE THIS MODULE !

            THIS SOFTWARE SHIPS WITHOUT ANY WARRANTY OF ANY KIND

	Everything except the basic functionalities are still under constant
	reorganisation. Also major parts of the	documentation are wrong or already
	outdated.

=head1 NAME

Class::Maker - classes, reflection, schemas, serialization, attribute- and multiple inheritance

=head1 VERSION

0.05.98 (Mon Jun  9 10:23:26 2008)

=head1 DESCRIPTION


AUDIENCE
    This package is for the intermediate-to-pro oo-perl programmer. While it has basicly
    similarities to Class::Struct and Class::MethodMaker, this package has significant
    differences and additional functionalities.

ATTRIBUTE INHERITANCE
	Because all attributes are accessible through accessors, they are
	following ISA inheritance / overloading as normal methods do.

MULTIPLE INHERITANCE
	Per default, Class::Maker cares for constructing all parent objects via its 'new'
	or '_init' constructors. It uses a trick to derive from even non Class::Maker
	classes	correctly.

REFLECTION/CLASS INTROSPECTION
    Java-like reflection or recursive class introspectiong for methods/attribute/
    triggers are available during runtime. This is helpfull for implementing
    persistance, serialization, class tree charting and some other nifty tricks.

OBJECT PERSISTANCE
    A recursive Tangram (see cpan) schema generator is also available, which
    significantly  eases the use of object-persistance as long as you use
    Class::Maker classes and following some simple guidelines.


=head1 SYNOPSIS

  use Class::Maker qw(:all);

  class Something;

  class Person,
  {
     isa => [ 'Something' ],

     public =>
     {
       scalar => [qw( name age internal )],
     },

     private
     {
       int => [qw( internal )],
     },
  };

  sub Person::hello
  {
    my $this = shift;

    $this->_internal( 2123 ); # the private one

    printf "Here is %s and i am %d years old.\n",  $this->name, $this->age;
  };

  my $p = Person->new( name => Murat, age => 27 );

  $p->hello;


=head1 INSTALLATION

I highly recommend to use CPAN for one-stop-shop installation:

perl -MCPAN -e "install Class::Maker"


=head1 PREREQUISITES

Following modules get automatically installed via the CPAN module. See INSTALLATION above. Data::Type has a mechanism
for delayed loading of modules. This means modules are loaded only when the used types require
them, not all at once.

=over 1

=item XML::LibXSLT (0)

=item Data::Dumper (0)

=item IO::Extended (0)

=item Error (0.15)

=item Algorithm::FastPermute (0.05)

=item Array::Compare (1.03)


=back



=head1 READON

Visit the L<Class::Maker> main documentation.


=head1 CONTACT

Sourceforge L<http://sf.net/projects/datatype> is hosting a project dedicated to this module. And I enjoy receiving your comments/suggestion/reports also via L<http://rt.cpan.org> or L<http://testers.cpan.org>. 

=head1 AUTHOR

Murat Uenalan, <muenalan@cpan.org>


=head1 COPYRIGHT/LICENSE

(c) 2008 by Murat Uenalan. All rights reserved. Note: This program is
free software; you can redistribute it and/or modify it under the same
terms as perl itself