Lines Matching defs:self
87 typedef void (*xmlhandlersetter)(XML_Parser self, void *meth);
119 set_error(pyexpat_state *state, xmlparseobject *self, enum XML_Error code)
123 XML_Parser parser = self->itself;
144 have_handler(xmlparseobject *self, int type)
146 PyObject *handler = self->handlers[type];
179 static void clear_handlers(xmlparseobject *self, int initial);
207 flag_error(xmlparseobject *self)
209 clear_handlers(self, 0);
210 XML_SetExternalEntityRefHandler(self->itself,
216 xmlparseobject *self)
223 XML_StopParser(self->itself, XML_FALSE);
229 string_intern(xmlparseobject *self, const char* str)
236 if (!self->intern)
238 value = PyDict_GetItemWithError(self->intern, result);
241 PyDict_SetItem(self->intern, result, result) == 0)
259 call_character_handler(xmlparseobject *self, const XML_Char *buffer, int len)
264 if (!have_handler(self, CharacterData))
273 flag_error(self);
274 XML_SetCharacterDataHandler(self->itself,
280 self->in_callback = 1;
282 self->handlers[CharacterData], args, self);
284 self->in_callback = 0;
287 flag_error(self);
288 XML_SetCharacterDataHandler(self->itself,
297 flush_character_buffer(xmlparseobject *self)
300 if (self->buffer == NULL || self->buffer_used == 0)
302 rc = call_character_handler(self, self->buffer, self->buffer_used);
303 self->buffer_used = 0;
310 xmlparseobject *self = (xmlparseobject *) userData;
315 if (self->buffer == NULL)
316 call_character_handler(self, data, len);
318 if ((self->buffer_used + len) > self->buffer_size) {
319 if (flush_character_buffer(self) < 0)
324 if (!have_handler(self, CharacterData))
327 if (len > self->buffer_size) {
328 call_character_handler(self, data, len);
329 self->buffer_used = 0;
332 memcpy(self->buffer + self->buffer_used,
334 self->buffer_used += len;
343 xmlparseobject *self = (xmlparseobject *)userData;
345 if (have_handler(self, StartElement)) {
352 if (flush_character_buffer(self) < 0)
357 if (self->specified_attributes) {
358 max = XML_GetSpecifiedAttributeCount(self->itself);
366 if (self->ordered_attributes)
371 flag_error(self);
375 PyObject *n = string_intern(self, (XML_Char *) atts[i]);
378 flag_error(self);
384 flag_error(self);
389 if (self->ordered_attributes) {
394 flag_error(self);
405 args = string_intern(self, name);
415 self->in_callback = 1;
417 self->handlers[StartElement], args, self);
418 self->in_callback = 0;
421 flag_error(self);
432 xmlparseobject *self = GETUSERDATA ; \
437 if (have_handler(self, NAME)) { \
440 if (flush_character_buffer(self) < 0) \
443 if (!args) { flag_error(self); return RETURN;} \
444 self->in_callback = 1; \
446 self->handlers[NAME], args, self); \
447 self->in_callback = 0; \
450 flag_error(self); \
470 ("(N)", string_intern(self, name)))
476 ("(NO&)", string_intern(self, target), conv_string_to_unicode ,data))
486 string_intern(self, entityName), string_intern(self, base),
487 string_intern(self, systemId), string_intern(self, publicId),
488 string_intern(self, notationName)))
501 string_intern(self, entityName), is_parameter_entity,
503 string_intern(self, base), string_intern(self, systemId),
504 string_intern(self, publicId),
505 string_intern(self, notationName)))
547 xmlparseobject *self = (xmlparseobject *)userData;
550 if (have_handler(self, ElementDecl)) {
557 if (flush_character_buffer(self) < 0)
561 flag_error(self);
564 nameobj = string_intern(self, name);
567 flag_error(self);
572 flag_error(self);
575 self->in_callback = 1;
577 self->handlers[ElementDecl], args, self);
578 self->in_callback = 0;
580 flag_error(self);
587 XML_FreeContentModel(self->itself, model);
599 string_intern(self, elname), string_intern(self, attname),
609 string_intern(self, entityName), is_parameter_entity))
619 string_intern(self, notationName), string_intern(self, base),
620 string_intern(self, systemId), string_intern(self, publicId)))
627 string_intern(self, prefix), string_intern(self, uri)))
632 ("(N)", string_intern(self, prefix)))
667 conv_string_to_unicode ,context, string_intern(self, base),
668 string_intern(self, systemId), string_intern(self, publicId)),
678 ("(NNNi)", string_intern(self, doctypeName),
679 string_intern(self, sysid), string_intern(self, pubid),
692 get_parse_result(pyexpat_state *state, xmlparseobject *self, int rv)
698 return set_error(state, self, XML_GetErrorCode(self->itself));
700 if (flush_character_buffer(self) < 0) {
722 pyexpat_xmlparser_Parse_impl(xmlparseobject *self, PyTypeObject *cls,
738 (void)XML_SetEncoding(self->itself, "utf-8");
750 rc = XML_Parse(self->itself, s, MAX_CHUNK_SIZE, 0);
758 rc = XML_Parse(self->itself, s, (int)slen, isfinal);
764 return get_parse_result(state, self, rc);
821 pyexpat_xmlparser_ParseFile_impl(xmlparseobject *self, PyTypeObject *cls,
840 void *buf = XML_GetBuffer(self->itself, BUF_SIZE);
843 return get_parse_result(state, self, 0);
851 rv = XML_ParseBuffer(self->itself, bytes_read, bytes_read == 0);
861 return get_parse_result(state, self, rv);
874 pyexpat_xmlparser_SetBase_impl(xmlparseobject *self, const char *base)
877 if (!XML_SetBase(self->itself, base)) {
890 pyexpat_xmlparser_GetBase_impl(xmlparseobject *self)
893 return Py_BuildValue("z", XML_GetBase(self->itself));
906 pyexpat_xmlparser_GetInputContext_impl(xmlparseobject *self)
909 if (self->in_callback) {
912 = XML_GetInputContext(self->itself, &offset, &size);
936 pyexpat_xmlparser_ExternalEntityParserCreate_impl(xmlparseobject *self,
952 new_parser->buffer_size = self->buffer_size;
955 new_parser->ordered_attributes = self->ordered_attributes;
956 new_parser->specified_attributes = self->specified_attributes;
958 new_parser->ns_prefixes = self->ns_prefixes;
959 new_parser->itself = XML_ExternalEntityParserCreate(self->itself, context,
962 new_parser->intern = self->intern;
965 if (self->buffer != NULL) {
990 /* then copy handlers from self */
992 PyObject *handler = self->handlers[i];
1020 pyexpat_xmlparser_SetParamEntityParsing_impl(xmlparseobject *self, int flag)
1023 flag = XML_SetParamEntityParsing(self->itself, flag);
1044 pyexpat_xmlparser_UseForeignDTD_impl(xmlparseobject *self, PyTypeObject *cls,
1051 rc = XML_UseForeignDTD(self->itself, flag ? XML_TRUE : XML_FALSE);
1053 return set_error(state, self, rc);
1137 xmlparseobject *self;
1139 self = PyObject_GC_New(xmlparseobject, state->xml_parse_type);
1140 if (self == NULL)
1143 self->buffer = NULL;
1144 self->buffer_size = CHARACTER_DATA_BUFFER_SIZE;
1145 self->buffer_used = 0;
1146 self->ordered_attributes = 0;
1147 self->specified_attributes = 0;
1148 self->in_callback = 0;
1149 self->ns_prefixes = 0;
1150 self->handlers = NULL;
1151 self->intern = intern;
1152 Py_XINCREF(self->intern);
1155 self->itself = XML_ParserCreate_MM(encoding, &ExpatMemoryHandler,
1157 if (self->itself == NULL) {
1160 Py_DECREF(self);
1165 XML_SetHashSalt(self->itself,
1168 XML_SetUserData(self->itself, (void *)self);
1169 XML_SetUnknownEncodingHandler(self->itself,
1175 self->handlers = PyMem_New(PyObject *, i);
1176 if (!self->handlers) {
1177 Py_DECREF(self);
1180 clear_handlers(self, 1);
1182 PyObject_GC_Track(self);
1183 return (PyObject*)self;
1205 xmlparse_dealloc(xmlparseobject *self)
1207 PyObject_GC_UnTrack(self);
1208 (void)xmlparse_clear(self);
1209 if (self->itself != NULL)
1210 XML_ParserFree(self->itself);
1211 self->itself = NULL;
1213 if (self->handlers != NULL) {
1214 PyMem_Free(self->handlers);
1215 self->handlers = NULL;
1217 if (self->buffer != NULL) {
1218 PyMem_Free(self->buffer);
1219 self->buffer = NULL;
1221 PyTypeObject *tp = Py_TYPE(self);
1222 PyObject_GC_Del(self);
1228 xmlparse_handler_getter(xmlparseobject *self, struct HandlerInfo *hi)
1232 PyObject *result = self->handlers[handlernum];
1240 xmlparse_handler_setter(xmlparseobject *self, PyObject *v, struct HandlerInfo *hi)
1254 if (flush_character_buffer(self) < 0)
1271 if (handlernum == CharacterData && self->in_callback)
1279 Py_XSETREF(self->handlers[handlernum], v);
1280 handler_info[handlernum].setter(self->itself, c_handler);
1286 xmlparse_##name##_getter(xmlparseobject *self, void *closure) \
1288 return PyLong_FromLong((long) XML_Get##name(self->itself)); \
1301 xmlparse_buffer_text_getter(xmlparseobject *self, void *closure)
1303 return PyBool_FromLong(self->buffer != NULL);
1307 xmlparse_buffer_text_setter(xmlparseobject *self, PyObject *v, void *closure)
1317 if (self->buffer == NULL) {
1318 self->buffer = PyMem_Malloc(self->buffer_size);
1319 if (self->buffer == NULL) {
1323 self->buffer_used = 0;
1326 else if (self->buffer != NULL) {
1327 if (flush_character_buffer(self) < 0)
1329 PyMem_Free(self->buffer);
1330 self->buffer = NULL;
1336 xmlparse_buffer_size_getter(xmlparseobject *self, void *closure)
1338 return PyLong_FromLong((long) self->buffer_size);
1342 xmlparse_buffer_size_setter(xmlparseobject *self, PyObject *v, void *closure)
1362 if (new_buffer_size == self->buffer_size) {
1374 if (self->buffer != NULL) {
1376 if (self->buffer_used != 0) {
1377 if (flush_character_buffer(self) < 0) {
1382 PyMem_Free(self->buffer);
1384 self->buffer = PyMem_Malloc(new_buffer_size);
1385 if (self->buffer == NULL) {
1389 self->buffer_size = new_buffer_size;
1394 xmlparse_buffer_used_getter(xmlparseobject *self, void *closure)
1396 return PyLong_FromLong((long) self->buffer_used);
1400 xmlparse_namespace_prefixes_getter(xmlparseobject *self, void *closure)
1402 return PyBool_FromLong(self->ns_prefixes);
1406 xmlparse_namespace_prefixes_setter(xmlparseobject *self, PyObject *v, void *closure)
1415 self->ns_prefixes = b;
1416 XML_SetReturnNSTriplet(self->itself, self->ns_prefixes);
1421 xmlparse_ordered_attributes_getter(xmlparseobject *self, void *closure)
1423 return PyBool_FromLong(self->ordered_attributes);
1427 xmlparse_ordered_attributes_setter(xmlparseobject *self, PyObject *v, void *closure)
1436 self->ordered_attributes = b;
1441 xmlparse_specified_attributes_getter(xmlparseobject *self, void *closure)
1443 return PyBool_FromLong((long) self->specified_attributes);
1447 xmlparse_specified_attributes_setter(xmlparseobject *self, PyObject *v, void *closure)
1456 self->specified_attributes = b;
2071 clear_handlers(xmlparseobject *self, int initial)
2077 self->handlers[i] = NULL;
2079 Py_CLEAR(self->handlers[i]);
2080 handler_info[i].setter(self->itself, NULL);