Mercurial > cpython-lru_cache-weakref
annotate Modules/_elementtree.c @ 74917:76dfd1f08025
lib2to3 tests: Don't use deprecated API, switch to assertRegex()
| author | Victor Stinner <victor.stinner@haypocalc.com> |
|---|---|
| date | Mon, 13 Feb 2012 23:31:26 +0100 |
| parents | 65fc79fb4eb2 |
| children | ce1c26cbe5fb |
| rev | line source |
|---|---|
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1 /* |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2 * ElementTree |
|
59601
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
3 * $Id: _elementtree.c 3473 2009-01-11 22:53:55Z fredrik $ |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
4 * |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
5 * elementtree accelerator |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
6 * |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
7 * History: |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
8 * 1999-06-20 fl created (as part of sgmlop) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
9 * 2001-05-29 fl effdom edition |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
10 * 2003-02-27 fl elementtree edition (alpha) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
11 * 2004-06-03 fl updates for elementtree 1.2 |
|
59601
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
12 * 2005-01-05 fl major optimization effort |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
13 * 2005-01-11 fl first public release (cElementTree 0.8) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
14 * 2005-01-12 fl split element object into base and extras |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
15 * 2005-01-13 fl use tagged pointers for tail/text (cElementTree 0.9) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
16 * 2005-01-17 fl added treebuilder close method |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
17 * 2005-01-17 fl fixed crash in getchildren |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
18 * 2005-01-18 fl removed observer api, added iterparse (cElementTree 0.9.3) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
19 * 2005-01-23 fl revised iterparse api; added namespace event support (0.9.8) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
20 * 2005-01-26 fl added VERSION module property (cElementTree 1.0) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
21 * 2005-01-28 fl added remove method (1.0.1) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
22 * 2005-03-01 fl added iselement function; fixed makeelement aliasing (1.0.2) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
23 * 2005-03-13 fl export Comment and ProcessingInstruction/PI helpers |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
24 * 2005-03-26 fl added Comment and PI support to XMLParser |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
25 * 2005-03-27 fl event optimizations; complain about bogus events |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
26 * 2005-08-08 fl fixed read error handling in parse |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
27 * 2005-08-11 fl added runtime test for copy workaround (1.0.3) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
28 * 2005-12-13 fl added expat_capi support (for xml.etree) (1.0.4) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
29 * 2005-12-16 fl added support for non-standard encodings |
|
36954
db5e720b0cef
merged with cElementTree development trunk (1.0.6 snapshot):
Fredrik Lundh <fredrik@pythonware.com>
parents:
36684
diff
changeset
|
30 * 2006-03-08 fl fixed a couple of potential null-refs and leaks |
|
db5e720b0cef
merged with cElementTree development trunk (1.0.6 snapshot):
Fredrik Lundh <fredrik@pythonware.com>
parents:
36684
diff
changeset
|
31 * 2006-03-12 fl merge in 2.5 ssize_t changes |
|
59601
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
32 * 2007-08-25 fl call custom builder's close method from XMLParser |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
33 * 2007-08-31 fl added iter, extend from ET 1.3 |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
34 * 2007-09-01 fl fixed ParseError exception, setslice source type, etc |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
35 * 2007-09-03 fl fixed handling of negative insert indexes |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
36 * 2007-09-04 fl added itertext from ET 1.3 |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
37 * 2007-09-06 fl added position attribute to ParseError exception |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
38 * 2008-06-06 fl delay error reporting in iterparse (from Hrvoje Niksic) |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
39 * |
|
59601
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
40 * Copyright (c) 1999-2009 by Secret Labs AB. All rights reserved. |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
41 * Copyright (c) 1999-2009 by Fredrik Lundh. |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
42 * |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
43 * info@pythonware.com |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
44 * http://www.pythonware.com |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
45 */ |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
46 |
|
36051
9b897fb7ac6a
updating to cElementTree 1.0.5 (step 3 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
36050
diff
changeset
|
47 /* Licensed to PSF under a Contributor Agreement. */ |
|
59601
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
48 /* See http://www.python.org/psf/license for licensing details. */ |
|
36051
9b897fb7ac6a
updating to cElementTree 1.0.5 (step 3 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
36050
diff
changeset
|
49 |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
50 #include "Python.h" |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
51 |
|
39610
3674f20ac781
Merge current trunk into p3yk. This includes the PyNumber_Index API change,
Thomas Wouters <thomas@python.org>
parents:
39442
diff
changeset
|
52 #define VERSION "1.0.6" |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
53 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
54 /* -------------------------------------------------------------------- */ |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
55 /* configuration */ |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
56 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
57 /* Leave defined to include the expat-based XMLParser type */ |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
58 #define USE_EXPAT |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
59 |
|
59601
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
60 /* Define to do all expat calls via pyexpat's embedded expat library */ |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
61 /* #define USE_PYEXPAT_CAPI */ |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
62 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
63 /* An element can hold this many children without extra memory |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
64 allocations. */ |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
65 #define STATIC_CHILDREN 4 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
66 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
67 /* For best performance, chose a value so that 80-90% of all nodes |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
68 have no more than the given number of children. Set this to zero |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
69 to minimize the size of the element structure itself (this only |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
70 helps if you have lots of leaf nodes with attributes). */ |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
71 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
72 /* Also note that pymalloc always allocates blocks in multiples of |
|
74903
65fc79fb4eb2
Issue #13988: cElementTree is deprecated and the _elementtree accelerator is automatically used whenever available.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
74870
diff
changeset
|
73 eight bytes. For the current C version of ElementTree, this means |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
74 that the number of children should be an even number, at least on |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
75 32-bit platforms. */ |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
76 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
77 /* -------------------------------------------------------------------- */ |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
78 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
79 #if 0 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
80 static int memory = 0; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
81 #define ALLOC(size, comment)\ |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
82 do { memory += size; printf("%8d - %s\n", memory, comment); } while (0) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
83 #define RELEASE(size, comment)\ |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
84 do { memory -= size; printf("%8d - %s\n", memory, comment); } while (0) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
85 #else |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
86 #define ALLOC(size, comment) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
87 #define RELEASE(size, comment) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
88 #endif |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
89 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
90 /* compiler tweaks */ |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
91 #if defined(_MSC_VER) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
92 #define LOCAL(type) static __inline type __fastcall |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
93 #else |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
94 #define LOCAL(type) static type |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
95 #endif |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
96 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
97 /* macros used to store 'join' flags in string object pointers. note |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
98 that all use of text and tail as object pointers must be wrapped in |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
99 JOIN_OBJ. see comments in the ElementObject definition for more |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
100 info. */ |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
101 #define JOIN_GET(p) ((Py_uintptr_t) (p) & 1) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
102 #define JOIN_SET(p, flag) ((void*) ((Py_uintptr_t) (JOIN_OBJ(p)) | (flag))) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
103 #define JOIN_OBJ(p) ((PyObject*) ((Py_uintptr_t) (p) & ~1)) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
104 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
105 /* glue functions (see the init function for details) */ |
|
59601
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
106 static PyObject* elementtree_parseerror_obj; |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
107 static PyObject* elementtree_deepcopy_obj; |
|
59601
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
108 static PyObject* elementtree_iter_obj; |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
109 static PyObject* elementtree_itertext_obj; |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
110 static PyObject* elementpath_obj; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
111 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
112 /* helpers */ |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
113 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
114 LOCAL(PyObject*) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
115 deepcopy(PyObject* object, PyObject* memo) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
116 { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
117 /* do a deep copy of the given object */ |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
118 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
119 PyObject* args; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
120 PyObject* result; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
121 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
122 if (!elementtree_deepcopy_obj) { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
123 PyErr_SetString( |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
124 PyExc_RuntimeError, |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
125 "deepcopy helper not found" |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
126 ); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
127 return NULL; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
128 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
129 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
130 args = PyTuple_New(2); |
|
36954
db5e720b0cef
merged with cElementTree development trunk (1.0.6 snapshot):
Fredrik Lundh <fredrik@pythonware.com>
parents:
36684
diff
changeset
|
131 if (!args) |
|
db5e720b0cef
merged with cElementTree development trunk (1.0.6 snapshot):
Fredrik Lundh <fredrik@pythonware.com>
parents:
36684
diff
changeset
|
132 return NULL; |
|
db5e720b0cef
merged with cElementTree development trunk (1.0.6 snapshot):
Fredrik Lundh <fredrik@pythonware.com>
parents:
36684
diff
changeset
|
133 |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
134 Py_INCREF(object); PyTuple_SET_ITEM(args, 0, (PyObject*) object); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
135 Py_INCREF(memo); PyTuple_SET_ITEM(args, 1, (PyObject*) memo); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
136 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
137 result = PyObject_CallObject(elementtree_deepcopy_obj, args); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
138 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
139 Py_DECREF(args); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
140 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
141 return result; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
142 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
143 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
144 LOCAL(PyObject*) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
145 list_join(PyObject* list) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
146 { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
147 /* join list elements (destroying the list in the process) */ |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
148 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
149 PyObject* joiner; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
150 PyObject* function; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
151 PyObject* args; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
152 PyObject* result; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
153 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
154 switch (PyList_GET_SIZE(list)) { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
155 case 0: |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
156 Py_DECREF(list); |
|
47301
23ab586c427a
Renamed PyString to PyBytes
Christian Heimes <christian@cheimes.de>
parents:
44742
diff
changeset
|
157 return PyBytes_FromString(""); |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
158 case 1: |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
159 result = PyList_GET_ITEM(list, 0); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
160 Py_INCREF(result); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
161 Py_DECREF(list); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
162 return result; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
163 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
164 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
165 /* two or more elements: slice out a suitable separator from the |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
166 first member, and use that to join the entire list */ |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
167 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
168 joiner = PySequence_GetSlice(PyList_GET_ITEM(list, 0), 0, 0); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
169 if (!joiner) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
170 return NULL; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
171 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
172 function = PyObject_GetAttrString(joiner, "join"); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
173 if (!function) { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
174 Py_DECREF(joiner); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
175 return NULL; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
176 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
177 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
178 args = PyTuple_New(1); |
|
36954
db5e720b0cef
merged with cElementTree development trunk (1.0.6 snapshot):
Fredrik Lundh <fredrik@pythonware.com>
parents:
36684
diff
changeset
|
179 if (!args) |
|
db5e720b0cef
merged with cElementTree development trunk (1.0.6 snapshot):
Fredrik Lundh <fredrik@pythonware.com>
parents:
36684
diff
changeset
|
180 return NULL; |
|
db5e720b0cef
merged with cElementTree development trunk (1.0.6 snapshot):
Fredrik Lundh <fredrik@pythonware.com>
parents:
36684
diff
changeset
|
181 |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
182 PyTuple_SET_ITEM(args, 0, list); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
183 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
184 result = PyObject_CallObject(function, args); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
185 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
186 Py_DECREF(args); /* also removes list */ |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
187 Py_DECREF(function); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
188 Py_DECREF(joiner); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
189 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
190 return result; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
191 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
192 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
193 /* -------------------------------------------------------------------- */ |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
194 /* the element type */ |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
195 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
196 typedef struct { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
197 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
198 /* attributes (a dictionary object), or None if no attributes */ |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
199 PyObject* attrib; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
200 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
201 /* child elements */ |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
202 int length; /* actual number of items */ |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
203 int allocated; /* allocated items */ |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
204 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
205 /* this either points to _children or to a malloced buffer */ |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
206 PyObject* *children; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
207 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
208 PyObject* _children[STATIC_CHILDREN]; |
|
68804
d0fe7489c4cc
_elementtree.c: remove trailing spaces
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66799
diff
changeset
|
209 |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
210 } ElementObjectExtra; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
211 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
212 typedef struct { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
213 PyObject_HEAD |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
214 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
215 /* element tag (a string). */ |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
216 PyObject* tag; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
217 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
218 /* text before first child. note that this is a tagged pointer; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
219 use JOIN_OBJ to get the object pointer. the join flag is used |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
220 to distinguish lists created by the tree builder from lists |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
221 assigned to the attribute by application code; the former |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
222 should be joined before being returned to the user, the latter |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
223 should be left intact. */ |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
224 PyObject* text; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
225 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
226 /* text after this element, in parent. note that this is a tagged |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
227 pointer; use JOIN_OBJ to get the object pointer. */ |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
228 PyObject* tail; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
229 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
230 ElementObjectExtra* extra; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
231 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
232 } ElementObject; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
233 |
|
37144
91dd4d44d3bc
Finish getting rid of statichere/staticforward
Neal Norwitz <nnorwitz@gmail.com>
parents:
36954
diff
changeset
|
234 static PyTypeObject Element_Type; |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
235 |
|
44351
86a2679dca46
#1629: Renamed Py_Size, Py_Type and Py_Refcnt to Py_SIZE, Py_TYPE and Py_REFCNT.
Christian Heimes <christian@cheimes.de>
parents:
44099
diff
changeset
|
236 #define Element_CheckExact(op) (Py_TYPE(op) == &Element_Type) |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
237 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
238 /* -------------------------------------------------------------------- */ |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
239 /* element constructor and destructor */ |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
240 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
241 LOCAL(int) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
242 element_new_extra(ElementObject* self, PyObject* attrib) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
243 { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
244 self->extra = PyObject_Malloc(sizeof(ElementObjectExtra)); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
245 if (!self->extra) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
246 return -1; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
247 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
248 if (!attrib) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
249 attrib = Py_None; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
250 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
251 Py_INCREF(attrib); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
252 self->extra->attrib = attrib; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
253 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
254 self->extra->length = 0; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
255 self->extra->allocated = STATIC_CHILDREN; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
256 self->extra->children = self->extra->_children; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
257 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
258 return 0; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
259 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
260 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
261 LOCAL(void) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
262 element_dealloc_extra(ElementObject* self) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
263 { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
264 int i; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
265 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
266 Py_DECREF(self->extra->attrib); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
267 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
268 for (i = 0; i < self->extra->length; i++) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
269 Py_DECREF(self->extra->children[i]); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
270 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
271 if (self->extra->children != self->extra->_children) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
272 PyObject_Free(self->extra->children); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
273 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
274 PyObject_Free(self->extra); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
275 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
276 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
277 LOCAL(PyObject*) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
278 element_new(PyObject* tag, PyObject* attrib) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
279 { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
280 ElementObject* self; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
281 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
282 self = PyObject_New(ElementObject, &Element_Type); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
283 if (self == NULL) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
284 return NULL; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
285 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
286 /* use None for empty dictionaries */ |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
287 if (PyDict_CheckExact(attrib) && !PyDict_Size(attrib)) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
288 attrib = Py_None; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
289 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
290 self->extra = NULL; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
291 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
292 if (attrib != Py_None) { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
293 |
|
38453
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
37144
diff
changeset
|
294 if (element_new_extra(self, attrib) < 0) { |
|
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
37144
diff
changeset
|
295 PyObject_Del(self); |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
296 return NULL; |
|
59601
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
297 } |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
298 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
299 self->extra->length = 0; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
300 self->extra->allocated = STATIC_CHILDREN; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
301 self->extra->children = self->extra->_children; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
302 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
303 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
304 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
305 Py_INCREF(tag); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
306 self->tag = tag; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
307 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
308 Py_INCREF(Py_None); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
309 self->text = Py_None; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
310 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
311 Py_INCREF(Py_None); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
312 self->tail = Py_None; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
313 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
314 ALLOC(sizeof(ElementObject), "create element"); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
315 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
316 return (PyObject*) self; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
317 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
318 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
319 LOCAL(int) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
320 element_resize(ElementObject* self, int extra) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
321 { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
322 int size; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
323 PyObject* *children; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
324 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
325 /* make sure self->children can hold the given number of extra |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
326 elements. set an exception and return -1 if allocation failed */ |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
327 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
328 if (!self->extra) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
329 element_new_extra(self, NULL); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
330 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
331 size = self->extra->length + extra; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
332 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
333 if (size > self->extra->allocated) { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
334 /* use Python 2.4's list growth strategy */ |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
335 size = (size >> 3) + (size < 9 ? 3 : 6) + size; |
|
44742
14d4104976fc
Merged revisions 59985-60000,60002,60005-60007,60009-60042 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44351
diff
changeset
|
336 /* Coverity CID #182 size_error: Allocating 1 bytes to pointer "children" |
|
68804
d0fe7489c4cc
_elementtree.c: remove trailing spaces
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66799
diff
changeset
|
337 * which needs at least 4 bytes. |
|
d0fe7489c4cc
_elementtree.c: remove trailing spaces
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66799
diff
changeset
|
338 * Although it's a false alarm always assume at least one child to |
|
44742
14d4104976fc
Merged revisions 59985-60000,60002,60005-60007,60009-60042 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44351
diff
changeset
|
339 * be safe. |
|
14d4104976fc
Merged revisions 59985-60000,60002,60005-60007,60009-60042 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44351
diff
changeset
|
340 */ |
|
14d4104976fc
Merged revisions 59985-60000,60002,60005-60007,60009-60042 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44351
diff
changeset
|
341 size = size ? size : 1; |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
342 if (self->extra->children != self->extra->_children) { |
|
44742
14d4104976fc
Merged revisions 59985-60000,60002,60005-60007,60009-60042 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44351
diff
changeset
|
343 /* Coverity CID #182 size_error: Allocating 1 bytes to pointer |
|
68804
d0fe7489c4cc
_elementtree.c: remove trailing spaces
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66799
diff
changeset
|
344 * "children", which needs at least 4 bytes. Although it's a |
|
44742
14d4104976fc
Merged revisions 59985-60000,60002,60005-60007,60009-60042 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44351
diff
changeset
|
345 * false alarm always assume at least one child to be safe. |
|
14d4104976fc
Merged revisions 59985-60000,60002,60005-60007,60009-60042 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44351
diff
changeset
|
346 */ |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
347 children = PyObject_Realloc(self->extra->children, |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
348 size * sizeof(PyObject*)); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
349 if (!children) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
350 goto nomemory; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
351 } else { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
352 children = PyObject_Malloc(size * sizeof(PyObject*)); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
353 if (!children) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
354 goto nomemory; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
355 /* copy existing children from static area to malloc buffer */ |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
356 memcpy(children, self->extra->children, |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
357 self->extra->length * sizeof(PyObject*)); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
358 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
359 self->extra->children = children; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
360 self->extra->allocated = size; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
361 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
362 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
363 return 0; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
364 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
365 nomemory: |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
366 PyErr_NoMemory(); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
367 return -1; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
368 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
369 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
370 LOCAL(int) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
371 element_add_subelement(ElementObject* self, PyObject* element) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
372 { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
373 /* add a child element to a parent */ |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
374 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
375 if (element_resize(self, 1) < 0) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
376 return -1; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
377 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
378 Py_INCREF(element); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
379 self->extra->children[self->extra->length] = element; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
380 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
381 self->extra->length++; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
382 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
383 return 0; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
384 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
385 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
386 LOCAL(PyObject*) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
387 element_get_attrib(ElementObject* self) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
388 { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
389 /* return borrowed reference to attrib dictionary */ |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
390 /* note: this function assumes that the extra section exists */ |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
391 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
392 PyObject* res = self->extra->attrib; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
393 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
394 if (res == Py_None) { |
|
59601
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
395 Py_DECREF(res); |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
396 /* create missing dictionary */ |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
397 res = PyDict_New(); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
398 if (!res) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
399 return NULL; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
400 self->extra->attrib = res; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
401 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
402 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
403 return res; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
404 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
405 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
406 LOCAL(PyObject*) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
407 element_get_text(ElementObject* self) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
408 { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
409 /* return borrowed reference to text attribute */ |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
410 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
411 PyObject* res = self->text; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
412 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
413 if (JOIN_GET(res)) { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
414 res = JOIN_OBJ(res); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
415 if (PyList_CheckExact(res)) { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
416 res = list_join(res); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
417 if (!res) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
418 return NULL; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
419 self->text = res; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
420 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
421 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
422 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
423 return res; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
424 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
425 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
426 LOCAL(PyObject*) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
427 element_get_tail(ElementObject* self) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
428 { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
429 /* return borrowed reference to text attribute */ |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
430 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
431 PyObject* res = self->tail; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
432 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
433 if (JOIN_GET(res)) { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
434 res = JOIN_OBJ(res); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
435 if (PyList_CheckExact(res)) { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
436 res = list_join(res); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
437 if (!res) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
438 return NULL; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
439 self->tail = res; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
440 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
441 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
442 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
443 return res; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
444 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
445 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
446 static PyObject* |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
447 element(PyObject* self, PyObject* args, PyObject* kw) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
448 { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
449 PyObject* elem; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
450 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
451 PyObject* tag; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
452 PyObject* attrib = NULL; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
453 if (!PyArg_ParseTuple(args, "O|O!:Element", &tag, |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
454 &PyDict_Type, &attrib)) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
455 return NULL; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
456 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
457 if (attrib || kw) { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
458 attrib = (attrib) ? PyDict_Copy(attrib) : PyDict_New(); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
459 if (!attrib) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
460 return NULL; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
461 if (kw) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
462 PyDict_Update(attrib, kw); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
463 } else { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
464 Py_INCREF(Py_None); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
465 attrib = Py_None; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
466 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
467 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
468 elem = element_new(tag, attrib); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
469 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
470 Py_DECREF(attrib); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
471 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
472 return elem; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
473 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
474 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
475 static PyObject* |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
476 subelement(PyObject* self, PyObject* args, PyObject* kw) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
477 { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
478 PyObject* elem; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
479 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
480 ElementObject* parent; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
481 PyObject* tag; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
482 PyObject* attrib = NULL; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
483 if (!PyArg_ParseTuple(args, "O!O|O!:SubElement", |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
484 &Element_Type, &parent, &tag, |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
485 &PyDict_Type, &attrib)) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
486 return NULL; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
487 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
488 if (attrib || kw) { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
489 attrib = (attrib) ? PyDict_Copy(attrib) : PyDict_New(); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
490 if (!attrib) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
491 return NULL; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
492 if (kw) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
493 PyDict_Update(attrib, kw); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
494 } else { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
495 Py_INCREF(Py_None); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
496 attrib = Py_None; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
497 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
498 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
499 elem = element_new(tag, attrib); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
500 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
501 Py_DECREF(attrib); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
502 |
|
36954
db5e720b0cef
merged with cElementTree development trunk (1.0.6 snapshot):
Fredrik Lundh <fredrik@pythonware.com>
parents:
36684
diff
changeset
|
503 if (element_add_subelement(parent, elem) < 0) { |
|
db5e720b0cef
merged with cElementTree development trunk (1.0.6 snapshot):
Fredrik Lundh <fredrik@pythonware.com>
parents:
36684
diff
changeset
|
504 Py_DECREF(elem); |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
505 return NULL; |
|
36954
db5e720b0cef
merged with cElementTree development trunk (1.0.6 snapshot):
Fredrik Lundh <fredrik@pythonware.com>
parents:
36684
diff
changeset
|
506 } |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
507 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
508 return elem; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
509 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
510 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
511 static void |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
512 element_dealloc(ElementObject* self) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
513 { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
514 if (self->extra) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
515 element_dealloc_extra(self); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
516 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
517 /* discard attributes */ |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
518 Py_DECREF(self->tag); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
519 Py_DECREF(JOIN_OBJ(self->text)); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
520 Py_DECREF(JOIN_OBJ(self->tail)); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
521 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
522 RELEASE(sizeof(ElementObject), "destroy element"); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
523 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
524 PyObject_Del(self); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
525 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
526 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
527 /* -------------------------------------------------------------------- */ |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
528 /* methods (in alphabetical order) */ |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
529 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
530 static PyObject* |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
531 element_append(ElementObject* self, PyObject* args) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
532 { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
533 PyObject* element; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
534 if (!PyArg_ParseTuple(args, "O!:append", &Element_Type, &element)) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
535 return NULL; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
536 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
537 if (element_add_subelement(self, element) < 0) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
538 return NULL; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
539 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
540 Py_RETURN_NONE; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
541 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
542 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
543 static PyObject* |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
544 element_clear(ElementObject* self, PyObject* args) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
545 { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
546 if (!PyArg_ParseTuple(args, ":clear")) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
547 return NULL; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
548 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
549 if (self->extra) { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
550 element_dealloc_extra(self); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
551 self->extra = NULL; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
552 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
553 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
554 Py_INCREF(Py_None); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
555 Py_DECREF(JOIN_OBJ(self->text)); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
556 self->text = Py_None; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
557 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
558 Py_INCREF(Py_None); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
559 Py_DECREF(JOIN_OBJ(self->tail)); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
560 self->tail = Py_None; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
561 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
562 Py_RETURN_NONE; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
563 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
564 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
565 static PyObject* |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
566 element_copy(ElementObject* self, PyObject* args) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
567 { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
568 int i; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
569 ElementObject* element; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
570 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
571 if (!PyArg_ParseTuple(args, ":__copy__")) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
572 return NULL; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
573 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
574 element = (ElementObject*) element_new( |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
575 self->tag, (self->extra) ? self->extra->attrib : Py_None |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
576 ); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
577 if (!element) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
578 return NULL; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
579 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
580 Py_DECREF(JOIN_OBJ(element->text)); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
581 element->text = self->text; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
582 Py_INCREF(JOIN_OBJ(element->text)); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
583 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
584 Py_DECREF(JOIN_OBJ(element->tail)); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
585 element->tail = self->tail; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
586 Py_INCREF(JOIN_OBJ(element->tail)); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
587 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
588 if (self->extra) { |
|
68804
d0fe7489c4cc
_elementtree.c: remove trailing spaces
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66799
diff
changeset
|
589 |
|
36954
db5e720b0cef
merged with cElementTree development trunk (1.0.6 snapshot):
Fredrik Lundh <fredrik@pythonware.com>
parents:
36684
diff
changeset
|
590 if (element_resize(element, self->extra->length) < 0) { |
|
db5e720b0cef
merged with cElementTree development trunk (1.0.6 snapshot):
Fredrik Lundh <fredrik@pythonware.com>
parents:
36684
diff
changeset
|
591 Py_DECREF(element); |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
592 return NULL; |
|
36954
db5e720b0cef
merged with cElementTree development trunk (1.0.6 snapshot):
Fredrik Lundh <fredrik@pythonware.com>
parents:
36684
diff
changeset
|
593 } |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
594 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
595 for (i = 0; i < self->extra->length; i++) { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
596 Py_INCREF(self->extra->children[i]); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
597 element->extra->children[i] = self->extra->children[i]; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
598 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
599 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
600 element->extra->length = self->extra->length; |
|
68804
d0fe7489c4cc
_elementtree.c: remove trailing spaces
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66799
diff
changeset
|
601 |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
602 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
603 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
604 return (PyObject*) element; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
605 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
606 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
607 static PyObject* |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
608 element_deepcopy(ElementObject* self, PyObject* args) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
609 { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
610 int i; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
611 ElementObject* element; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
612 PyObject* tag; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
613 PyObject* attrib; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
614 PyObject* text; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
615 PyObject* tail; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
616 PyObject* id; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
617 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
618 PyObject* memo; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
619 if (!PyArg_ParseTuple(args, "O:__deepcopy__", &memo)) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
620 return NULL; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
621 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
622 tag = deepcopy(self->tag, memo); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
623 if (!tag) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
624 return NULL; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
625 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
626 if (self->extra) { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
627 attrib = deepcopy(self->extra->attrib, memo); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
628 if (!attrib) { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
629 Py_DECREF(tag); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
630 return NULL; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
631 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
632 } else { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
633 Py_INCREF(Py_None); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
634 attrib = Py_None; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
635 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
636 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
637 element = (ElementObject*) element_new(tag, attrib); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
638 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
639 Py_DECREF(tag); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
640 Py_DECREF(attrib); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
641 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
642 if (!element) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
643 return NULL; |
|
68804
d0fe7489c4cc
_elementtree.c: remove trailing spaces
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66799
diff
changeset
|
644 |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
645 text = deepcopy(JOIN_OBJ(self->text), memo); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
646 if (!text) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
647 goto error; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
648 Py_DECREF(element->text); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
649 element->text = JOIN_SET(text, JOIN_GET(self->text)); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
650 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
651 tail = deepcopy(JOIN_OBJ(self->tail), memo); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
652 if (!tail) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
653 goto error; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
654 Py_DECREF(element->tail); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
655 element->tail = JOIN_SET(tail, JOIN_GET(self->tail)); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
656 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
657 if (self->extra) { |
|
68804
d0fe7489c4cc
_elementtree.c: remove trailing spaces
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66799
diff
changeset
|
658 |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
659 if (element_resize(element, self->extra->length) < 0) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
660 goto error; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
661 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
662 for (i = 0; i < self->extra->length; i++) { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
663 PyObject* child = deepcopy(self->extra->children[i], memo); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
664 if (!child) { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
665 element->extra->length = i; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
666 goto error; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
667 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
668 element->extra->children[i] = child; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
669 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
670 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
671 element->extra->length = self->extra->length; |
|
68804
d0fe7489c4cc
_elementtree.c: remove trailing spaces
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66799
diff
changeset
|
672 |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
673 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
674 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
675 /* add object to memo dictionary (so deepcopy won't visit it again) */ |
|
44099
f324631462a2
Cleanup: Replaced most PyInt_ aliases with PyLong_ and disabled the aliases in intobject.h
Christian Heimes <christian@cheimes.de>
parents:
42491
diff
changeset
|
676 id = PyLong_FromLong((Py_uintptr_t) self); |
|
59601
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
677 if (!id) |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
678 goto error; |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
679 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
680 i = PyDict_SetItem(memo, id, (PyObject*) element); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
681 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
682 Py_DECREF(id); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
683 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
684 if (i < 0) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
685 goto error; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
686 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
687 return (PyObject*) element; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
688 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
689 error: |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
690 Py_DECREF(element); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
691 return NULL; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
692 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
693 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
694 LOCAL(int) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
695 checkpath(PyObject* tag) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
696 { |
|
39442
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
697 Py_ssize_t i; |
|
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
698 int check = 1; |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
699 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
700 /* check if a tag contains an xpath character */ |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
701 |
|
59601
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
702 #define PATHCHAR(ch) \ |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
703 (ch == '/' || ch == '*' || ch == '[' || ch == '@' || ch == '.') |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
704 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
705 if (PyUnicode_Check(tag)) { |
| 72475 | 706 const Py_ssize_t len = PyUnicode_GET_LENGTH(tag); |
| 707 void *data = PyUnicode_DATA(tag); | |
| 708 unsigned int kind = PyUnicode_KIND(tag); | |
| 709 for (i = 0; i < len; i++) { | |
| 710 Py_UCS4 ch = PyUnicode_READ(kind, data, i); | |
| 711 if (ch == '{') | |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
712 check = 0; |
| 72475 | 713 else if (ch == '}') |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
714 check = 1; |
| 72475 | 715 else if (check && PATHCHAR(ch)) |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
716 return 1; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
717 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
718 return 0; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
719 } |
|
47301
23ab586c427a
Renamed PyString to PyBytes
Christian Heimes <christian@cheimes.de>
parents:
44742
diff
changeset
|
720 if (PyBytes_Check(tag)) { |
|
23ab586c427a
Renamed PyString to PyBytes
Christian Heimes <christian@cheimes.de>
parents:
44742
diff
changeset
|
721 char *p = PyBytes_AS_STRING(tag); |
|
23ab586c427a
Renamed PyString to PyBytes
Christian Heimes <christian@cheimes.de>
parents:
44742
diff
changeset
|
722 for (i = 0; i < PyBytes_GET_SIZE(tag); i++) { |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
723 if (p[i] == '{') |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
724 check = 0; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
725 else if (p[i] == '}') |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
726 check = 1; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
727 else if (check && PATHCHAR(p[i])) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
728 return 1; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
729 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
730 return 0; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
731 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
732 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
733 return 1; /* unknown type; might be path expression */ |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
734 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
735 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
736 static PyObject* |
|
59601
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
737 element_extend(ElementObject* self, PyObject* args) |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
738 { |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
739 PyObject* seq; |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
740 Py_ssize_t i, seqlen = 0; |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
741 |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
742 PyObject* seq_in; |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
743 if (!PyArg_ParseTuple(args, "O:extend", &seq_in)) |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
744 return NULL; |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
745 |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
746 seq = PySequence_Fast(seq_in, ""); |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
747 if (!seq) { |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
748 PyErr_Format( |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
749 PyExc_TypeError, |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
750 "expected sequence, not \"%.200s\"", Py_TYPE(seq_in)->tp_name |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
751 ); |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
752 return NULL; |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
753 } |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
754 |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
755 seqlen = PySequence_Size(seq); |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
756 for (i = 0; i < seqlen; i++) { |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
757 PyObject* element = PySequence_Fast_GET_ITEM(seq, i); |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
758 if (element_add_subelement(self, element) < 0) { |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
759 Py_DECREF(seq); |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
760 return NULL; |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
761 } |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
762 } |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
763 |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
764 Py_DECREF(seq); |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
765 |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
766 Py_RETURN_NONE; |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
767 } |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
768 |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
769 static PyObject* |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
770 element_find(ElementObject* self, PyObject* args) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
771 { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
772 int i; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
773 PyObject* tag; |
|
59601
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
774 PyObject* namespaces = Py_None; |
|
72835
5e33219492bc
Add API for static strings, primarily good for identifiers.
Martin v. Löwis <martin@v.loewis.de>
parents:
72475
diff
changeset
|
775 |
|
59601
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
776 if (!PyArg_ParseTuple(args, "O|O:find", &tag, &namespaces)) |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
777 return NULL; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
778 |
|
72835
5e33219492bc
Add API for static strings, primarily good for identifiers.
Martin v. Löwis <martin@v.loewis.de>
parents:
72475
diff
changeset
|
779 if (checkpath(tag) || namespaces != Py_None) { |
|
72925
7109f31300fb
Rename _Py_identifier to _Py_IDENTIFIER.
Martin v. Löwis <martin@v.loewis.de>
parents:
72835
diff
changeset
|
780 _Py_IDENTIFIER(find); |
|
72835
5e33219492bc
Add API for static strings, primarily good for identifiers.
Martin v. Löwis <martin@v.loewis.de>
parents:
72475
diff
changeset
|
781 return _PyObject_CallMethodId( |
|
5e33219492bc
Add API for static strings, primarily good for identifiers.
Martin v. Löwis <martin@v.loewis.de>
parents:
72475
diff
changeset
|
782 elementpath_obj, &PyId_find, "OOO", self, tag, namespaces |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
783 ); |
|
72835
5e33219492bc
Add API for static strings, primarily good for identifiers.
Martin v. Löwis <martin@v.loewis.de>
parents:
72475
diff
changeset
|
784 } |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
785 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
786 if (!self->extra) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
787 Py_RETURN_NONE; |
|
68804
d0fe7489c4cc
_elementtree.c: remove trailing spaces
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66799
diff
changeset
|
788 |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
789 for (i = 0; i < self->extra->length; i++) { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
790 PyObject* item = self->extra->children[i]; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
791 if (Element_CheckExact(item) && |
|
51244
e9675d72e3e3
Merged revisions 69181 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
48660
diff
changeset
|
792 PyObject_RichCompareBool(((ElementObject*)item)->tag, tag, Py_EQ) == 1) { |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
793 Py_INCREF(item); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
794 return item; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
795 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
796 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
797 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
798 Py_RETURN_NONE; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
799 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
800 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
801 static PyObject* |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
802 element_findtext(ElementObject* self, PyObject* args) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
803 { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
804 int i; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
805 PyObject* tag; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
806 PyObject* default_value = Py_None; |
|
59601
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
807 PyObject* namespaces = Py_None; |
|
72925
7109f31300fb
Rename _Py_identifier to _Py_IDENTIFIER.
Martin v. Löwis <martin@v.loewis.de>
parents:
72835
diff
changeset
|
808 _Py_IDENTIFIER(findtext); |
|
72835
5e33219492bc
Add API for static strings, primarily good for identifiers.
Martin v. Löwis <martin@v.loewis.de>
parents:
72475
diff
changeset
|
809 |
|
59601
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
810 if (!PyArg_ParseTuple(args, "O|OO:findtext", &tag, &default_value, &namespaces)) |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
811 return NULL; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
812 |
|
59601
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
813 if (checkpath(tag) || namespaces != Py_None) |
|
72835
5e33219492bc
Add API for static strings, primarily good for identifiers.
Martin v. Löwis <martin@v.loewis.de>
parents:
72475
diff
changeset
|
814 return _PyObject_CallMethodId( |
|
5e33219492bc
Add API for static strings, primarily good for identifiers.
Martin v. Löwis <martin@v.loewis.de>
parents:
72475
diff
changeset
|
815 elementpath_obj, &PyId_findtext, "OOOO", self, tag, default_value, namespaces |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
816 ); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
817 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
818 if (!self->extra) { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
819 Py_INCREF(default_value); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
820 return default_value; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
821 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
822 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
823 for (i = 0; i < self->extra->length; i++) { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
824 ElementObject* item = (ElementObject*) self->extra->children[i]; |
|
51244
e9675d72e3e3
Merged revisions 69181 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
48660
diff
changeset
|
825 if (Element_CheckExact(item) && (PyObject_RichCompareBool(item->tag, tag, Py_EQ) == 1)) { |
|
e9675d72e3e3
Merged revisions 69181 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
48660
diff
changeset
|
826 |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
827 PyObject* text = element_get_text(item); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
828 if (text == Py_None) |
|
47301
23ab586c427a
Renamed PyString to PyBytes
Christian Heimes <christian@cheimes.de>
parents:
44742
diff
changeset
|
829 return PyBytes_FromString(""); |
|
39610
3674f20ac781
Merge current trunk into p3yk. This includes the PyNumber_Index API change,
Thomas Wouters <thomas@python.org>
parents:
39442
diff
changeset
|
830 Py_XINCREF(text); |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
831 return text; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
832 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
833 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
834 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
835 Py_INCREF(default_value); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
836 return default_value; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
837 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
838 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
839 static PyObject* |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
840 element_findall(ElementObject* self, PyObject* args) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
841 { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
842 int i; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
843 PyObject* out; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
844 PyObject* tag; |
|
59601
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
845 PyObject* namespaces = Py_None; |
|
72835
5e33219492bc
Add API for static strings, primarily good for identifiers.
Martin v. Löwis <martin@v.loewis.de>
parents:
72475
diff
changeset
|
846 |
|
59601
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
847 if (!PyArg_ParseTuple(args, "O|O:findall", &tag, &namespaces)) |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
848 return NULL; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
849 |
|
72835
5e33219492bc
Add API for static strings, primarily good for identifiers.
Martin v. Löwis <martin@v.loewis.de>
parents:
72475
diff
changeset
|
850 if (checkpath(tag) || namespaces != Py_None) { |
|
72925
7109f31300fb
Rename _Py_identifier to _Py_IDENTIFIER.
Martin v. Löwis <martin@v.loewis.de>
parents:
72835
diff
changeset
|
851 _Py_IDENTIFIER(findall); |
|
72835
5e33219492bc
Add API for static strings, primarily good for identifiers.
Martin v. Löwis <martin@v.loewis.de>
parents:
72475
diff
changeset
|
852 return _PyObject_CallMethodId( |
|
5e33219492bc
Add API for static strings, primarily good for identifiers.
Martin v. Löwis <martin@v.loewis.de>
parents:
72475
diff
changeset
|
853 elementpath_obj, &PyId_findall, "OOO", self, tag, namespaces |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
854 ); |
|
72835
5e33219492bc
Add API for static strings, primarily good for identifiers.
Martin v. Löwis <martin@v.loewis.de>
parents:
72475
diff
changeset
|
855 } |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
856 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
857 out = PyList_New(0); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
858 if (!out) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
859 return NULL; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
860 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
861 if (!self->extra) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
862 return out; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
863 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
864 for (i = 0; i < self->extra->length; i++) { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
865 PyObject* item = self->extra->children[i]; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
866 if (Element_CheckExact(item) && |
|
51244
e9675d72e3e3
Merged revisions 69181 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
48660
diff
changeset
|
867 PyObject_RichCompareBool(((ElementObject*)item)->tag, tag, Py_EQ) == 1) { |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
868 if (PyList_Append(out, item) < 0) { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
869 Py_DECREF(out); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
870 return NULL; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
871 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
872 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
873 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
874 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
875 return out; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
876 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
877 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
878 static PyObject* |
|
59601
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
879 element_iterfind(ElementObject* self, PyObject* args) |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
880 { |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
881 PyObject* tag; |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
882 PyObject* namespaces = Py_None; |
|
72925
7109f31300fb
Rename _Py_identifier to _Py_IDENTIFIER.
Martin v. Löwis <martin@v.loewis.de>
parents:
72835
diff
changeset
|
883 _Py_IDENTIFIER(iterfind); |
|
72835
5e33219492bc
Add API for static strings, primarily good for identifiers.
Martin v. Löwis <martin@v.loewis.de>
parents:
72475
diff
changeset
|
884 |
|
59601
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
885 if (!PyArg_ParseTuple(args, "O|O:iterfind", &tag, &namespaces)) |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
886 return NULL; |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
887 |
|
72835
5e33219492bc
Add API for static strings, primarily good for identifiers.
Martin v. Löwis <martin@v.loewis.de>
parents:
72475
diff
changeset
|
888 return _PyObject_CallMethodId( |
|
5e33219492bc
Add API for static strings, primarily good for identifiers.
Martin v. Löwis <martin@v.loewis.de>
parents:
72475
diff
changeset
|
889 elementpath_obj, &PyId_iterfind, "OOO", self, tag, namespaces |
|
59601
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
890 ); |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
891 } |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
892 |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
893 static PyObject* |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
894 element_get(ElementObject* self, PyObject* args) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
895 { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
896 PyObject* value; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
897 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
898 PyObject* key; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
899 PyObject* default_value = Py_None; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
900 if (!PyArg_ParseTuple(args, "O|O:get", &key, &default_value)) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
901 return NULL; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
902 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
903 if (!self->extra || self->extra->attrib == Py_None) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
904 value = default_value; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
905 else { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
906 value = PyDict_GetItem(self->extra->attrib, key); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
907 if (!value) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
908 value = default_value; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
909 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
910 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
911 Py_INCREF(value); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
912 return value; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
913 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
914 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
915 static PyObject* |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
916 element_getchildren(ElementObject* self, PyObject* args) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
917 { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
918 int i; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
919 PyObject* list; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
920 |
|
59601
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
921 /* FIXME: report as deprecated? */ |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
922 |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
923 if (!PyArg_ParseTuple(args, ":getchildren")) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
924 return NULL; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
925 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
926 if (!self->extra) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
927 return PyList_New(0); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
928 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
929 list = PyList_New(self->extra->length); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
930 if (!list) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
931 return NULL; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
932 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
933 for (i = 0; i < self->extra->length; i++) { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
934 PyObject* item = self->extra->children[i]; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
935 Py_INCREF(item); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
936 PyList_SET_ITEM(list, i, item); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
937 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
938 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
939 return list; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
940 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
941 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
942 static PyObject* |
|
59601
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
943 element_iter(ElementObject* self, PyObject* args) |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
944 { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
945 PyObject* result; |
|
68804
d0fe7489c4cc
_elementtree.c: remove trailing spaces
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66799
diff
changeset
|
946 |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
947 PyObject* tag = Py_None; |
|
59601
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
948 if (!PyArg_ParseTuple(args, "|O:iter", &tag)) |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
949 return NULL; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
950 |
|
59601
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
951 if (!elementtree_iter_obj) { |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
952 PyErr_SetString( |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
953 PyExc_RuntimeError, |
|
59601
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
954 "iter helper not found" |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
955 ); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
956 return NULL; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
957 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
958 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
959 args = PyTuple_New(2); |
|
36954
db5e720b0cef
merged with cElementTree development trunk (1.0.6 snapshot):
Fredrik Lundh <fredrik@pythonware.com>
parents:
36684
diff
changeset
|
960 if (!args) |
|
db5e720b0cef
merged with cElementTree development trunk (1.0.6 snapshot):
Fredrik Lundh <fredrik@pythonware.com>
parents:
36684
diff
changeset
|
961 return NULL; |
|
36450
c193283e63bc
Check return results for errors
Neal Norwitz <nnorwitz@gmail.com>
parents:
36324
diff
changeset
|
962 |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
963 Py_INCREF(self); PyTuple_SET_ITEM(args, 0, (PyObject*) self); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
964 Py_INCREF(tag); PyTuple_SET_ITEM(args, 1, (PyObject*) tag); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
965 |
|
59601
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
966 result = PyObject_CallObject(elementtree_iter_obj, args); |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
967 |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
968 Py_DECREF(args); |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
969 |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
970 return result; |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
971 } |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
972 |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
973 |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
974 static PyObject* |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
975 element_itertext(ElementObject* self, PyObject* args) |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
976 { |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
977 PyObject* result; |
|
68804
d0fe7489c4cc
_elementtree.c: remove trailing spaces
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66799
diff
changeset
|
978 |
|
59601
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
979 if (!PyArg_ParseTuple(args, ":itertext")) |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
980 return NULL; |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
981 |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
982 if (!elementtree_itertext_obj) { |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
983 PyErr_SetString( |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
984 PyExc_RuntimeError, |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
985 "itertext helper not found" |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
986 ); |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
987 return NULL; |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
988 } |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
989 |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
990 args = PyTuple_New(1); |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
991 if (!args) |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
992 return NULL; |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
993 |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
994 Py_INCREF(self); PyTuple_SET_ITEM(args, 0, (PyObject*) self); |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
995 |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
996 result = PyObject_CallObject(elementtree_itertext_obj, args); |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
997 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
998 Py_DECREF(args); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
999 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1000 return result; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1001 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1002 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1003 static PyObject* |
|
36954
db5e720b0cef
merged with cElementTree development trunk (1.0.6 snapshot):
Fredrik Lundh <fredrik@pythonware.com>
parents:
36684
diff
changeset
|
1004 element_getitem(PyObject* self_, Py_ssize_t index) |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1005 { |
|
36954
db5e720b0cef
merged with cElementTree development trunk (1.0.6 snapshot):
Fredrik Lundh <fredrik@pythonware.com>
parents:
36684
diff
changeset
|
1006 ElementObject* self = (ElementObject*) self_; |
|
db5e720b0cef
merged with cElementTree development trunk (1.0.6 snapshot):
Fredrik Lundh <fredrik@pythonware.com>
parents:
36684
diff
changeset
|
1007 |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1008 if (!self->extra || index < 0 || index >= self->extra->length) { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1009 PyErr_SetString( |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1010 PyExc_IndexError, |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1011 "child index out of range" |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1012 ); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1013 return NULL; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1014 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1015 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1016 Py_INCREF(self->extra->children[index]); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1017 return self->extra->children[index]; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1018 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1019 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1020 static PyObject* |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1021 element_insert(ElementObject* self, PyObject* args) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1022 { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1023 int i; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1024 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1025 int index; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1026 PyObject* element; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1027 if (!PyArg_ParseTuple(args, "iO!:insert", &index, |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1028 &Element_Type, &element)) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1029 return NULL; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1030 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1031 if (!self->extra) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1032 element_new_extra(self, NULL); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1033 |
|
59601
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1034 if (index < 0) { |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1035 index += self->extra->length; |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1036 if (index < 0) |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1037 index = 0; |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1038 } |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1039 if (index > self->extra->length) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1040 index = self->extra->length; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1041 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1042 if (element_resize(self, 1) < 0) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1043 return NULL; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1044 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1045 for (i = self->extra->length; i > index; i--) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1046 self->extra->children[i] = self->extra->children[i-1]; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1047 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1048 Py_INCREF(element); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1049 self->extra->children[index] = element; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1050 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1051 self->extra->length++; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1052 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1053 Py_RETURN_NONE; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1054 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1055 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1056 static PyObject* |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1057 element_items(ElementObject* self, PyObject* args) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1058 { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1059 if (!PyArg_ParseTuple(args, ":items")) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1060 return NULL; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1061 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1062 if (!self->extra || self->extra->attrib == Py_None) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1063 return PyList_New(0); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1064 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1065 return PyDict_Items(self->extra->attrib); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1066 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1067 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1068 static PyObject* |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1069 element_keys(ElementObject* self, PyObject* args) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1070 { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1071 if (!PyArg_ParseTuple(args, ":keys")) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1072 return NULL; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1073 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1074 if (!self->extra || self->extra->attrib == Py_None) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1075 return PyList_New(0); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1076 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1077 return PyDict_Keys(self->extra->attrib); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1078 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1079 |
|
36501
7fdc639bc5b4
Merge ssize_t branch.
Martin v. Löwis <martin@v.loewis.de>
parents:
36450
diff
changeset
|
1080 static Py_ssize_t |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1081 element_length(ElementObject* self) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1082 { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1083 if (!self->extra) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1084 return 0; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1085 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1086 return self->extra->length; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1087 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1088 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1089 static PyObject* |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1090 element_makeelement(PyObject* self, PyObject* args, PyObject* kw) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1091 { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1092 PyObject* elem; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1093 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1094 PyObject* tag; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1095 PyObject* attrib; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1096 if (!PyArg_ParseTuple(args, "OO:makeelement", &tag, &attrib)) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1097 return NULL; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1098 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1099 attrib = PyDict_Copy(attrib); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1100 if (!attrib) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1101 return NULL; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1102 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1103 elem = element_new(tag, attrib); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1104 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1105 Py_DECREF(attrib); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1106 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1107 return elem; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1108 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1109 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1110 static PyObject* |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1111 element_remove(ElementObject* self, PyObject* args) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1112 { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1113 int i; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1114 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1115 PyObject* element; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1116 if (!PyArg_ParseTuple(args, "O!:remove", &Element_Type, &element)) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1117 return NULL; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1118 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1119 if (!self->extra) { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1120 /* element has no children, so raise exception */ |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1121 PyErr_SetString( |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1122 PyExc_ValueError, |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1123 "list.remove(x): x not in list" |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1124 ); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1125 return NULL; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1126 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1127 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1128 for (i = 0; i < self->extra->length; i++) { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1129 if (self->extra->children[i] == element) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1130 break; |
|
51244
e9675d72e3e3
Merged revisions 69181 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
48660
diff
changeset
|
1131 if (PyObject_RichCompareBool(self->extra->children[i], element, Py_EQ) == 1) |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1132 break; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1133 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1134 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1135 if (i == self->extra->length) { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1136 /* element is not in children, so raise exception */ |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1137 PyErr_SetString( |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1138 PyExc_ValueError, |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1139 "list.remove(x): x not in list" |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1140 ); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1141 return NULL; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1142 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1143 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1144 Py_DECREF(self->extra->children[i]); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1145 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1146 self->extra->length--; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1147 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1148 for (; i < self->extra->length; i++) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1149 self->extra->children[i] = self->extra->children[i+1]; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1150 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1151 Py_RETURN_NONE; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1152 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1153 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1154 static PyObject* |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1155 element_repr(ElementObject* self) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1156 { |
|
41782
bee8d01ef42c
Add a format specifier %R to PyUnicode_FromFormat(), which embeds
Walter Dörwald <walter@livinglogic.de>
parents:
41769
diff
changeset
|
1157 return PyUnicode_FromFormat("<Element %R at %p>", self->tag, self); |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1158 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1159 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1160 static PyObject* |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1161 element_set(ElementObject* self, PyObject* args) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1162 { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1163 PyObject* attrib; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1164 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1165 PyObject* key; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1166 PyObject* value; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1167 if (!PyArg_ParseTuple(args, "OO:set", &key, &value)) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1168 return NULL; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1169 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1170 if (!self->extra) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1171 element_new_extra(self, NULL); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1172 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1173 attrib = element_get_attrib(self); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1174 if (!attrib) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1175 return NULL; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1176 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1177 if (PyDict_SetItem(attrib, key, value) < 0) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1178 return NULL; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1179 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1180 Py_RETURN_NONE; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1181 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1182 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1183 static int |
|
36954
db5e720b0cef
merged with cElementTree development trunk (1.0.6 snapshot):
Fredrik Lundh <fredrik@pythonware.com>
parents:
36684
diff
changeset
|
1184 element_setitem(PyObject* self_, Py_ssize_t index, PyObject* item) |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1185 { |
|
36954
db5e720b0cef
merged with cElementTree development trunk (1.0.6 snapshot):
Fredrik Lundh <fredrik@pythonware.com>
parents:
36684
diff
changeset
|
1186 ElementObject* self = (ElementObject*) self_; |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1187 int i; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1188 PyObject* old; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1189 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1190 if (!self->extra || index < 0 || index >= self->extra->length) { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1191 PyErr_SetString( |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1192 PyExc_IndexError, |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1193 "child assignment index out of range"); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1194 return -1; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1195 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1196 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1197 old = self->extra->children[index]; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1198 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1199 if (item) { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1200 Py_INCREF(item); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1201 self->extra->children[index] = item; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1202 } else { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1203 self->extra->length--; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1204 for (i = index; i < self->extra->length; i++) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1205 self->extra->children[i] = self->extra->children[i+1]; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1206 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1207 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1208 Py_DECREF(old); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1209 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1210 return 0; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1211 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1212 |
|
59601
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1213 static PyObject* |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1214 element_subscr(PyObject* self_, PyObject* item) |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1215 { |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1216 ElementObject* self = (ElementObject*) self_; |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1217 |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1218 if (PyIndex_Check(item)) { |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1219 Py_ssize_t i = PyNumber_AsSsize_t(item, PyExc_IndexError); |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1220 |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1221 if (i == -1 && PyErr_Occurred()) { |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1222 return NULL; |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1223 } |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1224 if (i < 0 && self->extra) |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1225 i += self->extra->length; |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1226 return element_getitem(self_, i); |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1227 } |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1228 else if (PySlice_Check(item)) { |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1229 Py_ssize_t start, stop, step, slicelen, cur, i; |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1230 PyObject* list; |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1231 |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1232 if (!self->extra) |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1233 return PyList_New(0); |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1234 |
|
66664
62b61abd02b8
Merge branches/pep-0384.
Martin v. Löwis <martin@v.loewis.de>
parents:
65707
diff
changeset
|
1235 if (PySlice_GetIndicesEx(item, |
|
59601
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1236 self->extra->length, |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1237 &start, &stop, &step, &slicelen) < 0) { |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1238 return NULL; |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1239 } |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1240 |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1241 if (slicelen <= 0) |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1242 return PyList_New(0); |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1243 else { |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1244 list = PyList_New(slicelen); |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1245 if (!list) |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1246 return NULL; |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1247 |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1248 for (cur = start, i = 0; i < slicelen; |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1249 cur += step, i++) { |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1250 PyObject* item = self->extra->children[cur]; |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1251 Py_INCREF(item); |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1252 PyList_SET_ITEM(list, i, item); |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1253 } |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1254 |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1255 return list; |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1256 } |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1257 } |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1258 else { |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1259 PyErr_SetString(PyExc_TypeError, |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1260 "element indices must be integers"); |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1261 return NULL; |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1262 } |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1263 } |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1264 |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1265 static int |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1266 element_ass_subscr(PyObject* self_, PyObject* item, PyObject* value) |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1267 { |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1268 ElementObject* self = (ElementObject*) self_; |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1269 |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1270 if (PyIndex_Check(item)) { |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1271 Py_ssize_t i = PyNumber_AsSsize_t(item, PyExc_IndexError); |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1272 |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1273 if (i == -1 && PyErr_Occurred()) { |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1274 return -1; |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1275 } |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1276 if (i < 0 && self->extra) |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1277 i += self->extra->length; |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1278 return element_setitem(self_, i, value); |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1279 } |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1280 else if (PySlice_Check(item)) { |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1281 Py_ssize_t start, stop, step, slicelen, newlen, cur, i; |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1282 |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1283 PyObject* recycle = NULL; |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1284 PyObject* seq = NULL; |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1285 |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1286 if (!self->extra) |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1287 element_new_extra(self, NULL); |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1288 |
|
66664
62b61abd02b8
Merge branches/pep-0384.
Martin v. Löwis <martin@v.loewis.de>
parents:
65707
diff
changeset
|
1289 if (PySlice_GetIndicesEx(item, |
|
59601
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1290 self->extra->length, |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1291 &start, &stop, &step, &slicelen) < 0) { |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1292 return -1; |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1293 } |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1294 |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1295 if (value == NULL) |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1296 newlen = 0; |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1297 else { |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1298 seq = PySequence_Fast(value, ""); |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1299 if (!seq) { |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1300 PyErr_Format( |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1301 PyExc_TypeError, |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1302 "expected sequence, not \"%.200s\"", Py_TYPE(value)->tp_name |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1303 ); |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1304 return -1; |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1305 } |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1306 newlen = PySequence_Size(seq); |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1307 } |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1308 |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1309 if (step != 1 && newlen != slicelen) |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1310 { |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1311 PyErr_Format(PyExc_ValueError, |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1312 "attempt to assign sequence of size %zd " |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1313 "to extended slice of size %zd", |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1314 newlen, slicelen |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1315 ); |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1316 return -1; |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1317 } |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1318 |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1319 |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1320 /* Resize before creating the recycle bin, to prevent refleaks. */ |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1321 if (newlen > slicelen) { |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1322 if (element_resize(self, newlen - slicelen) < 0) { |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1323 if (seq) { |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1324 Py_DECREF(seq); |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1325 } |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1326 return -1; |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1327 } |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1328 } |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1329 |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1330 if (slicelen > 0) { |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1331 /* to avoid recursive calls to this method (via decref), move |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1332 old items to the recycle bin here, and get rid of them when |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1333 we're done modifying the element */ |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1334 recycle = PyList_New(slicelen); |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1335 if (!recycle) { |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1336 if (seq) { |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1337 Py_DECREF(seq); |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1338 } |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1339 return -1; |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1340 } |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1341 for (cur = start, i = 0; i < slicelen; |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1342 cur += step, i++) |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1343 PyList_SET_ITEM(recycle, i, self->extra->children[cur]); |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1344 } |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1345 |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1346 if (newlen < slicelen) { |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1347 /* delete slice */ |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1348 for (i = stop; i < self->extra->length; i++) |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1349 self->extra->children[i + newlen - slicelen] = self->extra->children[i]; |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1350 } else if (newlen > slicelen) { |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1351 /* insert slice */ |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1352 for (i = self->extra->length-1; i >= stop; i--) |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1353 self->extra->children[i + newlen - slicelen] = self->extra->children[i]; |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1354 } |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1355 |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1356 /* replace the slice */ |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1357 for (cur = start, i = 0; i < newlen; |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1358 cur += step, i++) { |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1359 PyObject* element = PySequence_Fast_GET_ITEM(seq, i); |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1360 Py_INCREF(element); |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1361 self->extra->children[cur] = element; |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1362 } |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1363 |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1364 self->extra->length += newlen - slicelen; |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1365 |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1366 if (seq) { |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1367 Py_DECREF(seq); |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1368 } |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1369 |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1370 /* discard the recycle bin, and everything in it */ |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1371 Py_XDECREF(recycle); |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1372 |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1373 return 0; |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1374 } |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1375 else { |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1376 PyErr_SetString(PyExc_TypeError, |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1377 "element indices must be integers"); |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1378 return -1; |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1379 } |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1380 } |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1381 |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1382 static PyMethodDef element_methods[] = { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1383 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1384 {"clear", (PyCFunction) element_clear, METH_VARARGS}, |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1385 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1386 {"get", (PyCFunction) element_get, METH_VARARGS}, |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1387 {"set", (PyCFunction) element_set, METH_VARARGS}, |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1388 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1389 {"find", (PyCFunction) element_find, METH_VARARGS}, |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1390 {"findtext", (PyCFunction) element_findtext, METH_VARARGS}, |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1391 {"findall", (PyCFunction) element_findall, METH_VARARGS}, |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1392 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1393 {"append", (PyCFunction) element_append, METH_VARARGS}, |
|
59601
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1394 {"extend", (PyCFunction) element_extend, METH_VARARGS}, |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1395 {"insert", (PyCFunction) element_insert, METH_VARARGS}, |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1396 {"remove", (PyCFunction) element_remove, METH_VARARGS}, |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1397 |
|
59601
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1398 {"iter", (PyCFunction) element_iter, METH_VARARGS}, |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1399 {"itertext", (PyCFunction) element_itertext, METH_VARARGS}, |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1400 {"iterfind", (PyCFunction) element_iterfind, METH_VARARGS}, |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1401 |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1402 {"getiterator", (PyCFunction) element_iter, METH_VARARGS}, |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1403 {"getchildren", (PyCFunction) element_getchildren, METH_VARARGS}, |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1404 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1405 {"items", (PyCFunction) element_items, METH_VARARGS}, |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1406 {"keys", (PyCFunction) element_keys, METH_VARARGS}, |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1407 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1408 {"makeelement", (PyCFunction) element_makeelement, METH_VARARGS}, |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1409 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1410 {"__copy__", (PyCFunction) element_copy, METH_VARARGS}, |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1411 {"__deepcopy__", (PyCFunction) element_deepcopy, METH_VARARGS}, |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1412 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1413 {NULL, NULL} |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1414 }; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1415 |
|
59601
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1416 static PyObject* |
|
48414
4025f638911f
#3247: Get rid of Py_FindMethod:
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
47580
diff
changeset
|
1417 element_getattro(ElementObject* self, PyObject* nameobj) |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1418 { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1419 PyObject* res; |
|
48414
4025f638911f
#3247: Get rid of Py_FindMethod:
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
47580
diff
changeset
|
1420 char *name = ""; |
|
4025f638911f
#3247: Get rid of Py_FindMethod:
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
47580
diff
changeset
|
1421 |
|
4025f638911f
#3247: Get rid of Py_FindMethod:
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
47580
diff
changeset
|
1422 if (PyUnicode_Check(nameobj)) |
|
59601
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1423 name = _PyUnicode_AsString(nameobj); |
|
68804
d0fe7489c4cc
_elementtree.c: remove trailing spaces
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66799
diff
changeset
|
1424 |
|
66799
50d170bb71c7
Issue #6697: Fixed instances of _PyUnicode_AsString() result not checked for NULL
Alexander Belopolsky <alexander.belopolsky@gmail.com>
parents:
66664
diff
changeset
|
1425 if (name == NULL) |
|
50d170bb71c7
Issue #6697: Fixed instances of _PyUnicode_AsString() result not checked for NULL
Alexander Belopolsky <alexander.belopolsky@gmail.com>
parents:
66664
diff
changeset
|
1426 return NULL; |
|
59601
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1427 |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1428 /* handle common attributes first */ |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1429 if (strcmp(name, "tag") == 0) { |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1430 res = self->tag; |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1431 Py_INCREF(res); |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1432 return res; |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1433 } else if (strcmp(name, "text") == 0) { |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1434 res = element_get_text(self); |
|
59601
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1435 Py_INCREF(res); |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1436 return res; |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1437 } |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1438 |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1439 /* methods */ |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1440 res = PyObject_GenericGetAttr((PyObject*) self, nameobj); |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1441 if (res) |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1442 return res; |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1443 |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1444 /* less common attributes */ |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1445 if (strcmp(name, "tail") == 0) { |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1446 PyErr_Clear(); |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1447 res = element_get_tail(self); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1448 } else if (strcmp(name, "attrib") == 0) { |
|
59601
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1449 PyErr_Clear(); |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1450 if (!self->extra) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1451 element_new_extra(self, NULL); |
|
59601
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1452 res = element_get_attrib(self); |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1453 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1454 |
|
59601
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1455 if (!res) |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1456 return NULL; |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1457 |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1458 Py_INCREF(res); |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1459 return res; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1460 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1461 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1462 static int |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1463 element_setattr(ElementObject* self, const char* name, PyObject* value) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1464 { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1465 if (value == NULL) { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1466 PyErr_SetString( |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1467 PyExc_AttributeError, |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1468 "can't delete element attributes" |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1469 ); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1470 return -1; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1471 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1472 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1473 if (strcmp(name, "tag") == 0) { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1474 Py_DECREF(self->tag); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1475 self->tag = value; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1476 Py_INCREF(self->tag); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1477 } else if (strcmp(name, "text") == 0) { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1478 Py_DECREF(JOIN_OBJ(self->text)); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1479 self->text = value; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1480 Py_INCREF(self->text); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1481 } else if (strcmp(name, "tail") == 0) { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1482 Py_DECREF(JOIN_OBJ(self->tail)); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1483 self->tail = value; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1484 Py_INCREF(self->tail); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1485 } else if (strcmp(name, "attrib") == 0) { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1486 if (!self->extra) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1487 element_new_extra(self, NULL); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1488 Py_DECREF(self->extra->attrib); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1489 self->extra->attrib = value; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1490 Py_INCREF(self->extra->attrib); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1491 } else { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1492 PyErr_SetString(PyExc_AttributeError, name); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1493 return -1; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1494 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1495 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1496 return 0; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1497 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1498 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1499 static PySequenceMethods element_as_sequence = { |
|
36501
7fdc639bc5b4
Merge ssize_t branch.
Martin v. Löwis <martin@v.loewis.de>
parents:
36450
diff
changeset
|
1500 (lenfunc) element_length, |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1501 0, /* sq_concat */ |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1502 0, /* sq_repeat */ |
|
36501
7fdc639bc5b4
Merge ssize_t branch.
Martin v. Löwis <martin@v.loewis.de>
parents:
36450
diff
changeset
|
1503 element_getitem, |
|
59601
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1504 0, |
|
36501
7fdc639bc5b4
Merge ssize_t branch.
Martin v. Löwis <martin@v.loewis.de>
parents:
36450
diff
changeset
|
1505 element_setitem, |
|
59601
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1506 0, |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1507 }; |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1508 |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1509 static PyMappingMethods element_as_mapping = { |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1510 (lenfunc) element_length, |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1511 (binaryfunc) element_subscr, |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1512 (objobjargproc) element_ass_subscr, |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1513 }; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1514 |
|
37144
91dd4d44d3bc
Finish getting rid of statichere/staticforward
Neal Norwitz <nnorwitz@gmail.com>
parents:
36954
diff
changeset
|
1515 static PyTypeObject Element_Type = { |
|
42334
e70cdce0e8b2
Merged revisions 56467-56482 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
41782
diff
changeset
|
1516 PyVarObject_HEAD_INIT(NULL, 0) |
|
e70cdce0e8b2
Merged revisions 56467-56482 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
41782
diff
changeset
|
1517 "Element", sizeof(ElementObject), 0, |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1518 /* methods */ |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1519 (destructor)element_dealloc, /* tp_dealloc */ |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1520 0, /* tp_print */ |
|
48414
4025f638911f
#3247: Get rid of Py_FindMethod:
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
47580
diff
changeset
|
1521 0, /* tp_getattr */ |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1522 (setattrfunc)element_setattr, /* tp_setattr */ |
|
51271
87fbbf22adf3
Merged revisions 69214 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
51244
diff
changeset
|
1523 0, /* tp_reserved */ |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1524 (reprfunc)element_repr, /* tp_repr */ |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1525 0, /* tp_as_number */ |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1526 &element_as_sequence, /* tp_as_sequence */ |
|
59601
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1527 &element_as_mapping, /* tp_as_mapping */ |
|
48414
4025f638911f
#3247: Get rid of Py_FindMethod:
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
47580
diff
changeset
|
1528 0, /* tp_hash */ |
|
4025f638911f
#3247: Get rid of Py_FindMethod:
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
47580
diff
changeset
|
1529 0, /* tp_call */ |
|
4025f638911f
#3247: Get rid of Py_FindMethod:
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
47580
diff
changeset
|
1530 0, /* tp_str */ |
|
4025f638911f
#3247: Get rid of Py_FindMethod:
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
47580
diff
changeset
|
1531 (getattrofunc)element_getattro, /* tp_getattro */ |
|
4025f638911f
#3247: Get rid of Py_FindMethod:
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
47580
diff
changeset
|
1532 0, /* tp_setattro */ |
|
4025f638911f
#3247: Get rid of Py_FindMethod:
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
47580
diff
changeset
|
1533 0, /* tp_as_buffer */ |
|
4025f638911f
#3247: Get rid of Py_FindMethod:
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
47580
diff
changeset
|
1534 Py_TPFLAGS_DEFAULT, /* tp_flags */ |
|
4025f638911f
#3247: Get rid of Py_FindMethod:
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
47580
diff
changeset
|
1535 0, /* tp_doc */ |
|
4025f638911f
#3247: Get rid of Py_FindMethod:
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
47580
diff
changeset
|
1536 0, /* tp_traverse */ |
|
4025f638911f
#3247: Get rid of Py_FindMethod:
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
47580
diff
changeset
|
1537 0, /* tp_clear */ |
|
4025f638911f
#3247: Get rid of Py_FindMethod:
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
47580
diff
changeset
|
1538 0, /* tp_richcompare */ |
|
4025f638911f
#3247: Get rid of Py_FindMethod:
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
47580
diff
changeset
|
1539 0, /* tp_weaklistoffset */ |
|
4025f638911f
#3247: Get rid of Py_FindMethod:
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
47580
diff
changeset
|
1540 0, /* tp_iter */ |
|
4025f638911f
#3247: Get rid of Py_FindMethod:
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
47580
diff
changeset
|
1541 0, /* tp_iternext */ |
|
4025f638911f
#3247: Get rid of Py_FindMethod:
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
47580
diff
changeset
|
1542 element_methods, /* tp_methods */ |
|
4025f638911f
#3247: Get rid of Py_FindMethod:
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
47580
diff
changeset
|
1543 0, /* tp_members */ |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1544 }; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1545 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1546 /* ==================================================================== */ |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1547 /* the tree builder type */ |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1548 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1549 typedef struct { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1550 PyObject_HEAD |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1551 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1552 PyObject* root; /* root node (first created node) */ |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1553 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1554 ElementObject* this; /* current node */ |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1555 ElementObject* last; /* most recently created node */ |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1556 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1557 PyObject* data; /* data collector (string or list), or NULL */ |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1558 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1559 PyObject* stack; /* element stack */ |
|
39442
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
1560 Py_ssize_t index; /* current stack size (0=empty) */ |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1561 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1562 /* element tracing */ |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1563 PyObject* events; /* list of events, or NULL if not collecting */ |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1564 PyObject* start_event_obj; /* event objects (NULL to ignore) */ |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1565 PyObject* end_event_obj; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1566 PyObject* start_ns_event_obj; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1567 PyObject* end_ns_event_obj; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1568 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1569 } TreeBuilderObject; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1570 |
|
37144
91dd4d44d3bc
Finish getting rid of statichere/staticforward
Neal Norwitz <nnorwitz@gmail.com>
parents:
36954
diff
changeset
|
1571 static PyTypeObject TreeBuilder_Type; |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1572 |
|
44351
86a2679dca46
#1629: Renamed Py_Size, Py_Type and Py_Refcnt to Py_SIZE, Py_TYPE and Py_REFCNT.
Christian Heimes <christian@cheimes.de>
parents:
44099
diff
changeset
|
1573 #define TreeBuilder_CheckExact(op) (Py_TYPE(op) == &TreeBuilder_Type) |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1574 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1575 /* -------------------------------------------------------------------- */ |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1576 /* constructor and destructor */ |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1577 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1578 LOCAL(PyObject*) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1579 treebuilder_new(void) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1580 { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1581 TreeBuilderObject* self; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1582 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1583 self = PyObject_New(TreeBuilderObject, &TreeBuilder_Type); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1584 if (self == NULL) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1585 return NULL; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1586 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1587 self->root = NULL; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1588 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1589 Py_INCREF(Py_None); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1590 self->this = (ElementObject*) Py_None; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1591 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1592 Py_INCREF(Py_None); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1593 self->last = (ElementObject*) Py_None; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1594 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1595 self->data = NULL; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1596 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1597 self->stack = PyList_New(20); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1598 self->index = 0; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1599 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1600 self->events = NULL; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1601 self->start_event_obj = self->end_event_obj = NULL; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1602 self->start_ns_event_obj = self->end_ns_event_obj = NULL; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1603 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1604 ALLOC(sizeof(TreeBuilderObject), "create treebuilder"); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1605 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1606 return (PyObject*) self; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1607 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1608 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1609 static PyObject* |
|
38673
a19c20c5e5c7
Merge the rest of the trunk.
Thomas Wouters <thomas@python.org>
parents:
38453
diff
changeset
|
1610 treebuilder(PyObject* self_, PyObject* args) |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1611 { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1612 if (!PyArg_ParseTuple(args, ":TreeBuilder")) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1613 return NULL; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1614 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1615 return treebuilder_new(); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1616 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1617 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1618 static void |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1619 treebuilder_dealloc(TreeBuilderObject* self) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1620 { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1621 Py_XDECREF(self->end_ns_event_obj); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1622 Py_XDECREF(self->start_ns_event_obj); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1623 Py_XDECREF(self->end_event_obj); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1624 Py_XDECREF(self->start_event_obj); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1625 Py_XDECREF(self->events); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1626 Py_DECREF(self->stack); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1627 Py_XDECREF(self->data); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1628 Py_DECREF(self->last); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1629 Py_DECREF(self->this); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1630 Py_XDECREF(self->root); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1631 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1632 RELEASE(sizeof(TreeBuilderObject), "destroy treebuilder"); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1633 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1634 PyObject_Del(self); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1635 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1636 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1637 /* -------------------------------------------------------------------- */ |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1638 /* handlers */ |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1639 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1640 LOCAL(PyObject*) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1641 treebuilder_handle_xml(TreeBuilderObject* self, PyObject* encoding, |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1642 PyObject* standalone) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1643 { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1644 Py_RETURN_NONE; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1645 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1646 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1647 LOCAL(PyObject*) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1648 treebuilder_handle_start(TreeBuilderObject* self, PyObject* tag, |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1649 PyObject* attrib) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1650 { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1651 PyObject* node; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1652 PyObject* this; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1653 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1654 if (self->data) { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1655 if (self->this == self->last) { |
|
36954
db5e720b0cef
merged with cElementTree development trunk (1.0.6 snapshot):
Fredrik Lundh <fredrik@pythonware.com>
parents:
36684
diff
changeset
|
1656 Py_DECREF(JOIN_OBJ(self->last->text)); |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1657 self->last->text = JOIN_SET( |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1658 self->data, PyList_CheckExact(self->data) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1659 ); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1660 } else { |
|
36954
db5e720b0cef
merged with cElementTree development trunk (1.0.6 snapshot):
Fredrik Lundh <fredrik@pythonware.com>
parents:
36684
diff
changeset
|
1661 Py_DECREF(JOIN_OBJ(self->last->tail)); |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1662 self->last->tail = JOIN_SET( |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1663 self->data, PyList_CheckExact(self->data) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1664 ); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1665 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1666 self->data = NULL; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1667 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1668 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1669 node = element_new(tag, attrib); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1670 if (!node) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1671 return NULL; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1672 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1673 this = (PyObject*) self->this; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1674 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1675 if (this != Py_None) { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1676 if (element_add_subelement((ElementObject*) this, node) < 0) |
|
36954
db5e720b0cef
merged with cElementTree development trunk (1.0.6 snapshot):
Fredrik Lundh <fredrik@pythonware.com>
parents:
36684
diff
changeset
|
1677 goto error; |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1678 } else { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1679 if (self->root) { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1680 PyErr_SetString( |
|
59601
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1681 elementtree_parseerror_obj, |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1682 "multiple elements on top level" |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1683 ); |
|
36954
db5e720b0cef
merged with cElementTree development trunk (1.0.6 snapshot):
Fredrik Lundh <fredrik@pythonware.com>
parents:
36684
diff
changeset
|
1684 goto error; |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1685 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1686 Py_INCREF(node); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1687 self->root = node; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1688 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1689 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1690 if (self->index < PyList_GET_SIZE(self->stack)) { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1691 if (PyList_SetItem(self->stack, self->index, this) < 0) |
|
36954
db5e720b0cef
merged with cElementTree development trunk (1.0.6 snapshot):
Fredrik Lundh <fredrik@pythonware.com>
parents:
36684
diff
changeset
|
1692 goto error; |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1693 Py_INCREF(this); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1694 } else { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1695 if (PyList_Append(self->stack, this) < 0) |
|
36954
db5e720b0cef
merged with cElementTree development trunk (1.0.6 snapshot):
Fredrik Lundh <fredrik@pythonware.com>
parents:
36684
diff
changeset
|
1696 goto error; |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1697 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1698 self->index++; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1699 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1700 Py_DECREF(this); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1701 Py_INCREF(node); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1702 self->this = (ElementObject*) node; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1703 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1704 Py_DECREF(self->last); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1705 Py_INCREF(node); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1706 self->last = (ElementObject*) node; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1707 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1708 if (self->start_event_obj) { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1709 PyObject* res; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1710 PyObject* action = self->start_event_obj; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1711 res = PyTuple_New(2); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1712 if (res) { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1713 Py_INCREF(action); PyTuple_SET_ITEM(res, 0, (PyObject*) action); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1714 Py_INCREF(node); PyTuple_SET_ITEM(res, 1, (PyObject*) node); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1715 PyList_Append(self->events, res); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1716 Py_DECREF(res); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1717 } else |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1718 PyErr_Clear(); /* FIXME: propagate error */ |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1719 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1720 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1721 return node; |
|
36954
db5e720b0cef
merged with cElementTree development trunk (1.0.6 snapshot):
Fredrik Lundh <fredrik@pythonware.com>
parents:
36684
diff
changeset
|
1722 |
|
db5e720b0cef
merged with cElementTree development trunk (1.0.6 snapshot):
Fredrik Lundh <fredrik@pythonware.com>
parents:
36684
diff
changeset
|
1723 error: |
|
db5e720b0cef
merged with cElementTree development trunk (1.0.6 snapshot):
Fredrik Lundh <fredrik@pythonware.com>
parents:
36684
diff
changeset
|
1724 Py_DECREF(node); |
|
db5e720b0cef
merged with cElementTree development trunk (1.0.6 snapshot):
Fredrik Lundh <fredrik@pythonware.com>
parents:
36684
diff
changeset
|
1725 return NULL; |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1726 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1727 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1728 LOCAL(PyObject*) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1729 treebuilder_handle_data(TreeBuilderObject* self, PyObject* data) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1730 { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1731 if (!self->data) { |
|
39610
3674f20ac781
Merge current trunk into p3yk. This includes the PyNumber_Index API change,
Thomas Wouters <thomas@python.org>
parents:
39442
diff
changeset
|
1732 if (self->last == (ElementObject*) Py_None) { |
|
3674f20ac781
Merge current trunk into p3yk. This includes the PyNumber_Index API change,
Thomas Wouters <thomas@python.org>
parents:
39442
diff
changeset
|
1733 /* ignore calls to data before the first call to start */ |
|
3674f20ac781
Merge current trunk into p3yk. This includes the PyNumber_Index API change,
Thomas Wouters <thomas@python.org>
parents:
39442
diff
changeset
|
1734 Py_RETURN_NONE; |
|
3674f20ac781
Merge current trunk into p3yk. This includes the PyNumber_Index API change,
Thomas Wouters <thomas@python.org>
parents:
39442
diff
changeset
|
1735 } |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1736 /* store the first item as is */ |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1737 Py_INCREF(data); self->data = data; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1738 } else { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1739 /* more than one item; use a list to collect items */ |
|
47301
23ab586c427a
Renamed PyString to PyBytes
Christian Heimes <christian@cheimes.de>
parents:
44742
diff
changeset
|
1740 if (PyBytes_CheckExact(self->data) && Py_REFCNT(self->data) == 1 && |
|
23ab586c427a
Renamed PyString to PyBytes
Christian Heimes <christian@cheimes.de>
parents:
44742
diff
changeset
|
1741 PyBytes_CheckExact(data) && PyBytes_GET_SIZE(data) == 1) { |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1742 /* expat often generates single character data sections; handle |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1743 the most common case by resizing the existing string... */ |
|
47301
23ab586c427a
Renamed PyString to PyBytes
Christian Heimes <christian@cheimes.de>
parents:
44742
diff
changeset
|
1744 Py_ssize_t size = PyBytes_GET_SIZE(self->data); |
|
23ab586c427a
Renamed PyString to PyBytes
Christian Heimes <christian@cheimes.de>
parents:
44742
diff
changeset
|
1745 if (_PyBytes_Resize(&self->data, size + 1) < 0) |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1746 return NULL; |
|
47301
23ab586c427a
Renamed PyString to PyBytes
Christian Heimes <christian@cheimes.de>
parents:
44742
diff
changeset
|
1747 PyBytes_AS_STRING(self->data)[size] = PyBytes_AS_STRING(data)[0]; |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1748 } else if (PyList_CheckExact(self->data)) { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1749 if (PyList_Append(self->data, data) < 0) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1750 return NULL; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1751 } else { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1752 PyObject* list = PyList_New(2); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1753 if (!list) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1754 return NULL; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1755 PyList_SET_ITEM(list, 0, self->data); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1756 Py_INCREF(data); PyList_SET_ITEM(list, 1, data); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1757 self->data = list; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1758 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1759 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1760 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1761 Py_RETURN_NONE; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1762 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1763 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1764 LOCAL(PyObject*) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1765 treebuilder_handle_end(TreeBuilderObject* self, PyObject* tag) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1766 { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1767 PyObject* item; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1768 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1769 if (self->data) { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1770 if (self->this == self->last) { |
|
36954
db5e720b0cef
merged with cElementTree development trunk (1.0.6 snapshot):
Fredrik Lundh <fredrik@pythonware.com>
parents:
36684
diff
changeset
|
1771 Py_DECREF(JOIN_OBJ(self->last->text)); |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1772 self->last->text = JOIN_SET( |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1773 self->data, PyList_CheckExact(self->data) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1774 ); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1775 } else { |
|
36954
db5e720b0cef
merged with cElementTree development trunk (1.0.6 snapshot):
Fredrik Lundh <fredrik@pythonware.com>
parents:
36684
diff
changeset
|
1776 Py_DECREF(JOIN_OBJ(self->last->tail)); |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1777 self->last->tail = JOIN_SET( |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1778 self->data, PyList_CheckExact(self->data) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1779 ); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1780 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1781 self->data = NULL; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1782 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1783 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1784 if (self->index == 0) { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1785 PyErr_SetString( |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1786 PyExc_IndexError, |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1787 "pop from empty stack" |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1788 ); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1789 return NULL; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1790 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1791 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1792 self->index--; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1793 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1794 item = PyList_GET_ITEM(self->stack, self->index); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1795 Py_INCREF(item); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1796 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1797 Py_DECREF(self->last); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1798 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1799 self->last = (ElementObject*) self->this; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1800 self->this = (ElementObject*) item; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1801 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1802 if (self->end_event_obj) { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1803 PyObject* res; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1804 PyObject* action = self->end_event_obj; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1805 PyObject* node = (PyObject*) self->last; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1806 res = PyTuple_New(2); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1807 if (res) { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1808 Py_INCREF(action); PyTuple_SET_ITEM(res, 0, (PyObject*) action); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1809 Py_INCREF(node); PyTuple_SET_ITEM(res, 1, (PyObject*) node); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1810 PyList_Append(self->events, res); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1811 Py_DECREF(res); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1812 } else |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1813 PyErr_Clear(); /* FIXME: propagate error */ |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1814 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1815 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1816 Py_INCREF(self->last); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1817 return (PyObject*) self->last; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1818 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1819 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1820 LOCAL(void) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1821 treebuilder_handle_namespace(TreeBuilderObject* self, int start, |
|
59601
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1822 PyObject *prefix, PyObject *uri) |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1823 { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1824 PyObject* res; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1825 PyObject* action; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1826 PyObject* parcel; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1827 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1828 if (!self->events) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1829 return; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1830 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1831 if (start) { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1832 if (!self->start_ns_event_obj) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1833 return; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1834 action = self->start_ns_event_obj; |
|
59601
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1835 parcel = Py_BuildValue("OO", prefix, uri); |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1836 if (!parcel) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1837 return; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1838 Py_INCREF(action); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1839 } else { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1840 if (!self->end_ns_event_obj) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1841 return; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1842 action = self->end_ns_event_obj; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1843 Py_INCREF(action); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1844 parcel = Py_None; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1845 Py_INCREF(parcel); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1846 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1847 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1848 res = PyTuple_New(2); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1849 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1850 if (res) { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1851 PyTuple_SET_ITEM(res, 0, action); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1852 PyTuple_SET_ITEM(res, 1, parcel); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1853 PyList_Append(self->events, res); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1854 Py_DECREF(res); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1855 } else |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1856 PyErr_Clear(); /* FIXME: propagate error */ |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1857 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1858 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1859 /* -------------------------------------------------------------------- */ |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1860 /* methods (in alphabetical order) */ |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1861 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1862 static PyObject* |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1863 treebuilder_data(TreeBuilderObject* self, PyObject* args) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1864 { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1865 PyObject* data; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1866 if (!PyArg_ParseTuple(args, "O:data", &data)) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1867 return NULL; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1868 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1869 return treebuilder_handle_data(self, data); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1870 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1871 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1872 static PyObject* |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1873 treebuilder_end(TreeBuilderObject* self, PyObject* args) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1874 { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1875 PyObject* tag; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1876 if (!PyArg_ParseTuple(args, "O:end", &tag)) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1877 return NULL; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1878 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1879 return treebuilder_handle_end(self, tag); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1880 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1881 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1882 LOCAL(PyObject*) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1883 treebuilder_done(TreeBuilderObject* self) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1884 { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1885 PyObject* res; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1886 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1887 /* FIXME: check stack size? */ |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1888 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1889 if (self->root) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1890 res = self->root; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1891 else |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1892 res = Py_None; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1893 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1894 Py_INCREF(res); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1895 return res; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1896 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1897 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1898 static PyObject* |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1899 treebuilder_close(TreeBuilderObject* self, PyObject* args) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1900 { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1901 if (!PyArg_ParseTuple(args, ":close")) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1902 return NULL; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1903 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1904 return treebuilder_done(self); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1905 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1906 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1907 static PyObject* |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1908 treebuilder_start(TreeBuilderObject* self, PyObject* args) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1909 { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1910 PyObject* tag; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1911 PyObject* attrib = Py_None; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1912 if (!PyArg_ParseTuple(args, "O|O:start", &tag, &attrib)) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1913 return NULL; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1914 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1915 return treebuilder_handle_start(self, tag, attrib); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1916 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1917 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1918 static PyObject* |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1919 treebuilder_xml(TreeBuilderObject* self, PyObject* args) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1920 { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1921 PyObject* encoding; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1922 PyObject* standalone; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1923 if (!PyArg_ParseTuple(args, "OO:xml", &encoding, &standalone)) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1924 return NULL; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1925 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1926 return treebuilder_handle_xml(self, encoding, standalone); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1927 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1928 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1929 static PyMethodDef treebuilder_methods[] = { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1930 {"data", (PyCFunction) treebuilder_data, METH_VARARGS}, |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1931 {"start", (PyCFunction) treebuilder_start, METH_VARARGS}, |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1932 {"end", (PyCFunction) treebuilder_end, METH_VARARGS}, |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1933 {"xml", (PyCFunction) treebuilder_xml, METH_VARARGS}, |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1934 {"close", (PyCFunction) treebuilder_close, METH_VARARGS}, |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1935 {NULL, NULL} |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1936 }; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1937 |
|
37144
91dd4d44d3bc
Finish getting rid of statichere/staticforward
Neal Norwitz <nnorwitz@gmail.com>
parents:
36954
diff
changeset
|
1938 static PyTypeObject TreeBuilder_Type = { |
|
42334
e70cdce0e8b2
Merged revisions 56467-56482 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
41782
diff
changeset
|
1939 PyVarObject_HEAD_INIT(NULL, 0) |
|
e70cdce0e8b2
Merged revisions 56467-56482 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
41782
diff
changeset
|
1940 "TreeBuilder", sizeof(TreeBuilderObject), 0, |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1941 /* methods */ |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1942 (destructor)treebuilder_dealloc, /* tp_dealloc */ |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1943 0, /* tp_print */ |
|
48414
4025f638911f
#3247: Get rid of Py_FindMethod:
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
47580
diff
changeset
|
1944 0, /* tp_getattr */ |
|
4025f638911f
#3247: Get rid of Py_FindMethod:
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
47580
diff
changeset
|
1945 0, /* tp_setattr */ |
|
51271
87fbbf22adf3
Merged revisions 69214 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
51244
diff
changeset
|
1946 0, /* tp_reserved */ |
|
48414
4025f638911f
#3247: Get rid of Py_FindMethod:
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
47580
diff
changeset
|
1947 0, /* tp_repr */ |
|
4025f638911f
#3247: Get rid of Py_FindMethod:
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
47580
diff
changeset
|
1948 0, /* tp_as_number */ |
|
4025f638911f
#3247: Get rid of Py_FindMethod:
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
47580
diff
changeset
|
1949 0, /* tp_as_sequence */ |
|
4025f638911f
#3247: Get rid of Py_FindMethod:
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
47580
diff
changeset
|
1950 0, /* tp_as_mapping */ |
|
4025f638911f
#3247: Get rid of Py_FindMethod:
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
47580
diff
changeset
|
1951 0, /* tp_hash */ |
|
4025f638911f
#3247: Get rid of Py_FindMethod:
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
47580
diff
changeset
|
1952 0, /* tp_call */ |
|
4025f638911f
#3247: Get rid of Py_FindMethod:
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
47580
diff
changeset
|
1953 0, /* tp_str */ |
|
4025f638911f
#3247: Get rid of Py_FindMethod:
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
47580
diff
changeset
|
1954 0, /* tp_getattro */ |
|
4025f638911f
#3247: Get rid of Py_FindMethod:
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
47580
diff
changeset
|
1955 0, /* tp_setattro */ |
|
4025f638911f
#3247: Get rid of Py_FindMethod:
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
47580
diff
changeset
|
1956 0, /* tp_as_buffer */ |
|
4025f638911f
#3247: Get rid of Py_FindMethod:
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
47580
diff
changeset
|
1957 Py_TPFLAGS_DEFAULT, /* tp_flags */ |
|
4025f638911f
#3247: Get rid of Py_FindMethod:
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
47580
diff
changeset
|
1958 0, /* tp_doc */ |
|
4025f638911f
#3247: Get rid of Py_FindMethod:
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
47580
diff
changeset
|
1959 0, /* tp_traverse */ |
|
4025f638911f
#3247: Get rid of Py_FindMethod:
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
47580
diff
changeset
|
1960 0, /* tp_clear */ |
|
4025f638911f
#3247: Get rid of Py_FindMethod:
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
47580
diff
changeset
|
1961 0, /* tp_richcompare */ |
|
4025f638911f
#3247: Get rid of Py_FindMethod:
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
47580
diff
changeset
|
1962 0, /* tp_weaklistoffset */ |
|
4025f638911f
#3247: Get rid of Py_FindMethod:
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
47580
diff
changeset
|
1963 0, /* tp_iter */ |
|
4025f638911f
#3247: Get rid of Py_FindMethod:
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
47580
diff
changeset
|
1964 0, /* tp_iternext */ |
|
4025f638911f
#3247: Get rid of Py_FindMethod:
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
47580
diff
changeset
|
1965 treebuilder_methods, /* tp_methods */ |
|
4025f638911f
#3247: Get rid of Py_FindMethod:
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
47580
diff
changeset
|
1966 0, /* tp_members */ |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1967 }; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1968 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1969 /* ==================================================================== */ |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1970 /* the expat interface */ |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1971 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1972 #if defined(USE_EXPAT) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1973 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1974 #include "expat.h" |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1975 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1976 #if defined(USE_PYEXPAT_CAPI) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1977 #include "pyexpat.h" |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1978 static struct PyExpat_CAPI* expat_capi; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1979 #define EXPAT(func) (expat_capi->func) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1980 #else |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1981 #define EXPAT(func) (XML_##func) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1982 #endif |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1983 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1984 typedef struct { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1985 PyObject_HEAD |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1986 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1987 XML_Parser parser; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1988 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1989 PyObject* target; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1990 PyObject* entity; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1991 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1992 PyObject* names; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1993 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1994 PyObject* handle_xml; |
|
59601
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
1995 |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1996 PyObject* handle_start; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1997 PyObject* handle_data; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1998 PyObject* handle_end; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
1999 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2000 PyObject* handle_comment; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2001 PyObject* handle_pi; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2002 |
|
59601
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
2003 PyObject* handle_close; |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
2004 |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2005 } XMLParserObject; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2006 |
|
37144
91dd4d44d3bc
Finish getting rid of statichere/staticforward
Neal Norwitz <nnorwitz@gmail.com>
parents:
36954
diff
changeset
|
2007 static PyTypeObject XMLParser_Type; |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2008 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2009 /* helpers */ |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2010 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2011 LOCAL(PyObject*) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2012 makeuniversal(XMLParserObject* self, const char* string) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2013 { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2014 /* convert a UTF-8 tag/attribute name from the expat parser |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2015 to a universal name string */ |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2016 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2017 int size = strlen(string); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2018 PyObject* key; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2019 PyObject* value; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2020 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2021 /* look the 'raw' name up in the names dictionary */ |
|
47301
23ab586c427a
Renamed PyString to PyBytes
Christian Heimes <christian@cheimes.de>
parents:
44742
diff
changeset
|
2022 key = PyBytes_FromStringAndSize(string, size); |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2023 if (!key) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2024 return NULL; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2025 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2026 value = PyDict_GetItem(self->names, key); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2027 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2028 if (value) { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2029 Py_INCREF(value); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2030 } else { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2031 /* new name. convert to universal name, and decode as |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2032 necessary */ |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2033 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2034 PyObject* tag; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2035 char* p; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2036 int i; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2037 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2038 /* look for namespace separator */ |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2039 for (i = 0; i < size; i++) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2040 if (string[i] == '}') |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2041 break; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2042 if (i != size) { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2043 /* convert to universal name */ |
|
47301
23ab586c427a
Renamed PyString to PyBytes
Christian Heimes <christian@cheimes.de>
parents:
44742
diff
changeset
|
2044 tag = PyBytes_FromStringAndSize(NULL, size+1); |
|
23ab586c427a
Renamed PyString to PyBytes
Christian Heimes <christian@cheimes.de>
parents:
44742
diff
changeset
|
2045 p = PyBytes_AS_STRING(tag); |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2046 p[0] = '{'; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2047 memcpy(p+1, string, size); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2048 size++; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2049 } else { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2050 /* plain name; use key as tag */ |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2051 Py_INCREF(key); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2052 tag = key; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2053 } |
|
68804
d0fe7489c4cc
_elementtree.c: remove trailing spaces
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66799
diff
changeset
|
2054 |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2055 /* decode universal name */ |
|
47301
23ab586c427a
Renamed PyString to PyBytes
Christian Heimes <christian@cheimes.de>
parents:
44742
diff
changeset
|
2056 p = PyBytes_AS_STRING(tag); |
|
42491
a8f13a43eaa1
SF patch # 1769767, get test_xml_etree_c working. More conversions are probably needed.
Neal Norwitz <nnorwitz@gmail.com>
parents:
42334
diff
changeset
|
2057 value = PyUnicode_DecodeUTF8(p, size, "strict"); |
|
a8f13a43eaa1
SF patch # 1769767, get test_xml_etree_c working. More conversions are probably needed.
Neal Norwitz <nnorwitz@gmail.com>
parents:
42334
diff
changeset
|
2058 Py_DECREF(tag); |
|
a8f13a43eaa1
SF patch # 1769767, get test_xml_etree_c working. More conversions are probably needed.
Neal Norwitz <nnorwitz@gmail.com>
parents:
42334
diff
changeset
|
2059 if (!value) { |
|
a8f13a43eaa1
SF patch # 1769767, get test_xml_etree_c working. More conversions are probably needed.
Neal Norwitz <nnorwitz@gmail.com>
parents:
42334
diff
changeset
|
2060 Py_DECREF(key); |
|
a8f13a43eaa1
SF patch # 1769767, get test_xml_etree_c working. More conversions are probably needed.
Neal Norwitz <nnorwitz@gmail.com>
parents:
42334
diff
changeset
|
2061 return NULL; |
|
a8f13a43eaa1
SF patch # 1769767, get test_xml_etree_c working. More conversions are probably needed.
Neal Norwitz <nnorwitz@gmail.com>
parents:
42334
diff
changeset
|
2062 } |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2063 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2064 /* add to names dictionary */ |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2065 if (PyDict_SetItem(self->names, key, value) < 0) { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2066 Py_DECREF(key); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2067 Py_DECREF(value); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2068 return NULL; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2069 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2070 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2071 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2072 Py_DECREF(key); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2073 return value; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2074 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2075 |
|
59601
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
2076 static void |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
2077 expat_set_error(const char* message, int line, int column) |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
2078 { |
|
68805
74d3dc78f0db
Issue #10833: Use PyUnicode_FromFormat() and PyErr_Format() instead of
Victor Stinner <victor.stinner@haypocalc.com>
parents:
68804
diff
changeset
|
2079 PyObject *errmsg, *error, *position; |
|
74d3dc78f0db
Issue #10833: Use PyUnicode_FromFormat() and PyErr_Format() instead of
Victor Stinner <victor.stinner@haypocalc.com>
parents:
68804
diff
changeset
|
2080 |
|
74d3dc78f0db
Issue #10833: Use PyUnicode_FromFormat() and PyErr_Format() instead of
Victor Stinner <victor.stinner@haypocalc.com>
parents:
68804
diff
changeset
|
2081 errmsg = PyUnicode_FromFormat("%s: line %d, column %d", |
|
74d3dc78f0db
Issue #10833: Use PyUnicode_FromFormat() and PyErr_Format() instead of
Victor Stinner <victor.stinner@haypocalc.com>
parents:
68804
diff
changeset
|
2082 message, line, column); |
|
74d3dc78f0db
Issue #10833: Use PyUnicode_FromFormat() and PyErr_Format() instead of
Victor Stinner <victor.stinner@haypocalc.com>
parents:
68804
diff
changeset
|
2083 if (errmsg == NULL) |
|
74d3dc78f0db
Issue #10833: Use PyUnicode_FromFormat() and PyErr_Format() instead of
Victor Stinner <victor.stinner@haypocalc.com>
parents:
68804
diff
changeset
|
2084 return; |
|
74d3dc78f0db
Issue #10833: Use PyUnicode_FromFormat() and PyErr_Format() instead of
Victor Stinner <victor.stinner@haypocalc.com>
parents:
68804
diff
changeset
|
2085 |
|
74d3dc78f0db
Issue #10833: Use PyUnicode_FromFormat() and PyErr_Format() instead of
Victor Stinner <victor.stinner@haypocalc.com>
parents:
68804
diff
changeset
|
2086 error = PyObject_CallFunction(elementtree_parseerror_obj, "O", errmsg); |
|
74d3dc78f0db
Issue #10833: Use PyUnicode_FromFormat() and PyErr_Format() instead of
Victor Stinner <victor.stinner@haypocalc.com>
parents:
68804
diff
changeset
|
2087 Py_DECREF(errmsg); |
|
59601
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
2088 if (!error) |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
2089 return; |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
2090 |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
2091 /* add position attribute */ |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
2092 position = Py_BuildValue("(ii)", line, column); |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
2093 if (!position) { |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
2094 Py_DECREF(error); |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
2095 return; |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
2096 } |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
2097 if (PyObject_SetAttrString(error, "position", position) == -1) { |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
2098 Py_DECREF(error); |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
2099 Py_DECREF(position); |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
2100 return; |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
2101 } |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
2102 Py_DECREF(position); |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
2103 |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
2104 PyErr_SetObject(elementtree_parseerror_obj, error); |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
2105 Py_DECREF(error); |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
2106 } |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
2107 |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2108 /* -------------------------------------------------------------------- */ |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2109 /* handlers */ |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2110 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2111 static void |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2112 expat_default_handler(XMLParserObject* self, const XML_Char* data_in, |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2113 int data_len) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2114 { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2115 PyObject* key; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2116 PyObject* value; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2117 PyObject* res; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2118 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2119 if (data_len < 2 || data_in[0] != '&') |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2120 return; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2121 |
|
42491
a8f13a43eaa1
SF patch # 1769767, get test_xml_etree_c working. More conversions are probably needed.
Neal Norwitz <nnorwitz@gmail.com>
parents:
42334
diff
changeset
|
2122 key = PyUnicode_DecodeUTF8(data_in + 1, data_len - 2, "strict"); |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2123 if (!key) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2124 return; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2125 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2126 value = PyDict_GetItem(self->entity, key); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2127 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2128 if (value) { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2129 if (TreeBuilder_CheckExact(self->target)) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2130 res = treebuilder_handle_data( |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2131 (TreeBuilderObject*) self->target, value |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2132 ); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2133 else if (self->handle_data) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2134 res = PyObject_CallFunction(self->handle_data, "O", value); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2135 else |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2136 res = NULL; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2137 Py_XDECREF(res); |
|
59601
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
2138 } else if (!PyErr_Occurred()) { |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
2139 /* Report the first error, not the last */ |
|
66799
50d170bb71c7
Issue #6697: Fixed instances of _PyUnicode_AsString() result not checked for NULL
Alexander Belopolsky <alexander.belopolsky@gmail.com>
parents:
66664
diff
changeset
|
2140 char message[128] = "undefined entity "; |
|
50d170bb71c7
Issue #6697: Fixed instances of _PyUnicode_AsString() result not checked for NULL
Alexander Belopolsky <alexander.belopolsky@gmail.com>
parents:
66664
diff
changeset
|
2141 strncat(message, data_in, data_len < 100?data_len:100); |
|
59601
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
2142 expat_set_error( |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
2143 message, |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2144 EXPAT(GetErrorLineNumber)(self->parser), |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2145 EXPAT(GetErrorColumnNumber)(self->parser) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2146 ); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2147 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2148 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2149 Py_DECREF(key); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2150 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2151 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2152 static void |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2153 expat_start_handler(XMLParserObject* self, const XML_Char* tag_in, |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2154 const XML_Char **attrib_in) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2155 { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2156 PyObject* res; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2157 PyObject* tag; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2158 PyObject* attrib; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2159 int ok; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2160 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2161 /* tag name */ |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2162 tag = makeuniversal(self, tag_in); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2163 if (!tag) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2164 return; /* parser will look for errors */ |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2165 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2166 /* attributes */ |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2167 if (attrib_in[0]) { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2168 attrib = PyDict_New(); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2169 if (!attrib) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2170 return; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2171 while (attrib_in[0] && attrib_in[1]) { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2172 PyObject* key = makeuniversal(self, attrib_in[0]); |
|
42491
a8f13a43eaa1
SF patch # 1769767, get test_xml_etree_c working. More conversions are probably needed.
Neal Norwitz <nnorwitz@gmail.com>
parents:
42334
diff
changeset
|
2173 PyObject* value = PyUnicode_DecodeUTF8(attrib_in[1], strlen(attrib_in[1]), "strict"); |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2174 if (!key || !value) { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2175 Py_XDECREF(value); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2176 Py_XDECREF(key); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2177 Py_DECREF(attrib); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2178 return; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2179 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2180 ok = PyDict_SetItem(attrib, key, value); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2181 Py_DECREF(value); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2182 Py_DECREF(key); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2183 if (ok < 0) { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2184 Py_DECREF(attrib); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2185 return; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2186 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2187 attrib_in += 2; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2188 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2189 } else { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2190 Py_INCREF(Py_None); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2191 attrib = Py_None; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2192 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2193 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2194 if (TreeBuilder_CheckExact(self->target)) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2195 /* shortcut */ |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2196 res = treebuilder_handle_start((TreeBuilderObject*) self->target, |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2197 tag, attrib); |
|
59601
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
2198 else if (self->handle_start) { |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
2199 if (attrib == Py_None) { |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
2200 Py_DECREF(attrib); |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
2201 attrib = PyDict_New(); |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
2202 if (!attrib) |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
2203 return; |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
2204 } |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2205 res = PyObject_CallFunction(self->handle_start, "OO", tag, attrib); |
|
59601
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
2206 } else |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2207 res = NULL; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2208 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2209 Py_DECREF(tag); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2210 Py_DECREF(attrib); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2211 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2212 Py_XDECREF(res); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2213 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2214 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2215 static void |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2216 expat_data_handler(XMLParserObject* self, const XML_Char* data_in, |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2217 int data_len) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2218 { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2219 PyObject* data; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2220 PyObject* res; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2221 |
|
42491
a8f13a43eaa1
SF patch # 1769767, get test_xml_etree_c working. More conversions are probably needed.
Neal Norwitz <nnorwitz@gmail.com>
parents:
42334
diff
changeset
|
2222 data = PyUnicode_DecodeUTF8(data_in, data_len, "strict"); |
|
36954
db5e720b0cef
merged with cElementTree development trunk (1.0.6 snapshot):
Fredrik Lundh <fredrik@pythonware.com>
parents:
36684
diff
changeset
|
2223 if (!data) |
|
db5e720b0cef
merged with cElementTree development trunk (1.0.6 snapshot):
Fredrik Lundh <fredrik@pythonware.com>
parents:
36684
diff
changeset
|
2224 return; /* parser will look for errors */ |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2225 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2226 if (TreeBuilder_CheckExact(self->target)) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2227 /* shortcut */ |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2228 res = treebuilder_handle_data((TreeBuilderObject*) self->target, data); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2229 else if (self->handle_data) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2230 res = PyObject_CallFunction(self->handle_data, "O", data); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2231 else |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2232 res = NULL; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2233 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2234 Py_DECREF(data); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2235 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2236 Py_XDECREF(res); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2237 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2238 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2239 static void |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2240 expat_end_handler(XMLParserObject* self, const XML_Char* tag_in) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2241 { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2242 PyObject* tag; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2243 PyObject* res = NULL; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2244 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2245 if (TreeBuilder_CheckExact(self->target)) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2246 /* shortcut */ |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2247 /* the standard tree builder doesn't look at the end tag */ |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2248 res = treebuilder_handle_end( |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2249 (TreeBuilderObject*) self->target, Py_None |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2250 ); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2251 else if (self->handle_end) { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2252 tag = makeuniversal(self, tag_in); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2253 if (tag) { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2254 res = PyObject_CallFunction(self->handle_end, "O", tag); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2255 Py_DECREF(tag); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2256 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2257 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2258 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2259 Py_XDECREF(res); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2260 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2261 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2262 static void |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2263 expat_start_ns_handler(XMLParserObject* self, const XML_Char* prefix, |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2264 const XML_Char *uri) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2265 { |
|
59601
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
2266 PyObject* sprefix = NULL; |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
2267 PyObject* suri = NULL; |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
2268 |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
2269 suri = PyUnicode_DecodeUTF8(uri, strlen(uri), "strict"); |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
2270 if (!suri) |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
2271 return; |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
2272 |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
2273 if (prefix) |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
2274 sprefix = PyUnicode_DecodeUTF8(prefix, strlen(prefix), "strict"); |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
2275 else |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
2276 sprefix = PyUnicode_FromString(""); |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
2277 if (!sprefix) { |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
2278 Py_DECREF(suri); |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
2279 return; |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
2280 } |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
2281 |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2282 treebuilder_handle_namespace( |
|
59601
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
2283 (TreeBuilderObject*) self->target, 1, sprefix, suri |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2284 ); |
|
59601
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
2285 |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
2286 Py_DECREF(sprefix); |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
2287 Py_DECREF(suri); |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2288 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2289 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2290 static void |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2291 expat_end_ns_handler(XMLParserObject* self, const XML_Char* prefix_in) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2292 { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2293 treebuilder_handle_namespace( |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2294 (TreeBuilderObject*) self->target, 0, NULL, NULL |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2295 ); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2296 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2297 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2298 static void |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2299 expat_comment_handler(XMLParserObject* self, const XML_Char* comment_in) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2300 { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2301 PyObject* comment; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2302 PyObject* res; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2303 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2304 if (self->handle_comment) { |
|
42491
a8f13a43eaa1
SF patch # 1769767, get test_xml_etree_c working. More conversions are probably needed.
Neal Norwitz <nnorwitz@gmail.com>
parents:
42334
diff
changeset
|
2305 comment = PyUnicode_DecodeUTF8(comment_in, strlen(comment_in), "strict"); |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2306 if (comment) { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2307 res = PyObject_CallFunction(self->handle_comment, "O", comment); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2308 Py_XDECREF(res); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2309 Py_DECREF(comment); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2310 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2311 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2312 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2313 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2314 static void |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2315 expat_pi_handler(XMLParserObject* self, const XML_Char* target_in, |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2316 const XML_Char* data_in) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2317 { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2318 PyObject* target; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2319 PyObject* data; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2320 PyObject* res; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2321 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2322 if (self->handle_pi) { |
|
42491
a8f13a43eaa1
SF patch # 1769767, get test_xml_etree_c working. More conversions are probably needed.
Neal Norwitz <nnorwitz@gmail.com>
parents:
42334
diff
changeset
|
2323 target = PyUnicode_DecodeUTF8(target_in, strlen(target_in), "strict"); |
|
a8f13a43eaa1
SF patch # 1769767, get test_xml_etree_c working. More conversions are probably needed.
Neal Norwitz <nnorwitz@gmail.com>
parents:
42334
diff
changeset
|
2324 data = PyUnicode_DecodeUTF8(data_in, strlen(data_in), "strict"); |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2325 if (target && data) { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2326 res = PyObject_CallFunction(self->handle_pi, "OO", target, data); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2327 Py_XDECREF(res); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2328 Py_DECREF(data); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2329 Py_DECREF(target); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2330 } else { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2331 Py_XDECREF(data); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2332 Py_XDECREF(target); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2333 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2334 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2335 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2336 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2337 static int |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2338 expat_unknown_encoding_handler(XMLParserObject *self, const XML_Char *name, |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2339 XML_Encoding *info) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2340 { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2341 PyObject* u; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2342 unsigned char s[256]; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2343 int i; |
| 72475 | 2344 void *data; |
| 2345 unsigned int kind; | |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2346 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2347 memset(info, 0, sizeof(XML_Encoding)); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2348 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2349 for (i = 0; i < 256; i++) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2350 s[i] = i; |
|
68804
d0fe7489c4cc
_elementtree.c: remove trailing spaces
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66799
diff
changeset
|
2351 |
| 36117 | 2352 u = PyUnicode_Decode((char*) s, 256, name, "replace"); |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2353 if (!u) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2354 return XML_STATUS_ERROR; |
| 72475 | 2355 if (PyUnicode_READY(u)) |
| 2356 return XML_STATUS_ERROR; | |
| 2357 | |
| 2358 if (PyUnicode_GET_LENGTH(u) != 256) { | |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2359 Py_DECREF(u); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2360 return XML_STATUS_ERROR; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2361 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2362 |
| 72475 | 2363 kind = PyUnicode_KIND(u); |
| 2364 data = PyUnicode_DATA(u); | |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2365 for (i = 0; i < 256; i++) { |
| 72475 | 2366 Py_UCS4 ch = PyUnicode_READ(kind, data, i); |
| 2367 if (ch != Py_UNICODE_REPLACEMENT_CHARACTER) | |
| 2368 info->map[i] = ch; | |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2369 else |
|
59601
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
2370 info->map[i] = -1; |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2371 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2372 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2373 Py_DECREF(u); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2374 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2375 return XML_STATUS_OK; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2376 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2377 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2378 /* -------------------------------------------------------------------- */ |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2379 /* constructor and destructor */ |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2380 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2381 static PyObject* |
|
38673
a19c20c5e5c7
Merge the rest of the trunk.
Thomas Wouters <thomas@python.org>
parents:
38453
diff
changeset
|
2382 xmlparser(PyObject* self_, PyObject* args, PyObject* kw) |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2383 { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2384 XMLParserObject* self; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2385 /* FIXME: does this need to be static? */ |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2386 static XML_Memory_Handling_Suite memory_handler; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2387 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2388 PyObject* target = NULL; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2389 char* encoding = NULL; |
| 36684 | 2390 static char* kwlist[] = { "target", "encoding", NULL }; |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2391 if (!PyArg_ParseTupleAndKeywords(args, kw, "|Oz:XMLParser", kwlist, |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2392 &target, &encoding)) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2393 return NULL; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2394 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2395 #if defined(USE_PYEXPAT_CAPI) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2396 if (!expat_capi) { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2397 PyErr_SetString( |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2398 PyExc_RuntimeError, "cannot load dispatch table from pyexpat" |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2399 ); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2400 return NULL; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2401 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2402 #endif |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2403 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2404 self = PyObject_New(XMLParserObject, &XMLParser_Type); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2405 if (self == NULL) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2406 return NULL; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2407 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2408 self->entity = PyDict_New(); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2409 if (!self->entity) { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2410 PyObject_Del(self); |
|
36954
db5e720b0cef
merged with cElementTree development trunk (1.0.6 snapshot):
Fredrik Lundh <fredrik@pythonware.com>
parents:
36684
diff
changeset
|
2411 return NULL; |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2412 } |
|
68804
d0fe7489c4cc
_elementtree.c: remove trailing spaces
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66799
diff
changeset
|
2413 |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2414 self->names = PyDict_New(); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2415 if (!self->names) { |
|
36954
db5e720b0cef
merged with cElementTree development trunk (1.0.6 snapshot):
Fredrik Lundh <fredrik@pythonware.com>
parents:
36684
diff
changeset
|
2416 PyObject_Del(self->entity); |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2417 PyObject_Del(self); |
|
36954
db5e720b0cef
merged with cElementTree development trunk (1.0.6 snapshot):
Fredrik Lundh <fredrik@pythonware.com>
parents:
36684
diff
changeset
|
2418 return NULL; |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2419 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2420 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2421 memory_handler.malloc_fcn = PyObject_Malloc; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2422 memory_handler.realloc_fcn = PyObject_Realloc; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2423 memory_handler.free_fcn = PyObject_Free; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2424 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2425 self->parser = EXPAT(ParserCreate_MM)(encoding, &memory_handler, "}"); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2426 if (!self->parser) { |
|
36954
db5e720b0cef
merged with cElementTree development trunk (1.0.6 snapshot):
Fredrik Lundh <fredrik@pythonware.com>
parents:
36684
diff
changeset
|
2427 PyObject_Del(self->names); |
|
db5e720b0cef
merged with cElementTree development trunk (1.0.6 snapshot):
Fredrik Lundh <fredrik@pythonware.com>
parents:
36684
diff
changeset
|
2428 PyObject_Del(self->entity); |
|
db5e720b0cef
merged with cElementTree development trunk (1.0.6 snapshot):
Fredrik Lundh <fredrik@pythonware.com>
parents:
36684
diff
changeset
|
2429 PyObject_Del(self); |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2430 PyErr_NoMemory(); |
|
36954
db5e720b0cef
merged with cElementTree development trunk (1.0.6 snapshot):
Fredrik Lundh <fredrik@pythonware.com>
parents:
36684
diff
changeset
|
2431 return NULL; |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2432 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2433 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2434 /* setup target handlers */ |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2435 if (!target) { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2436 target = treebuilder_new(); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2437 if (!target) { |
|
36954
db5e720b0cef
merged with cElementTree development trunk (1.0.6 snapshot):
Fredrik Lundh <fredrik@pythonware.com>
parents:
36684
diff
changeset
|
2438 EXPAT(ParserFree)(self->parser); |
|
db5e720b0cef
merged with cElementTree development trunk (1.0.6 snapshot):
Fredrik Lundh <fredrik@pythonware.com>
parents:
36684
diff
changeset
|
2439 PyObject_Del(self->names); |
|
db5e720b0cef
merged with cElementTree development trunk (1.0.6 snapshot):
Fredrik Lundh <fredrik@pythonware.com>
parents:
36684
diff
changeset
|
2440 PyObject_Del(self->entity); |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2441 PyObject_Del(self); |
|
36954
db5e720b0cef
merged with cElementTree development trunk (1.0.6 snapshot):
Fredrik Lundh <fredrik@pythonware.com>
parents:
36684
diff
changeset
|
2442 return NULL; |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2443 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2444 } else |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2445 Py_INCREF(target); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2446 self->target = target; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2447 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2448 self->handle_xml = PyObject_GetAttrString(target, "xml"); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2449 self->handle_start = PyObject_GetAttrString(target, "start"); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2450 self->handle_data = PyObject_GetAttrString(target, "data"); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2451 self->handle_end = PyObject_GetAttrString(target, "end"); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2452 self->handle_comment = PyObject_GetAttrString(target, "comment"); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2453 self->handle_pi = PyObject_GetAttrString(target, "pi"); |
|
59601
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
2454 self->handle_close = PyObject_GetAttrString(target, "close"); |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2455 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2456 PyErr_Clear(); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2457 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2458 /* configure parser */ |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2459 EXPAT(SetUserData)(self->parser, self); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2460 EXPAT(SetElementHandler)( |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2461 self->parser, |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2462 (XML_StartElementHandler) expat_start_handler, |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2463 (XML_EndElementHandler) expat_end_handler |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2464 ); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2465 EXPAT(SetDefaultHandlerExpand)( |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2466 self->parser, |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2467 (XML_DefaultHandler) expat_default_handler |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2468 ); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2469 EXPAT(SetCharacterDataHandler)( |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2470 self->parser, |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2471 (XML_CharacterDataHandler) expat_data_handler |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2472 ); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2473 if (self->handle_comment) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2474 EXPAT(SetCommentHandler)( |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2475 self->parser, |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2476 (XML_CommentHandler) expat_comment_handler |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2477 ); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2478 if (self->handle_pi) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2479 EXPAT(SetProcessingInstructionHandler)( |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2480 self->parser, |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2481 (XML_ProcessingInstructionHandler) expat_pi_handler |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2482 ); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2483 EXPAT(SetUnknownEncodingHandler)( |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2484 self->parser, |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2485 (XML_UnknownEncodingHandler) expat_unknown_encoding_handler, NULL |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2486 ); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2487 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2488 ALLOC(sizeof(XMLParserObject), "create expatparser"); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2489 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2490 return (PyObject*) self; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2491 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2492 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2493 static void |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2494 xmlparser_dealloc(XMLParserObject* self) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2495 { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2496 EXPAT(ParserFree)(self->parser); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2497 |
|
59601
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
2498 Py_XDECREF(self->handle_close); |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2499 Py_XDECREF(self->handle_pi); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2500 Py_XDECREF(self->handle_comment); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2501 Py_XDECREF(self->handle_end); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2502 Py_XDECREF(self->handle_data); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2503 Py_XDECREF(self->handle_start); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2504 Py_XDECREF(self->handle_xml); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2505 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2506 Py_DECREF(self->target); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2507 Py_DECREF(self->entity); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2508 Py_DECREF(self->names); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2509 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2510 RELEASE(sizeof(XMLParserObject), "destroy expatparser"); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2511 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2512 PyObject_Del(self); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2513 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2514 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2515 /* -------------------------------------------------------------------- */ |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2516 /* methods (in alphabetical order) */ |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2517 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2518 LOCAL(PyObject*) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2519 expat_parse(XMLParserObject* self, char* data, int data_len, int final) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2520 { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2521 int ok; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2522 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2523 ok = EXPAT(Parse)(self->parser, data, data_len, final); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2524 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2525 if (PyErr_Occurred()) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2526 return NULL; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2527 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2528 if (!ok) { |
|
59601
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
2529 expat_set_error( |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2530 EXPAT(ErrorString)(EXPAT(GetErrorCode)(self->parser)), |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2531 EXPAT(GetErrorLineNumber)(self->parser), |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2532 EXPAT(GetErrorColumnNumber)(self->parser) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2533 ); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2534 return NULL; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2535 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2536 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2537 Py_RETURN_NONE; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2538 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2539 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2540 static PyObject* |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2541 xmlparser_close(XMLParserObject* self, PyObject* args) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2542 { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2543 /* end feeding data to parser */ |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2544 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2545 PyObject* res; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2546 if (!PyArg_ParseTuple(args, ":close")) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2547 return NULL; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2548 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2549 res = expat_parse(self, "", 0, 1); |
|
59601
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
2550 if (!res) |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
2551 return NULL; |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
2552 |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
2553 if (TreeBuilder_CheckExact(self->target)) { |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2554 Py_DECREF(res); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2555 return treebuilder_done((TreeBuilderObject*) self->target); |
|
59601
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
2556 } if (self->handle_close) { |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
2557 Py_DECREF(res); |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
2558 return PyObject_CallFunction(self->handle_close, ""); |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
2559 } else |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
2560 return res; |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2561 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2562 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2563 static PyObject* |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2564 xmlparser_feed(XMLParserObject* self, PyObject* args) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2565 { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2566 /* feed data to parser */ |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2567 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2568 char* data; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2569 int data_len; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2570 if (!PyArg_ParseTuple(args, "s#:feed", &data, &data_len)) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2571 return NULL; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2572 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2573 return expat_parse(self, data, data_len, 0); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2574 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2575 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2576 static PyObject* |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2577 xmlparser_parse(XMLParserObject* self, PyObject* args) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2578 { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2579 /* (internal) parse until end of input stream */ |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2580 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2581 PyObject* reader; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2582 PyObject* buffer; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2583 PyObject* res; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2584 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2585 PyObject* fileobj; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2586 if (!PyArg_ParseTuple(args, "O:_parse", &fileobj)) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2587 return NULL; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2588 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2589 reader = PyObject_GetAttrString(fileobj, "read"); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2590 if (!reader) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2591 return NULL; |
|
68804
d0fe7489c4cc
_elementtree.c: remove trailing spaces
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66799
diff
changeset
|
2592 |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2593 /* read from open file object */ |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2594 for (;;) { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2595 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2596 buffer = PyObject_CallFunction(reader, "i", 64*1024); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2597 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2598 if (!buffer) { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2599 /* read failed (e.g. due to KeyboardInterrupt) */ |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2600 Py_DECREF(reader); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2601 return NULL; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2602 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2603 |
|
47301
23ab586c427a
Renamed PyString to PyBytes
Christian Heimes <christian@cheimes.de>
parents:
44742
diff
changeset
|
2604 if (!PyBytes_CheckExact(buffer) || PyBytes_GET_SIZE(buffer) == 0) { |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2605 Py_DECREF(buffer); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2606 break; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2607 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2608 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2609 res = expat_parse( |
|
47301
23ab586c427a
Renamed PyString to PyBytes
Christian Heimes <christian@cheimes.de>
parents:
44742
diff
changeset
|
2610 self, PyBytes_AS_STRING(buffer), PyBytes_GET_SIZE(buffer), 0 |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2611 ); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2612 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2613 Py_DECREF(buffer); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2614 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2615 if (!res) { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2616 Py_DECREF(reader); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2617 return NULL; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2618 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2619 Py_DECREF(res); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2620 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2621 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2622 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2623 Py_DECREF(reader); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2624 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2625 res = expat_parse(self, "", 0, 1); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2626 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2627 if (res && TreeBuilder_CheckExact(self->target)) { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2628 Py_DECREF(res); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2629 return treebuilder_done((TreeBuilderObject*) self->target); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2630 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2631 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2632 return res; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2633 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2634 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2635 static PyObject* |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2636 xmlparser_setevents(XMLParserObject* self, PyObject* args) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2637 { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2638 /* activate element event reporting */ |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2639 |
|
39442
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
2640 Py_ssize_t i; |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2641 TreeBuilderObject* target; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2642 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2643 PyObject* events; /* event collector */ |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2644 PyObject* event_set = Py_None; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2645 if (!PyArg_ParseTuple(args, "O!|O:_setevents", &PyList_Type, &events, |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2646 &event_set)) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2647 return NULL; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2648 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2649 if (!TreeBuilder_CheckExact(self->target)) { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2650 PyErr_SetString( |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2651 PyExc_TypeError, |
|
74903
65fc79fb4eb2
Issue #13988: cElementTree is deprecated and the _elementtree accelerator is automatically used whenever available.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
74870
diff
changeset
|
2652 "event handling only supported for ElementTree.TreeBuilder " |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2653 "targets" |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2654 ); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2655 return NULL; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2656 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2657 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2658 target = (TreeBuilderObject*) self->target; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2659 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2660 Py_INCREF(events); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2661 Py_XDECREF(target->events); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2662 target->events = events; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2663 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2664 /* clear out existing events */ |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2665 Py_XDECREF(target->start_event_obj); target->start_event_obj = NULL; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2666 Py_XDECREF(target->end_event_obj); target->end_event_obj = NULL; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2667 Py_XDECREF(target->start_ns_event_obj); target->start_ns_event_obj = NULL; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2668 Py_XDECREF(target->end_ns_event_obj); target->end_ns_event_obj = NULL; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2669 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2670 if (event_set == Py_None) { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2671 /* default is "end" only */ |
|
59601
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
2672 target->end_event_obj = PyUnicode_FromString("end"); |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2673 Py_RETURN_NONE; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2674 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2675 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2676 if (!PyTuple_Check(event_set)) /* FIXME: handle arbitrary sequences */ |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2677 goto error; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2678 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2679 for (i = 0; i < PyTuple_GET_SIZE(event_set); i++) { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2680 PyObject* item = PyTuple_GET_ITEM(event_set, i); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2681 char* event; |
|
59601
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
2682 if (PyUnicode_Check(item)) { |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
2683 event = _PyUnicode_AsString(item); |
|
59893
2d6178480cc7
Fix a crash in _elementtree related to lone unicode surrogates.
Victor Stinner <victor.stinner@haypocalc.com>
parents:
59601
diff
changeset
|
2684 if (event == NULL) |
|
2d6178480cc7
Fix a crash in _elementtree related to lone unicode surrogates.
Victor Stinner <victor.stinner@haypocalc.com>
parents:
59601
diff
changeset
|
2685 goto error; |
|
59601
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
2686 } else if (PyBytes_Check(item)) |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
2687 event = PyBytes_AS_STRING(item); |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
2688 else { |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2689 goto error; |
|
59601
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
2690 } |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2691 if (strcmp(event, "start") == 0) { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2692 Py_INCREF(item); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2693 target->start_event_obj = item; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2694 } else if (strcmp(event, "end") == 0) { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2695 Py_INCREF(item); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2696 Py_XDECREF(target->end_event_obj); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2697 target->end_event_obj = item; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2698 } else if (strcmp(event, "start-ns") == 0) { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2699 Py_INCREF(item); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2700 Py_XDECREF(target->start_ns_event_obj); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2701 target->start_ns_event_obj = item; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2702 EXPAT(SetNamespaceDeclHandler)( |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2703 self->parser, |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2704 (XML_StartNamespaceDeclHandler) expat_start_ns_handler, |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2705 (XML_EndNamespaceDeclHandler) expat_end_ns_handler |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2706 ); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2707 } else if (strcmp(event, "end-ns") == 0) { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2708 Py_INCREF(item); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2709 Py_XDECREF(target->end_ns_event_obj); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2710 target->end_ns_event_obj = item; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2711 EXPAT(SetNamespaceDeclHandler)( |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2712 self->parser, |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2713 (XML_StartNamespaceDeclHandler) expat_start_ns_handler, |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2714 (XML_EndNamespaceDeclHandler) expat_end_ns_handler |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2715 ); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2716 } else { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2717 PyErr_Format( |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2718 PyExc_ValueError, |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2719 "unknown event '%s'", event |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2720 ); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2721 return NULL; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2722 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2723 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2724 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2725 Py_RETURN_NONE; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2726 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2727 error: |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2728 PyErr_SetString( |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2729 PyExc_TypeError, |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2730 "invalid event tuple" |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2731 ); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2732 return NULL; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2733 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2734 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2735 static PyMethodDef xmlparser_methods[] = { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2736 {"feed", (PyCFunction) xmlparser_feed, METH_VARARGS}, |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2737 {"close", (PyCFunction) xmlparser_close, METH_VARARGS}, |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2738 {"_parse", (PyCFunction) xmlparser_parse, METH_VARARGS}, |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2739 {"_setevents", (PyCFunction) xmlparser_setevents, METH_VARARGS}, |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2740 {NULL, NULL} |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2741 }; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2742 |
|
68804
d0fe7489c4cc
_elementtree.c: remove trailing spaces
Victor Stinner <victor.stinner@haypocalc.com>
parents:
66799
diff
changeset
|
2743 static PyObject* |
|
48414
4025f638911f
#3247: Get rid of Py_FindMethod:
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
47580
diff
changeset
|
2744 xmlparser_getattro(XMLParserObject* self, PyObject* nameobj) |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2745 { |
|
66799
50d170bb71c7
Issue #6697: Fixed instances of _PyUnicode_AsString() result not checked for NULL
Alexander Belopolsky <alexander.belopolsky@gmail.com>
parents:
66664
diff
changeset
|
2746 if (PyUnicode_Check(nameobj)) { |
|
50d170bb71c7
Issue #6697: Fixed instances of _PyUnicode_AsString() result not checked for NULL
Alexander Belopolsky <alexander.belopolsky@gmail.com>
parents:
66664
diff
changeset
|
2747 PyObject* res; |
|
50d170bb71c7
Issue #6697: Fixed instances of _PyUnicode_AsString() result not checked for NULL
Alexander Belopolsky <alexander.belopolsky@gmail.com>
parents:
66664
diff
changeset
|
2748 if (PyUnicode_CompareWithASCIIString(nameobj, "entity") == 0) |
|
50d170bb71c7
Issue #6697: Fixed instances of _PyUnicode_AsString() result not checked for NULL
Alexander Belopolsky <alexander.belopolsky@gmail.com>
parents:
66664
diff
changeset
|
2749 res = self->entity; |
|
50d170bb71c7
Issue #6697: Fixed instances of _PyUnicode_AsString() result not checked for NULL
Alexander Belopolsky <alexander.belopolsky@gmail.com>
parents:
66664
diff
changeset
|
2750 else if (PyUnicode_CompareWithASCIIString(nameobj, "target") == 0) |
|
50d170bb71c7
Issue #6697: Fixed instances of _PyUnicode_AsString() result not checked for NULL
Alexander Belopolsky <alexander.belopolsky@gmail.com>
parents:
66664
diff
changeset
|
2751 res = self->target; |
|
50d170bb71c7
Issue #6697: Fixed instances of _PyUnicode_AsString() result not checked for NULL
Alexander Belopolsky <alexander.belopolsky@gmail.com>
parents:
66664
diff
changeset
|
2752 else if (PyUnicode_CompareWithASCIIString(nameobj, "version") == 0) { |
|
50d170bb71c7
Issue #6697: Fixed instances of _PyUnicode_AsString() result not checked for NULL
Alexander Belopolsky <alexander.belopolsky@gmail.com>
parents:
66664
diff
changeset
|
2753 return PyUnicode_FromFormat( |
|
50d170bb71c7
Issue #6697: Fixed instances of _PyUnicode_AsString() result not checked for NULL
Alexander Belopolsky <alexander.belopolsky@gmail.com>
parents:
66664
diff
changeset
|
2754 "Expat %d.%d.%d", XML_MAJOR_VERSION, |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2755 XML_MINOR_VERSION, XML_MICRO_VERSION); |
|
66799
50d170bb71c7
Issue #6697: Fixed instances of _PyUnicode_AsString() result not checked for NULL
Alexander Belopolsky <alexander.belopolsky@gmail.com>
parents:
66664
diff
changeset
|
2756 } |
|
50d170bb71c7
Issue #6697: Fixed instances of _PyUnicode_AsString() result not checked for NULL
Alexander Belopolsky <alexander.belopolsky@gmail.com>
parents:
66664
diff
changeset
|
2757 else |
|
50d170bb71c7
Issue #6697: Fixed instances of _PyUnicode_AsString() result not checked for NULL
Alexander Belopolsky <alexander.belopolsky@gmail.com>
parents:
66664
diff
changeset
|
2758 goto generic; |
|
50d170bb71c7
Issue #6697: Fixed instances of _PyUnicode_AsString() result not checked for NULL
Alexander Belopolsky <alexander.belopolsky@gmail.com>
parents:
66664
diff
changeset
|
2759 |
|
50d170bb71c7
Issue #6697: Fixed instances of _PyUnicode_AsString() result not checked for NULL
Alexander Belopolsky <alexander.belopolsky@gmail.com>
parents:
66664
diff
changeset
|
2760 Py_INCREF(res); |
|
50d170bb71c7
Issue #6697: Fixed instances of _PyUnicode_AsString() result not checked for NULL
Alexander Belopolsky <alexander.belopolsky@gmail.com>
parents:
66664
diff
changeset
|
2761 return res; |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2762 } |
|
66799
50d170bb71c7
Issue #6697: Fixed instances of _PyUnicode_AsString() result not checked for NULL
Alexander Belopolsky <alexander.belopolsky@gmail.com>
parents:
66664
diff
changeset
|
2763 generic: |
|
50d170bb71c7
Issue #6697: Fixed instances of _PyUnicode_AsString() result not checked for NULL
Alexander Belopolsky <alexander.belopolsky@gmail.com>
parents:
66664
diff
changeset
|
2764 return PyObject_GenericGetAttr((PyObject*) self, nameobj); |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2765 } |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2766 |
|
37144
91dd4d44d3bc
Finish getting rid of statichere/staticforward
Neal Norwitz <nnorwitz@gmail.com>
parents:
36954
diff
changeset
|
2767 static PyTypeObject XMLParser_Type = { |
|
42334
e70cdce0e8b2
Merged revisions 56467-56482 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
41782
diff
changeset
|
2768 PyVarObject_HEAD_INIT(NULL, 0) |
|
e70cdce0e8b2
Merged revisions 56467-56482 via svnmerge from
Martin v. Löwis <martin@v.loewis.de>
parents:
41782
diff
changeset
|
2769 "XMLParser", sizeof(XMLParserObject), 0, |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2770 /* methods */ |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2771 (destructor)xmlparser_dealloc, /* tp_dealloc */ |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2772 0, /* tp_print */ |
|
48414
4025f638911f
#3247: Get rid of Py_FindMethod:
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
47580
diff
changeset
|
2773 0, /* tp_getattr */ |
|
4025f638911f
#3247: Get rid of Py_FindMethod:
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
47580
diff
changeset
|
2774 0, /* tp_setattr */ |
|
51271
87fbbf22adf3
Merged revisions 69214 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
51244
diff
changeset
|
2775 0, /* tp_reserved */ |
|
48414
4025f638911f
#3247: Get rid of Py_FindMethod:
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
47580
diff
changeset
|
2776 0, /* tp_repr */ |
|
4025f638911f
#3247: Get rid of Py_FindMethod:
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
47580
diff
changeset
|
2777 0, /* tp_as_number */ |
|
4025f638911f
#3247: Get rid of Py_FindMethod:
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
47580
diff
changeset
|
2778 0, /* tp_as_sequence */ |
|
4025f638911f
#3247: Get rid of Py_FindMethod:
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
47580
diff
changeset
|
2779 0, /* tp_as_mapping */ |
|
4025f638911f
#3247: Get rid of Py_FindMethod:
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
47580
diff
changeset
|
2780 0, /* tp_hash */ |
|
4025f638911f
#3247: Get rid of Py_FindMethod:
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
47580
diff
changeset
|
2781 0, /* tp_call */ |
|
4025f638911f
#3247: Get rid of Py_FindMethod:
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
47580
diff
changeset
|
2782 0, /* tp_str */ |
|
4025f638911f
#3247: Get rid of Py_FindMethod:
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
47580
diff
changeset
|
2783 (getattrofunc)xmlparser_getattro, /* tp_getattro */ |
|
4025f638911f
#3247: Get rid of Py_FindMethod:
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
47580
diff
changeset
|
2784 0, /* tp_setattro */ |
|
4025f638911f
#3247: Get rid of Py_FindMethod:
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
47580
diff
changeset
|
2785 0, /* tp_as_buffer */ |
|
4025f638911f
#3247: Get rid of Py_FindMethod:
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
47580
diff
changeset
|
2786 Py_TPFLAGS_DEFAULT, /* tp_flags */ |
|
4025f638911f
#3247: Get rid of Py_FindMethod:
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
47580
diff
changeset
|
2787 0, /* tp_doc */ |
|
4025f638911f
#3247: Get rid of Py_FindMethod:
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
47580
diff
changeset
|
2788 0, /* tp_traverse */ |
|
4025f638911f
#3247: Get rid of Py_FindMethod:
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
47580
diff
changeset
|
2789 0, /* tp_clear */ |
|
4025f638911f
#3247: Get rid of Py_FindMethod:
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
47580
diff
changeset
|
2790 0, /* tp_richcompare */ |
|
4025f638911f
#3247: Get rid of Py_FindMethod:
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
47580
diff
changeset
|
2791 0, /* tp_weaklistoffset */ |
|
4025f638911f
#3247: Get rid of Py_FindMethod:
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
47580
diff
changeset
|
2792 0, /* tp_iter */ |
|
4025f638911f
#3247: Get rid of Py_FindMethod:
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
47580
diff
changeset
|
2793 0, /* tp_iternext */ |
|
4025f638911f
#3247: Get rid of Py_FindMethod:
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
47580
diff
changeset
|
2794 xmlparser_methods, /* tp_methods */ |
|
4025f638911f
#3247: Get rid of Py_FindMethod:
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
47580
diff
changeset
|
2795 0, /* tp_members */ |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2796 }; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2797 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2798 #endif |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2799 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2800 /* ==================================================================== */ |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2801 /* python module interface */ |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2802 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2803 static PyMethodDef _functions[] = { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2804 {"Element", (PyCFunction) element, METH_VARARGS|METH_KEYWORDS}, |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2805 {"SubElement", (PyCFunction) subelement, METH_VARARGS|METH_KEYWORDS}, |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2806 {"TreeBuilder", (PyCFunction) treebuilder, METH_VARARGS}, |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2807 #if defined(USE_EXPAT) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2808 {"XMLParser", (PyCFunction) xmlparser, METH_VARARGS|METH_KEYWORDS}, |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2809 #endif |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2810 {NULL, NULL} |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2811 }; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2812 |
|
47580
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
2813 |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
2814 static struct PyModuleDef _elementtreemodule = { |
|
63924
9108e7dcd7d8
Issue #2443: Added a new macro, Py_VA_COPY, which is equivalent to C99
Alexander Belopolsky <alexander.belopolsky@gmail.com>
parents:
59893
diff
changeset
|
2815 PyModuleDef_HEAD_INIT, |
|
9108e7dcd7d8
Issue #2443: Added a new macro, Py_VA_COPY, which is equivalent to C99
Alexander Belopolsky <alexander.belopolsky@gmail.com>
parents:
59893
diff
changeset
|
2816 "_elementtree", |
|
9108e7dcd7d8
Issue #2443: Added a new macro, Py_VA_COPY, which is equivalent to C99
Alexander Belopolsky <alexander.belopolsky@gmail.com>
parents:
59893
diff
changeset
|
2817 NULL, |
|
9108e7dcd7d8
Issue #2443: Added a new macro, Py_VA_COPY, which is equivalent to C99
Alexander Belopolsky <alexander.belopolsky@gmail.com>
parents:
59893
diff
changeset
|
2818 -1, |
|
9108e7dcd7d8
Issue #2443: Added a new macro, Py_VA_COPY, which is equivalent to C99
Alexander Belopolsky <alexander.belopolsky@gmail.com>
parents:
59893
diff
changeset
|
2819 _functions, |
|
9108e7dcd7d8
Issue #2443: Added a new macro, Py_VA_COPY, which is equivalent to C99
Alexander Belopolsky <alexander.belopolsky@gmail.com>
parents:
59893
diff
changeset
|
2820 NULL, |
|
9108e7dcd7d8
Issue #2443: Added a new macro, Py_VA_COPY, which is equivalent to C99
Alexander Belopolsky <alexander.belopolsky@gmail.com>
parents:
59893
diff
changeset
|
2821 NULL, |
|
9108e7dcd7d8
Issue #2443: Added a new macro, Py_VA_COPY, which is equivalent to C99
Alexander Belopolsky <alexander.belopolsky@gmail.com>
parents:
59893
diff
changeset
|
2822 NULL, |
|
9108e7dcd7d8
Issue #2443: Added a new macro, Py_VA_COPY, which is equivalent to C99
Alexander Belopolsky <alexander.belopolsky@gmail.com>
parents:
59893
diff
changeset
|
2823 NULL |
|
47580
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
2824 }; |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
2825 |
| 40528 | 2826 PyMODINIT_FUNC |
|
47580
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
2827 PyInit__elementtree(void) |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2828 { |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2829 PyObject* m; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2830 PyObject* g; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2831 char* bootstrap; |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2832 |
|
48414
4025f638911f
#3247: Get rid of Py_FindMethod:
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
47580
diff
changeset
|
2833 /* Initialize object types */ |
|
4025f638911f
#3247: Get rid of Py_FindMethod:
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
47580
diff
changeset
|
2834 if (PyType_Ready(&TreeBuilder_Type) < 0) |
|
63924
9108e7dcd7d8
Issue #2443: Added a new macro, Py_VA_COPY, which is equivalent to C99
Alexander Belopolsky <alexander.belopolsky@gmail.com>
parents:
59893
diff
changeset
|
2835 return NULL; |
|
48414
4025f638911f
#3247: Get rid of Py_FindMethod:
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
47580
diff
changeset
|
2836 if (PyType_Ready(&Element_Type) < 0) |
|
63924
9108e7dcd7d8
Issue #2443: Added a new macro, Py_VA_COPY, which is equivalent to C99
Alexander Belopolsky <alexander.belopolsky@gmail.com>
parents:
59893
diff
changeset
|
2837 return NULL; |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2838 #if defined(USE_EXPAT) |
|
48414
4025f638911f
#3247: Get rid of Py_FindMethod:
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
47580
diff
changeset
|
2839 if (PyType_Ready(&XMLParser_Type) < 0) |
|
63924
9108e7dcd7d8
Issue #2443: Added a new macro, Py_VA_COPY, which is equivalent to C99
Alexander Belopolsky <alexander.belopolsky@gmail.com>
parents:
59893
diff
changeset
|
2840 return NULL; |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2841 #endif |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2842 |
|
47580
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
2843 m = PyModule_Create(&_elementtreemodule); |
|
36954
db5e720b0cef
merged with cElementTree development trunk (1.0.6 snapshot):
Fredrik Lundh <fredrik@pythonware.com>
parents:
36684
diff
changeset
|
2844 if (!m) |
|
47580
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
2845 return NULL; |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
2846 |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
2847 /* The code below requires that the module gets already added |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
2848 to sys.modules. */ |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
2849 PyDict_SetItemString(PyImport_GetModuleDict(), |
|
63924
9108e7dcd7d8
Issue #2443: Added a new macro, Py_VA_COPY, which is equivalent to C99
Alexander Belopolsky <alexander.belopolsky@gmail.com>
parents:
59893
diff
changeset
|
2850 _elementtreemodule.m_name, |
|
9108e7dcd7d8
Issue #2443: Added a new macro, Py_VA_COPY, which is equivalent to C99
Alexander Belopolsky <alexander.belopolsky@gmail.com>
parents:
59893
diff
changeset
|
2851 m); |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2852 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2853 /* python glue code */ |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2854 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2855 g = PyDict_New(); |
|
36954
db5e720b0cef
merged with cElementTree development trunk (1.0.6 snapshot):
Fredrik Lundh <fredrik@pythonware.com>
parents:
36684
diff
changeset
|
2856 if (!g) |
|
47580
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
2857 return NULL; |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2858 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2859 PyDict_SetItemString(g, "__builtins__", PyEval_GetBuiltins()); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2860 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2861 bootstrap = ( |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2862 |
|
74870
31dfb4be934d
Issue #13988: move the python bootstrap code to cElementTree.py, and remove obsolete code for Python 2.4 and 2.5.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
73292
diff
changeset
|
2863 "from copy import deepcopy\n" |
|
31dfb4be934d
Issue #13988: move the python bootstrap code to cElementTree.py, and remove obsolete code for Python 2.4 and 2.5.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
73292
diff
changeset
|
2864 "from xml.etree import ElementPath\n" |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2865 |
|
59601
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
2866 "def iter(node, tag=None):\n" /* helper */ |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2867 " if tag == '*':\n" |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2868 " tag = None\n" |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2869 " if tag is None or node.tag == tag:\n" |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2870 " yield node\n" |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2871 " for node in node:\n" |
|
59601
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
2872 " for node in iter(node, tag):\n" |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2873 " yield node\n" |
|
59601
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
2874 |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
2875 "def itertext(node):\n" /* helper */ |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
2876 " if node.text:\n" |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
2877 " yield node.text\n" |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
2878 " for e in node:\n" |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
2879 " for s in e.itertext():\n" |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
2880 " yield s\n" |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
2881 " if e.tail:\n" |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
2882 " yield e.tail\n" |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2883 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2884 ); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2885 |
|
59601
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
2886 if (!PyRun_String(bootstrap, Py_file_input, g, NULL)) |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
2887 return NULL; |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2888 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2889 elementpath_obj = PyDict_GetItemString(g, "ElementPath"); |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2890 elementtree_deepcopy_obj = PyDict_GetItemString(g, "deepcopy"); |
|
59601
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
2891 elementtree_iter_obj = PyDict_GetItemString(g, "iter"); |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
2892 elementtree_itertext_obj = PyDict_GetItemString(g, "itertext"); |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2893 |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2894 #if defined(USE_PYEXPAT_CAPI) |
|
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2895 /* link against pyexpat, if possible */ |
|
59601
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
2896 expat_capi = PyCapsule_Import(PyExpat_CAPSULE_NAME, 0); |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
2897 if (expat_capi) { |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
2898 /* check that it's usable */ |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
2899 if (strcmp(expat_capi->magic, PyExpat_CAPI_MAGIC) != 0 || |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
2900 expat_capi->size < sizeof(struct PyExpat_CAPI) || |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
2901 expat_capi->MAJOR_VERSION != XML_MAJOR_VERSION || |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
2902 expat_capi->MINOR_VERSION != XML_MINOR_VERSION || |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
2903 expat_capi->MICRO_VERSION != XML_MICRO_VERSION) |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
2904 expat_capi = NULL; |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
2905 } |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2906 #endif |
|
59601
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
2907 |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
2908 elementtree_parseerror_obj = PyErr_NewException( |
|
74903
65fc79fb4eb2
Issue #13988: cElementTree is deprecated and the _elementtree accelerator is automatically used whenever available.
Florent Xicluna <florent.xicluna@gmail.com>
parents:
74870
diff
changeset
|
2909 "xml.etree.ElementTree.ParseError", PyExc_SyntaxError, NULL |
|
59601
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
2910 ); |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
2911 Py_INCREF(elementtree_parseerror_obj); |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
2912 PyModule_AddObject(m, "ParseError", elementtree_parseerror_obj); |
|
7a18c2762886
Merged revisions 78838-78839,78917,78919,78934,78937 via svnmerge from
Florent Xicluna <florent.xicluna@gmail.com>
parents:
53816
diff
changeset
|
2913 |
|
47580
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
2914 return m; |
|
36050
6586cd9920e7
updating to cElementTree 1.0.5 (step 2 of 3)
Fredrik Lundh <fredrik@pythonware.com>
parents:
diff
changeset
|
2915 } |
