SYNOPSIS

  package MyApp::Thingy;
  use strict;
  use Class::Meta;
  use Class::Meta::Types::Boolean;
  # OR...
  # use Class::Meta::Types::Boolean 'affordance';
  # OR...
  # use Class::Meta::Types::Boolean 'semi-affordance';

  BEGIN {
      # Create a Class::Meta object for this class.
      my $cm = Class::Meta->new( key => 'thingy' );

      # Add a boolean attribute.
      $cm->add_attribute( name => 'alive',
                          type => 'boolean' );
      $cm->build;
  }

DESCRIPTION

This module provides a boolean data type for use with Class::Meta attributes. Simply load it, then pass \*(L"boolean\*(R" (or the alias \*(L"bool\*(R") to the \*(C`add_attribute()\*(C' method of a Class::Meta object to create an attribute of the boolean data type. See Class::Meta::Type for more information on using and creating data types.

Accessors

Although the boolean data type has both \*(L"default\*(R" and \*(L"affordance\*(R" accessor options available, unlike the other data types that ship with Class::Meta, they have different implementations. The reason for this is to ensure that the value of a boolean attribute is always 0 or 1.

For the \*(L"default\*(R" accessor style, there is no difference in the interface from the default accessors for other data types. The default accessor merely checks the truth of the new value, and assigns 1 if it's a true value, and 0 if it's a false value. The result is an efficient accessor that maintains the consistency of the data.

For the \*(L"affordance\*(R" accessor style, however, the boolean data type varies in the accessors it creates. For example, for a boolean attributed named \*(L"alive\*(R", instead of creating the \*(C`get_alive\*(C' and \*(C`set_alive\*(C' accessors common to other affordance-style accessors, it instead creates three:

The result is highly efficient accessors that ensure the integrity of the data without the overhead of validation checks.

SUPPORT

This module is stored in an open GitHub repository <http://github.com/theory/class-meta/>. Feel free to fork and contribute!

Please file bug reports via GitHub Issues <http://github.com/theory/class-meta/issues/> or by sending mail to [email protected] <mailto:[email protected]>.

AUTHOR

David E. Wheeler <[email protected]>

RELATED TO Class::Meta::Types::Boolean…

Other classes of interest within the Class::Meta distribution include:

Class::Meta

This class contains most of the documentation you need to get started with Class::Meta.

Class::Meta::Type

This class manages the creation of data types.

Class::Meta::Attribute

This class manages Class::Meta class attributes, all of which are based on data types.

Other data type modules:

Class::Meta::Types::Perl
Class::Meta::Types::String
Class::Meta::Types::Numeric

COPYRIGHT AND LICENSE

Copyright (c) 2002-2011, David E. Wheeler. Some Rights Reserved.

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