Provided by: libclass-accessor-classy-perl_0.9.1-2_all bug

NAME

       Class::Accessor::Classy - accessors with minimal inheritance

SYNOPSIS

         package YourPackage;

         use Class::Accessor::Classy;
           with qw(new);              # with a new() method
           ro qw(foo);                # read-only
           rw qw(bar);                # read-write
           rs baz => \ (my $set_baz); # read-only, plus a secret writer

           # alternatively:
           my $set_bip = rs 'bip';

           ro_c suitcase => 'red';    # read-only class data
           rw_c hat      => 'black';  # read-write class data
           rs_c socks    => \ (my $set_socks) => undef;

           # alternative secret writer syntax
           my $set_shoes = rs_c shoes => undef;

           # also class read-only:
           constant seven => 7;
           constant eight => this->seven + 1;
         no  Class::Accessor::Classy;
         # ^-- removes all of the syntax bits from your namespace

         package whatever;

         YourPackage->set_hat(undef);
         my $obj = YourPackage->new(foo => 4, bar => 2);
         # NOTE I'm thinking of deprecating the get_foo() usage
         warn "foo ", $obj->foo;
         YourPackage->$set_socks("tube");

About

       This module provides an extremely small-footprint accessor/mutator declaration scheme for
       fast and convenient object attribute setup.  It is intended as a simple and speedy
       mechanism for preventing hash-key typos rather than a full-blown object system with type
       checking and so on.

       The accessor methods appear as a hidden parent class of your package and generally try to
       stay out of the way.  The accessors and mutators generated are of the form "foo()" and
       "set_foo()", respectively.

Frontend

       Unlike other class-modifying code, this is not designed to be inherited from.  Instead,
       you simply use it and get an invisible subclass containing your accessors.  If you use the
       'no' syntax (to call unimport), you are left with a squeaky-clean namespace.

       After 'use' and before 'no', the following pieces of syntax are available.

   with
       Add a 'standard' method to your class.

       new

   ro
       Read-only properties (accessors only.)

         ro qw(foo bar baz);

   rw
       Define read-write (accessor + mutator) properties.

         rw qw(foo bar baz);

   lv
       Properties with lvalue accessors.

         lv qw(thing deal stuff);

   ri
       Immutable properties.  Once set, further calls to the mutator throw errors.

         ri qw(foo bar baz);

   rs
       Read-only properties with a secret mutator.

         rs foo => \(my $set_foo);

   lo
       Read-only list properties.  These are stored as an array-ref, but the accessor returns a
       list.

         lo qw(foo bar baz);

   lw
       Read-write list properties.  The mutator takes a list.

         lw 'foo';

       This defaults to create foo()|get_foo(), set_foo(), and add_foo() methods.  Other features
       are possible here, but currently experimental.

   ls
       List property with a secret mutator.

         ls foo => \(my $set_foo);

   this
       A shortcut for your classname.  Useful for e.g. defining one constant in terms of another.

         this->some_class_method;

   getter
       Define a custom getter.

   setter
       Define a custom setter.

   constant
       A class constant.

         constant foo => 7;

   ro_c
       Read-only class method.

   rw_c
       A read-write class method, with a default.

         rw_c foo => 9;

   rs_c
       A class method with a secret setter.

         rs_c bar => \(my $set_bar) => 12;

   in
       Specify the destination package.  You need to set this before defining anything else (but
       it is usually best to just not set it.)

         in 'why_be_so_secretive';

   aka
       Add an alias for an existing method.

         aka have_method => 'want_method', 'and_also_want';

Utilities

       This introspection stuff is unreliable -- don't use it.

   find_accessors
         @attribs = Class::Accessor::Classy->find_accessors($class);

   find_subclasses
         @classlist = Class::Accessor::Classy->find_subclasses($class);

Subclassable

       Customized subclasses may override these methods to create a new kind of accessor
       generator.

       NOTE
           You do not subclass Class::Accessor::Classy to construct your objects.

           If you are just creating MyObject, you are not inheriting any of these methods.

           The rest of this documentation only pertains to you if you are trying to create
           something like Class::Accessor::Classy::MyWay.

       notation:
           Read these as: $CAC = 'Class::Accessor::Classy'; (or whatever subclass you're
           creating.)

   exports
         my %exports = $CAC->exports;

   import
         $CAC->import;

   unimport
         $CAC->unimport;

   create_package
       Creates and returns the package in which the accessors will live.  Also pushes the created
       accessor package into the caller's @ISA.

       If it already exists, simply returns the cached value.

         my $package = $CAC->create_package(
           class => $caller,
           in    => $package, # optional
         );

   install_sub
         $CAC->install_sub($class, $name, $subref, $note);

   annotate
         $CAC->annotate($class, $name, $note);

   get_notes
         my %notes = $CAC->get_notes;

   make_standards
         $CAC->make_standards($class, @list);

   _getter
       Returns a compiled getter subref corresponding to whether or not the class has a '--get'
       method.

         $CAC->_getter($class, $item);

   make_getters
         $CAC->make_getters($class, @list);

   make_lv_getters
         $CAC->make_lv_getters($class, @list);

   _setter
       Returns a compiled setter subref corresponding to whether or not the class has a '--set'
       method.

         $CAC->_setter($class, $item);

   make_setters
         $CAC->make_setters($class, @list);

   make_immutable
       Creates immutable (one-time-only) setters.

         CAC->make_immutable($class, @list);

   make_secrets
         my @names = $CAC->make_secrets($class, @list);

   make_aliases
       Constructs 'get_' aliases for a @list of accessors.

         $CAC->make_aliases($class, @list);

   make_aka
       Create a list of alias methods which runtime refer to $realname.

         $CAC->make_aka($where, $realname, @aliases);

   do_eval
         my $subref = $package->do_eval($string, @checks);

List Accessors

   make_array_method
         $CAC->make_array_method(
           class     => $class,
           item      => $name,
           functions => [@functions],
           secret    => $bool,
         );

       If secret is true, will return the list of names.

   _get_array_subs
         my %subs = $CAC->_get_array_subs($name);

Class Accessors

   make_class_data
         $CAC->make_class_data($mode, $class, $key, $value);

       If mode is 'rs', returns the secret setter name.

AUTHOR

       Eric Wilhelm @ <ewilhelm at cpan dot org>

       http://scratchcomputing.com/

BUGS

       If you found this module on CPAN, please report any bugs or feature requests through the
       web interface at <http://rt.cpan.org>.  I will be notified, and then you'll automatically
       be notified of progress on your bug as I make changes.

       If you pulled this development version from my /svn/, please contact me directly.

COPYRIGHT

       Copyright (C) 2006-2007 Eric L. Wilhelm, All Rights Reserved.

NO WARRANTY

       Absolutely, positively NO WARRANTY, neither express or implied, is offered with this
       software.  You use this software at your own risk.  In case of loss, no person or entity
       owes you anything whatseover.  You have been warned.

LICENSE

       This program is free software; you can redistribute it and/or modify it under the same
       terms as Perl itself.