Profile of /usr/local/lib/perl5/site_perl/5.10.1/darwin-2level/XML/LibXML/Error.pm

← 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:16 2010

File | /usr/local/lib/perl5/site_perl/5.10.1/darwin-2level/XML/LibXML/Error.pm
Statements Executed | 104
Statement Execution Time | 1.74ms

Subroutines — ordered by exclusive time
Calls | P | F | Exclusive Time | Inclusive Time | Subroutine
--- | --- | --- | --- | --- | ---
1 | 1 | 1 | 3.35ms | 3.74ms | XML::LibXML::Error::::BEGIN@225XML::LibXML::Error::BEGIN@225
1 | 1 | 1 | 17µs | 20µs | XML::LibXML::Error::::BEGIN@11XML::LibXML::Error::BEGIN@11
1 | 1 | 1 | 15µs | 58µs | XML::LibXML::Error::::BEGIN@15XML::LibXML::Error::BEGIN@15
1 | 1 | 1 | 11µs | 62µs | XML::LibXML::Error::::BEGIN@39XML::LibXML::Error::BEGIN@39
1 | 1 | 1 | 9µs | 51µs | XML::LibXML::Error::::BEGIN@40XML::LibXML::Error::BEGIN@40
1 | 1 | 1 | 9µs | 57µs | XML::LibXML::Error::::BEGIN@13XML::LibXML::Error::BEGIN@13
1 | 1 | 1 | 9µs | 44µs | XML::LibXML::Error::::BEGIN@27XML::LibXML::Error::BEGIN@27
1 | 1 | 1 | 9µs | 57µs | XML::LibXML::Error::::BEGIN@38XML::LibXML::Error::BEGIN@38
1 | 1 | 1 | 8µs | 43µs | XML::LibXML::Error::::BEGIN@41XML::LibXML::Error::BEGIN@41
1 | 1 | 1 | 8µs | 37µs | XML::LibXML::Error::::BEGIN@28XML::LibXML::Error::BEGIN@28
1 | 1 | 1 | 8µs | 37µs | XML::LibXML::Error::::BEGIN@34XML::LibXML::Error::BEGIN@34
1 | 1 | 1 | 8µs | 36µs | XML::LibXML::Error::::BEGIN@32XML::LibXML::Error::BEGIN@32
1 | 1 | 1 | 8µs | 33µs | XML::LibXML::Error::::BEGIN@52XML::LibXML::Error::BEGIN@52
1 | 1 | 1 | 8µs | 36µs | XML::LibXML::Error::::BEGIN@29XML::LibXML::Error::BEGIN@29
1 | 1 | 1 | 7µs | 36µs | XML::LibXML::Error::::BEGIN@37XML::LibXML::Error::BEGIN@37
1 | 1 | 1 | 7µs | 35µs | XML::LibXML::Error::::BEGIN@36XML::LibXML::Error::BEGIN@36
1 | 1 | 1 | 7µs | 37µs | XML::LibXML::Error::::BEGIN@35XML::LibXML::Error::BEGIN@35
1 | 1 | 1 | 7µs | 34µs | XML::LibXML::Error::::BEGIN@42XML::LibXML::Error::BEGIN@42
1 | 1 | 1 | 7µs | 35µs | XML::LibXML::Error::::BEGIN@30XML::LibXML::Error::BEGIN@30
1 | 1 | 1 | 7µs | 70µs | XML::LibXML::Error::::BEGIN@12XML::LibXML::Error::BEGIN@12
1 | 1 | 1 | 7µs | 37µs | XML::LibXML::Error::::BEGIN@33XML::LibXML::Error::BEGIN@33
1 | 1 | 1 | 7µs | 35µs | XML::LibXML::Error::::BEGIN@45XML::LibXML::Error::BEGIN@45
1 | 1 | 1 | 6µs | 30µs | XML::LibXML::Error::::BEGIN@44XML::LibXML::Error::BEGIN@44
1 | 1 | 1 | 6µs | 39µs | XML::LibXML::Error::::BEGIN@43XML::LibXML::Error::BEGIN@43
1 | 1 | 1 | 6µs | 29µs | XML::LibXML::Error::::BEGIN@50XML::LibXML::Error::BEGIN@50
1 | 1 | 1 | 6µs | 29µs | XML::LibXML::Error::::BEGIN@53XML::LibXML::Error::BEGIN@53
1 | 1 | 1 | 6µs | 29µs | XML::LibXML::Error::::BEGIN@49XML::LibXML::Error::BEGIN@49
1 | 1 | 1 | 6µs | 30µs | XML::LibXML::Error::::BEGIN@46XML::LibXML::Error::BEGIN@46
1 | 1 | 1 | 6µs | 29µs | XML::LibXML::Error::::BEGIN@47XML::LibXML::Error::BEGIN@47
1 | 1 | 1 | 6µs | 29µs | XML::LibXML::Error::::BEGIN@55XML::LibXML::Error::BEGIN@55
1 | 1 | 1 | 6µs | 28µs | XML::LibXML::Error::::BEGIN@48XML::LibXML::Error::BEGIN@48
1 | 1 | 1 | 6µs | 29µs | XML::LibXML::Error::::BEGIN@54XML::LibXML::Error::BEGIN@54
1 | 1 | 1 | 5µs | 29µs | XML::LibXML::Error::::BEGIN@51XML::LibXML::Error::BEGIN@51
0 | 0 | 0 | 0s | 0s | XML::LibXML::Error::::AUTOLOADXML::LibXML::Error::AUTOLOAD
0 | 0 | 0 | 0s | 0s | XML::LibXML::Error::::DESTROYXML::LibXML::Error::DESTROY
0 | 0 | 0 | 0s | 0s | XML::LibXML::Error::::__ANON__[:18]XML::LibXML::Error::__ANON__[:18]
0 | 0 | 0 | 0s | 0s | XML::LibXML::Error::::__ANON__[:21]XML::LibXML::Error::__ANON__[:21]
0 | 0 | 0 | 0s | 0s | XML::LibXML::Error::::_callback_errorXML::LibXML::Error::_callback_error
0 | 0 | 0 | 0s | 0s | XML::LibXML::Error::::_instant_error_callbackXML::LibXML::Error::_instant_error_callback
0 | 0 | 0 | 0s | 0s | XML::LibXML::Error::::_report_errorXML::LibXML::Error::_report_error
0 | 0 | 0 | 0s | 0s | XML::LibXML::Error::::_report_warningXML::LibXML::Error::_report_warning
0 | 0 | 0 | 0s | 0s | XML::LibXML::Error::::as_stringXML::LibXML::Error::as_string
0 | 0 | 0 | 0s | 0s | XML::LibXML::Error::::domainXML::LibXML::Error::domain
0 | 0 | 0 | 0s | 0s | XML::LibXML::Error::::dumpXML::LibXML::Error::dump
0 | 0 | 0 | 0s | 0s | XML::LibXML::Error::::int1XML::LibXML::Error::int1
0 | 0 | 0 | 0s | 0s | XML::LibXML::Error::::int2XML::LibXML::Error::int2
0 | 0 | 0 | 0s | 0s | XML::LibXML::Error::::newXML::LibXML::Error::new

Call graph for these subroutines as a Graphviz dot language file.

Line | State ments | Time on line | Calls | Time in subs | Code
--- | --- | --- | --- | --- | ---
1 |  |  |  |  | # $Id: Error.pm,v 1.1.2.1 2004/04/20 20:09:48 pajas Exp $
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 |  |  |  |  | package XML::LibXML::Error;
10 |  |  |  |  |
11 | 3 | 28µs | 2 | 23µs | # spent 20µs (17+3) within XML::LibXML::Error::BEGIN@11 which was called # once (17µs+3µs) by XML::LibXML::BEGIN@23 at line 11 use strict; # spent 20µs making 1 call to XML::LibXML::Error::BEGIN@11 # spent 3µs making 1 call to strict::import
12 | 3 | 27µs | 2 | 132µs | # spent 70µs (7+63) within XML::LibXML::Error::BEGIN@12 which was called # once (7µs+63µs) by XML::LibXML::BEGIN@23 at line 12 use vars qw($AUTOLOAD @error_domains $VERSION $WARNINGS); # spent 70µs making 1 call to XML::LibXML::Error::BEGIN@12 # spent 62µs making 1 call to vars::import
13 | 3 | 96µs | 2 | 105µs | # spent 57µs (9+48) within XML::LibXML::Error::BEGIN@13 which was called # once (9µs+48µs) by XML::LibXML::BEGIN@23 at line 13 use Carp; # spent 57µs making 1 call to XML::LibXML::Error::BEGIN@13 # spent 48µs making 1 call to Exporter::import
14 |  |  |  |  | use overload
15 |  |  |  |  | # spent 58µs (15+43) within XML::LibXML::Error::BEGIN@15 which was called # once (15µs+43µs) by XML::LibXML::BEGIN@23 at line 22 '""' => \&as_string,
16 |  |  |  |  | 'eq' => sub {
17 |  |  |  |  | ("$_[0]" eq "$_[1]")
18 |  |  |  |  | },
19 |  |  |  |  | 'cmp' => sub {
20 |  |  |  |  | ("$_[0]" cmp "$_[1]")
21 |  |  |  |  | },
22 | 3 | 47µs | 2 | 101µs | fallback => 1; # spent 58µs making 1 call to XML::LibXML::Error::BEGIN@15 # spent 43µs making 1 call to overload::import
23 |  |  |  |  |
24 | 1 | 400ns |  |  | $WARNINGS = 0; # 0: supress, 1: report via warn, 2: report via die
25 | 1 | 400ns |  |  | $VERSION = "1.70"; # VERSION TEMPLATE: DO NOT CHANGE
26 |  |  |  |  |
27 | 3 | 28µs | 2 | 78µs | # spent 44µs (9+35) within XML::LibXML::Error::BEGIN@27 which was called # once (9µs+35µs) by XML::LibXML::BEGIN@23 at line 27 use constant XML_ERR_NONE => 0; # spent 44µs making 1 call to XML::LibXML::Error::BEGIN@27 # spent 35µs making 1 call to constant::import
28 | 3 | 26µs | 2 | 66µs | # spent 37µs (8+29) within XML::LibXML::Error::BEGIN@28 which was called # once (8µs+29µs) by XML::LibXML::BEGIN@23 at line 28 use constant XML_ERR_WARNING => 1; # A simple warning # spent 37µs making 1 call to XML::LibXML::Error::BEGIN@28 # spent 29µs making 1 call to constant::import
29 | 3 | 26µs | 2 | 64µs | # spent 36µs (8+28) within XML::LibXML::Error::BEGIN@29 which was called # once (8µs+28µs) by XML::LibXML::BEGIN@23 at line 29 use constant XML_ERR_ERROR => 2; # A recoverable error # spent 36µs making 1 call to XML::LibXML::Error::BEGIN@29 # spent 28µs making 1 call to constant::import
30 | 3 | 26µs | 2 | 62µs | # spent 35µs (7+28) within XML::LibXML::Error::BEGIN@30 which was called # once (7µs+28µs) by XML::LibXML::BEGIN@23 at line 30 use constant XML_ERR_FATAL => 3; # A fatal error # spent 35µs making 1 call to XML::LibXML::Error::BEGIN@30 # spent 28µs making 1 call to constant::import
31 |  |  |  |  |
32 | 3 | 33µs | 2 | 65µs | # spent 36µs (8+29) within XML::LibXML::Error::BEGIN@32 which was called # once (8µs+29µs) by XML::LibXML::BEGIN@23 at line 32 use constant XML_ERR_FROM_NONE => 0; # spent 36µs making 1 call to XML::LibXML::Error::BEGIN@32 # spent 29µs making 1 call to constant::import
33 | 3 | 27µs | 2 | 67µs | # spent 37µs (7+30) within XML::LibXML::Error::BEGIN@33 which was called # once (7µs+30µs) by XML::LibXML::BEGIN@23 at line 33 use constant XML_ERR_FROM_PARSER => 1; # The XML parser # spent 37µs making 1 call to XML::LibXML::Error::BEGIN@33 # spent 30µs making 1 call to constant::import
34 | 3 | 35µs | 2 | 66µs | # spent 37µs (8+29) within XML::LibXML::Error::BEGIN@34 which was called # once (8µs+29µs) by XML::LibXML::BEGIN@23 at line 34 use constant XML_ERR_FROM_TREE => 2; # The tree module # spent 37µs making 1 call to XML::LibXML::Error::BEGIN@34 # spent 29µs making 1 call to constant::import
35 | 3 | 26µs | 2 | 67µs | # spent 37µs (7+30) within XML::LibXML::Error::BEGIN@35 which was called # once (7µs+30µs) by XML::LibXML::BEGIN@23 at line 35 use constant XML_ERR_FROM_NAMESPACE => 3; # The XML Namespace module # spent 37µs making 1 call to XML::LibXML::Error::BEGIN@35 # spent 30µs making 1 call to constant::import
36 | 3 | 27µs | 2 | 64µs | # spent 35µs (7+28) within XML::LibXML::Error::BEGIN@36 which was called # once (7µs+28µs) by XML::LibXML::BEGIN@23 at line 36 use constant XML_ERR_FROM_DTD => 4; # The XML DTD validation # spent 35µs making 1 call to XML::LibXML::Error::BEGIN@36 # spent 28µs making 1 call to constant::import
37 | 3 | 26µs | 2 | 65µs | # spent 36µs (7+29) within XML::LibXML::Error::BEGIN@37 which was called # once (7µs+29µs) by XML::LibXML::BEGIN@23 at line 37 use constant XML_ERR_FROM_HTML => 5; # The HTML parser # spent 36µs making 1 call to XML::LibXML::Error::BEGIN@37 # spent 29µs making 1 call to constant::import
38 | 3 | 40µs | 2 | 105µs | # spent 57µs (9+48) within XML::LibXML::Error::BEGIN@38 which was called # once (9µs+48µs) by XML::LibXML::BEGIN@23 at line 38 use constant XML_ERR_FROM_MEMORY => 6; # The memory allocator # spent 57µs making 1 call to XML::LibXML::Error::BEGIN@38 # spent 48µs making 1 call to constant::import
39 | 3 | 41µs | 2 | 113µs | # spent 62µs (11+51) within XML::LibXML::Error::BEGIN@39 which was called # once (11µs+51µs) by XML::LibXML::BEGIN@23 at line 39 use constant XML_ERR_FROM_OUTPUT => 7; # The serialization code # spent 62µs making 1 call to XML::LibXML::Error::BEGIN@39 # spent 51µs making 1 call to constant::import
40 | 3 | 31µs | 2 | 92µs | # spent 51µs (9+42) within XML::LibXML::Error::BEGIN@40 which was called # once (9µs+42µs) by XML::LibXML::BEGIN@23 at line 40 use constant XML_ERR_FROM_IO => 8; # The Input/Output stack # spent 51µs making 1 call to XML::LibXML::Error::BEGIN@40 # spent 42µs making 1 call to constant::import
41 | 3 | 28µs | 2 | 78µs | # spent 43µs (8+35) within XML::LibXML::Error::BEGIN@41 which was called # once (8µs+35µs) by XML::LibXML::BEGIN@23 at line 41 use constant XML_ERR_FROM_FTP => 9; # The FTP module # spent 43µs making 1 call to XML::LibXML::Error::BEGIN@41 # spent 35µs making 1 call to constant::import
42 | 3 | 22µs | 2 | 62µs | # spent 34µs (7+27) within XML::LibXML::Error::BEGIN@42 which was called # once (7µs+27µs) by XML::LibXML::BEGIN@23 at line 42 use constant XML_ERR_FROM_HTTP => 10; # The FTP module # spent 34µs making 1 call to XML::LibXML::Error::BEGIN@42 # spent 27µs making 1 call to constant::import
43 | 3 | 24µs | 2 | 71µs | # spent 39µs (6+32) within XML::LibXML::Error::BEGIN@43 which was called # once (6µs+32µs) by XML::LibXML::BEGIN@23 at line 43 use constant XML_ERR_FROM_XINCLUDE => 11; # The XInclude processing # spent 39µs making 1 call to XML::LibXML::Error::BEGIN@43 # spent 33µs making 1 call to constant::import
44 | 3 | 22µs | 2 | 54µs | # spent 30µs (6+24) within XML::LibXML::Error::BEGIN@44 which was called # once (6µs+24µs) by XML::LibXML::BEGIN@23 at line 44 use constant XML_ERR_FROM_XPATH => 12; # The XPath module # spent 30µs making 1 call to XML::LibXML::Error::BEGIN@44 # spent 24µs making 1 call to constant::import
45 | 3 | 22µs | 2 | 64µs | # spent 35µs (7+29) within XML::LibXML::Error::BEGIN@45 which was called # once (7µs+29µs) by XML::LibXML::BEGIN@23 at line 45 use constant XML_ERR_FROM_XPOINTER => 13; # The XPointer module # spent 35µs making 1 call to XML::LibXML::Error::BEGIN@45 # spent 29µs making 1 call to constant::import
46 | 3 | 21µs | 2 | 53µs | # spent 30µs (6+24) within XML::LibXML::Error::BEGIN@46 which was called # once (6µs+24µs) by XML::LibXML::BEGIN@23 at line 46 use constant XML_ERR_FROM_REGEXP => 14; # The regular expressions module # spent 30µs making 1 call to XML::LibXML::Error::BEGIN@46 # spent 24µs making 1 call to constant::import
47 | 3 | 21µs | 2 | 52µs | # spent 29µs (6+23) within XML::LibXML::Error::BEGIN@47 which was called # once (6µs+23µs) by XML::LibXML::BEGIN@23 at line 47 use constant XML_ERR_FROM_DATATYPE => 15; # The W3C XML Schemas Datatype module # spent 29µs making 1 call to XML::LibXML::Error::BEGIN@47 # spent 23µs making 1 call to constant::import
48 | 3 | 21µs | 2 | 51µs | # spent 28µs (6+23) within XML::LibXML::Error::BEGIN@48 which was called # once (6µs+23µs) by XML::LibXML::BEGIN@23 at line 48 use constant XML_ERR_FROM_SCHEMASP => 16; # The W3C XML Schemas parser module # spent 28µs making 1 call to XML::LibXML::Error::BEGIN@48 # spent 23µs making 1 call to constant::import
49 | 3 | 21µs | 2 | 52µs | # spent 29µs (6+23) within XML::LibXML::Error::BEGIN@49 which was called # once (6µs+23µs) by XML::LibXML::BEGIN@23 at line 49 use constant XML_ERR_FROM_SCHEMASV => 17; # The W3C XML Schemas validation module # spent 29µs making 1 call to XML::LibXML::Error::BEGIN@49 # spent 23µs making 1 call to constant::import
50 | 3 | 21µs | 2 | 51µs | # spent 29µs (6+23) within XML::LibXML::Error::BEGIN@50 which was called # once (6µs+23µs) by XML::LibXML::BEGIN@23 at line 50 use constant XML_ERR_FROM_RELAXNGP => 18; # The Relax-NG parser module # spent 29µs making 1 call to XML::LibXML::Error::BEGIN@50 # spent 23µs making 1 call to constant::import
51 | 3 | 35µs | 2 | 52µs | # spent 29µs (5+23) within XML::LibXML::Error::BEGIN@51 which was called # once (5µs+23µs) by XML::LibXML::BEGIN@23 at line 51 use constant XML_ERR_FROM_RELAXNGV => 19; # The Relax-NG validator module # spent 29µs making 1 call to XML::LibXML::Error::BEGIN@51 # spent 23µs making 1 call to constant::import
52 | 3 | 23µs | 2 | 58µs | # spent 33µs (8+25) within XML::LibXML::Error::BEGIN@52 which was called # once (8µs+25µs) by XML::LibXML::BEGIN@23 at line 52 use constant XML_ERR_FROM_CATALOG => 20; # The Catalog module # spent 33µs making 1 call to XML::LibXML::Error::BEGIN@52 # spent 25µs making 1 call to constant::import
53 | 3 | 21µs | 2 | 52µs | # spent 29µs (6+23) within XML::LibXML::Error::BEGIN@53 which was called # once (6µs+23µs) by XML::LibXML::BEGIN@23 at line 53 use constant XML_ERR_FROM_C14N => 21; # The Canonicalization module # spent 29µs making 1 call to XML::LibXML::Error::BEGIN@53 # spent 23µs making 1 call to constant::import
54 | 3 | 21µs | 2 | 52µs | # spent 29µs (6+23) within XML::LibXML::Error::BEGIN@54 which was called # once (6µs+23µs) by XML::LibXML::BEGIN@23 at line 54 use constant XML_ERR_FROM_XSLT => 22; # The XSLT engine from libxslt # spent 29µs making 1 call to XML::LibXML::Error::BEGIN@54 # spent 23µs making 1 call to constant::import
55 | 3 | 673µs | 2 | 52µs | # spent 29µs (6+23) within XML::LibXML::Error::BEGIN@55 which was called # once (6µs+23µs) by XML::LibXML::BEGIN@23 at line 55 use constant XML_ERR_FROM_VALID => 23; # The validaton module # spent 29µs making 1 call to XML::LibXML::Error::BEGIN@55 # spent 23µs making 1 call to constant::import
56 |  |  |  |  |
57 | 1 | 4µs |  |  | @error_domains = ("", "parser", "tree", "namespace", "validity",
58 |  |  |  |  | "HTML parser", "memory", "output", "I/O", "ftp",
59 |  |  |  |  | "http", "XInclude", "XPath", "xpointer", "regexp",
60 |  |  |  |  | "Schemas datatype", "Schemas parser", "Schemas validity",
61 |  |  |  |  | "Relax-NG parser", "Relax-NG validity",
62 |  |  |  |  | "Catalog", "C14N", "XSLT", "validity");
63 |  |  |  |  |
64 |  |  |  |  | {
65 |  |  |  |  |
66 | 1 | 400ns |  |  | sub new {
67 |  |  |  |  | my ($class,$xE) = @_;
68 |  |  |  |  | my $terr;
69 |  |  |  |  | if (ref($xE)) {
70 |  |  |  |  | my ($context,$column) = $xE->context_and_column();
71 |  |  |  |  | $terr =bless {
72 |  |  |  |  | domain => $xE->domain(),
73 |  |  |  |  | level => $xE->level(),
74 |  |  |  |  | code => $xE->code(),
75 |  |  |  |  | message => $xE->message(),
76 |  |  |  |  | file => $xE->file(),
77 |  |  |  |  | line => $xE->line(),
78 |  |  |  |  | str1 => $xE->str1(),
79 |  |  |  |  | str2 => $xE->str2(),
80 |  |  |  |  | str3 => $xE->str3(),
81 |  |  |  |  | num1 => $xE->num1(),
82 |  |  |  |  | num2 => $xE->num2(),
83 |  |  |  |  | (defined($context) ?
84 |  |  |  |  | (
85 |  |  |  |  | context => $context,
86 |  |  |  |  | column => $column,
87 |  |  |  |  | ) : ()),
88 |  |  |  |  | }, $class;
89 |  |  |  |  | } else {
90 |  |  |  |  | # !!!! problem : got a flat error
91 |  |  |  |  | # warn("PROBLEM: GOT A FLAT ERROR $xE\n");
92 |  |  |  |  | $terr =bless {
93 |  |  |  |  | domain => 0,
94 |  |  |  |  | level => 2,
95 |  |  |  |  | code => -1,
96 |  |  |  |  | message => $xE,
97 |  |  |  |  | file => undef,
98 |  |  |  |  | line => undef,
99 |  |  |  |  | str1 => undef,
100 |  |  |  |  | str2 => undef,
101 |  |  |  |  | str3 => undef,
102 |  |  |  |  | num1 => undef,
103 |  |  |  |  | num2 => undef,
104 |  |  |  |  | }, $class;
105 |  |  |  |  | }
106 |  |  |  |  | return $terr;
107 |  |  |  |  | }
108 |  |  |  |  |
109 |  |  |  |  | sub _callback_error {
110 |  |  |  |  | #print "CALLBACK\n";
111 |  |  |  |  | my ($xE,$prev) = @_;
112 |  |  |  |  | my $terr;
113 |  |  |  |  | $terr=XML::LibXML::Error->new($xE);
114 |  |  |  |  | if ($terr->{level} == XML_ERR_WARNING and $WARNINGS!=2) {
115 |  |  |  |  | warn $terr if $WARNINGS;
116 |  |  |  |  | return $prev;
117 |  |  |  |  | }
118 |  |  |  |  | #unless ( defined $terr->{file} and length $terr->{file} ) {
119 |  |  |  |  | # this would make it easier to recognize parsed strings
120 |  |  |  |  | # but it breaks old implementations
121 |  |  |  |  | # [CG] $terr->{file} = 'string()';
122 |  |  |  |  | #}
123 |  |  |  |  | #warn "Saving the error ",$terr->dump;
124 |  |  |  |  | $terr->{_prev} = ref($prev) ? $prev :
125 |  |  |  |  | defined($prev) && length($prev) ? XML::LibXML::Error->new($prev) : undef;
126 |  |  |  |  | return $terr;
127 |  |  |  |  | }
128 |  |  |  |  | sub _instant_error_callback {
129 |  |  |  |  | my $xE = shift;
130 |  |  |  |  | my $terr= XML::LibXML::Error->new($xE);
131 |  |  |  |  | print "Reporting an instanteous error ",$terr->dump;
132 |  |  |  |  | die $terr;
133 |  |  |  |  | }
134 |  |  |  |  | sub _report_warning {
135 |  |  |  |  | my ($saved_error) = @_;
136 |  |  |  |  | #print "CALLBACK WARN\n";
137 |  |  |  |  | if ( defined $saved_error ) {
138 |  |  |  |  | #print "reporting a warning ",$saved_error->dump;
139 |  |  |  |  | warn $saved_error;
140 |  |  |  |  | }
141 |  |  |  |  | }
142 |  |  |  |  | sub _report_error {
143 |  |  |  |  | my ($saved_error) = @_;
144 |  |  |  |  | #print "CALLBACK ERROR: $saved_error\n";
145 |  |  |  |  | if ( defined $saved_error ) {
146 |  |  |  |  | die $saved_error;
147 |  |  |  |  | }
148 |  |  |  |  | }
149 |  |  |  |  | }
150 |  |  |  |  |
151 |  |  |  |  |
152 |  |  |  |  | sub AUTOLOAD {
153 |  |  |  |  | my $self=shift;
154 |  |  |  |  | return undef unless ref($self);
155 |  |  |  |  | my $sub = $AUTOLOAD;
156 |  |  |  |  | $sub =~ s/.*:://;
157 |  |  |  |  | if ($sub=~/^(?:code|_prev|level|file|line|domain|nodename|message|column|context|str[123]|num[12])$/) {
158 |  |  |  |  | return $self->{$sub};
159 |  |  |  |  | } else {
160 |  |  |  |  | croak("Unknown error field $sub");
161 |  |  |  |  | }
162 |  |  |  |  | }
163 |  |  |  |  |
164 |  |  |  |  | # backward compatibility
165 |  |  |  |  | sub int1 { $_[0]->num1 }
166 |  |  |  |  | sub int2 { $_[0]->num2 }
167 |  |  |  |  |
168 |  |  |  |  | sub DESTROY {}
169 |  |  |  |  |
170 |  |  |  |  | sub domain {
171 |  |  |  |  | my ($self)=@_;
172 |  |  |  |  | return undef unless ref($self);
173 |  |  |  |  | return $error_domains[$self->{domain}];
174 |  |  |  |  | }
175 |  |  |  |  |
176 |  |  |  |  | sub as_string {
177 |  |  |  |  | my ($self)=@_;
178 |  |  |  |  | my $msg = "";
179 |  |  |  |  | my $level;
180 |  |  |  |  |
181 |  |  |  |  | if (defined($self->{_prev})) {
182 |  |  |  |  | $msg = $self->{_prev}->as_string;
183 |  |  |  |  | }
184 |  |  |  |  |
185 |  |  |  |  | if ($self->{level} == XML_ERR_NONE) {
186 |  |  |  |  | $level = "";
187 |  |  |  |  | } elsif ($self->{level} == XML_ERR_WARNING) {
188 |  |  |  |  | $level = "warning";
189 |  |  |  |  | } elsif ($self->{level} == XML_ERR_ERROR ||
190 |  |  |  |  | $self->{level} == XML_ERR_FATAL) {
191 |  |  |  |  | $level = "error";
192 |  |  |  |  | }
193 |  |  |  |  | my $where="";
194 |  |  |  |  | if (defined($self->{file})) {
195 |  |  |  |  | $where="$self->{file}:$self->{line}";
196 |  |  |  |  | } elsif (($self->{domain} == XML_ERR_FROM_PARSER)
197 |  |  |  |  | and
198 |  |  |  |  | $self->{line}) {
199 |  |  |  |  | $where="Entity: line $self->{line}";
200 |  |  |  |  | }
201 |  |  |  |  | if ($self->{nodename}) {
202 |  |  |  |  | $where.=": element ".$self->{nodename};
203 |  |  |  |  | }
204 |  |  |  |  | $msg.=$where.": " if $where ne "";
205 |  |  |  |  | $msg.=$error_domains[$self->{domain}]." ".$level." :";
206 |  |  |  |  | my $str=$self->{message}||"";
207 |  |  |  |  | chomp($str);
208 |  |  |  |  | $msg.=" ".$str."\n";
209 |  |  |  |  | if (($self->{domain} == XML_ERR_FROM_XPATH) and
210 |  |  |  |  | defined($self->{str1})) {
211 |  |  |  |  | $msg.=$self->{str1}."\n";
212 |  |  |  |  | $msg.=(" " x $self->{num1})."^\n";
213 |  |  |  |  | } elsif (defined $self->{context}) {
214 |  |  |  |  | my $context = $self->{context};
215 |  |  |  |  | $msg.=$context."\n";
216 |  |  |  |  | $context = substr($context,0,$self->{column});
217 |  |  |  |  | $context=~s/[^\t]/ /g;
218 |  |  |  |  | $msg.=$context."^\n";
219 |  |  |  |  | }
220 |  |  |  |  | return $msg;
221 |  |  |  |  | }
222 |  |  |  |  |
223 |  |  |  |  | sub dump {
224 |  |  |  |  | my ($self)=@_;
225 | 3 | 140µs | 2 | 3.76ms | # spent 3.74ms (3.35+391µs) within XML::LibXML::Error::BEGIN@225 which was called # once (3.35ms+391µs) by XML::LibXML::BEGIN@23 at line 225 use Data::Dumper; # spent 3.74ms making 1 call to XML::LibXML::Error::BEGIN@225 # spent 27µs making 1 call to Exporter::import
226 |  |  |  |  | return Data::Dumper->new([$self],['error'])->Dump;
227 |  |  |  |  | }
228 |  |  |  |  |
229 | 1 | 9µs |  |  | 1;