1# $Id: Boolean.pm,v 1.1.1.2 2007/10/10 23:04:14 ahuda Exp $
2# Copyright 2001-2002, AxKit.com Ltd. All rights reserved.
3
4package XML::LibXML::Boolean;
5use XML::LibXML::Number;
6use XML::LibXML::Literal;
7use strict;
8
9use vars qw ($VERSION);
10
11$VERSION = "1.65"; # VERSION TEMPLATE: DO NOT CHANGE
12
13use overload
14        '""' => \&value,
15        '<=>' => \&cmp;
16
17sub new {
18    my $class = shift;
19    my ($param) = @_;
20    my $val = $param ? 1 : 0;
21    bless \$val, $class;
22}
23
24sub True {
25    my $class = shift;
26    my $val = 1;
27    bless \$val, $class;
28}
29
30sub False {
31    my $class = shift;
32    my $val = 0;
33    bless \$val, $class;
34}
35
36sub value {
37    my $self = shift;
38    $$self;
39}
40
41sub cmp {
42    my $self = shift;
43    my ($other, $swap) = @_;
44    if ($swap) {
45        return $other <=> $$self;
46    }
47    return $$self <=> $other;
48}
49
50sub to_number { XML::LibXML::Number->new($_[0]->value); }
51sub to_boolean { $_[0]; }
52sub to_literal { XML::LibXML::Literal->new($_[0]->value ? "true" : "false"); }
53
54sub string_value { return $_[0]->to_literal->value; }
55
561;
57__END__
58
59=head1 NAME
60
61XML::LibXML::Boolean - Boolean true/false values
62
63=head1 DESCRIPTION
64
65XML::LibXML::Boolean objects implement simple boolean true/false objects.
66
67=head1 API
68
69=head2 XML::LibXML::Boolean->True
70
71Creates a new Boolean object with a true value.
72
73=head2 XML::LibXML::Boolean->False
74
75Creates a new Boolean object with a false value.
76
77=head2 value()
78
79Returns true or false.
80
81=head2 to_literal()
82
83Returns the string "true" or "false".
84
85=cut
86