TODO list for Perl module Class::InsideOut

# Planned todos around core functionality - 1.0 roadmap

- other error handling(?)
- cleanup code smells in storable support
- accessor style options
- code coverage: storable for non-scalar/array/hash
- code coverage: storable with non-inside-out superclasses
- STORABLE_attach and singleton support (write as Class::InsideOut::Singleton)
- write FAQs
- refactor docs (separate theory from quickstart)
- expand documentation (cookbook? quick-start? notes on writing Builders)
- cleanup test objects to use new features like accessor generation

# Possible todos depending on demand

- look into support for cloning tied objects(?) in the blessed hash(?)
- accessor privacy => "protected" and matching property alias
- add public introspection methods (property list and options?)
- "evert" method -- dump/reconstruct to a hash  (??)
  ( $hash_ref = $obj->evert; $newobj = Class->evert( $hash_ref ) )
- pre-clone user hook?? (waiting for someone to say they need it)

#--------------------------------------------------------------------------#
# Thoughts about property options
#--------------------------------------------------------------------------#

# have to be careful of interrelationship between style and custom prefixes;
# maybe don't allow custom prefixes at all

Class::InsideOut::options(
  accessor_style => 'perl', # default
        # "combined"; "perl" => foo() and foo(x)
        # "get_set"; "java"  => get_foo() and set_foo(x)
        # "eiffel"           => foo() and set_foo(x)
        
  get_prefix => 'get_', # maybe don't bother (YAGNI)
  set_prefix => 'set_', # maybe don't bother (YAGNI)
  privacy => 'public',  # create accessors for everything given to properties
                       # or 'readonly' or 'protected' or 'private'
  set_hook => \&coderef,  # mutator argument filtered through this
                            # will catch die message for error
  set_returns => 'self' # or 'newvalue' or 'oldvalue'
);

#--------------------------------------------------------------------------#
# FAQ ideas
#--------------------------------------------------------------------------#

* Security (c.f use perl post)

* advisory encapsulation

#--------------------------------------------------------------------------#
# Cookbook ideas
#--------------------------------------------------------------------------#

* Outside-in pattern

* Property aliasing:  ( should work, but what about Storable? )
    assets => my %assets;
    wealth => my %assets;
