NAME
YATT::Lite::Types - define inner types at compile time.
SYNOPSIS
In module MyClass.pm:
package MyClass;
use YATT::Lite::Types
  (base => 'MyBaseClass'
   , [Album => fields => [qw/albumid artist title/]]
   , [CD    => fields => [qw/cdid    artist title/]]
   , [Track => fields => [qw/trackid cd     title/]]
 );
# Now you have MyClass::Album, MyClass::CD and MyClass::Track.
# also, alias (constant sub) of them are defined.
my Album $album = Album->new;
# my Albumm $album;
#  => No such class Albumm
my CD $cd = CD->new;
# $cd->{artistt};
#  => No such class field "artistt" in variable $cd of type MyClass::CD
my Track $track = {};
$track->{cd} = $cd;
# $track->{cdd} = $cd;
# => No such class field "cdd" in variable $track of type MyClass::Track
1;
DESCRIPTION
YATT::Lite::Types is a class builder, especially suitable to defining many inner classes at once.
Basic usage is like this:
use YATT::Lite::Types
  (OPTION => VALUE, ...
  , [SPEC]
  , [SPEC]
  ,  :
  );
where SPEC array for single type is written (TYPENAME + OPT VAL pair list) as:
[TYPENAME => OPTION => VALUE, ...]
Also you can write type hierachy in nested style as:
[BASETYPE => OPT => VAL, ...
  , [SUBTYPE1 => OPT => VAL, ...]
  , [SUBTYPE2 => OPT => VAL, ...
    , [SUBSUBTYPE1 => OPT => VAL, ...]
    , [SUBSUBTYPE2 => OPT => VAL, ...]
    ]
]
options
base
Base class for newly created type. This name is preloaded before type definition (unless you specify
no_require => 1).no_require
alias
To define alias(synonym) too, use this.
SEE ALSO
1 POD Error
The following errors were encountered while parsing the POD:
- Around line 246:
 You forgot a '=back' before '=head1'