← Index
Performance Profile   « block view • line view • sub view »
For t/test-parsing
  Run on Sun Nov 14 09:49:57 2010
Reported on Sun Nov 14 09:50:09 2010

File /usr/lib/perl5/XML/LibXML/Number.pm
Statements Executed 17
Total Time 0.0006367 seconds
Subroutines — ordered by exclusive time
Calls P F Exclusive
Time
Inclusive
Time
Subroutine
0000s0sXML::LibXML::Number::::BEGINXML::LibXML::Number::BEGIN
0000s0sXML::LibXML::Number::::as_stringXML::LibXML::Number::as_string
0000s0sXML::LibXML::Number::::as_xmlXML::LibXML::Number::as_xml
0000s0sXML::LibXML::Number::::cmpXML::LibXML::Number::cmp
0000s0sXML::LibXML::Number::::evaluateXML::LibXML::Number::evaluate
0000s0sXML::LibXML::Number::::newXML::LibXML::Number::new
0000s0sXML::LibXML::Number::::string_valueXML::LibXML::Number::string_value
0000s0sXML::LibXML::Number::::to_booleanXML::LibXML::Number::to_boolean
0000s0sXML::LibXML::Number::::to_literalXML::LibXML::Number::to_literal
0000s0sXML::LibXML::Number::::to_numberXML::LibXML::Number::to_number
0000s0sXML::LibXML::Number::::valueXML::LibXML::Number::value
LineStmts.Exclusive
Time
Avg.Code
1# $Id: Number.pm 709 2008-01-29 21:01:32Z pajas $
2
3package XML::LibXML::Number;
4331µs10µsuse XML::LibXML::Boolean;
# spent 4µs making 1 call to import
53109µs36µsuse XML::LibXML::Literal;
# spent 4µs making 1 call to import
6329µs10µsuse strict;
# spent 11µs making 1 call to strict::import
7
8358µs19µsuse vars qw ($VERSION);
# spent 26µs making 1 call to vars::import
91600ns600ns$VERSION = "1.66"; # VERSION TEMPLATE: DO NOT CHANGE
10
11use overload
12 '""' => \&value,
# spent 67µs making 1 call to overload::import
13 '0+' => \&value,
143406µs135µs '<=>' => \&cmp;
15
16sub new {
17 my $class = shift;
18 my $number = shift;
19 if ($number !~ /^\s*(-\s*)?(\d+(\.\d*)?|\.\d+)\s*$/) {
20 $number = undef;
21 }
22 else {
23 $number =~ s/\s+//g;
24 }
25 bless \$number, $class;
26}
27
28sub as_string {
29 my $self = shift;
30 defined $$self ? $$self : 'NaN';
31}
32
33sub as_xml {
34 my $self = shift;
35 return "<Number>" . (defined($$self) ? $$self : 'NaN') . "</Number>\n";
36}
37
38sub value {
39 my $self = shift;
40 $$self;
41}
42
43sub cmp {
44 my $self = shift;
45 my ($other, $swap) = @_;
46 if ($swap) {
47 return $other <=> $$self;
48 }
49 return $$self <=> $other;
50}
51
52sub evaluate {
53 my $self = shift;
54 $self;
55}
56
57sub to_boolean {
58 my $self = shift;
59 return $$self ? XML::LibXML::Boolean->True : XML::LibXML::Boolean->False;
60}
61
62sub to_literal { XML::LibXML::Literal->new($_[0]->as_string); }
63sub to_number { $_[0]; }
64
65sub string_value { return $_[0]->value }
66
6713µs3µs1;
68__END__
69
70=head1 NAME
71
72XML::LibXML::Number - Simple numeric values.
73
74=head1 DESCRIPTION
75
76This class holds simple numeric values. It doesn't support -0, +/- Infinity,
77or NaN, as the XPath spec says it should, but I'm not hurting anyone I don't think.
78
79=head1 API
80
81=head2 new($num)
82
83Creates a new XML::LibXML::Number object, with the value in $num. Does some
84rudimentary numeric checking on $num to ensure it actually is a number.
85
86=head2 value()
87
88Also as overloaded stringification. Returns the numeric value held.
89
90=cut