.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.42)
.\"
.\" Standard preamble:
.\" ========================================================================
.de Sp \" Vertical space (when we can't use .PP)
.if t .sp .5v
.if n .sp
..
.de Vb \" Begin verbatim text
.ft CW
.nf
.ne \\$1
..
.de Ve \" End verbatim text
.ft R
.fi
..
.\" Set up some character translations and predefined strings. \*(-- will
.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
.\" double quote, and \*(R" will give a right double quote. \*(C+ will
.\" give a nicer C++. Capital omega is used to do unbreakable dashes and
.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff,
.\" nothing in troff, for use with C<>.
.tr \(*W-
.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
.ie n \{\
. ds -- \(*W-
. ds PI pi
. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
. ds L" ""
. ds R" ""
. ds C` ""
. ds C' ""
'br\}
.el\{\
. ds -- \|\(em\|
. ds PI \(*p
. ds L" ``
. ds R" ''
. ds C`
. ds C'
'br\}
.\"
.\" Escape single quotes in literal strings from groff's Unicode transform.
.ie \n(.g .ds Aq \(aq
.el .ds Aq '
.\"
.\" If the F register is >0, we'll generate index entries on stderr for
.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
.\" entries marked with X<> in POD. Of course, you'll have to process the
.\" output yourself in some meaningful fashion.
.\"
.\" Avoid warning from groff about undefined register 'F'.
.de IX
..
.nr rF 0
.if \n(.g .if rF .nr rF 1
.if (\n(rF:(\n(.g==0)) \{\
. if \nF \{\
. de IX
. tm Index:\\$1\t\\n%\t"\\$2"
..
. if !\nF==2 \{\
. nr % 0
. nr F 2
. \}
. \}
.\}
.rr rF
.\"
.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
.\" Fear. Run. Save yourself. No user-serviceable parts.
. \" fudge factors for nroff and troff
.if n \{\
. ds #H 0
. ds #V .8m
. ds #F .3m
. ds #[ \f1
. ds #] \fP
.\}
.if t \{\
. ds #H ((1u-(\\\\n(.fu%2u))*.13m)
. ds #V .6m
. ds #F 0
. ds #[ \&
. ds #] \&
.\}
. \" simple accents for nroff and troff
.if n \{\
. ds ' \&
. ds ` \&
. ds ^ \&
. ds , \&
. ds ~ ~
. ds /
.\}
.if t \{\
. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
.\}
. \" troff and (daisy-wheel) nroff accents
.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
.ds ae a\h'-(\w'a'u*4/10)'e
.ds Ae A\h'-(\w'A'u*4/10)'E
. \" corrections for vroff
.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
. \" for low resolution devices (crt and lpr)
.if \n(.H>23 .if \n(.V>19 \
\{\
. ds : e
. ds 8 ss
. ds o a
. ds d- d\h'-1'\(ga
. ds D- D\h'-1'\(hy
. ds th \o'bp'
. ds Th \o'LP'
. ds ae ae
. ds Ae AE
.\}
.rm #[ #] #H #V #F C
.\" ========================================================================
.\"
.IX Title "Class::Meta::Types::Boolean 3pm"
.TH Class::Meta::Types::Boolean 3pm "2022-06-11" "perl v5.34.0" "User Contributed Perl Documentation"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
.nh
.SH "NAME"
Class::Meta::Types::Boolean \- Boolean data types
.SH "SYNOPSIS"
.IX Header "SYNOPSIS"
.Vb 8
\& package MyApp::Thingy;
\& use strict;
\& use Class::Meta;
\& use Class::Meta::Types::Boolean;
\& # OR...
\& # use Class::Meta::Types::Boolean \*(Aqaffordance\*(Aq;
\& # OR...
\& # use Class::Meta::Types::Boolean \*(Aqsemi\-affordance\*(Aq;
\&
\& BEGIN {
\& # Create a Class::Meta object for this class.
\& my $cm = Class::Meta\->new( key => \*(Aqthingy\*(Aq );
\&
\& # Add a boolean attribute.
\& $cm\->add_attribute( name => \*(Aqalive\*(Aq,
\& type => \*(Aqboolean\*(Aq );
\& $cm\->build;
\& }
.Ve
.SH "DESCRIPTION"
.IX Header "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
\&\f(CW\*(C`add_attribute()\*(C'\fR 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.
.SS "Accessors"
.IX Subsection "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.
.PP
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.
.PP
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 \f(CW\*(C`get_alive\*(C'\fR and \f(CW\*(C`set_alive\*(C'\fR accessors common to
other affordance-style accessors, it instead creates three:
.ie n .IP """is_alive""" 4
.el .IP "\f(CWis_alive\fR" 4
.IX Item "is_alive"
.PD 0
.ie n .IP """set_alive_on""" 4
.el .IP "\f(CWset_alive_on\fR" 4
.IX Item "set_alive_on"
.ie n .IP """set_alive_off""" 4
.el .IP "\f(CWset_alive_off\fR" 4
.IX Item "set_alive_off"
.PD
.PP
The result is highly efficient accessors that ensure the integrity of the data
without the overhead of validation checks.
.SH "SUPPORT"
.IX Header "SUPPORT"
This module is stored in an open GitHub
repository . Feel free to fork and
contribute!
.PP
Please file bug reports via GitHub
Issues or by sending mail to
bug\-Class\-Meta@rt.cpan.org .
.SH "AUTHOR"
.IX Header "AUTHOR"
David E. Wheeler
.SH "SEE ALSO"
.IX Header "SEE ALSO"
Other classes of interest within the Class::Meta distribution include:
.IP "Class::Meta" 4
.IX Item "Class::Meta"
This class contains most of the documentation you need to get started with
Class::Meta.
.IP "Class::Meta::Type" 4
.IX Item "Class::Meta::Type"
This class manages the creation of data types.
.IP "Class::Meta::Attribute" 4
.IX Item "Class::Meta::Attribute"
This class manages Class::Meta class attributes, all of which are based on
data types.
.PP
Other data type modules:
.IP "Class::Meta::Types::Perl" 4
.IX Item "Class::Meta::Types::Perl"
.PD 0
.IP "Class::Meta::Types::String" 4
.IX Item "Class::Meta::Types::String"
.IP "Class::Meta::Types::Numeric" 4
.IX Item "Class::Meta::Types::Numeric"
.PD
.SH "COPYRIGHT AND LICENSE"
.IX Header "COPYRIGHT AND LICENSE"
Copyright (c) 2002\-2011, David E. Wheeler. Some Rights Reserved.
.PP
This module is free software; you can redistribute it and/or modify it under
the same terms as Perl itself.