← Index
NYTProf Performance Profile   « block view • line view • sub view »
For 01.HTTP.t
  Run on Tue May 4 14:17:45 2010
Reported on Tue May 4 14:18:01 2010

File /usr/local/lib/perl5/site_perl/5.10.1/darwin-2level/XML/LibXML/NodeList.pm
Statements Executed 21
Statement Execution Time 588µs
Subroutines — ordered by exclusive time
Calls P F Exclusive
Time
Inclusive
Time
Subroutine
111337µs1.41msXML::LibXML::NodeList::::BEGIN@12XML::LibXML::NodeList::BEGIN@12
11116µs19µsXML::LibXML::NodeList::::BEGIN@11XML::LibXML::NodeList::BEGIN@11
11113µs43µsXML::LibXML::NodeList::::BEGIN@20XML::LibXML::NodeList::BEGIN@20
1116µs24µsXML::LibXML::NodeList::::BEGIN@16XML::LibXML::NodeList::BEGIN@16
1115µs5µsXML::LibXML::NodeList::::BEGIN@13XML::LibXML::NodeList::BEGIN@13
1114µs4µsXML::LibXML::NodeList::::BEGIN@14XML::LibXML::NodeList::BEGIN@14
0000s0sXML::LibXML::NodeList::::appendXML::LibXML::NodeList::append
0000s0sXML::LibXML::NodeList::::get_nodeXML::LibXML::NodeList::get_node
0000s0sXML::LibXML::NodeList::::get_nodelistXML::LibXML::NodeList::get_nodelist
0000s0sXML::LibXML::NodeList::::iteratorXML::LibXML::NodeList::iterator
0000s0sXML::LibXML::NodeList::::newXML::LibXML::NodeList::new
0000s0sXML::LibXML::NodeList::::new_from_refXML::LibXML::NodeList::new_from_ref
0000s0sXML::LibXML::NodeList::::popXML::LibXML::NodeList::pop
0000s0sXML::LibXML::NodeList::::prependXML::LibXML::NodeList::prepend
0000s0sXML::LibXML::NodeList::::pushXML::LibXML::NodeList::push
0000s0sXML::LibXML::NodeList::::shiftXML::LibXML::NodeList::shift
0000s0sXML::LibXML::NodeList::::sizeXML::LibXML::NodeList::size
0000s0sXML::LibXML::NodeList::::string_valueXML::LibXML::NodeList::string_value
0000s0sXML::LibXML::NodeList::::to_booleanXML::LibXML::NodeList::to_boolean
0000s0sXML::LibXML::NodeList::::to_literalXML::LibXML::NodeList::to_literal
0000s0sXML::LibXML::NodeList::::to_numberXML::LibXML::NodeList::to_number
0000s0sXML::LibXML::NodeList::::unshiftXML::LibXML::NodeList::unshift
Call graph for these subroutines as a Graphviz dot language file.
Line State
ments
Time
on line
Calls Time
in subs
Code
1# $Id: NodeList.pm 785 2009-07-16 14:17:46Z pajas $
2#
3# This is free software, you may use it and distribute it under the same terms as
4# Perl itself.
5#
6# Copyright 2001-2003 AxKit.com Ltd., 2002-2006 Christian Glahn, 2006-2009 Petr Pajas
7#
8#
9
10package XML::LibXML::NodeList;
11322µs222µs
# spent 19µs (16+3) within XML::LibXML::NodeList::BEGIN@11 which was called # once (16µs+3µs) by XML::LibXML::BEGIN@24 at line 11
use strict;
# spent 19µs making 1 call to XML::LibXML::NodeList::BEGIN@11 # spent 3µs making 1 call to strict::import
12391µs11.41ms
# spent 1.41ms (337µs+1.08) within XML::LibXML::NodeList::BEGIN@12 which was called # once (337µs+1.08ms) by XML::LibXML::BEGIN@24 at line 12
use XML::LibXML::Boolean;
# spent 1.41ms making 1 call to XML::LibXML::NodeList::BEGIN@12
13318µs15µs
# spent 5µs within XML::LibXML::NodeList::BEGIN@13 which was called # once (5µs+0s) by XML::LibXML::BEGIN@24 at line 13
use XML::LibXML::Literal;
# spent 5µs making 1 call to XML::LibXML::NodeList::BEGIN@13
14320µs14µs
# spent 4µs within XML::LibXML::NodeList::BEGIN@14 which was called # once (4µs+0s) by XML::LibXML::BEGIN@24 at line 14
use XML::LibXML::Number;
# spent 4µs making 1 call to XML::LibXML::NodeList::BEGIN@14
15
16336µs242µs
# spent 24µs (6+18) within XML::LibXML::NodeList::BEGIN@16 which was called # once (6µs+18µs) by XML::LibXML::BEGIN@24 at line 16
use vars qw ($VERSION);
# spent 24µs making 1 call to XML::LibXML::NodeList::BEGIN@16 # spent 18µs making 1 call to vars::import
171600ns$VERSION = "1.70"; # VERSION TEMPLATE: DO NOT CHANGE
18
19use overload
20
# spent 43µs (13+30) within XML::LibXML::NodeList::BEGIN@20 which was called # once (13µs+30µs) by XML::LibXML::BEGIN@24 at line 22
'""' => \&to_literal,
# spent 30µs making 1 call to overload::import
21 'bool' => \&to_boolean,
223395µs143µs ;
# spent 43µs making 1 call to XML::LibXML::NodeList::BEGIN@20
23
24sub new {
25 my $class = shift;
26 bless [@_], $class;
27}
28
29sub new_from_ref {
30 my ($class,$array_ref,$reuse) = @_;
31 return bless $reuse ? $array_ref : [@$array_ref], $class;
32}
33
34sub pop {
35 my $self = CORE::shift;
36 CORE::pop @$self;
37}
38
39sub push {
40 my $self = CORE::shift;
41 CORE::push @$self, @_;
42}
43
44sub append {
45 my $self = CORE::shift;
46 my ($nodelist) = @_;
47 CORE::push @$self, $nodelist->get_nodelist;
48}
49
50sub shift {
51 my $self = CORE::shift;
52 CORE::shift @$self;
53}
54
55sub unshift {
56 my $self = CORE::shift;
57 CORE::unshift @$self, @_;
58}
59
60sub prepend {
61 my $self = CORE::shift;
62 my ($nodelist) = @_;
63 CORE::unshift @$self, $nodelist->get_nodelist;
64}
65
66sub size {
67 my $self = CORE::shift;
68 scalar @$self;
69}
70
71sub get_node {
72 # uses array index starting at 1, not 0
73 # this is mainly because of XPath.
74 my $self = CORE::shift;
75 my ($pos) = @_;
76 $self->[$pos - 1];
77}
78
7911µs*item = \&get_node;
80
81sub get_nodelist {
82 my $self = CORE::shift;
83 @$self;
84}
85
86sub to_boolean {
87 my $self = CORE::shift;
88 return (@$self > 0) ? XML::LibXML::Boolean->True : XML::LibXML::Boolean->False;
89}
90
91# string-value of a nodelist is the string-value of the first node
92sub string_value {
93 my $self = CORE::shift;
94 return '' unless @$self;
95 return $self->[0]->string_value;
96}
97
98sub to_literal {
99 my $self = CORE::shift;
100 return XML::LibXML::Literal->new(
101 join('', grep {defined $_} map { $_->string_value } @$self)
102 );
103}
104
105sub to_number {
106 my $self = CORE::shift;
107 return XML::LibXML::Number->new(
108 $self->to_literal
109 );
110}
111
112sub iterator {
113 warn "this function is obsolete!\nIt was disabled in version 1.54\n";
114 return undef;
115}
116
11714µs1;
118__END__
119
120=head1 NAME
121
122XML::LibXML::NodeList - a list of XML document nodes
123
124=head1 DESCRIPTION
125
126An XML::LibXML::NodeList object contains an ordered list of nodes, as
127detailed by the W3C DOM documentation of Node Lists.
128
129=head1 SYNOPSIS
130
131 my $results = $dom->findnodes('//somepath');
132 foreach my $context ($results->get_nodelist) {
133 my $newresults = $context->findnodes('./other/element');
134 ...
135 }
136
137=head1 API
138
139=head2 new()
140
141You will almost never have to create a new NodeSet object, as it is all
142done for you by XPath.
143
144=head2 get_nodelist()
145
146Returns a list of nodes, the contents of the node list, as a perl list.
147
148=head2 string_value()
149
150Returns the string-value of the first node in the list.
151See the XPath specification for what "string-value" means.
152
153=head2 to_literal()
154
155Returns the concatenation of all the string-values of all
156the nodes in the list.
157
158=head2 get_node($pos)
159
160Returns the node at $pos. The node position in XPath is based at 1, not 0.
161
162=head2 size()
163
164Returns the number of nodes in the NodeSet.
165
166=head2 pop()
167
168Equivalent to perl's pop function.
169
170=head2 push(@nodes)
171
172Equivalent to perl's push function.
173
174=head2 append($nodelist)
175
176Given a nodelist, appends the list of nodes in $nodelist to the end of the
177current list.
178
179=head2 shift()
180
181Equivalent to perl's shift function.
182
183=head2 unshift(@nodes)
184
185Equivalent to perl's unshift function.
186
187=head2 prepend($nodeset)
188
189Given a nodelist, prepends the list of nodes in $nodelist to the front of
190the current list.
191
192=head2 iterator()
193
194Will return a new nodelist iterator for the current nodelist. A
195nodelist iterator is usefull if more complex nodelist processing is
196needed.
197
198=cut