← Index
NYTProf Performance Profile   « line view »
For /usr/local/libexec/sympa/task_manager-debug.pl
  Run on Tue Jun 1 22:32:51 2021
Reported on Tue Jun 1 22:35:09 2021

Filename/usr/local/lib/perl5/site_perl/mach/5.32/XML/LibXML/AttributeHash.pm
StatementsExecuted 0 statements in 0s
Subroutines
Calls P F Exclusive
Time
Inclusive
Time
Subroutine
0000s0sXML::LibXML::AttributeHash::::BEGIN@13XML::LibXML::AttributeHash::BEGIN@13
0000s0sXML::LibXML::AttributeHash::::BEGIN@3XML::LibXML::AttributeHash::BEGIN@3
0000s0sXML::LibXML::AttributeHash::::BEGIN@4XML::LibXML::AttributeHash::BEGIN@4
0000s0sXML::LibXML::AttributeHash::::BEGIN@5XML::LibXML::AttributeHash::BEGIN@5
0000s0sXML::LibXML::AttributeHash::::BEGIN@6XML::LibXML::AttributeHash::BEGIN@6
0000s0sXML::LibXML::AttributeHash::::BEGIN@9XML::LibXML::AttributeHash::BEGIN@9
0000s0sXML::LibXML::AttributeHash::::CLEARXML::LibXML::AttributeHash::CLEAR
0000s0sXML::LibXML::AttributeHash::::DELETEXML::LibXML::AttributeHash::DELETE
0000s0sXML::LibXML::AttributeHash::::EXISTSXML::LibXML::AttributeHash::EXISTS
0000s0sXML::LibXML::AttributeHash::::FETCHXML::LibXML::AttributeHash::FETCH
0000s0sXML::LibXML::AttributeHash::::FIRSTKEYXML::LibXML::AttributeHash::FIRSTKEY
0000s0sXML::LibXML::AttributeHash::::NEXTKEYXML::LibXML::AttributeHash::NEXTKEY
0000s0sXML::LibXML::AttributeHash::::SCALARXML::LibXML::AttributeHash::SCALAR
0000s0sXML::LibXML::AttributeHash::::STOREXML::LibXML::AttributeHash::STORE
0000s0sXML::LibXML::AttributeHash::::TIEHASHXML::LibXML::AttributeHash::TIEHASH
0000s0sXML::LibXML::AttributeHash::::__ANON__XML::LibXML::AttributeHash::__ANON__ (xsub)
0000s0sXML::LibXML::AttributeHash::::all_keysXML::LibXML::AttributeHash::all_keys
0000s0sXML::LibXML::AttributeHash::::elementXML::LibXML::AttributeHash::element
0000s0sXML::LibXML::AttributeHash::::from_clarkXML::LibXML::AttributeHash::from_clark
0000s0sXML::LibXML::AttributeHash::::to_clarkXML::LibXML::AttributeHash::to_clark
Call graph for these subroutines as a Graphviz dot language file.
Line State
ments
Time
on line
Calls Time
in subs
Code
1package XML::LibXML::AttributeHash;
2
3use strict;
4use warnings;
5use Scalar::Util qw//;
6use Tie::Hash;
7our @ISA = qw/Tie::Hash/;
8
9use vars qw($VERSION);
10$VERSION = "2.0207"; # VERSION TEMPLATE: DO NOT CHANGE
11
12BEGIN
13{
14 *__HAS_WEAKEN = defined(&Scalar::Util::weaken)
15 ? sub () { 1 }
16 : sub () { 0 };
17};
18
19sub element
20{
21 return $_[0][0];
22}
23
24sub from_clark
25{
26 my ($self, $str) = @_;
27 if ($str =~ m! \{ (.+) \} (.+) !x)
28 {
29 return ($1, $2);
30 }
31 return (undef, $str);
32}
33
34sub to_clark
35{
36 my ($self, $ns, $local) = @_;
37 defined $ns ? "{$ns}$local" : $local;
38}
39
40sub all_keys
41{
42 my ($self, @keys) = @_;
43
44 my $elem = $self->element;
45
46 foreach my $attr (defined($elem) ? $elem->attributes : ())
47 {
48 if (! $attr->isa('XML::LibXML::Namespace'))
49 {
50 push @keys, $self->to_clark($attr->namespaceURI, $attr->localname);
51 }
52 }
53
54 return sort @keys;
55}
56
57sub TIEHASH
58{
59 my ($class, $element, %args) = @_;
60 my $self = bless [$element, undef, \%args], $class;
61 if (__HAS_WEAKEN and $args{weaken})
62 {
63 Scalar::Util::weaken( $self->[0] );
64 }
65 return $self;
66}
67
68sub STORE
69{
70 my ($self, $key, $value) = @_;
71 my ($key_ns, $key_local) = $self->from_clark($key);
72 if (defined $key_ns)
73 {
74 return $self->element->setAttributeNS($key_ns, "xxx:$key_local", "$value");
75 }
76 else
77 {
78 return $self->element->setAttribute($key_local, "$value");
79 }
80}
81
82sub FETCH
83{
84 my ($self, $key) = @_;
85 my ($key_ns, $key_local) = $self->from_clark($key);
86 if (defined $key_ns)
87 {
88 return $self->element->getAttributeNS($key_ns, "$key_local");
89 }
90 else
91 {
92 return $self->element->getAttribute($key_local);
93 }
94}
95
96sub EXISTS
97{
98 my ($self, $key) = @_;
99 my ($key_ns, $key_local) = $self->from_clark($key);
100 if (defined $key_ns)
101 {
102 return $self->element->hasAttributeNS($key_ns, "$key_local");
103 }
104 else
105 {
106 return $self->element->hasAttribute($key_local);
107 }
108}
109
110sub DELETE
111{
112 my ($self, $key) = @_;
113 my ($key_ns, $key_local) = $self->from_clark($key);
114 if (defined $key_ns)
115 {
116 return $self->element->removeAttributeNS($key_ns, "$key_local");
117 }
118 else
119 {
120 return $self->element->removeAttribute($key_local);
121 }
122}
123
124sub FIRSTKEY
125{
126 my ($self) = @_;
127 my @keys = $self->all_keys;
128 $self->[1] = \@keys;
129 if (wantarray)
130 {
131 return ($keys[0], $self->FETCH($keys[0]));
132 }
133 $keys[0];
134}
135
136sub NEXTKEY
137{
138 my ($self, $lastkey) = @_;
139 my @keys = defined $self->[1] ? @{ $self->[1] } : $self->all_keys;
140 my $found;
141 foreach my $k (@keys)
142 {
143 if ($k gt $lastkey)
144 {
145 $found = $k and last;
146 }
147 }
148 if (!defined $found)
149 {
150 $self->[1] = undef;
151 return;
152 }
153 if (wantarray)
154 {
155 return ($found, $self->FETCH($found));
156 }
157 return $found;
158}
159
160sub SCALAR
161{
162 my ($self) = @_;
163 return $self->element;
164}
165
166sub CLEAR
167{
168 my ($self) = @_;
169 foreach my $k ($self->all_keys)
170 {
171 $self->DELETE($k);
172 }
173 return $self;
174}
175
176__PACKAGE__
177__END__