03db16788e7d0c2e2014bc198b3c0b20d10f9f72
[catagits/Gitalist.git] / local-lib5 / lib / perl5 / i486-linux-gnu-thread-multi / XML / LibXML / Boolean.pm
1 # $Id: Boolean.pm 785 2009-07-16 14:17:46Z pajas $
2 #
3 #
4 # This is free software, you may use it and distribute it under the same terms as
5 # Perl itself.
6 #
7 # Copyright 2001-2003 AxKit.com Ltd., 2002-2006 Christian Glahn, 2006-2009 Petr Pajas
8 #
9 #
10
11 package XML::LibXML::Boolean;
12 use XML::LibXML::Number;
13 use XML::LibXML::Literal;
14 use strict;
15
16 use vars qw ($VERSION);
17
18 $VERSION = "1.70"; # VERSION TEMPLATE: DO NOT CHANGE
19
20 use overload
21         '""' => \&value,
22         '<=>' => \&cmp;
23
24 sub new {
25     my $class = shift;
26     my ($param) = @_;
27     my $val = $param ? 1 : 0;
28     bless \$val, $class;
29 }
30
31 sub True {
32     my $class = shift;
33     my $val = 1;
34     bless \$val, $class;
35 }
36
37 sub False {
38     my $class = shift;
39     my $val = 0;
40     bless \$val, $class;
41 }
42
43 sub value {
44     my $self = shift;
45     $$self;
46 }
47
48 sub cmp {
49     my $self = shift;
50     my ($other, $swap) = @_;
51     if ($swap) {
52         return $other <=> $$self;
53     }
54     return $$self <=> $other;
55 }
56
57 sub to_number { XML::LibXML::Number->new($_[0]->value); }
58 sub to_boolean { $_[0]; }
59 sub to_literal { XML::LibXML::Literal->new($_[0]->value ? "true" : "false"); }
60
61 sub string_value { return $_[0]->to_literal->value; }
62
63 1;
64 __END__
65
66 =head1 NAME
67
68 XML::LibXML::Boolean - Boolean true/false values
69
70 =head1 DESCRIPTION
71
72 XML::LibXML::Boolean objects implement simple boolean true/false objects.
73
74 =head1 API
75
76 =head2 XML::LibXML::Boolean->True
77
78 Creates a new Boolean object with a true value.
79
80 =head2 XML::LibXML::Boolean->False
81
82 Creates a new Boolean object with a false value.
83
84 =head2 value()
85
86 Returns true or false.
87
88 =head2 to_literal()
89
90 Returns the string "true" or "false".
91
92 =cut