Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Z
Zope
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
Zope
Commits
d2449399
Commit
d2449399
authored
Aug 18, 1998
by
jack
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Putting pyexpat under cvs
parent
8c08723f
Changes
8
Show whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
1232 additions
and
0 deletions
+1232
-0
lib/python/Shared/DC/xml/pyexpat/Makefile.pre.in
lib/python/Shared/DC/xml/pyexpat/Makefile.pre.in
+216
-0
lib/python/Shared/DC/xml/pyexpat/README
lib/python/Shared/DC/xml/pyexpat/README
+75
-0
lib/python/Shared/DC/xml/pyexpat/Setup.in
lib/python/Shared/DC/xml/pyexpat/Setup.in
+2
-0
lib/python/Shared/DC/xml/pyexpat/_checkversion.py
lib/python/Shared/DC/xml/pyexpat/_checkversion.py
+16
-0
lib/python/Shared/DC/xml/pyexpat/pyexpat.c
lib/python/Shared/DC/xml/pyexpat/pyexpat.c
+439
-0
lib/python/Shared/DC/xml/pyexpat/pyexpat.prj.exp
lib/python/Shared/DC/xml/pyexpat/pyexpat.prj.exp
+1
-0
lib/python/Shared/DC/xml/pyexpat/pyexpat.prj.hqx
lib/python/Shared/DC/xml/pyexpat/pyexpat.prj.hqx
+411
-0
lib/python/Shared/DC/xml/pyexpat/pyexpattest.py
lib/python/Shared/DC/xml/pyexpat/pyexpattest.py
+72
-0
No files found.
lib/python/Shared/DC/xml/pyexpat/Makefile.pre.in
0 → 100644
View file @
d2449399
# Universal Makefile to build Python extensions.
#
# Instructions:
#
# 0) Build and install the basic Python 1.4 distribution. You must
# also install the headers ("make inclinstall") and the binary library
# files ("make libainstall").
#
# 1) Edit Makefile.pre.in (not any other file!!!) to change the
# definition of installdir (and possibly exec_installdir). These
# should match the prefix and exec_prefix used when installing Python.
# Alternatively, you can specify a value for installdir on the
# "make -f Makefile.pre.in Makefile" command line (see below). This
# is probably easier since it avoids editing Makefile.pre.in at all...
#
# 2) Copy Setup.in to Setup and edit Setup to change the selection of
# modules you want to use. Read the comments in the core Python's
# Modules/Setup.in for more detailed instructions.
#
# 3) Run "make Makefile -f Makefile.pre.in". This creates Makefile
# (producing Makefile.pre and sedscript as intermediate files) and
# config.c. Values for installdir, srcdir, VPATH, LINKPATH, OPT,
# BASELIB and BASESETUP on the make command line will be incorporated
# in the final Makefile.
#
# 4) Run "make". This creates a Python executable. The set of
# built-in modules and features is a superset of that of the basic
# Python -- additions are taken from ./Setup.
#
# If you don't actually want to install the Python headers and
# binary library files, you can edit the "Fixed definitions" section
# below to point directly into the source and/or build tree.
#
# Note: Each time you edit Makefile.pre.in or Setup, you must run
# "make Makefile" before running "make".
#
# Hint: if you want to use VPATH, you can start in an empty
# subdirectory and say (e.g.):
# make -f ../Makefile.pre.in VERSION=1.4 srcdir=.. VPATH=.. Makefile
# === Variables that you just *have* to customize manually ===
# (You can also specify their values on the command line for
# "make -f Makefile.pre.in VERSION=1.4 Makefile".)
# The prefix used by "make inclinstall libainstall" of core python
installdir
=
/ufs/jack/src/python/build.irix6/tmp
# The exec_prefix used by the same
exec_installdir
=
$(installdir)
# Source directory and VPATH in case you want to use VPATH.
# (You will have to edit these two lines yourself -- there is no
# automatic support as the Makefile is not generated by
# config.status.)
srcdir
=
.
VPATH
=
.
# === Variables that you may want to customize ===
# Add possible -L options here
LINKPATH
=
# You may want to change this to -O
OPT
=
-g
# Add more -I and -D options here
CFLAGS
=
$(OPT)
-I
$(INCLUDEPY)
-I
$(LIBPL)
$(DEFS)
# These two variables can be set in Setup to merge extensions.
# See example[23].
BASELIB
=
BASESETUP
=
# === Variables set by makesetup ===
MODOBJS
=
_MODOBJS_
MODLIBS
=
_MODLIBS_
# === Definitions added by makesetup ===
# === Variables from configure (through sedscript) ===
VERSION
=
@VERSION@
CC
=
@CC@
DEFS
=
@DEFS@
LIBS
=
@LIBS@
LIBM
=
@LIBM@
LIBC
=
@LIBC@
RANLIB
=
@RANLIB@
MACHDEP
=
@MACHDEP@
SO
=
@SO@
LDSHARED
=
@LDSHARED@
CCSHARED
=
@CCSHARED@
LINKFORSHARED
=
@LINKFORSHARED@
# Install prefix for architecture-independent files
prefix
=
/usr/local
# Install prefix for architecture-dependent files
exec_prefix
=
$(prefix)
# === Fixed definitions ===
# Expanded directories
BINDIR
=
$(exec_installdir)
/bin
LIBDIR
=
$(exec_prefix)
/lib
MANDIR
=
$(installdir)
/man
INCLUDEDIR
=
$(installdir)
/include
SCRIPTDIR
=
$(prefix)
/lib
# Detailed destination directories
BINLIBDEST
=
$(LIBDIR)
/python
$(VERSION)
LIBDEST
=
$(SCRIPTDIR)
/python
$(VERSION)
INCLUDEPY
=
$(INCLUDEDIR)
/python
$(VERSION)
LIBP
=
$(exec_installdir)
/lib/python
$(VERSION)
LIBPL
=
$(LIBP)
/config
PYTHONLIBS
=
$(LIBPL)
/libModules.a
\
$(LIBPL)
/libPython.a
\
$(LIBPL)
/libObjects.a
\
$(LIBPL)
/libParser.a
MAKESETUP
=
$(LIBPL)
/makesetup
MAKEFILE
=
$(LIBPL)
/Makefile
CONFIGC
=
$(LIBPL)
/config.c
CONFIGCIN
=
$(LIBPL)
/config.c.in
SETUP
=
$(LIBPL)
/Setup
SYSLIBS
=
$(LIBM)
$(LIBC)
ADDOBJS
=
$(LIBPL)
/main.o getpath.o config.o
# === Fixed rules ===
all
:
python
sharedmods
:
$(SHAREDMODS)
python
:
$(ADDOBJS) lib.a $(PYTHONLIBS) Makefile $(BASELIB)
$(CC)
$(ADDOBJS)
lib.a
$(PYTHONLIBS)
\
$(LINKPATH)
$(BASELIB)
$(MODLIBS)
$(LIBS)
$(SYSLIBS)
-o
python
lib.a
:
$(MODOBJS)
-
rm
-f
lib.a
ar cr lib.a
$(MODOBJS)
-
$(RANLIB)
lib.a
||
\
echo
"don't worry if ranlib fails -- probably SYSV or equiv"
# This runs makesetup *twice* to use the BASESETUP definition from Setup
config.c Makefile
:
Makefile.pre Setup $(BASESETUP) $(MAKESETUP)
$(MAKESETUP)
\
-m
Makefile.pre
-c
$(CONFIGCIN)
Setup
-n
$(BASESETUP)
$(SETUP)
$(MAKE)
-f
Makefile
do
-it-again
do-it-again
:
$(MAKESETUP)
\
-m
Makefile.pre
-c
$(CONFIGCIN)
Setup
-n
$(BASESETUP)
$(SETUP)
config.o
:
config.c
$(CC)
$(CFLAGS)
-c
config.c
getpath.o
:
$(LIBPL)/getpath.c Makefile
$(CC)
$(CFLAGS)
-DPYTHONPATH
=
\"
$(PYTHONPATH)
\"
-c
$(LIBPL)
/getpath.c
# Setup is copied from Setup.in *only* if it doesn't yet exist
Setup
:
cp
$(srcdir)
/Setup.in Setup
Makefile.pre
:
Makefile.pre.in sedscript
sed
-f
sedscript
$(srcdir)
/Makefile.pre.in
>
Makefile.pre
# Shortcuts to make the sed arguments on one line
P
=
prefix
E
=
exec_prefix
H
=
Generated automatically from Makefile.pre.in by sedscript.
sedscript
:
$(MAKEFILE)
sed
-n
\
-e
'1s/.*/1i\\/p'
\
-e
'2s%.*%# $H%p'
\
-e
'/^VERSION=/s/^VERSION=[ ]*\(.*\)/s%@VERSION[@]%\1%/p'
\
-e
'/^CC=/s/^CC=[ ]*\(.*\)/s%@CC[@]%\1%/p'
\
-e
'/^DEFS=/s/^DEFS=[ ]*\(.*\)/s%@DEFS[@]%\1%/p'
\
-e
'/^LIBS=/s/^LIBS=[ ]*\(.*\)/s%@LIBS[@]%\1%/p'
\
-e
'/^LIBM=/s/^LIBM=[ ]*\(.*\)/s%@LIBM[@]%\1%/p'
\
-e
'/^LIBC=/s/^LIBC=[ ]*\(.*\)/s%@LIBC[@]%\1%/p'
\
-e
'/^RANLIB=/s/^RANLIB=[ ]*\(.*\)/s%@RANLIB[@]%\1%/p'
\
-e
'/^MACHDEP=/s/^MACHDEP=[ ]*\(.*\)/s%@MACHDEP[@]%\1%/p'
\
-e
'/^SO=/s/^SO=[ ]*\(.*\)/s%@SO[@]%\1%/p'
\
-e
'/^LDSHARED=/s/^LDSHARED=[ ]*\(.*\)/s%@LDSHARED[@]%\1%/p'
\
-e
'/^CCSHARED=/s/^CCSHARED=[ ]*\(.*\)/s%@CCSHARED[@]%\1%/p'
\
-e
'/^LINKFORSHARED=/s/^LINKFORSHARED=[ ]*\(.*\)/s%@LINKFORSHARED[@]%\1%/p'
\
-e
'/^$P=/s/^$P=\(.*\)/s%^$P=.*%$P=\1%/p'
\
-e
'/^$E=/s/^$E=\(.*\)/s%^$E=.*%$E=\1%/p'
\
$(MAKEFILE)
>
sedscript
(
\
echo
"/^installdir=/s%=.*%=
$(installdir)
%"
;
\
echo
"/^exec_installdir=/s%=.*%=
$(exec_installdir)
%"
;
\
echo
"/^srcdir=/s%=.*%=
$(srcdir)
%"
;
\
echo
"/^VPATH=/s%=.*%=
$(VPATH)
%"
;
\
echo
"/^LINKPATH=/s%=.*%=
$(LINKPATH)
%"
;
\
echo
"/^OPT=/s%=.*%=
$(OPT)
%"
;
\
echo
"/^BASELIB=/s%=.*%=
$(BASELIB)
%"
;
\
echo
"/^BASESETUP=/s%=.*%=
$(BASESETUP)
%"
;
\
)
>>
sedscript
clean
:
-
rm
-f
*
.o
*
~
clobber
:
clean
-
rm
-f
python lib.a sedscript config.c Makefile.pre
distclean
:
clobber
-
rm
-f
Makefile Setup
lib/python/Shared/DC/xml/pyexpat/README
0 → 100644
View file @
d2449399
Python Expat wrapper module, version of 19-May-98
=================================================
If you have downloaded the binary distribution for the macintosh you
can skip the "building" sections and go straight to the "using"
bit. If you are using a macintosh and do want to build from source you
should get the pyexpat.tgz distribution (Stuffit Expander with
Expander Enhancer will know how to unpack a gzipped tar file).
Building the pyexpat module under unix
--------------------------------------
- Build libexpat.a in expat. This version is very slightly different
from the original by James Clark (the libexpat.a target was added,
and a few C++ comments were replaced by C comments).
- Edit Makefile.pre.in and set your installdir
- make -f Makefile.pre.in VERSION=1.5.1 Makefile
- make sharedmods
- put the shared module somewhere in your sys.path
(if you want a static Python edit Setup.in, and replace the last line
with "make").
Building the pyexpat module on the macintosh
--------------------------------------------
- Unpack the various .hqx project files.
- All the projects are linked, so building pyexpat.prj should build
everything. If this doesn't work you will find the library
subprojects to build in the expat folder.
- Use EditPythonPrefs to add the current folder to sys.path.
Using the pyexpat module
-----------------------
The pyexpat module exports two functions:
ParserCreate(encoding) Creates a new parser object. The optional
encoding arg (a string) specifies the encoding.
ErrorString(number) Return a string corresponding to the given error
number.
Parser objects have one method:
Parse(data, isfinal) Parse some data. If the optional isfinal arg is 1
this is the last bit of data. Returns true if parsing
succeeded (so far), otherwise the error attributes have
information on the error.
Parser objects have the following attributes:
StartElementHandler, EndElementHandler, CharacterDataHandler,
ProcessingInstructionHandler - The Python handlers called for various
events. See below for the signatures.
ErrorCode, ErrorLineNumber, ErrorColumnNumber, ErrorByteIndex -
Readonly integers giving information on the current parse
error.
Testing it
----------
There's a very minimal test script in expattest.py. It should be easy
to adapt it to generate ESIS (but I'm not familiar enough with ESIS to
do it). This module parsed Hamlet in 2 seconds on an 180 Mhz R5000 SGI
O2.
Feedback
--------
This module currently lives at
ftp://ftp.cwi.nl/pub/jack/python/pyexpatsrc.tgz (source) and
ftp://ftp.cwi.nl/pub/jack/python/pyexpat.hqx (macintosh binary-only).
The author is Jack Jansen, jack@cwi.nl. The expat proper was written
by James Clark and can be found at http://www.jclark.com/xml/ .
Jack Jansen, CWI, Amsterdam
jack@cwi.nl
\ No newline at end of file
lib/python/Shared/DC/xml/pyexpat/Setup.in
0 → 100644
View file @
d2449399
*shared*
pyexpat pyexpat.o expat/libexpat.a -Iexpat/xmlparse
lib/python/Shared/DC/xml/pyexpat/_checkversion.py
0 → 100644
View file @
d2449399
"""This file (which is sourced, not imported) checks the version of the
"versioncheck" package. It is also an example of how to format your own
_checkversion.py file"""
import
pyversioncheck
_PACKAGE
=
"pyexpat"
_VERSION
=
"1.1"
_URL
=
"http://www.cwi.nl/~jack/pyexpatversion.txt"
try
:
_myverbose
=
VERBOSE
except
NameError
:
_myverbose
=
1
pyversioncheck
.
versioncheck
(
_PACKAGE
,
_URL
,
_VERSION
,
verbose
=
_myverbose
)
lib/python/Shared/DC/xml/pyexpat/pyexpat.c
0 → 100644
View file @
d2449399
/***********************************************************
Copyright 1991-1995 by Stichting Mathematisch Centrum, Amsterdam,
The Netherlands.
All Rights Reserved
Permission to use, copy, modify, and distribute this software and its
documentation for any purpose and without fee is hereby granted,
provided that the above copyright notice appear in all copies and that
both that copyright notice and this permission notice appear in
supporting documentation, and that the names of Stichting Mathematisch
Centrum or CWI or Corporation for National Research Initiatives or
CNRI not be used in advertising or publicity pertaining to
distribution of the software without specific, written prior
permission.
While CWI is the initial source for this software, a modified version
is made available by the Corporation for National Research Initiatives
(CNRI) at the Internet address ftp://ftp.python.org.
STICHTING MATHEMATISCH CENTRUM AND CNRI DISCLAIM ALL WARRANTIES WITH
REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL STICHTING MATHEMATISCH
CENTRUM OR CNRI BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THIS SOFTWARE.
******************************************************************/
#include "Python.h"
#include "xmlparse.h"
static
PyObject
*
ErrorObject
;
/* ----------------------------------------------------- */
/* Declarations for objects of type xmlparser */
typedef
struct
{
PyObject_HEAD
XML_Parser
itself
;
PyObject
*
StartElementHandler
;
PyObject
*
EndElementHandler
;
PyObject
*
CharacterDataHandler
;
PyObject
*
ProcessingInstructionHandler
;
}
xmlparseobject
;
staticforward
PyTypeObject
Xmlparsetype
;
/* Callback routines */
static
void
my_StartElementHandler
(
userdata
,
name
,
atts
)
void
*
userdata
;
char
*
name
;
char
**
atts
;
{
xmlparseobject
*
self
=
(
xmlparseobject
*
)
userdata
;
PyObject
*
args
;
PyObject
*
rv
;
PyObject
*
attrs_obj
;
int
attrs_len
;
char
**
attrs_p
;
if
(
self
->
StartElementHandler
&&
self
->
StartElementHandler
!=
Py_None
)
{
for
(
attrs_len
=
0
,
attrs_p
=
atts
;
*
attrs_p
;
attrs_p
++
,
attrs_len
++
);
if
(
(
attrs_obj
=
PyList_New
(
attrs_len
))
==
NULL
)
return
;
for
(
attrs_len
=
0
,
attrs_p
=
atts
;
*
attrs_p
;
attrs_p
++
,
attrs_len
++
)
{
PyList_SetItem
(
attrs_obj
,
attrs_len
,
PyString_FromString
(
*
attrs_p
));
}
args
=
Py_BuildValue
(
"(sO)"
,
name
,
attrs_obj
);
if
(
!
args
)
return
;
rv
=
PyEval_CallObject
(
self
->
StartElementHandler
,
args
);
Py_XDECREF
(
args
);
Py_XDECREF
(
rv
);
}
}
static
void
my_EndElementHandler
(
userdata
,
name
)
void
*
userdata
;
char
*
name
;
{
xmlparseobject
*
self
=
(
xmlparseobject
*
)
userdata
;
PyObject
*
args
;
PyObject
*
rv
;
if
(
self
->
EndElementHandler
&&
self
->
EndElementHandler
!=
Py_None
)
{
args
=
Py_BuildValue
(
"(s)"
,
name
);
if
(
!
args
)
return
;
rv
=
PyEval_CallObject
(
self
->
EndElementHandler
,
args
);
Py_XDECREF
(
args
);
Py_XDECREF
(
rv
);
}
}
static
void
my_CharacterDataHandler
(
userdata
,
data
,
len
)
void
*
userdata
;
char
*
data
;
int
len
;
{
xmlparseobject
*
self
=
(
xmlparseobject
*
)
userdata
;
PyObject
*
args
;
PyObject
*
rv
;
if
(
self
->
CharacterDataHandler
&&
self
->
CharacterDataHandler
!=
Py_None
)
{
args
=
Py_BuildValue
(
"(s#)"
,
data
,
len
);
if
(
!
args
)
return
;
rv
=
PyEval_CallObject
(
self
->
CharacterDataHandler
,
args
);
Py_XDECREF
(
args
);
Py_XDECREF
(
rv
);
}
}
static
void
my_ProcessingInstructionHandler
(
userdata
,
target
,
data
)
void
*
userdata
;
char
*
target
;
char
*
data
;
{
xmlparseobject
*
self
=
(
xmlparseobject
*
)
userdata
;
PyObject
*
args
;
PyObject
*
rv
;
if
(
self
->
ProcessingInstructionHandler
&&
self
->
ProcessingInstructionHandler
!=
Py_None
)
{
args
=
Py_BuildValue
(
"(ss)"
,
target
,
data
);
if
(
!
args
)
return
;
rv
=
PyEval_CallObject
(
self
->
ProcessingInstructionHandler
,
args
);
Py_XDECREF
(
args
);
Py_XDECREF
(
rv
);
}
}
/* ---------------------------------------------------------------- */
static
char
xmlparse_Parse__doc__
[]
=
"(data [,isfinal]) - Parse XML data"
;
static
PyObject
*
xmlparse_Parse
(
self
,
args
)
xmlparseobject
*
self
;
PyObject
*
args
;
{
char
*
s
;
int
slen
;
int
isFinal
=
0
;
int
rv
;
if
(
!
PyArg_ParseTuple
(
args
,
"s#|i"
,
&
s
,
&
slen
,
&
isFinal
))
return
NULL
;
rv
=
XML_Parse
(
self
->
itself
,
s
,
slen
,
isFinal
);
return
Py_BuildValue
(
"i"
,
rv
);
}
static
struct
PyMethodDef
xmlparse_methods
[]
=
{
{
"Parse"
,
(
PyCFunction
)
xmlparse_Parse
,
METH_VARARGS
,
xmlparse_Parse__doc__
},
{
NULL
,
NULL
}
/* sentinel */
};
/* ---------- */
static
xmlparseobject
*
newxmlparseobject
(
encoding
)
char
*
encoding
;
{
xmlparseobject
*
self
;
self
=
PyObject_NEW
(
xmlparseobject
,
&
Xmlparsetype
);
if
(
self
==
NULL
)
return
NULL
;
self
->
StartElementHandler
=
Py_None
;
Py_INCREF
(
Py_None
);
self
->
EndElementHandler
=
Py_None
;
Py_INCREF
(
Py_None
);
self
->
CharacterDataHandler
=
Py_None
;
Py_INCREF
(
Py_None
);
self
->
ProcessingInstructionHandler
=
Py_None
;
Py_INCREF
(
Py_None
);
if
((
self
->
itself
=
XML_ParserCreate
(
encoding
))
==
NULL
)
{
PyErr_SetString
(
PyExc_RuntimeError
,
"XML_ParserCreate failed"
);
Py_DECREF
(
self
);
return
NULL
;
}
XML_SetUserData
(
self
->
itself
,
(
void
*
)
self
);
XML_SetElementHandler
(
self
->
itself
,
my_StartElementHandler
,
my_EndElementHandler
);
XML_SetCharacterDataHandler
(
self
->
itself
,
my_CharacterDataHandler
);
XML_SetProcessingInstructionHandler
(
self
->
itself
,
my_ProcessingInstructionHandler
);
return
self
;
}
static
void
xmlparse_dealloc
(
self
)
xmlparseobject
*
self
;
{
Py_XDECREF
(
self
->
StartElementHandler
);
Py_XDECREF
(
self
->
EndElementHandler
);
Py_XDECREF
(
self
->
CharacterDataHandler
);
Py_XDECREF
(
self
->
ProcessingInstructionHandler
);
if
(
self
->
itself
)
XML_ParserFree
(
self
->
itself
);
self
->
itself
=
NULL
;
PyMem_DEL
(
self
);
}
static
PyObject
*
xmlparse_getattr
(
self
,
name
)
xmlparseobject
*
self
;
char
*
name
;
{
long
rv
;
if
(
strcmp
(
name
,
"StartElementHandler"
)
==
0
)
{
Py_INCREF
(
self
->
StartElementHandler
);
return
self
->
StartElementHandler
;
}
if
(
strcmp
(
name
,
"EndElementHandler"
)
==
0
)
{
Py_INCREF
(
self
->
EndElementHandler
);
return
self
->
EndElementHandler
;
}
if
(
strcmp
(
name
,
"CharacterDataHandler"
)
==
0
)
{
Py_INCREF
(
self
->
CharacterDataHandler
);
return
self
->
CharacterDataHandler
;
}
if
(
strcmp
(
name
,
"ProcessingInstructionHandler"
)
==
0
)
{
Py_INCREF
(
self
->
ProcessingInstructionHandler
);
return
self
->
ProcessingInstructionHandler
;
}
if
(
strcmp
(
name
,
"ErrorCode"
)
==
0
)
return
Py_BuildValue
(
"l"
,
(
long
)
XML_GetErrorCode
(
self
->
itself
));
if
(
strcmp
(
name
,
"ErrorLineNumber"
)
==
0
)
return
Py_BuildValue
(
"l"
,
(
long
)
XML_GetErrorLineNumber
(
self
->
itself
));
if
(
strcmp
(
name
,
"ErrorColumnNumber"
)
==
0
)
return
Py_BuildValue
(
"l"
,
(
long
)
XML_GetErrorColumnNumber
(
self
->
itself
));
if
(
strcmp
(
name
,
"ErrorByteIndex"
)
==
0
)
return
Py_BuildValue
(
"l"
,
XML_GetErrorByteIndex
(
self
->
itself
));
return
Py_FindMethod
(
xmlparse_methods
,
(
PyObject
*
)
self
,
name
);
}
static
int
xmlparse_setattr
(
self
,
name
,
v
)
xmlparseobject
*
self
;
char
*
name
;
PyObject
*
v
;
{
/* Set attribute 'name' to value 'v'. v==NULL means delete */
if
(
v
==
NULL
)
{
PyErr_SetString
(
PyExc_RuntimeError
,
"Cannot delete attribute"
);
return
-
1
;
}
if
(
strcmp
(
name
,
"StartElementHandler"
)
==
0
)
{
Py_XDECREF
(
self
->
StartElementHandler
);
self
->
StartElementHandler
=
v
;
Py_INCREF
(
v
);
return
0
;
}
if
(
strcmp
(
name
,
"EndElementHandler"
)
==
0
)
{
Py_XDECREF
(
self
->
EndElementHandler
);
self
->
EndElementHandler
=
v
;
Py_INCREF
(
v
);
return
0
;
}
if
(
strcmp
(
name
,
"CharacterDataHandler"
)
==
0
)
{
Py_XDECREF
(
self
->
CharacterDataHandler
);
self
->
CharacterDataHandler
=
v
;
Py_INCREF
(
v
);
return
0
;
}
if
(
strcmp
(
name
,
"ProcessingInstructionHandler"
)
==
0
)
{
Py_XDECREF
(
self
->
ProcessingInstructionHandler
);
self
->
ProcessingInstructionHandler
=
v
;
Py_INCREF
(
v
);
return
0
;
}
return
-
1
;
}
static
char
Xmlparsetype__doc__
[]
=
"XML parser"
;
static
PyTypeObject
Xmlparsetype
=
{
PyObject_HEAD_INIT
(
NULL
)
0
,
/*ob_size*/
"xmlparser"
,
/*tp_name*/
sizeof
(
xmlparseobject
),
/*tp_basicsize*/
0
,
/*tp_itemsize*/
/* methods */
(
destructor
)
xmlparse_dealloc
,
/*tp_dealloc*/
(
printfunc
)
0
,
/*tp_print*/
(
getattrfunc
)
xmlparse_getattr
,
/*tp_getattr*/
(
setattrfunc
)
xmlparse_setattr
,
/*tp_setattr*/
(
cmpfunc
)
0
,
/*tp_compare*/
(
reprfunc
)
0
,
/*tp_repr*/
0
,
/*tp_as_number*/
0
,
/*tp_as_sequence*/
0
,
/*tp_as_mapping*/
(
hashfunc
)
0
,
/*tp_hash*/
(
ternaryfunc
)
0
,
/*tp_call*/
(
reprfunc
)
0
,
/*tp_str*/
/* Space for future expansion */
0L
,
0L
,
0L
,
0L
,
Xmlparsetype__doc__
/* Documentation string */
};
/* End of code for xmlparser objects */
/* -------------------------------------------------------- */
static
char
pyexpat_ParserCreate__doc__
[]
=
"([encoding]) - Return a new XML parser object"
;
static
PyObject
*
pyexpat_ParserCreate
(
self
,
args
)
PyObject
*
self
;
/* Not used */
PyObject
*
args
;
{
char
*
encoding
=
NULL
;
if
(
!
PyArg_ParseTuple
(
args
,
"|s"
,
encoding
))
return
NULL
;
return
(
PyObject
*
)
newxmlparseobject
(
encoding
);
}
static
char
pyexpat_ErrorString__doc__
[]
=
"(errno) Returns string error for given number"
;
static
PyObject
*
pyexpat_ErrorString
(
self
,
args
)
PyObject
*
self
;
/* Not used */
PyObject
*
args
;
{
long
code
;
if
(
!
PyArg_ParseTuple
(
args
,
"l"
,
&
code
))
return
NULL
;
return
Py_BuildValue
(
"z"
,
XML_ErrorString
((
int
)
code
));
}
/* List of methods defined in the module */
static
struct
PyMethodDef
pyexpat_methods
[]
=
{
{
"ParserCreate"
,
(
PyCFunction
)
pyexpat_ParserCreate
,
METH_VARARGS
,
pyexpat_ParserCreate__doc__
},
{
"ErrorString"
,
(
PyCFunction
)
pyexpat_ErrorString
,
METH_VARARGS
,
pyexpat_ErrorString__doc__
},
{
NULL
,
(
PyCFunction
)
NULL
,
0
,
NULL
}
/* sentinel */
};
/* Initialization function for the module (*must* be called initpyexpat) */
static
char
pyexpat_module_documentation
[]
=
""
;
void
initpyexpat
()
{
PyObject
*
m
,
*
d
;
Xmlparsetype
.
ob_type
=
&
PyType_Type
;
/* Create the module and add the functions */
m
=
Py_InitModule4
(
"pyexpat"
,
pyexpat_methods
,
pyexpat_module_documentation
,
(
PyObject
*
)
NULL
,
PYTHON_API_VERSION
);
/* Add some symbolic constants to the module */
d
=
PyModule_GetDict
(
m
);
ErrorObject
=
PyString_FromString
(
"pyexpat.error"
);
PyDict_SetItemString
(
d
,
"error"
,
ErrorObject
);
/* XXXX Add constants here */
#define MYCONST(name) \
PyDict_SetItemString(d, #name, PyInt_FromLong(name))
MYCONST
(
XML_ERROR_NONE
);
MYCONST
(
XML_ERROR_NO_MEMORY
);
MYCONST
(
XML_ERROR_SYNTAX
);
MYCONST
(
XML_ERROR_NO_ELEMENTS
);
MYCONST
(
XML_ERROR_INVALID_TOKEN
);
MYCONST
(
XML_ERROR_UNCLOSED_TOKEN
);
MYCONST
(
XML_ERROR_PARTIAL_CHAR
);
MYCONST
(
XML_ERROR_TAG_MISMATCH
);
MYCONST
(
XML_ERROR_DUPLICATE_ATTRIBUTE
);
MYCONST
(
XML_ERROR_JUNK_AFTER_DOC_ELEMENT
);
MYCONST
(
XML_ERROR_PARAM_ENTITY_REF
);
MYCONST
(
XML_ERROR_UNDEFINED_ENTITY
);
MYCONST
(
XML_ERROR_RECURSIVE_ENTITY_REF
);
MYCONST
(
XML_ERROR_ASYNC_ENTITY
);
MYCONST
(
XML_ERROR_BAD_CHAR_REF
);
MYCONST
(
XML_ERROR_BINARY_ENTITY_REF
);
MYCONST
(
XML_ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REF
);
MYCONST
(
XML_ERROR_MISPLACED_XML_PI
);
MYCONST
(
XML_ERROR_UNKNOWN_ENCODING
);
MYCONST
(
XML_ERROR_INCORRECT_ENCODING
);
/* Check for errors */
if
(
PyErr_Occurred
())
Py_FatalError
(
"can't initialize module pyexpat"
);
}
lib/python/Shared/DC/xml/pyexpat/pyexpat.prj.exp
0 → 100644
View file @
d2449399
initpyexpat
lib/python/Shared/DC/xml/pyexpat/pyexpat.prj.hqx
0 → 100644
View file @
d2449399
(This file must be converted with BinHex 4.0)
:#h"jCAK`BA3ZF(*U!%e08(*$9dP&!3!!!0H(!*!%@SPMEfpX!!!!!`!!!5J!!-c
R!!$1$`!!#AJ!!!"P!3)"!*!*3fpNC9GKFR*TEh)J8(*[DQ9MG!#3lJ3!N!N'!3$
rr`#3#2rr!C!&!*!%(J%"!*!)QCN!!$rr2rmrr`%!!!%!#3CYEfjKBfm!N"`%!#J
!#J(#!S!!+!!+!F)#J!#3%!%!!!%!V!&A!4N#HJ$J!!#XC3!!IV-!!!#r!!!!`!!
!%VN!!"3!N!5r!*!3@NP3)!%!!!m"!!!'!3!!$3%!!!i"!!!$!!!!"J!!!#3"!!!
!!3!!$`)!!!-#!!!'!J!!#`)!!!d#!!!1!!!!"J!!!#3#!!!!!J!!$J!"!3!!!3%
!!3!!!!)!!!i!!!"4!!!!B!!!"*8!!!J!N!44!(3'3QPd8f9d"N*TG%0XFJeAB@N
!!!!"!3!!$!!!!!3!N!4*!!!!5J#3"!8!!!%!N!4,!!!!6!%!!!m&!3%"!*!%63!
!!%i!N!3&!!!"!*!%6`#3#`%!!`!!QCN!N!4rr`#3"(rr!*!%Irm!!!!'!3%!!3%
!!!!"!3%!!!!"!!!!!3#3"!F"!!%"!!%"!!!!!3!!"!#3$3%"!3#3#3)!N!jrr`#
3"!3!N!N'!3$rr`#3#2rr!C!&!*!%(J%"!*!)QCN!!$rr2rmrr`%!!!%!#3CYEfj
KBfm!N"`%!#J!#J(#!S!!+!!+!F)#J!#3%!%!!!%!@!#Z!-8#'J%h!!#XC3!!(E4
iH#j$4Ndf1%Xk8(*[DQ9MG#"0DA0M!(Ki,N0'66Bi5cT&C'PdEh)!H(JZ3dC00MK
,1NC[ER3!H(JZ3dC00MK,1P"bEfTPBh3J4AKdFQ&c!(Ki,N0'66Bi5cT$GA0dEfd
J5f9jGfpbC(-!H(JZ3dC00MK,1N&MBf9cFb"3BA4SF`"iH#j$4Ndf1%Xk3R9TE'3
J4AKdFQ&c!(Ki,N0'66Bi5cSf1%XJ3fpNC8GPEJ"iH#j$4Ndf1%Xk0MK,)%4TFf&
cFf9YBQaPFJ"iH#j$4Ndf1%Xk0MK,)%aTEQYPFJ"iH#j$4Ndf1%Xk0MK,)&"bEfT
PBh3!H(JZ3dC00MK,1N-[3bXV)%0[EA"TE'9b!(Ki,N0'66Bi5cT$,d-V+b"ABA*
ZD@jRF`"iH#j$4Ndf1%Xk3dC00MK,!(Ki,N0'66Bi5cT3BA0MB@`J3fpYF'PXCA)
!H(JZ3dC00MK,1P"KFf0KE#"ABA*ZD@jRF`"iH#j$4Ndf1%Xk8&"$)%0[C'9(C@i
!H(JZ3dC00MK,1P"33b"%DA0KFh0PE@*XCA)!H(JZ3dC00MK,1P"33b"-D@jVCA)
!H(JZ3dC00MK,1P"33b"348B!H(JZ3dC00MK,1P"33b"3FQpUC@0d!(Ki,N0'66B
i5cT38%0"FfdJ8'&ZC@`!H(JZ3dC00MK,1P*PHL"$Efe`D@aPFJ"iH#j$4Ndf1%X
k9'&bCf9d)&0PG(4TEQGc!(Ki,N0'66Bi5cT'D@aP)%eKF("TEQGc!(Ki,R"`BcT
3FQpUC@0d)%eTFf-!H(JZF("M1N9NDA4[FJ"iH#j`F'-k4QpZG!"iH#j`F'-k8(*
[DQ9MG#"&H(4bBA-!H(JZF("M1N0eFh4[E5",CAPhEh*NF`"iH#j`F'-k3@0MCA0
c)&"KG'Kc!(Ki,R"`BcT#G@PXC#"&H(4bBA-!H(JZF("M1MBi5b"$Ef4P4f9Z!(K
i,R"`BcSf1%XJ4'PcBA0cC@eLE'9b!(Ki,R"`BcSf1%XJ6'PZDf9b!(Ki,R"`BcS
f1%XJ8(*[DQ9MG!"iH#j`F'-k3bp$+bXJ3fpYF'PXCA)!H(JZF("M1N-[3bXV)&G
KFQjTEQGc!(Ki,R"`BcT$4Ndf1%X!H(JZF("M1P"KFf0KE#"$Efe`D@aPFJ"iH#j
`F'-k8'&cBf&X)&GKFQjTEQGc!(Ki,R"`BcT38%-J3fpNC8GPEJ"iH#j`F'-k8&"
$)%4TFf&cFf9YBQaPFJ"iH#j`F'-k8&"$)%aTEQYPFJ"iH#j`F'-k8&"$)&"&4J"
iH#j`F'-k8&"$)&"bEfTPBh3!H(JZF("M1P"33d&cE5"3B@jPE!"iH#j`F'-k8Q9
k)%0[EA"TE'9b!(Ki,R"`BcT8BA*RCA3J8f9dG'PZCh-!H(JZF("M1NCTE'8J6@&
`F'PZCh-!8(*[DQ9MG#"'D@aP)%aTFh3!H(JZ3dC00MK,1NP5)%p`G'PYDATPFJ"
iH#j$4Ndf1%Xk6@&M6e-J6@9bCf8J8'&ZC@`!H(JZF("M1NP5)%p`G'PYDATPFJ"
iH#j`F'-k6@&M6e-J6@9bCf8J8'&ZC@`!H'eXG'pV,N0'66Bi5cT$GA0dEfdJ5f9
jGfpbC(-!H'eXG'pV,N0'66Bi5cT"Bf0PFh-J8'&dD(-!H'eXG'pV,N0'66Bi5cT
8BA*RCA3J8f9dG'PZCh-!H'eXG'pV,N0'66Bi5cT'D@aP)%eKF("TEQGc!(KYE(4
[Dbj$4Ndf1%Xk3R9TE'3J4AKdFQ&c!(KYE(4[Dbj$4Ndf1%Xk0MK,)%0[C'9(C@i
!H'eXG'pV,N0'66Bi5cSf1%XJ4'PcBA0cC@eLE'9b!(KYE(4[Dbj$4Ndf1%Xk0MK
,)%aTEQYPFJ"iE@adEfXZ3dC00MK,1MBi5b"3FQpUC@0d!(KYE(4[Dbj$4Ndf1%X
k3bp$+bXJ3fpYF'PXCA)!H'eXG'pV,N0'66Bi5cT$,d-V+b"ABA*ZD@jRF`"iE@a
dEfXZ3dC00MK,1N0'66Bi5`"iE@adEfXZ3dC00MK,1NP5)%p`G'PYDATPFJ"iE@a
dEfXZ3dC00MK,1NeKBdp6)%ePFQGP)&"KEQ9X!(KYE(4[Dbj$4Ndf1%Xk8'&cBf&
X)%0[EA"TE'9b!(KYE(4[Dbj$4Ndf1%Xk8'&cBf&X)&GKFQjTEQGc!(KYE(4[Dbj
$4Ndf1%Xk8&"$)%0[C'9(C@i!H'eXG'pV,N0'66Bi5cT38%-J4'PcBA0cC@eLE'9
b!(KYE(4[Dbj$4Ndf1%Xk8&"$)%aTEQYPFJ"iE@adEfXZ3dC00MK,1P"33b"348B
!H'eXG'pV,N0'66Bi5cT38%-J8(*[DQ9MG!"iE@adEfXZ3dC00MK,1P"33d&cE5"
3B@jPE!"iE@adEfXZ3dC00MK,1P*PHL"$Efe`D@aPFJ"iE@adEfXZF("M1N0eFh4
[E5",CAPhEh*NF`"iE@adEfXZF("M1N&MBf9cFb"3BA4SF`"iE@adEfXZF("M1P4
KFQGPG#"6CA4dD@jRF`"iE@adEfXZF("M1NCTE'8J6@&`F'PZCh-!H'eXG'pV,R"
`BcT#G@PXC#"&H(4bBA-!H'eXG'pV,R"`BcSf1%XJ3fpNC8GPEJ"iE@adEfXZF("
M1MBi5b"%DA0KFh0PE@*XCA)!H'eXG'pV,R"`BcSf1%XJ6'PZDf9b!(KYE(4[Dbj
`F'-k0MK,)&"bEfTPBh3!H'eXG'pV,R"`BcT$,d-V+b"$Efe`D@aPFJ"iE@adEfX
ZF("M1N-[3bXV)&GKFQjTEQGc!(KYE(4[Dbj`F'-k3dC00MK,!(KYE(4[Dbj`F'-
k59)J6h"dD@eTHQ9b!(KYE(4[Dbj`F'-k6@&M6e-J6@9bCf8J8'&ZC@`!H'eXG'p
V,R"`BcT3BA0MB@`J3fpYF'PXCA)!H'eXG'pV,R"`BcT3BA0MB@`J9f&bEQPZCh-
!H'eXG'pV,R"`BcT38%-J3fpNC8GPEJ"iE@adEfXZF("M1P"33b"%DA0KFh0PE@*
XCA)!H'eXG'pV,R"`BcT38%-J6'PZDf9b!(KYE(4[Dbj`F'-k8&"$)&"&4J"iE@a
dEfXZF("M1P"33b"3FQpUC@0d!(KYE(4[Dbj`F'-k8&"$3A0Y)&"KEQ9X!(KYE(4
[Dbj`F'-k8Q9k)%0[EA"TE'9b!(KYE(4[Dbj$4Ndf1%Xk4'9LG@GRCA)J9'&bCf9
d!(KYE(4[Dbj$4Ndf1%Xk4P43)&"KEQ9X!(KYE(4[Dbj$4Ndf1%Xk5Q&fB5"-B@j
RG@&RC3"iE@adEfXZ3dC00MK,1NTKGQ%J6h9dF(9d!(KYE(4[Dbj$4Ndf1%Xk5Q&
fB5"3FQpUC@0d!(KYE(4[Dbj$4Ndf1%Xk5Q&fB84[Bb"3FQpUC@0d!(KYE(4[Dbj
$4Ndf1%Xk9fPZ8N-J3fpYF'PXCA)!H'eXG'pV,N0'66Bi5cTi1$BJ3fpNC8GPEJ"
iE@adEfXZ3dC00MK,1RJi0L"&H'0PF(4TEfjc)&"KEQ9X!(KYE(4[Dbj$4Ndf1%X
kH$Jf)%aTEQYPFJ"iE@adEfXZ3dC00MK,1RJi0L"3FQpUC@0d!(KYE(4[Dbj`F'-
k4'9LG@GRCA)J9'&bCf9d!(KYE(4[Dbj`F'-k4P43)&"KEQ9X!(KYE(4[Dbj`F'-
k5Q&fB5"-B@jRG@&RC3"iE@adEfXZF("M1NTKGQ%J6h9dF(9d!(KYE(4[Dbj`F'-
k5Q&fB5"3FQpUC@0d!(KYE(4[Dbj`F'-k5Q&fB84[Bb"3FQpUC@0d!(KYE(4[Dbj
`F'-k9fPZ8N-J3fpYF'PXCA)!H'eXG'pV,R"`BcTi1$BJ3fpNC8GPEJ"iE@adEfX
ZF("M1RJi0L"&H'0PF(4TEfjc)&"KEQ9X!(KYE(4[Dbj`F'-kH$Jf)%aTEQYPFJ"
iE@adEfXZF("M1RJi0L"3FQpUC@0d!("jCAK`BA3Z3dC00MK,1N0eFh4[E5",CAP
hEh*NF`"`H@9iF'&d,N0'66Bi5cT"Bf0PFh-J8'&dD(-!F(PPH("KG#j$4Ndf1%X
k9'&bCf9d)&0PG(4TEQGc!("jCAK`BA3Z3dC00MK,1NCTE'8J6@&`F'PZCh-!F(P
PH("KG#j$4Ndf1%Xk3R9TE'3J4AKdFQ&c!("jCAK`BA3Z3dC00MK,1N4PBR9RCf9
b)&4KFQGPG!"`H@9iF'&d,N0'66Bi5cSf1%XJ3fpNC8GPEJ"`H@9iF'&d,N0'66B
i5cSf1%XJ4'PcBA0cC@eLE'9b!("jCAK`BA3Z3dC00MK,1MBi5b"-D@jVCA)!F(P
PH("KG#j$4Ndf1%Xk0MK,)&"bEfTPBh3!F(PPH("KG#j$4Ndf1%Xk3bp$+bXJ3fp
YF'PXCA)!F(PPH("KG#j$4Ndf1%Xk3bp$+bXJ9f&bEQPZCh-!F(PPH("KG#j$4Nd
f1%Xk3dC00MK,!("jCAK`BA3Z3dC00MK,1NC88#"3B@jPE!"`H@9iF'&d,N0'66B
i5cT*8L"2F(4TE@PkCA)!F(PPH("KG#j$4Ndf1%Xk5Q&fB5"-B@jRG@&RC3"`H@9
iF'&d,N0'66Bi5cT+BACK)%peG("eG!"`H@9iF'&d,N0'66Bi5cT+BACK)&"bEfT
PBh3!F(PPH("KG#j$4Ndf1%Xk5Q&fB84[Bb"3FQpUC@0d!("jCAK`BA3Z3dC00MK
,1NeKBdp6)%ePFQGP)&"KEQ9X!("jCAK`BA3Z3dC00MK,1P"KFf0KE#"$Efe`D@a
PFJ"`H@9iF'&d,N0'66Bi5cT3BA0MB@`J9f&bEQPZCh-!F(PPH("KG#j$4Ndf1%X
k8&"$)%0[C'9(C@i!F(PPH("KG#j$4Ndf1%Xk8&"$)%4TFf&cFf9YBQaPFJ"`H@9
iF'&d,N0'66Bi5cT38%-J6'PZDf9b!("jCAK`BA3Z3dC00MK,1P"33b"348B!F(P
PH("KG#j$4Ndf1%Xk8&"$)&"bEfTPBh3!F(PPH("KG#j$4Ndf1%Xk8&"$3A0Y)&"
KEQ9X!("jCAK`BA3Z3dC00MK,1P*PHL"$Efe`D@aPFJ"`H@9iF'&d,N0'66Bi5cT
AD@j53b"$Efe`D@aPFJ"`H@9iF'&d,N0'66Bi5cTi1$BJ3fpNC8GPEJ"`H@9iF'&
d,N0'66Bi5cTi1$BJ4AKMCA"dD@pZFb"3B@jPE!"`H@9iF'&d,N0'66Bi5cTi1$B
J6'PZDf9b!("jCAK`BA3Z3dC00MK,1RJi0L"3FQpUC@0d!("jCAK`BA3ZF("M1N0
eFh4[E5",CAPhEh*NF`"`H@9iF'&d,R"`BcT"Bf0PFh-J8'&dD(-!F(PPH("KG#j
`F'-k9'&bCf9d)&0PG(4TEQGc!("jCAK`BA3ZF("M1NCTE'8J6@&`F'PZCh-!F(P
PH("KG#j`F'-k3R9TE'3J4AKdFQ&c!("jCAK`BA3ZF("M1N4PBR9RCf9b)&4KFQG
PG!"`H@9iF'&d,R"`BcSf1%XJ3fpNC8GPEJ"`H@9iF'&d,R"`BcSf1%XJ4'PcBA0
cC@eLE'9b!("jCAK`BA3ZF("M1MBi5b"-D@jVCA)!F(PPH("KG#j`F'-k0MK,)&"
bEfTPBh3!F(PPH("KG#j`F'-k3bp$+bXJ3fpYF'PXCA)!F(PPH("KG#j`F'-k3bp
$+bXJ9f&bEQPZCh-!F(PPH("KG#j`F'-k3dC00MK,!("jCAK`BA3ZF("M1NC88#"
3B@jPE!"`H@9iF'&d,R"`BcT*8L"2F(4TE@PkCA)!F(PPH("KG#j`F'-k5Q&fB5"
-B@jRG@&RC3"`H@9iF'&d,R"`BcT+BACK)%peG("eG!"`H@9iF'&d,R"`BcT+BAC
K)&"bEfTPBh3!F(PPH("KG#j`F'-k5Q&fB84[Bb"3FQpUC@0d!("jCAK`BA3ZF("
M1NeKBdp6)%ePFQGP)&"KEQ9X!("jCAK`BA3ZF("M1P"KFf0KE#"$Efe`D@aPFJ"
`H@9iF'&d,R"`BcT3BA0MB@`J9f&bEQPZCh-!F(PPH("KG#j`F'-k8&"$)%0[C'9
(C@i!F(PPH("KG#j`F'-k8&"$)%4TFf&cFf9YBQaPFJ"`H@9iF'&d,R"`BcT38%-
J6'PZDf9b!("jCAK`BA3ZF("M1P"33b"348B!F(PPH("KG#j`F'-k8&"$)&"bEfT
PBh3!F(PPH("KG#j`F'-k8&"$3A0Y)&"KEQ9X!("jCAK`BA3ZF("M1P*PHL"$Efe
`D@aPFJ"`H@9iF'&d,R"`BcTAD@j53b"$Efe`D@aPFJ"`H@9iF'&d,R"`BcTi1$B
J3fpNC8GPEJ"`H@9iF'&d,R"`BcTi1$BJ4AKMCA"dD@pZFb"3B@jPE!"`H@9iF'&
d,R"`BcTi1$BJ6'PZDf9b!("jCAK`BA3ZF("M1RJi0L"3FQpUC@0d!*$r!*"--J!
!!)%!!!##!!!!J`!!!)3!!!"m!!!!I`!!!)8!!!#'!!!!K`!!!(X!!!#!!!!!IJ!
!!)J!!!#*!!!!LJ!!!)X!!!#-!!!!M3!!!)i!!!#2!!!!N!!!!!#4!!!!NJ!!!*-
!!!#8!!!!P3!!!*B!!!#A!!!!I3!!!*J!!!#C!!!!QJ!!!*X!!!#F!!!!S`!!!+3
!!!#P!!!!TJ!!!*i!!!#K!!!!T`!!!+J!!!#T!!!!R3!!!+)!!!#J!!!!UJ!!!+X
!!!#X!!!!V3!!!+i!!!#[!!!!X!!!!,%!!!#b!!!!X`!!!,3!!!#e!!!!YJ!!!,F
!!!#i!!!!Z3!!!*m!!!#k!!!!Z`!!!,`!!!#p!!!![J!!!$`!!!!p!!!!2J!!!$m
!!!!i!!!!1`!!!%!!!!""!!!!3J!!!$F!!!"P!!!!1J!!!'B!!!"$!!!!C`!!!'J
!!!"T!!!!DJ!!!%3!!!"&!!!!4J!!!%F!!!")!!!!53!!!%S!!!",!!!!6!!!!%d
!!!!j!!!!D`!!!'`!!!"Y!!!!EJ!!!'m!!!"6!!!!9!!!!&8!!!"@!!!!6`!!!&)
!!!"A!!!!@!!!!&N!!!"1!!!!F!!!!&%!!!"a!!!!@J!!!()!!!"c!!!!G!!!!(8
!!!"E!!!!A!!!!&d!!!"H!!!!A`!!!'!!!!"K!!!!BJ!!!'-!!!"N!!!!8!!!!(B
!!!"h!!!!H!!!!(N!!!"k!!!!"`!!!!J!!!!*!!!!#J!!!!8!!!!'!!!!#`!!!!`
!!!!0!!!!"!!!!!%!!!!B!!!!!J!!!$-!!!!d!!!!$J!!!!m!!!!3!!!!%3!!!")
!!!!6!!!!&!!!!"8!!!!$!*!(&J!!!"F!!!!J!!!!)3!!!#)!!!!M!!!!(J!!!"m
!!!!N!!!!*3!!!#B!!!!G!!!!'J!!!$%!!!!E!!!!03!!!$B!!!!R!!!!+!!!!#N
!!!!U!!!!+`!!!#`!!!!Y!!!!,J!!!"`!!!!C!!!!,`!!!$!!N!F`!!!!-3!!!$)
!!!!c!!!!(`!!!%N!!!",!!!!63!!!"`!!!"#!!!!4!!!!"i!!!!K!!!!)`!!!!X
!!!!6!!!!(3!!!#X!!!"1!!!!$J!!!#i!!!!d!!!!03!!!$B!!!!U!!!!,`!!!#d
!!!!h!!!!$!!!!"3!!!"&!!!!4J!!!%J!!!"+!!!!6!!!!%F!!!!#!!!!*!!!!#8
!!!!S!!!!+3!!!!d!!!!*!!!!"3!!!!m!!!!9!!!!%!!!!"B!!!!4!!!!1!!!!$N
!!!!5!!!!'3!!!$X!!!!m!!!!23!!!$i!!!!r!!!!&`!!!%!!!!"2!!!!33!!!%-
!!!"3!!!!'`!!!!B!!!!+!!!!1J!!!!%!!!!X!!!!'!!!!#B!!!!J!!!!)J!!!#F
!N!F%!!!!"`!!!!J!!!!D!!!!!`#323-!!*QC!*!%Irm!N!4rr`#3"(rr!!!!"3%
!!!%!N2m!!!!'!3#3"`%!N!N"!*!%!3%!!!%"!!%!!!F"!!%"!!%"!!!!!3!!"!#
3$3%"!3#3#3)!N!`&!3!!!3#3r`!!!!-#!!%"!!!"!3-"!*!*!3%"!!!"!3!"!3!
!!3%"!*!*!`!!$dTKGQ&$E'&cFf9c,QTKFJ#3%&T*8#"09eT3!*!&!3!!!!-!!!!
+!!!!!`!!!!LaKbkhrrqMQJ#3r`#3r`#3&`%!!!!$8Np29!#3$!*(8P93!*!(!3G
6Eh9bBf9c!!!!"NC*6%8#!!!04NP-43)!!!j(8P93!*!(!`pPH("KG#"XD@*bBA*
TCA-!N!4'58a&!J!!$%C*6%8#!!!,4NP-43%!!!p(8P93!*!(!JP-D@*bBA*TCA-
!!!!$4NP-43)!!!0'58a&!3!!!dC*6%8#!!!'-bic!19Ni!#3&`%!!!!#!!!!"3!
!!!-!!!!%!!!!"J!!!!F!N(F"!!!!!J!!!!-!!!!%!!!!"3!!!!B!!!!(!*"a#3!
%%R"jCAK`BA3ZBfCY0MKV,R0XBJ#3,9"jG'KcD'aL!*")2j!%!*!*93'3!!%*!RX
!N"3"!*"+$!#3"aCYGf9bDh0IF'aeCfPZAf0[EQCTCbjS!*!,!3#3%38"!!!$!!%
!N"3$!J%"!3!!!3%$!3#3#!%!!!!"!*!(!J!"!"`!N"m"!*!(#J!!!!)!N!F5!!!
!!`#3"a`!!!!%!*!(*`!!!!8!N!Fh!!!!"J#3"e)!!!!(!*!(B`!!!!J!N!GU!!!
!#3#3"hF!!!!+!*!(M!!!!!X!N!HD!!!!$!#3"kN!!!!0!*!(Z!!!!!i!N!I(!!!
!$`#3"p3!!!!3!*!(i3!!!"%!N!I[!!!!%J#3"rB!!!!6!*!'!38!!!!8!*!'!4%
!!!!9!*!'!5!!!!!@!*!'!5d!!!!A!*!'!6X!!!!B!*!'!8)!!!!C!*!'!9-!!!!
D!*!'!@)!!!!E!*!'!@d!!!!F!*!'!AJ!!!!G!*!'!B`!!!!H!*!'!CJ!!!!I!*!
'!D3!!!!J!*!'!DX!!!!K!*!'!EN!!!!L!*!'!F`!!!!M!*!'!GF!!!!N!*!'!HF
!!!!P!*!'!Ii!!!!Q!*!'!KF!!!!R!*!'!L!!!!!S!*!'!Lm!!!!T!*!'!N!!!!!
U!*!'!P%!!!!V!*!'!Q%!!!!X!*!'!Qi!!!!Y!*!'!Ri!!!!Z!*!'!S`!!!![!*!
'!TN!!!!`!*!'!UN!!!!a!*!'!V8!!!!b!*!'!XB!!!!c!*!'!Y%!!!!d!*!'!Yd
!!!!e!*!'!Z`!!!!f!*!'![X!!!!h!*!'!`)!!!!i!*!'!`m!!!!j!*!'!am!!!!
k!*!'!bm!!!!l!*!'!c`!!!!m!*!'!dJ!!!!p!*!'!eN!!!!q!*!'!f3!!!!r!*!
'!f`!!!"!!*!'!hJ!!!""!*!'!i8!!!"#!*!'!j3!!!"$!*!'!kJ!!!"%!*!'!l3
!!!"&!*!'!m8!!!"'!*!'!pi!!!"(!*!'!rB!!!")!*!'"!-!!!"*!*!'""!!!!"
+!*!'"#S!!!",!*!'"$S!!!"-!*!'"&%!!!"0!*!'"&i!!!"1!*!'"(F!!!"2!*!
'"(X!!!"3!*!'")8!!!"4!*#l!3)!!!`!!!!%!*!%53!!!%S!N!3&!!!"!*!%5`!
!!%`!N!3&!!!"!*!%63!!!%i#!!!,"3%"!3#3"%m!N!X"!!3!!3#3$J%!)!#3r`!
!AepTEQPdD@&XDATP!*!eAh0dBA*d!*!jAepdCA*YD@jKG'8!N$J"!!!!#3!!"@%
ZEh9d!*!k2j!%39"36!!!!B"B`!#33Mq3"!#3#98"N!!"#3*l!*!1!B!!N%m-!*!
(&QehCA*VFep`E(9RD@jIBfpZCQPR,QJ!N!X"!3!"!*!1$J#3"`%!N!3+99"*,R"
bC@CTH!#3&J%!N!8"!!%!!`!!$dTKGQ&$E'&cFf9c,QTKFJ#3%&T*8#"09eT3!*!
&!3!"!!!*6@9bCf8J6h9d!*!f2j!%39"36!!"!3!!"%4-4eKMDfPN8(*[DPG68%-
!$J#3"`%!N!3+99"*,R"bC@CTH!#3&J%!N!8"!!%!!J#3)!%"!3!!!3%!!3!"!3%
!!!%"!!%!"3%!!!-!!3#3#(Ki,N0'66Bi5`"6Eh9bBf9c!%aTBR*KFQPPF`"iH'e
[C(9XC5jM!(Ki,N0'66Bi5bke,Q9iF!"08d`J8fK-D@*5G@jdD@eP3dC00MK,,Na
TBJ"3HA4SEfj$Eh*P3dC00MK,!(Ki,R"`B`"iH#j`F'-ZY5jPH(!!690-)&0S6'P
L8R9ZG'PYC5j-D@)!8(PdD'pZ3fpbC9"33`!kH(JZ3dC00MK,,R0XBJ"-D@)J5@e
`Eh*d)$Bi5`"08&FJ5@e`Eh*d)$Bi5`"#B@aXEfpZ)%KPE(!!69FJ3bp$+bXJ0MK
,!%eA)&"KFf0KE#!f1%X!69FJ8Q9k!&"&4L"*EA"[FR3J0MKV!$TiH#j`F'-ZFfa
L!%aTBL"*EA"[FR3J8&"$!%eA)%-[3bXV)&"33`"09b"3BA0MB@`J8&"$!&"33d&
cE3"B3dp'4L"*EA"[FR3J8&"$!&"&4L"*EA"[FR3J8&"$!(Ki,R"bDLjPH(!!8(P
dD'pZ3fpbC3!k6@pNG@aPFcTiH'e[C(9XC5jM!$TiH#j`FQSZCAK`!$T3HA4SEfj
$Eh*P!$TK,QpeG!"iE@adEfXZ3dC00MK,!$TiE@adEfXZBfCY0MKV,R0XBJ"iE@a
dEfXZF("M!$TiE@adEfXZF("M,R0XBJ"XD@*iE@adEfXJ+'0QE6BiDbNZ6'PL!'a
TBRKYE(4[Db!SF("M)%G98dNT,NaTBJ"iE@adEfXZB`"iE@adEfXZF(*U,Q9iF!"
0B@028b!f1%XJ6'PZDf9b!%eKBdp6)&"33b"-D@jVCA)!3h9cG'pY)%YPHAG[FQ4
c!%&MBf9cFb"3BA4SF`"8BA*RCA3J8f9dG'PZCh-!4QPXC5"0BA"`D@jRF`"#G@P
XC#"&H(4bBA-!4'9LG@GRCA)J9'&bCf9d!$Bi5b"$Ef4P4f9Z!$Bi5b"%DA0KFh0
PE@*XCA)!0MK,)%aTEQYPFJ!f1%XJ8(*[DQ9MG!"$,d-V+b"$Efe`D@aPFJ"$,d-
V+b"ABA*ZD@jRF`"$4Ndf1%X!59)J6h"dD@eTHQ9b!&"KFf0KE#"$Efe`D@aPFJ"
3BA0MB@`J9f&bEQPZCh-!8Q9k)%0[EA"TE'9b!&"33b"$Ef4P4f9Z!&"33b"%DA0
KFh0PE@*XCA)!8&"$)%aTEQYPFJ"38%-J8%9'!&"33b"3FQpUC@0d!&"33d&cE5"
3B@jPE!"`H@9iF'&d,N0'66Bi5`!kF(PPH("KG#jMCQdf1'XZFfaL!("jCAK`BA3
ZF("M!$T`H@9iF'&d,R"`BbjcE')!E'PLCAK`BA3J+$4T1'3J4e9655NZ6'PL!'a
TBQ9iF'&d)#K`F'-J4e9655NZ6'PL!'aTBQ9iF'&d,R"bDJ"XD@*PH("KG#!f1'X
!1QaTBQ9iF'&d)#JdD6KN)%G98dNT,NaTBJ"XD@*PH("KG#"MCQdf1'X!1QaTBQ9
iF'&d)#KMCQdf1'XT,NaTBJ"XD@*PH("KG#"`F'-!1QaTBQ9iF'&d)#K`F'-J4e9
655NZ6'PL!'&XE!"`H@9iF'&d,Q-!F(PPH("KG#j`FQSZCAK`!*$r!*$r!*$r!*"
b!J!!!%)"!!!#!*!*"!!"!!!!3l&[T)8!!(1%!*$r!*$m4!)!!!)!N!N%!!%!!!"
&X@qMp2rrp"3!N2m!N2S)!!!!!J!$!!!!"33!!!3!!3!"1J#3r`#3r`!"!!!!rj!
%!!!!!J!"!!%k1MS!N2m!N2i"!!!!rj!%!!!!"!!"!!%kN!4$9dG98dNk!*$r!*$
f!3!!!2q3"!3!!!-!!J!"1NePG(*[Gf9bDh-J8h4KEQ4KFQ3J6'PLFQ&bH6T08d`
J3cS!N2m!N0i"!!!!rj!%3!!!!3!#!!%k6@&M6e-J8h9`F'pbG$S!N2m!N2)"!!!
!rj!%3!!!!J!#!!!!!J!#!*!d!3!!#8ePFQGP)%peG!#30Mq3"%&38%`!!3%!!!4
%6%GBBfYTC&"bEfTA8e"$!!)!!!!#!!)!N#F#!*!K!3#3'3F"!3#3"!%!N$YTEQP
dH'PZDA4iH!#3I3B!!!!#!!%!(!#3'`-!!J!S!*!B!3!!!`!!!!B#!3#3"3%!!J-
!N!`"!fi!N!B"!!!'!!!!(!)"!*!&!3!"!`#3$!%!N!J"!!!-!!!!5!)"!*!&!3!
"!J#3&3%!!!d!!!"3!J%!N!8"!!%"!*!-!3#3#!%!!!i!!!"4!J%!N!8"!!%"!*!
-!3#3#!%!!!m!!!"-"3%!!!%!!!`!!3#3$B%!N!J"!!!1!!!!83)"!*!&!3!"!3#
3$!%!N!J"!!!1!!!!83)"!*!&!3!"!3#3$!%!N"!"!3!!rj!%!*!J!3%!!2q3"!#
3)!%"!!$rN!3!N#!"!3!!rj!%!*!J!3%!!2q3"!#3)!%"!!$rN!3!N#!"!3!!rj!
%!*!J!3%!!2q3"!#3)!%"!!$rN!3!N#!"!3!!rj!%!*!J!3%!!2q3"!#3)!%"!!$
rN!3!N#!"!3!!rj!%!*!J!3%!!2q3"!#3)!%"!!$rN!3!N#!"!3!!rj!%!*!J!3%
!!2q3"!#3)!%"!!$rN!3!N#!"!3!!rj!%!*!J!3%!!2q3"!#3)!%"!!$rN!3!N#!
"!3!!rj!%!*!J!3%!!2q3"!#3)!%"!!$rN!3!N#!"!3!!rj!%!*!J!3%!!2q3"!#
3)!%"!!$rN!3!N#!"!3!!rj!%!*!C"`!!6@&M6e-J0MK,)%aTEQYPFJ#3r`#3r`#
3mR"jCAK`BA3Z3dC00MK,!*$c!3!"1J#3r`#3r`#3"J%!!3#3r`#3r`#3"`%!N2m
!N2m!N2m!N#`9!3%!N!8$!*$r!*!,!3#3"!J!N2m!N2m!N!4%4Na8$dePG(*[Gf9
bDh-J5Q&fB3#3-%PZG'9bEQ9d)%9iF'a[FQ9b!*$r!*$d4%C-9!#3r`!!!J'3"3!
"!*!&690*43#3r`#3r`!!D(4dF$S[,fTKGQ%ZFh9Z,Q0[E5p`FQpNG@0dFbpUC'X
[-5ia,f4[Bh-[BA"T,`#3d`J!!3#3#$,)!!!bb!!!-XJ'Fh4NGfPZ!*$m"3!"$(K
iE@pNG@aP,R0XBJ#3%e"C9%KcD'aL!*"a!6q3"!#3"`)!8!!"!!%!!3!"!*$r!"3
R3dp%45FJ*d4"9%%R)#G35808*`#3l!%!N"N%!!%!N%%#!!3!N%J"!!!#!!!+6Np
138e&,N9B43#3&N!!N!3%!*!%"!!!"!#3"!3!93'3!!%*!RX!N$S"!!!#!!!+6Np
138e&,N9B43#3&N!!N!3%!*!%"!!!"!#3"!3!93'3!!%*!RX!N"%"!*!(&`!!!!)
!N!FS!!!!!`#3"cF!!!!%!*!(8!!!!!8!N!GU!!!!"J#3"i%!!!!(!*!(Q!!!!!J
!N!HZ!!!!#3#3"mN!!!!+!*!(hJ!!!!X!N!Id!!!!$!#3"J%0!!!!$3#3"J%Q!!!
!$J#3"J%h!!!!$`#3"J&4!!!!%!#3"J&V!!!!%3#3"J'"!!!!%J#3"J'F!!!!%`#
3"J'a!!!!&!#3"J($!!!!&3#3"J(C!!!!&J#3"J(`!!!!&`#3"J)(!!!!'!#3"J)
K!!!!'3#3"J)j!!!!'J#3"J*0!!!!'`#3"J*E!!!!(!#3"J*R!!!!(3#3"J*p!!!
!(J#3"J+8!!!!(`#3"J+S!!!!)!#3"J+m!!!!)3#3"J,2!!!!)J#3"J,R!!!!)`#
3"J,j!!!!*!#3"J--!!!!*3#3"J-L!!!!*J#3"J-i!!!!*`#3"J0'!!!!+!#3"J0
G!!!!+3#3"J0d!!!!+J#3"J1(!!!!+`#3"J1I!!!!,!#3"J1a!!!!,3#3"J2!!!!
!,J#3"J26!!!!,`#3"J2R!!!!-!#3"J2l!!!!-3#3"J35!!!!-J#3"J3R!!!!-`#
3"J3j!!!!0!#3"J43!!!!03#3"J4X!!!!0J#3"J5!!!!!0`#3"J5C!!!!1!#3"J5
h!!!!13#3"J65!!!!1J#3"J6`!!!!1`#3"J8-!!!!2!#3"J8R!!!!23#3"J9"!!!
!2J#3"J9J!!!!2`#3"J9j!!!!3!#3"J@6!!!!33#3"J@`!!!!3J#3"JA0!!!!3`#
3"JAL!!!!4!#3"JAp!!!!43#3"JBG!!!!4J#3"JBl!!!!4`#3"JCC!!!!5!#3"JC
c!!!!53#3"JD5!!!!5J#3"JDV!!!!5`#3"JE"!!!!6!#3"JEE!!!!63#3"JEf!!!
!6J#3"JF4!!!!6`#3"JFX!!!!8!#3"JG%!!!!83#3"JGI!!!!8J#3"JGi!!!!8`#
3"JH3!!!!!&3!N!B(T`!!!&8!N!B(``!!!&B!N!B(f3!!!&F!N!B(m!!!!&J!N!B
)#J!!!&N!N!B)*!!!!&S!N!B)0J!!!&X!N!B)6J!!!&`!N!B)D`!!!&d!N!B)KJ!
!!&i!N!B)S3!!!&m!N!B)Z!!!!'!!N!B)e!!!!'%!N!B)kJ!!!')!N!B)r3!!!'-
!N!B*&!!!!'3!N!B*,!!!!'8!N!B*4!!!!'B!N!B*BJ!!!'F!N!B*HJ!!!'J!N!B
*PJ!!!'N!N!B*X!!!!'S!N!B*b`!!!'X!N!B*k3!!!'`!N!B+"J!!!'d!N!B+)!!
!!'i!N!B+3`!!!'m!N!B+A!!!!(!!N!B+GJ!!!(%!N!B+N3!!!()!N!B+TJ!!!(-
!N!B+[`!!!(3!N!B+eJ!!!(8!N!B+lJ!!!(B!N!B,#3!!!(F!N!B,)`!!!(J!N!B
,1J!!!(N!N!B,@J!!!(S!N!B,F!!!!(X!N!B,K`!!!(`!N!B,TJ!!!(d!N!B,`J!
!!(i!N!B,i3!!!(m!N!B,rJ!!!)!!N!B-'J!!!)%!N!B-13!!!))!N!B-9!!!!)-
!N!B-G!!!!)3!N!B-MJ!!!)8!N!B-U3!!!)B!N!B-a`!!!)F!N!B-j3!!!)J!N!B
-q`!!!)N!N!B0&!!!!)S!N!B0-!!!!)X!N!B063!!!)`!N!B0D!!!!)d!N!B0K!!
!!)i!N!B0S`!!!)m!N!B0a!!!!*!!!*!'$H-!!!#4!*!'$J)!!!#5!*!'$Kd!!!#
6!*!'$Md!!!#8!*!'$PF!!!#9!*!'$Qi!!!#@!*!'$SN!!!#A!*!'$U8!!!#B!*!
'$X%!!!#C!*!'$Ym!!!#D!*!'$[S!!!#E!*!'$ai!!!#F!*!'$cJ!!!#G!*!'$e-
!!!#H!*!'$fm!!!#I!*!'$iJ!!!#J!*!'$k3!!!#K!*!'$li!!!#L!*!'$pF!!!#
M!*!'$r-!!!#N!*!'%!X!!!#P!*!'%#J!!!#Q!*!'%$m!!!#R!*!'%&F!!!#S!*!
'%()!!!#T!*!'%)d!!!#U!*!'%+!!!!#V!*!'%,B!!!#X!*!'%-m!!!#Y!*!'%1N
!!!#Z!*!'%3%!!!#[!*!'%4S!!!#`!*!'%6B!!!#a!*!'%93!!!#b!*!'%A!!!!#
c!*!'%B`!!!#d!*!'%D3!!!#e!*!'%F%!!!#f!*!'%GJ!!!#h!*!'%H`!!!#i!*!
'%J3!!!#j!*!'%Kd!!!#k!*!'%MB!!!#l!*!'%P%!!!#m!*!'%QN!!!#p!*!'%SS
!!!#q!*!'%U%!!!#r!*!4#!!!!!)!!`!!!!8%!!!&!!%!!6S!N2m!N2m!!3!!!2q
3"!!!!!)!!3!"1MSk!*$r!*$q!3!!!2q3"!!!!!3!!3!"1T!%3eG(990*1J"ME(9
NC6S!N2m!N1m"!!!!rj!%"!!!"!!#!!%k6@9dFQphCA*VFb"6G'&ZC'&bC#"-D@*
bBA*j1Ne66#"$1J#3r`#3hJ%!!!$rN!4!!!!#!!)!!6T0B@028b"6GA"`Eh*d1J#
3r`#3mJ%!!!$rN!4!!!!$!!%!!3#3r`#3r`#3"`F"!3#3"!&IAfPZDA4TB@aTHQ8
!N'pIAh4PFPpIG'9bE@PZBA4P!*!a!3!!!!056dp8!*!-!NG599!!N!F""e0[GA*
MCA-!!!!%4NP-43)!!!P'58a&!J!!#NG599!!N!F$$f9iF'&d)'aTBR*KFQPPF`#
3"%C*6%8"!!!,4e*98!#3"`)*6'PLFQ&bD@9c!!!!!dC*6%8#!!!$4NP-43%!!!0
'58a&!J!!"[rrr`Gi)-!(H#j!!*!'-S!(ZU8F!2rrr`$rrrm!rrrr"hJJ`!#3&3F
!!%eKBdp6)&"33b"-D@jVCA)!N2m!N2m!N2*`H@9iF'&d,R"`B`#3pJ%!!6S!N2m
!N2m!N!B#!!C0B@028b"38%-J6'PZDf9b!*!4'N&38%`!N%"J!!!!3A"`E!#33'!
!!!"068a#!*!J6'PL)%PYF'pbG#"38%-!N"C08%a'!*!J6'PL)%PYF'pbG#"38%-
!N"C09d0%!*"!B!!!!&*68N-!N%"J!!!!9%9B9#jLD!"MbUY3!!-`b!!8VG!!!!&
q!FUV8!!8CF!!!!,@3Q&XE'p[EL")C@a`!*!'(33"bUZ!!"4P`!'(PY3!N!4849K
8,Q-!N"j09b"$,d-V+b"38%-!N"K849K8,Q-V+`#3(%eA)%-[3bXV)&"33`#3'&4
&@&3ZBf-!N"e09b"$,d-V+b"38%-!N"K849K8,Q0`!*!G69FJ3bp$+bXJ8&"$!*!
B9%9B9#jMF(!!N"a09b"$,d-V+b"38%-!N"K849K8,Q9iF!#33&4&@&3ZD!#3(Ne
A)%-[3bXV)&"33`#3&"!!!!"849K8,R!!N"j09b"3BA0MB@`J8&"$!*!A9%9B9#j
`BA-!N"a09b"3BA0MB@`J8&"$!*!A9%9B9#j`BfJ!N"a09b"$,d-V+b"38%-!N"5
!!!!!9%9B9#j`BfJV+`#3'NeA)%-[3bXV)&"33`#3&)!!!!"849K8,R)!N"j09b"
5CAS!N"j849K8,R-!D'2+Ue!!!c$)!"5Yd!!!!Ai"bUY3!"4P`!!!!YC38%0"Ffd
!EL")C@`!N!BG"!(+Ui!!&'A!!BH@e!#3"&K$6dB!N#"B3dp'4L"*EA"[FR3J8&"
$!*!8C'pMG3#33'!!!!"bFh*M!*"!B!!!!(0SE')!N#"348BJ5@e`Eh*d)&"33`#
3&R0dG@)!N#"348BJ5@e`Eh*d)&"33`#3'LjNEf-!N$a3!!!!6@&M6e-J0MK,)%a
TEQYPFJ#3%4T"8&"-!*"!B!!!!%&`F'`!N%"J!!!!68e-3J#3)%aTBL"*EA"[FR3
J0MK,!*!@69"-4J#3)%aTBL"*EA"[FR3J0MK,!*!@69G$4!#33'!!!!"23NSJ!*!
J69"A)%PYF'pbG#!f1%X!N"C58e*$!*"!B!!!!&4&@&3ZBQJ!BmUV8!!$--J!&+h
3!!!"IJ(+Ue!!&'A!!!!#eN*KE'a[EfiJ5'9XF!#3"Kd%!FUVJ!!8CF!"KjE8!*!
%9%9B9#jM!*!H69FJ3bp$+bXJ0MK,!*!B9%9B9#jM+bX!N"a09b"$,d-V+b!f1%X
!N"K849K8,Q0M!*!G69FJ3bp$+bXJ0MK,!*!B9%9B9#jMF!#3(8eA)%-[3bXV)$B
i5`#3'&4&@&3ZBh"`!*!F69FJ3bp$+bXJ0MK,!*!B9%9B9#jPH(!!bUY3!!-`b!!
8VG!!!!&q!FUV8!!8CF!!!!,@!-FUG!aiUi!"bUj%!"199!!!(33"bUZ!!"4P`!'
(SM`!N!4849K8,QJ!N"j09b"$,d-V+b!f1%X!N"33!!!!9%9B9#j`!*!H69FJ8'&
cBf&X)$Bi5`#3&e4&@&3ZF'&c!*!F69FJ8'&cBf&X)$Bi5`#3&e4&@&3ZF'0S!*!
F69FJ3bp$+bXJ0MK,!*!8J!!!!&4&@&3ZF'0S+bX!N"T09b"$,d-V+b!f1%X!N"5
!!!!!9%9B9#jb!*!H69FJ8Q9k!*!H9%9B9#jcC@F!bUY3!!-`b!!8VG!!!!&q!FU
V8!!8CF!!!!,@!-FUG!aiUi!"bUj%!"199!!!(33"bUZ!!"4P`!'(SM`!N!4NEf0
e!*"!B!!!!(*cFQ-!N%"J!!!!FfKXBJ#3)&"&4L"*EA"[FR3J0MKV!*!@Fh4eBJ#
3)&"&4L"*EA"[FR3J0MKV!*!D,Q4[B`#32&!!!!"AD@ic-L"i1$BJ6'PZDf9b!*!
4#94&@&3ZB`#3(NeA)%-[3bXV)(Ji0J#3'&4&@&3ZBbXV!*!F69FJ3bp$+bXJH$J
f!*!B9%9B9#jMF!#3(8eA)%-[3bXV)(Ji0J#3'&4&@&3ZBh"`!*!F69FJ3bp$+bX
JH$Jf!*!B9%9B9#j`BfJ!N"a09b"$,d-V+b"i1$B!N"5!!!!!9%9B9#j`BfJV+`#
3'NeA)%-[3bXV)(Ji0J#3&)!!!!"849K8,R*M!*!G69FJ9fPZ8N-!N#!ZE'PL!*!
F6'PL)%PYF'pbG#"i1$B!N"SZEf*U!*!F6f*U)%PYF'pbG#"i1$B!N"C03b"-D@j
VCA)!N"J)68e$5!#34&4&@&3ZB`#3(Ne$)%-[3bXV!*!F9%9B9#jME(-!N"a03b"
$E'&cFb"$Efe`D@aPFJ#3$i!!!!"849K8,Q4PCJ#33&4&@&3ZC'pM!*!m%!!!!&4
&@&3ZD!#32K!!!!"849K8,R"MD!#3(%e$)%-[3bXV!*!BJ!!!!&4&@&3ZG(-!N%&
1EfjP!*!G!8e08()!N%"!!!!!6@&M6e-J6@9bCf8!N"B(39"36!#33'!!!!""F("
X!*"!B!!!!&*68N-!N%"J!!!!9%9B9#jLD!#3(8*KE'a[EfiJ5'9XF!#3'&4&@&3
ZFJ#3(P*PHJ#3)A*cFQ-!N%"J!!!!FfKXBJ#3433!N"!"!*$r!*"%AepcG'&bG!#
3I!%!!3#3r`#3r`#3r`#3,"8"!3#3"3-!N2m!N!X"!*!%#!#3r`#3r`#3"%4'6&3
26@9dFQphCA*VFb"+BACK!*!`5@jdCA*ZCA3J4AK`E'pbCA)!N2m!N24%4Na8!*$
r!!!#!C!&!!%!N!908dP&!*$r!*$r!!"SG(4`1Lm[DQ&fB5jcG@iZBfpY,h"bEf4
eBh4c,fTNDbma,M%[C'pMFbpKF'N[!*$6#!!"!*!)1Si!!$U1!!!kMJ#3r`#3"!8
!!3p`H@9iF'&d,R"`BbjcE')!N""3HA4SFfKXBJ#3F3%rN!3!N!F#!&!!!3!"!!%
!!3#3r`!8*d024%8R)#G%394"*b!R8%P$9#F!N1`%!!%!N%%#!!3!N%J"!!!#!!!
+6Np138e&,N9B43#3&N!!N!3%!*!%"!!!"!#3"!3!93'3!!%*!RX!N!S#!!!$!!!
!#J)"!*!&!3!"!`#3$!%$EJ#3"J)!!!B!!!!F!J%!N!8"!!%$!*!-!3#3#!)!!!X
!!!"(!J%!N!8"!!%$!*!-J3#3#!)!!!`!!!")!J%!N!8"!!%#!*!9!J!!$3!!!&!
#!3#3"3%!!3%!N!`"!*!)!J!!$J!!!&%#!3#3"3%!!3%!N!`"!*!)!J!!$J!!!&%
#!3#3"3%!!3%!N!`"!*!)!J!!$J!!!&%#!3#3"3%!!3%!N!`"!*!3!3%!!2q3"!#
3)!%"!!$rN!3!N#!"!3!!rj!%!*!J!3%!!2q3"!#3)!%"!!$rN!3!N#!"!3!!rj!
%!*!J!3%!!2q3"!#3)!%"!!$rN!3!N#!"!3!!rj!%!*!J!3%!!2q3"!#3)!%"!!$
rN!3!N#!"!3!!rj!%!*!J!3%!!2q3"!#3)!%"!!$rN!3!N#!"!3!!rj!%!*!J!3%
!!2q3"!#3)!%"!!$rN!3!N#!"!3!!rj!%!*!J!3%!!2q3"!#3)!%"!!$rN!3!N#!
"!3!!rj!%!*!J!3%!!2q3"!#3)!%"!!$rN!3!N#!"!3!!rj!%!*!J!3%!!2q3"!#
3)!%"!!$rN!3!N#!"!3!!rj!%!*!J!3%!!2q3"!#3'`)!!!"#!3!!!J#3#33!!3!
!!%1aEk2irrr#N!!!N2m!N2a%!J!!!J#3#33!!3!!!%@aEk2drrrd&!#3r`#3q`3
!N!3%!&8"N!!"#3*l!*!0!J!!!#N!!!!U!!!!&`!!!#X!!`#3"5`!#!#3"5d!"`#
3"5i!!J#3"5m!"3#3"6!!!3#3"6%!"J#3"6)!!3#3"6-!"`#3"63!#3#3"68!$!#
3"6B!"!#3"6F!"!#3"6J!!3#3"6N!$J#3"6S!!J#3"6X!!J#3"6`!!`#3"6d!!3#
3"6i!"`#3"6m!#!#3"8!!"3#3"8%!!J!!!!)!"NeKBdp6)&"33b"-D@jVCA)!N"%
D39"36!#33'!!!!""F("X!*"!B!!!!%e06%)!N#"-D@)J5@e`Eh*d)&"33`#3&Ne
36%B!N#"-D@)J5@e`Eh*d)&"33`#3&NeA3d3!N%"J!!!!8P053`#33'!!!!"849K
8,Q*S!'2&ET!!!!-`b!!8VH!!!!&j!F9ZN!!!&'A3!!!#eN*KE'a[EfiJ5'9XF!#
3"L@a!F9Z`!!8CG!"JPD8!*!%9%9B9#jM!*!H69FJ3bp$+bXJ8&"$!*!B9%9B9#j
M+bX!N"a09b"$,d-V+b"38%-!N"K849K8,Q0M!*!G69FJ3bp$+bXJ8&"$!*!B9%9
B9#jMF!#3(8eA)%-[3bXV)&"33`#3'&4&@&3ZBh"`!*!F69FJ3bp$+bXJ8&"$!*!
B9%9B9#jPH(!!a@k3!!!$--J!&+hJ!!!"H3(&ET!!!"4Pd!!!!YB!8Q9kYLKZ`!(
&FB3!N!BPX3(&EX!!&'A3!B*Kr!#3"&4&@&3ZD!#3(NeA)%-[3bXV)&"33`#3&"!
!!!"849K8,R!!N"j09b"3BA0MB@`J8&"$!*!A9%9B9#j`BA-!N"a09b"3BA0MB@`
J8&"$!*!A9%9B9#j`BfJ!N"a09b"$,d-V+b"38%-!N"5!!!!!9%9B9#j`BfJV+`#
3'NeA)%-[3bXV)&"33`#3&)!!!!"849K8,R)!N"j09b"5CAS!N"j849K8,R-!D'2
&ET!!!!-`b!!8VH!!!!&j!F9ZN!!!&'A3!!!#eP"33d&cE3"Z)%KPE!#3"L@a!F9
Z`!!8CG!"JPD8!*!%@%024J#3)&K$6dC')%PYF'pbG#"38%-!N"4NEf0e!*"!B!!
!!(*cFQ-!N%"J!!!!FfKXBJ#3)&"&4L"*EA"[FR3J8&"$!*!@Fh4eBJ#3)&"&4L"
*EA"[FR3J8&"$!*!D,Q4[B`#32&!!!!"0B@028b!f1%XJ6'PZDf9b!*!4'N&38%`
!N%"J!!!!3A"`E!#33'!!!!"068a#!*!J6'PL)%PYF'pbG#!f1%X!N"C08%a'!*!
J6'PL)%PYF'pbG#!f1%X!N"C09d0%!*"!B!!!!%p#5L!!N#"08&FJ5@e`Eh*d)$B
i5`#3&P*68N-!N%"J!!!!9%9B9#jLD!"MhJ!#&,a!J*S+!80Uj3%j9'm!!!!"!*!
%!80#B@aXEfpZ)%KPE(!!bJ&U!)J"194Z!80Uj!!j!@K-FJ#3"&4&@&3ZB`#3(Ne
A)%-[3bXV)$Bi5`#3'&4&@&3ZBbXV!*!F69FJ3bp$+bXJ0MK,!*!B9%9B9#jMB`#
3(8eA)%-[3bXV)$Bi5`#3'&4&@&3ZBh!!N"e09b"$,d-V+b!f1%X!N"K849K8,Q0
`F!#3(%eA)%-[3bXV)$Bi5`#3'&4&@&3ZCAK`!,a!J*S+!6PAl`&$Bpm!N!J"3f2
H)!3!1J%k,S!"1&!L!3!!!!&$Bpi"19IZ!Hi!N!B4!*!&9%9B9#jS!*!H69FJ3bp
$+bXJ0MK,!*!8%!!!!&4&@&3ZF!#3(NeA)&"KFf0KE#!f1%X!N"G849K8,R"KF`#
3(%eA)&"KFf0KE#!f1%X!N"G849K8,R"MD!#3(%eA)%-[3bXV)$Bi5`#3&)!!!!"
849K8,R"MD#XV!*!D69FJ3bp$+bXJ0MK,!*!8J!!!!&4&@&3ZFJ#3(NeA)&*PHJ#
3(P4&@&3ZFf9R!,a!J*S+!6PAl`&$Bpm!N!J"3f2H)!3!1J%k,S!"1&!L!3!!!!&
$Bpi"19IZ!Hi!N!B4!*!&C'pMG3#33'!!!!"bFh*M!*"!B!!!!(0SE')!N#"348B
J5@e`Eh*d)$BiD`#3&R0dG@)!N#"348BJ5@e`Eh*d)$BiD`#3'LjNEf-!N$a3!!!
!9fPZ-c)JH$Jf)%aTEQYPFJ#3%3P849K8,Q-!N"j09b"$,d-V+b"i1$B!N"K849K
8,Q-V+`#3(%eA)%-[3bXV)(Ji0J#3'&4&@&3ZBh!!N"e09b"$,d-V+b"i1$B!N"K
849K8,Q0`F!#3(%eA)%-[3bXV)(Ji0J#3'&4&@&3ZF'0S!*!F69FJ3bp$+bXJH$J
f!*!8J!!!!&4&@&3ZF'0S+bX!N"T09b"$,d-V+b"i1$B!N"5!!!!!9%9B9#jbB`#
3(8eA)>EP*$!*!J,QaTBJ#3(%aTBL"*EA"[FR3JH$Jf!*!D,QpLDJ#3(%pLDL"
*EA"[FR3JH$Jf!*!@68-J6'PZDf9b!*!B#%e03dJ!N%4849K8,Q-!N"j03b"$,d-
V+`#3(&4&@&3ZBfac!*!F68-J3faKFh-J3fpYF'PXCA)!N!q!!!!!9%9B9#jNC@B
!N%"849K8,Q4[B`#32"!!!!"849K8,QJ!N$i3!!!!9%9B9#j`BfJ!N"a03b"$,d-
V+`#3')!!!!"849K8,R4c!*""6QpZC3#3(3&069"b!*"!3!!!!%eKBdp6)%ePFQG
P!*!@"d&38%`!N%"J!!!!3A"`E!#33'!!!!"58e*$!*"!B!!!!&4&@&3ZBQJ!N"e
#B@aXEfpZ)%KPE(!!N"K849K8,R)!N"j5CAS!N#&bFh*M!*"!B!!!!(0SE')!N%B
$[`!!&!"YFh4b!*!1CMF!!!N!EA0dE!#3$KHr!!!$!'ecG'i!N!i"`!!!!#KYFh4
T!*!1,IN!!!J!EA0dFJ!!!qJ!N!SN`J!!")"YFh4X!!!$k!#3#KUr!!!"J'ecG'i
!!!2S!*!+!bF!!!!+F(*PCJ#Ja-S!!!!"!*!'!c%!!!!`F(*PCJ#J[K3!!!!#!*!
'!f%!!!"+F(*PCJ#J,r`!!!!$!*!'!kX!!!!8F(*PCJ#JMdd!!!!%!*!'4Q%!!!"
!EA4cE!!!!!%!N!T'S3!!"D"YG("X!!!!!3#3#J(S!!!!&'edE'm!!!!"!*!+!I`
!!!!3EA4`D3!!!!%!N!S"+!!!!!T`FQ9Q!+$U+`!!!"S!N!B"-J!!!$"`FQ9Q!+!
%S3!!!"X!N!B"BJ!!!%T`FQ9Q!+!K$!!!!"`!N!B"V!!!!"4`FQ9Q!+$k[J!!!"d
!N!BNSJ!!!#"YG(0X!!!!!J#3#UcK!!!&S'edF'`!!!!#!*!+!J`!!!!8EA4XE`!
!!!)!N!S#)!!!!""YG("T!!!!!J#3#MAj!!!%0'edCf`!!!2S!*!+(a`!!!)XEA"
cD3!!!qJ!N!SK5!!!!-"36(0d!+!$I!!!!$-!N!B#3!!!!#KYFh4T!!!$k!#3#L)
)!!!!N!"YG("c!!!!!3#3#L+B!!!!N!"YG("c!!!!!J#3#VE2!!!!$'eKE'`!N!k
ff`!!!,aYBA"X!*!1!VJ!!!!DF(*PCJ!'`RS!!!"m!*!'1Ld!!!TJF(*PCJ!')Q8
!!!"p!*!'6%%!!!B-F(*PCJ!'K!8!!!"q!*!'YjF!!"CiF(*PCJ!'`1B!!!"r!*!
'(EF!!!%(F(*PCJ!'QJ)!!!#!!*!'8Nd!!!))F(*PCJ!'C03!!!#"!*!'!Y)!!!!
BF(*PCJ!'dmd!!!##!*!'!M!!!!!+F(*PCJ!'H6`!!!#$!*!'!ZS!!!!1F(*PCJ!
'T6N!!!#%!*!')bJ!!!%'F(*PCJ!'Gr)!!!#&!*!'*#i!!!!mF(*PCJ!'liF!!!#
'!*!'![J!!!!1F(*PCJ!'f`F!!!#(!*!'+C)!!!(DF(*PCJ!'rE!!!!#)!*!'9&8
!!!-bF(*PCJ!'R'-!!!#*!*!'!`B!!!!-F(*PCJ!'H,N!!!#+!*!'9iF!!!%3F(*
PCJ!'p(i!!!#,!*!',1J!!!!bF(*PCJ!'fkX!!!#-!*!'@*F!!!93F(*PCJ!'&2B
!!!#0!*!'AHF!!!-5F(*PCJ!'LYS!!!#1!*!',4S!!!"LF(*PCJ!'*+N!!!#2!*!
',A`!!!!iF(*PCJ!',c8!!!#3!!#3"J-5!!!!$A"bC@B!"RSS!!!!N3#3"Kkq!!!
!&("bC@B!"K,&!!!!NJ#3"Kl5!!!!#R"bC@B!"UcN!!!!N`#3"N@8!!!!a("bC@B
!"`*Z!!!!P!#3"Q$j!!!"'("bC@B!"VCH!!!!P3#3"Q)4!!!!U("bC@B!"JmS!!!
!PJ#3"N50!!!!,R"bC@B!"Q#d!!!!P`#3"Q+j!!!#$("bC@B!"LF$!!!!Q!#3"Lf
d!!!!)R"bC@B!"TM(!!!!Q3#3"L4U!!!!%("bC@B!"TQ'!!!!QJ#3"Q6&!!!!'R"
bC@B!"Rf9!!!!Q`#3"Q6I!!!!NR"bC@B!"LNX!!!!R!#3"Q9a!!!!5R"bC@B!"N@
c!!!!R3#3"K`r!!!!'R"bC@B!"N#*!!!!RJ#3"Qmh!!!+B("bC@B!"PNH!!!!R`#
3"Rdh!!!'$("bC@B!"`Ki!!!!S!#3"S0$!!!@H("bC@B!"M*e!!!!S3#3"KaC!!!
""h"bC@B!"Z@E!!!!SJ#3"RQA!!!##("bC@B!"PHI!!!!S`#3"KeJ!!!!'("bC@B
!"V%J!!!!T!#3"Kei!!!!#R"bC@B!"Z#h!!!!T3#3"Kf#!!!!$R"bC@B!"MT#!!!
!TJ#3"LYZ!!!""R"bC@B!"`F!N!5R!*!',(3!!!!mF(*PCJ!'j-i!!!#S!*!'(C!
!!!!!$R"bC@B!"XJ2!!!!U3#3"TQl!!!"fR"bC@B!"R3F!!!!UJ#3"TZ9!!!$-R"
bC@B!"K-%!!!!U`#3"KfH!!!!$("bC@B!"Tak!!!!V!#3"Tl(!!!"%("bC@B!"Q'
1!!!!V3#3"KlU!!!!-R"bC@B!"YmM!!!!VJ#3"TrA!!!&8("bC@B!"X@c!!!!V`#
3"U8R!!!$%R"bC@B!"V`S!!!!X!#3"N6)!!!!BR"bC@B!"M'(!!!!X3#3"Lb`!!!
!1("bC@B!"ZR[!!!!XJ#3"KfU!!!!$A"bC@B!"S#J!!!!X`#3"L5&!!!!&("bC@B
!"X%T!!!!Y!#3"LhI!!!!#R"bC@B!"Ub%!!!!Y3#3"RZI!!!!a("bC@B!"P#l!!!
!YJ#3"UJj!!!"'("bC@B!"Q2r!!!!Y`#3"UP4!!!!U("bC@B!"KTN!!!!Z!#3"N8
U!!!!,R"bC@B!"Ylp!!!!Z3#3"URj!!!#$("bC@B!"Y*'!!!!ZJ#3"N9B!!!!)R"
bC@B!"MQE!!!!Z`#3"LhT!!!!%("bC@B!"NAI!!!![!#3"N9k!!!!'R"bC@B!"R1
J!!!![3#3"U`&!!!!NR"bC@B!"QEH!!!![J#3"UbA!!!!5R"bC@B!"XL)!!!![`#
3"J*S!!!!8'ecF'N!!!!"!*!++8)!!!"3EA0`D3!!!!)!N!M9r`!!:
lib/python/Shared/DC/xml/pyexpat/pyexpattest.py
0 → 100644
View file @
d2449399
# Very simple test - Parse a file and print what happens
import
sys
import
pyexpat
import
sys
import
os
class
Outputter
:
def
__init__
(
self
,
verbose
=
0
):
self
.
startcount
=
0
self
.
endcount
=
0
self
.
cdatacount
=
0
self
.
instcount
=
0
self
.
verbose
=
verbose
def
startelt
(
self
,
name
,
attrs
):
self
.
startcount
=
self
.
startcount
+
1
if
self
.
verbose
:
print
'start'
,
name
for
i
in
range
(
0
,
len
(
attrs
),
2
):
print
'attr'
,
attrs
[
i
],
attrs
[
i
+
1
]
def
endelt
(
self
,
name
):
self
.
endcount
=
self
.
endcount
+
1
if
self
.
verbose
:
print
'end'
,
name
def
cdata
(
self
,
data
):
self
.
cdatacount
=
self
.
cdatacount
+
1
if
self
.
verbose
:
print
'cdata'
,
data
def
inst
(
self
,
target
,
data
):
self
.
instcount
=
self
.
instcount
+
1
if
self
.
verbose
:
print
'inst'
,
target
,
data
if
len
(
sys
.
argv
)
>
1
and
sys
.
argv
[
1
]
==
'-v'
:
out
=
Outputter
(
verbose
=
1
)
del
sys
.
argv
[
1
]
else
:
out
=
Outputter
()
if
len
(
sys
.
argv
)
!=
2
:
if
os
.
name
==
'mac'
:
import
macfs
fss
,
ok
=
macfs
.
StandardGetFile
()
if
not
ok
:
sys
.
exit
(
0
)
sys
.
argv
.
append
(
fss
.
as_pathname
())
else
:
print
'Usage: pyexpattest [-v] inputfile'
sys
.
exit
(
1
)
parser
=
pyexpat
.
ParserCreate
()
parser
.
StartElementHandler
=
out
.
startelt
parser
.
EndElementHandler
=
out
.
endelt
parser
.
CharacterDataHandler
=
out
.
cdata
parser
.
ProcessingInstructionHandler
=
out
.
inst
data
=
open
(
sys
.
argv
[
1
]).
read
()
rv
=
parser
.
Parse
(
data
,
1
)
print
'Parser returned'
,
rv
if
rv
==
0
:
print
'** Error'
,
parser
.
ErrorCode
print
'** Line'
,
parser
.
ErrorLineNumber
print
'** Column'
,
parser
.
ErrorColumnNumber
print
'** Byte'
,
parser
.
ErrorByteIndex
print
'Summary of XML parser upcalls:'
print
'start elements:'
,
out
.
startcount
print
'end elements:'
,
out
.
endcount
print
'character data:'
,
out
.
cdatacount
print
'processing instructions:'
,
out
.
instcount
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment