char insert_comments;
char insert_pis;
+ elementtreestate *state;
} TreeBuilderObject;
#define TreeBuilder_CheckExact(st, op) Py_IS_TYPE((op), (st)->TreeBuilder_Type)
t->start_ns_event_obj = t->end_ns_event_obj = NULL;
t->comment_event_obj = t->pi_event_obj = NULL;
t->insert_comments = t->insert_pis = 0;
+ t->state = ET_STATE_GLOBAL;
}
return (PyObject *)t;
}
}
if (comment_factory == Py_None) {
- elementtreestate *st = ET_STATE_GLOBAL;
+ elementtreestate *st = self->state;
comment_factory = st->comment_factory;
}
if (comment_factory) {
}
if (pi_factory == Py_None) {
- elementtreestate *st = ET_STATE_GLOBAL;
+ elementtreestate *st = self->state;
pi_factory = st->pi_factory;
}
if (pi_factory) {
if (!self->data) {
return 0;
}
- elementtreestate *st = ET_STATE_GLOBAL;
+ elementtreestate *st = self->state;
if (!self->last_for_tail) {
PyObject *element = self->last;
return treebuilder_extend_element_text_or_tail(
{
PyObject* node;
PyObject* this;
- elementtreestate *st = ET_STATE_GLOBAL;
+ elementtreestate *st = self->state;
if (treebuilder_flush_data(self) < 0) {
return NULL;
PyObject *handle_close;
+ elementtreestate *state;
} XMLParserObject;
/* helpers */
value = PyDict_GetItemWithError(self->entity, key);
if (value) {
- elementtreestate *st = ET_STATE_GLOBAL;
+ elementtreestate *st = self->state;
if (TreeBuilder_CheckExact(st, self->target))
res = treebuilder_handle_data(
(TreeBuilderObject*) self->target, value
attrib = NULL;
}
- elementtreestate *st = ET_STATE_GLOBAL;
+ elementtreestate *st = self->state;
if (TreeBuilder_CheckExact(st, self->target)) {
/* shortcut */
res = treebuilder_handle_start((TreeBuilderObject*) self->target,
if (!data)
return; /* parser will look for errors */
- elementtreestate *st = ET_STATE_GLOBAL;
+ elementtreestate *st = self->state;
if (TreeBuilder_CheckExact(st, self->target))
/* shortcut */
res = treebuilder_handle_data((TreeBuilderObject*) self->target, data);
if (PyErr_Occurred())
return;
- elementtreestate *st = ET_STATE_GLOBAL;
+ elementtreestate *st = self->state;
if (TreeBuilder_CheckExact(st, self->target))
/* shortcut */
/* the standard tree builder doesn't look at the end tag */
if (!prefix_in)
prefix_in = "";
- elementtreestate *st = ET_STATE_GLOBAL;
+ elementtreestate *st = self->state;
if (TreeBuilder_CheckExact(st, self->target)) {
/* shortcut - TreeBuilder does not actually implement .start_ns() */
TreeBuilderObject *target = (TreeBuilderObject*) self->target;
if (!prefix_in)
prefix_in = "";
- elementtreestate *st = ET_STATE_GLOBAL;
+ elementtreestate *st = self->state;
if (TreeBuilder_CheckExact(st, self->target)) {
/* shortcut - TreeBuilder does not actually implement .end_ns() */
TreeBuilderObject *target = (TreeBuilderObject*) self->target;
if (PyErr_Occurred())
return;
- elementtreestate *st = ET_STATE_GLOBAL;
+ elementtreestate *st = self->state;
if (TreeBuilder_CheckExact(st, self->target)) {
/* shortcut */
TreeBuilderObject *target = (TreeBuilderObject*) self->target;
pubid_obj = Py_NewRef(Py_None);
}
- elementtreestate *st = ET_STATE_GLOBAL;
+ elementtreestate *st = self->state;
/* If the target has a handler for doctype, call it. */
if (self->handle_doctype) {
res = PyObject_CallFunctionObjArgs(self->handle_doctype,
if (PyErr_Occurred())
return;
- elementtreestate *st = ET_STATE_GLOBAL;
+ elementtreestate *st = self->state;
if (TreeBuilder_CheckExact(st, self->target)) {
/* shortcut */
TreeBuilderObject *target = (TreeBuilderObject*) self->target;
self->handle_start = self->handle_data = self->handle_end = NULL;
self->handle_comment = self->handle_pi = self->handle_close = NULL;
self->handle_doctype = NULL;
+ self->state = ET_STATE_GLOBAL;
}
return (PyObject *)self;
}
if (target != Py_None) {
Py_INCREF(target);
} else {
- elementtreestate *st = ET_STATE_GLOBAL;
+ elementtreestate *st = self->state;
target = treebuilder_new(st->TreeBuilder_Type, NULL, NULL);
if (!target) {
Py_CLEAR(self->entity);
if (!res)
return NULL;
- elementtreestate *st = ET_STATE_GLOBAL;
+ elementtreestate *st = self->state;
if (TreeBuilder_CheckExact(st, self->target)) {
Py_DECREF(res);
return treebuilder_done((TreeBuilderObject*) self->target);
res = expat_parse(self, "", 0, 1);
- elementtreestate *st = ET_STATE_GLOBAL;
+ elementtreestate *st = self->state;
if (res && TreeBuilder_CheckExact(st, self->target)) {
Py_DECREF(res);
return treebuilder_done((TreeBuilderObject*) self->target);
if (!_check_xmlparser(self)) {
return NULL;
}
- elementtreestate *st = ET_STATE_GLOBAL;
+ elementtreestate *st = self->state;
if (!TreeBuilder_CheckExact(st, self->target)) {
PyErr_SetString(
PyExc_TypeError,