Lines Matching refs:context

251   markup_parse_context_ty *context;  in markup_parse_context_new()  local
255 context = XMALLOC (markup_parse_context_ty); in markup_parse_context_new()
257 context->parser = parser; in markup_parse_context_new()
258 context->flags = flags; in markup_parse_context_new()
259 context->user_data = user_data; in markup_parse_context_new()
261 context->line_number = 1; in markup_parse_context_new()
262 context->char_number = 1; in markup_parse_context_new()
264 context->partial_chunk = NULL; in markup_parse_context_new()
266 context->state = STATE_START; in markup_parse_context_new()
267 context->tag_stack = in markup_parse_context_new()
272 context->attr_names = NULL; in markup_parse_context_new()
273 context->attr_values = NULL; in markup_parse_context_new()
274 context->cur_attr = -1; in markup_parse_context_new()
275 context->alloc_attrs = 0; in markup_parse_context_new()
277 context->current_text = NULL; in markup_parse_context_new()
278 context->current_text_len = -1; in markup_parse_context_new()
279 context->current_text_end = NULL; in markup_parse_context_new()
281 context->start = NULL; in markup_parse_context_new()
282 context->iter = NULL; in markup_parse_context_new()
284 context->error_text = NULL; in markup_parse_context_new()
286 context->document_empty = true; in markup_parse_context_new()
287 context->parsing = false; in markup_parse_context_new()
289 context->awaiting_pop = false; in markup_parse_context_new()
290 context->subparser_stack = in markup_parse_context_new()
295 context->subparser_element = NULL; in markup_parse_context_new()
297 context->balance = 0; in markup_parse_context_new()
299 return context; in markup_parse_context_new()
302 static void clear_attributes (markup_parse_context_ty *context);
308 markup_parse_context_free (markup_parse_context_ty *context) in markup_parse_context_free() argument
310 assert (context != NULL); in markup_parse_context_free()
311 assert (!context->parsing); in markup_parse_context_free()
312 assert (gl_list_size (context->subparser_stack) == 0); in markup_parse_context_free()
313 assert (!context->awaiting_pop); in markup_parse_context_free()
315 clear_attributes (context); in markup_parse_context_free()
316 free (context->attr_names); in markup_parse_context_free()
317 free (context->attr_values); in markup_parse_context_free()
319 gl_list_free (context->tag_stack); in markup_parse_context_free()
320 gl_list_free (context->subparser_stack); in markup_parse_context_free()
322 if (context->partial_chunk) in markup_parse_context_free()
323 markup_string_free (context->partial_chunk, true); in markup_parse_context_free()
325 free (context->error_text); in markup_parse_context_free()
327 free (context); in markup_parse_context_free()
330 static void pop_subparser_stack (markup_parse_context_ty *context);
333 emit_error (markup_parse_context_ty *context, const char *error_text) in emit_error() argument
335 context->state = STATE_ERROR; in emit_error()
337 if (context->parser->error) in emit_error()
338 (*context->parser->error) (context, error_text, context->user_data); in emit_error()
341 while (gl_list_size (context->subparser_stack) > 0) in emit_error()
343 pop_subparser_stack (context); in emit_error()
344 context->awaiting_pop = false; /* already been freed */ in emit_error()
346 if (context->parser->error) in emit_error()
347 (*context->parser->error) (context, error_text, context->user_data); in emit_error()
350 if (context->error_text) in emit_error()
351 free (context->error_text); in emit_error()
352 context->error_text = xstrdup (error_text); in emit_error()
359 slow_name_validate (markup_parse_context_ty *context, const char *name) in slow_name_validate() argument
366 emit_error (context, _("invalid UTF-8 sequence")); in slow_name_validate()
379 emit_error (context, error_text); in slow_name_validate()
399 emit_error (context, error_text); in slow_name_validate()
411 name_validate (markup_parse_context_ty *context, const char *name) in name_validate() argument
439 return slow_name_validate (context, name); in name_validate()
443 text_validate (markup_parse_context_ty *context, in text_validate() argument
449 emit_error (context, _("invalid UTF-8 sequence")); in text_validate()
461 unescape_string_inplace (markup_parse_context_ty *context, in unescape_string_inplace() argument
475 if (context->state == STATE_INSIDE_ATTRIBUTE_VALUE_SQ in unescape_string_inplace()
476 || context->state == STATE_INSIDE_ATTRIBUTE_VALUE_DQ) in unescape_string_inplace()
527 emit_error (context, error_text); in unescape_string_inplace()
536 emit_error (context, error_text); in unescape_string_inplace()
561 emit_error (context, error_text); in unescape_string_inplace()
610 emit_error (context, error_text); in unescape_string_inplace()
627 advance_char (markup_parse_context_ty *context) in advance_char() argument
629 context->iter++; in advance_char()
630 context->char_number++; in advance_char()
632 if (context->iter == context->current_text_end) in advance_char()
635 else if (*context->iter == '\n') in advance_char()
637 context->line_number++; in advance_char()
638 context->char_number = 1; in advance_char()
651 skip_spaces (markup_parse_context_ty *context) in skip_spaces() argument
655 if (!xml_isspace (*context->iter)) in skip_spaces()
658 while (advance_char (context)); in skip_spaces()
662 advance_to_name_end (markup_parse_context_ty *context) in advance_to_name_end() argument
666 if (IS_COMMON_NAME_END_CHAR (*(context->iter))) in advance_to_name_end()
668 if (xml_isspace (*(context->iter))) in advance_to_name_end()
671 while (advance_char (context)); in advance_to_name_end()
675 add_to_partial (markup_parse_context_ty *context, in add_to_partial() argument
679 if (context->partial_chunk == NULL) in add_to_partial()
682 context->partial_chunk = markup_string_new (); in add_to_partial()
686 markup_string_append (context->partial_chunk, in add_to_partial()
691 truncate_partial (markup_parse_context_ty *context) in truncate_partial() argument
693 if (context->partial_chunk != NULL) in truncate_partial()
694 string_blank (context->partial_chunk); in truncate_partial()
698 current_element (markup_parse_context_ty *context) in current_element() argument
700 const markup_string_ty *string = gl_list_get_at (context->tag_stack, 0); in current_element()
705 pop_subparser_stack (markup_parse_context_ty *context) in pop_subparser_stack() argument
709 assert (gl_list_size (context->subparser_stack) > 0); in pop_subparser_stack()
711 tracker = (markup_recursion_tracker_ty *) gl_list_get_at (context->subparser_stack, 0); in pop_subparser_stack()
713 context->awaiting_pop = true; in pop_subparser_stack()
715 context->user_data = tracker->prev_user_data; in pop_subparser_stack()
716 context->parser = tracker->prev_parser; in pop_subparser_stack()
717 context->subparser_element = tracker->prev_element; in pop_subparser_stack()
720 gl_list_remove_at (context->subparser_stack, 0); in pop_subparser_stack()
724 push_partial_as_tag (markup_parse_context_ty *context) in push_partial_as_tag() argument
726 gl_list_add_first (context->tag_stack, context->partial_chunk); in push_partial_as_tag()
727 context->partial_chunk = NULL; in push_partial_as_tag()
731 pop_tag (markup_parse_context_ty *context) in pop_tag() argument
733 gl_list_remove_at (context->tag_stack, 0); in pop_tag()
737 possibly_finish_subparser (markup_parse_context_ty *context) in possibly_finish_subparser() argument
739 if (current_element (context) == context->subparser_element) in possibly_finish_subparser()
740 pop_subparser_stack (context); in possibly_finish_subparser()
744 ensure_no_outstanding_subparser (markup_parse_context_ty *context) in ensure_no_outstanding_subparser() argument
746 context->awaiting_pop = false; in ensure_no_outstanding_subparser()
750 add_attribute (markup_parse_context_ty *context, markup_string_ty *string) in add_attribute() argument
752 if (context->cur_attr + 2 >= context->alloc_attrs) in add_attribute()
754 context->alloc_attrs += 5; /* silly magic number */ in add_attribute()
755 context->attr_names = xrealloc (context->attr_names, sizeof (char *) * context->alloc_attrs); in add_attribute()
756 context->attr_values = xrealloc (context->attr_values, sizeof(char *) * context->alloc_attrs); in add_attribute()
758 context->cur_attr++; in add_attribute()
759 context->attr_names[context->cur_attr] = xstrdup (string->buffer); in add_attribute()
760 context->attr_values[context->cur_attr] = NULL; in add_attribute()
761 context->attr_names[context->cur_attr+1] = NULL; in add_attribute()
762 context->attr_values[context->cur_attr+1] = NULL; in add_attribute()
766 clear_attributes (markup_parse_context_ty *context) in clear_attributes() argument
769 for (; context->cur_attr >= 0; context->cur_attr--) in clear_attributes()
771 int pos = context->cur_attr; in clear_attributes()
772 free (context->attr_names[pos]); in clear_attributes()
773 free (context->attr_values[pos]); in clear_attributes()
774 context->attr_names[pos] = context->attr_values[pos] = NULL; in clear_attributes()
776 assert (context->cur_attr == -1); in clear_attributes()
777 assert (context->attr_names == NULL || in clear_attributes()
778 context->attr_names[0] == NULL); in clear_attributes()
779 assert (context->attr_values == NULL || in clear_attributes()
780 context->attr_values[0] == NULL); in clear_attributes()
784 markup_parse_context_push (markup_parse_context_ty *context, in markup_parse_context_push() argument
791 tracker->prev_element = context->subparser_element; in markup_parse_context_push()
792 tracker->prev_parser = context->parser; in markup_parse_context_push()
793 tracker->prev_user_data = context->user_data; in markup_parse_context_push()
795 context->subparser_element = current_element (context); in markup_parse_context_push()
796 context->parser = parser; in markup_parse_context_push()
797 context->user_data = user_data; in markup_parse_context_push()
799 gl_list_add_first (context->subparser_stack, tracker); in markup_parse_context_push()
803 markup_parse_context_pop (markup_parse_context_ty *context) in markup_parse_context_pop() argument
805 if (!context->awaiting_pop) in markup_parse_context_pop()
806 possibly_finish_subparser (context); in markup_parse_context_pop()
808 assert (context->awaiting_pop); in markup_parse_context_pop()
810 context->awaiting_pop = false; in markup_parse_context_pop()
818 emit_start_element (markup_parse_context_ty *context) in emit_start_element() argument
831 if ((context->flags & MARKUP_IGNORE_QUALIFIED) in emit_start_element()
832 && strchr (current_element (context), ':')) in emit_start_element()
835 markup_parse_context_push (context, &ignore_parser, NULL); in emit_start_element()
836 clear_attributes (context); in emit_start_element()
840 attr_names = XCALLOC (context->cur_attr + 2, const char *); in emit_start_element()
841 attr_values = XCALLOC (context->cur_attr + 2, const char *); in emit_start_element()
842 for (i = 0; i < context->cur_attr + 1; i++) in emit_start_element()
845 if ((context->flags & MARKUP_IGNORE_QUALIFIED) in emit_start_element()
846 && strchr (context->attr_names[i], ':')) in emit_start_element()
849 attr_names[j] = context->attr_names[i]; in emit_start_element()
850 attr_values[j] = context->attr_values[i]; in emit_start_element()
857 start_name = current_element (context); in emit_start_element()
859 if (context->parser->start_element && name_validate (context, start_name)) in emit_start_element()
860 (* context->parser->start_element) (context, in emit_start_element()
864 context->user_data); in emit_start_element()
867 clear_attributes (context); in emit_start_element()
871 emit_end_element (markup_parse_context_ty *context) in emit_end_element() argument
873 assert (gl_list_size (context->tag_stack) != 0); in emit_end_element()
875 possibly_finish_subparser (context); in emit_end_element()
878 if ((context->flags & MARKUP_IGNORE_QUALIFIED) in emit_end_element()
879 && strchr (current_element (context), ':')) in emit_end_element()
881 markup_parse_context_pop (context); in emit_end_element()
882 pop_tag (context); in emit_end_element()
886 if (context->parser->end_element) in emit_end_element()
887 (* context->parser->end_element) (context, in emit_end_element()
888 current_element (context), in emit_end_element()
889 context->user_data); in emit_end_element()
891 ensure_no_outstanding_subparser (context); in emit_end_element()
893 pop_tag (context); in emit_end_element()
905 markup_parse_context_parse (markup_parse_context_ty *context, in markup_parse_context_parse() argument
909 assert (context != NULL); in markup_parse_context_parse()
911 assert (context->state != STATE_ERROR); in markup_parse_context_parse()
912 assert (!context->parsing); in markup_parse_context_parse()
920 context->parsing = true; in markup_parse_context_parse()
923 context->current_text = text; in markup_parse_context_parse()
924 context->current_text_len = text_len; in markup_parse_context_parse()
925 context->current_text_end = context->current_text + text_len; in markup_parse_context_parse()
926 context->iter = context->current_text; in markup_parse_context_parse()
927 context->start = context->iter; in markup_parse_context_parse()
929 while (context->iter != context->current_text_end) in markup_parse_context_parse()
931 switch (context->state) in markup_parse_context_parse()
936 assert (gl_list_size (context->tag_stack) == 0); in markup_parse_context_parse()
939 skip_spaces (context); in markup_parse_context_parse()
941 if (context->iter != context->current_text_end) in markup_parse_context_parse()
943 if (*context->iter == '<') in markup_parse_context_parse()
946 advance_char (context); in markup_parse_context_parse()
948 context->state = STATE_AFTER_OPEN_ANGLE; in markup_parse_context_parse()
951 context->start = context->iter; in markup_parse_context_parse()
954 context->document_empty = false; in markup_parse_context_parse()
958 emit_error (context, in markup_parse_context_parse()
968 if (*context->iter == '?' || in markup_parse_context_parse()
969 *context->iter == '!') in markup_parse_context_parse()
973 add_to_partial (context, openangle, openangle + 1); in markup_parse_context_parse()
974 context->start = context->iter; in markup_parse_context_parse()
975 context->balance = 1; in markup_parse_context_parse()
976 context->state = STATE_INSIDE_PASSTHROUGH; in markup_parse_context_parse()
978 else if (*context->iter == '/') in markup_parse_context_parse()
981 advance_char (context); in markup_parse_context_parse()
983 context->state = STATE_AFTER_CLOSE_TAG_SLASH; in markup_parse_context_parse()
985 else if (!IS_COMMON_NAME_END_CHAR (*(context->iter))) in markup_parse_context_parse()
987 context->state = STATE_INSIDE_OPEN_TAG_NAME; in markup_parse_context_parse()
990 context->start = context->iter; in markup_parse_context_parse()
996 emit_error (context, error_text); in markup_parse_context_parse()
1008 if (gl_list_size (context->tag_stack) == 0) in markup_parse_context_parse()
1010 context->start = NULL; in markup_parse_context_parse()
1011 context->state = STATE_START; in markup_parse_context_parse()
1015 context->start = context->iter; in markup_parse_context_parse()
1016 context->state = STATE_INSIDE_TEXT; in markup_parse_context_parse()
1022 if (*context->iter == '>') in markup_parse_context_parse()
1025 advance_char (context); in markup_parse_context_parse()
1026 context->state = STATE_AFTER_CLOSE_ANGLE; in markup_parse_context_parse()
1027 emit_end_element (context); in markup_parse_context_parse()
1032 emit_error (context, error_text); in markup_parse_context_parse()
1045 advance_to_name_end (context); in markup_parse_context_parse()
1047 if (context->iter == context->current_text_end) in markup_parse_context_parse()
1052 add_to_partial (context, context->start, context->iter); in markup_parse_context_parse()
1059 add_to_partial (context, context->start, context->iter); in markup_parse_context_parse()
1060 push_partial_as_tag (context); in markup_parse_context_parse()
1062 context->state = STATE_BETWEEN_ATTRIBUTES; in markup_parse_context_parse()
1063 context->start = NULL; in markup_parse_context_parse()
1070 advance_to_name_end (context); in markup_parse_context_parse()
1071 add_to_partial (context, context->start, context->iter); in markup_parse_context_parse()
1077 if (context->iter != context->current_text_end) in markup_parse_context_parse()
1078 context->state = STATE_AFTER_ATTRIBUTE_NAME; in markup_parse_context_parse()
1084 skip_spaces (context); in markup_parse_context_parse()
1086 if (context->iter != context->current_text_end) in markup_parse_context_parse()
1091 if (!name_validate (context, context->partial_chunk->buffer)) in markup_parse_context_parse()
1094 add_attribute (context, context->partial_chunk); in markup_parse_context_parse()
1096 markup_string_free (context->partial_chunk, true); in markup_parse_context_parse()
1097 context->partial_chunk = NULL; in markup_parse_context_parse()
1098 context->start = NULL; in markup_parse_context_parse()
1100 if (*context->iter == '=') in markup_parse_context_parse()
1102 advance_char (context); in markup_parse_context_parse()
1103 context->state = STATE_AFTER_ATTRIBUTE_EQUALS_SIGN; in markup_parse_context_parse()
1108 emit_error (context, error_text); in markup_parse_context_parse()
1118 skip_spaces (context); in markup_parse_context_parse()
1120 if (context->iter != context->current_text_end) in markup_parse_context_parse()
1122 if (*context->iter == '/') in markup_parse_context_parse()
1124 advance_char (context); in markup_parse_context_parse()
1125 context->state = STATE_AFTER_ELISION_SLASH; in markup_parse_context_parse()
1127 else if (*context->iter == '>') in markup_parse_context_parse()
1129 advance_char (context); in markup_parse_context_parse()
1130 context->state = STATE_AFTER_CLOSE_ANGLE; in markup_parse_context_parse()
1132 else if (!IS_COMMON_NAME_END_CHAR (*(context->iter))) in markup_parse_context_parse()
1134 context->state = STATE_INSIDE_ATTRIBUTE_NAME; in markup_parse_context_parse()
1136 context->start = context->iter; in markup_parse_context_parse()
1142 emit_error (context, error_text); in markup_parse_context_parse()
1149 if (context->state == STATE_AFTER_ELISION_SLASH || in markup_parse_context_parse()
1150 context->state == STATE_AFTER_CLOSE_ANGLE) in markup_parse_context_parse()
1151 emit_start_element (context); in markup_parse_context_parse()
1158 skip_spaces (context); in markup_parse_context_parse()
1160 if (context->iter != context->current_text_end) in markup_parse_context_parse()
1162 if (*context->iter == '"') in markup_parse_context_parse()
1164 advance_char (context); in markup_parse_context_parse()
1165 context->state = STATE_INSIDE_ATTRIBUTE_VALUE_DQ; in markup_parse_context_parse()
1166 context->start = context->iter; in markup_parse_context_parse()
1168 else if (*context->iter == '\'') in markup_parse_context_parse()
1170 advance_char (context); in markup_parse_context_parse()
1171 context->state = STATE_INSIDE_ATTRIBUTE_VALUE_SQ; in markup_parse_context_parse()
1172 context->start = context->iter; in markup_parse_context_parse()
1178 emit_error (context, error_text); in markup_parse_context_parse()
1190 if (context->state == STATE_INSIDE_ATTRIBUTE_VALUE_SQ) in markup_parse_context_parse()
1201 if (*context->iter == delim) in markup_parse_context_parse()
1204 while (advance_char (context)); in markup_parse_context_parse()
1206 if (context->iter == context->current_text_end) in markup_parse_context_parse()
1211 add_to_partial (context, context->start, context->iter); in markup_parse_context_parse()
1220 add_to_partial (context, context->start, context->iter); in markup_parse_context_parse()
1222 assert (context->cur_attr >= 0); in markup_parse_context_parse()
1224 if (unescape_string_inplace (context, context->partial_chunk, in markup_parse_context_parse()
1227 || text_validate (context, in markup_parse_context_parse()
1228 context->partial_chunk->buffer, in markup_parse_context_parse()
1229 context->partial_chunk->buflen))) in markup_parse_context_parse()
1232 context->attr_values[context->cur_attr] = in markup_parse_context_parse()
1233 markup_string_free (context->partial_chunk, false); in markup_parse_context_parse()
1234 context->partial_chunk = NULL; in markup_parse_context_parse()
1235 advance_char (context); in markup_parse_context_parse()
1236 context->state = STATE_BETWEEN_ATTRIBUTES; in markup_parse_context_parse()
1237 context->start = NULL; in markup_parse_context_parse()
1240 truncate_partial (context); in markup_parse_context_parse()
1248 if (*context->iter == '<') in markup_parse_context_parse()
1251 while (advance_char (context)); in markup_parse_context_parse()
1257 add_to_partial (context, context->start, context->iter); in markup_parse_context_parse()
1259 if (context->iter != context->current_text_end) in markup_parse_context_parse()
1266 if (unescape_string_inplace (context, context->partial_chunk, in markup_parse_context_parse()
1269 || text_validate (context, in markup_parse_context_parse()
1270 context->partial_chunk->buffer, in markup_parse_context_parse()
1271 context->partial_chunk->buflen))) in markup_parse_context_parse()
1273 if (context->parser->text) in markup_parse_context_parse()
1274 (*context->parser->text) (context, in markup_parse_context_parse()
1275 context->partial_chunk->buffer, in markup_parse_context_parse()
1276 context->partial_chunk->buflen, in markup_parse_context_parse()
1277 context->user_data); in markup_parse_context_parse()
1280 advance_char (context); in markup_parse_context_parse()
1281 context->state = STATE_AFTER_OPEN_ANGLE; in markup_parse_context_parse()
1283 context->start = context->iter; in markup_parse_context_parse()
1286 truncate_partial (context); in markup_parse_context_parse()
1292 if (!IS_COMMON_NAME_END_CHAR (*(context->iter))) in markup_parse_context_parse()
1294 context->state = STATE_INSIDE_CLOSE_TAG_NAME; in markup_parse_context_parse()
1297 context->start = context->iter; in markup_parse_context_parse()
1303 emit_error (context, error_text); in markup_parse_context_parse()
1310 advance_to_name_end (context); in markup_parse_context_parse()
1311 add_to_partial (context, context->start, context->iter); in markup_parse_context_parse()
1313 if (context->iter != context->current_text_end) in markup_parse_context_parse()
1314 context->state = STATE_AFTER_CLOSE_TAG_NAME; in markup_parse_context_parse()
1320 skip_spaces (context); in markup_parse_context_parse()
1322 if (context->iter != context->current_text_end) in markup_parse_context_parse()
1326 close_name = context->partial_chunk; in markup_parse_context_parse()
1327 context->partial_chunk = NULL; in markup_parse_context_parse()
1329 if (*context->iter != '>') in markup_parse_context_parse()
1334 emit_error (context, error_text); in markup_parse_context_parse()
1337 else if (gl_list_size (context->tag_stack) == 0) in markup_parse_context_parse()
1339 emit_error (context, _("element is closed")); in markup_parse_context_parse()
1341 else if (strcmp (close_name->buffer, current_element (context)) in markup_parse_context_parse()
1344 emit_error (context, _("element is closed")); in markup_parse_context_parse()
1348 advance_char (context); in markup_parse_context_parse()
1349 context->state = STATE_AFTER_CLOSE_ANGLE; in markup_parse_context_parse()
1350 context->start = NULL; in markup_parse_context_parse()
1352 emit_end_element (context); in markup_parse_context_parse()
1354 context->partial_chunk = close_name; in markup_parse_context_parse()
1355 truncate_partial (context); in markup_parse_context_parse()
1363 if (*context->iter == '<') in markup_parse_context_parse()
1364 context->balance++; in markup_parse_context_parse()
1365 if (*context->iter == '>') in markup_parse_context_parse()
1370 context->balance--; in markup_parse_context_parse()
1371 add_to_partial (context, context->start, context->iter); in markup_parse_context_parse()
1372 context->start = context->iter; in markup_parse_context_parse()
1374 str = context->partial_chunk->buffer; in markup_parse_context_parse()
1375 len = context->partial_chunk->buflen; in markup_parse_context_parse()
1386 context->balance == 0) in markup_parse_context_parse()
1390 while (advance_char (context)); in markup_parse_context_parse()
1392 if (context->iter == context->current_text_end) in markup_parse_context_parse()
1397 add_to_partial (context, context->start, context->iter); in markup_parse_context_parse()
1406 advance_char (context); /* advance past close angle */ in markup_parse_context_parse()
1407 add_to_partial (context, context->start, context->iter); in markup_parse_context_parse()
1409 if (context->flags & MARKUP_TREAT_CDATA_AS_TEXT && in markup_parse_context_parse()
1410 strncmp (context->partial_chunk->buffer, "<![CDATA[", 9) == 0) in markup_parse_context_parse()
1412 if (context->parser->text && in markup_parse_context_parse()
1413 text_validate (context, in markup_parse_context_parse()
1414 context->partial_chunk->buffer + 9, in markup_parse_context_parse()
1415 context->partial_chunk->buflen - 12)) in markup_parse_context_parse()
1416 (*context->parser->text) (context, in markup_parse_context_parse()
1417 context->partial_chunk->buffer + 9, in markup_parse_context_parse()
1418 context->partial_chunk->buflen - 12, in markup_parse_context_parse()
1419 context->user_data); in markup_parse_context_parse()
1421 else if (context->parser->passthrough && in markup_parse_context_parse()
1422 text_validate (context, in markup_parse_context_parse()
1423 context->partial_chunk->buffer, in markup_parse_context_parse()
1424 context->partial_chunk->buflen)) in markup_parse_context_parse()
1425 (*context->parser->passthrough) (context, in markup_parse_context_parse()
1426 context->partial_chunk->buffer, in markup_parse_context_parse()
1427 context->partial_chunk->buflen, in markup_parse_context_parse()
1428 context->user_data); in markup_parse_context_parse()
1430 truncate_partial (context); in markup_parse_context_parse()
1432 context->state = STATE_AFTER_CLOSE_ANGLE; in markup_parse_context_parse()
1433 context->start = context->iter; /* could begin text */ in markup_parse_context_parse()
1448 context->parsing = false; in markup_parse_context_parse()
1450 return context->state != STATE_ERROR; in markup_parse_context_parse()
1459 markup_parse_context_end_parse (markup_parse_context_ty *context) in markup_parse_context_end_parse() argument
1463 assert (context != NULL); in markup_parse_context_end_parse()
1464 assert (!context->parsing); in markup_parse_context_end_parse()
1465 assert (context->state != STATE_ERROR); in markup_parse_context_end_parse()
1467 if (context->partial_chunk != NULL) in markup_parse_context_end_parse()
1469 markup_string_free (context->partial_chunk, true); in markup_parse_context_end_parse()
1470 context->partial_chunk = NULL; in markup_parse_context_end_parse()
1473 if (context->document_empty) in markup_parse_context_end_parse()
1475 emit_error (context, _("empty document")); in markup_parse_context_end_parse()
1479 context->parsing = true; in markup_parse_context_end_parse()
1481 switch (context->state) in markup_parse_context_end_parse()
1492 if (gl_list_size (context->tag_stack) > 0) in markup_parse_context_end_parse()
1526 assert (gl_list_size (context->tag_stack) > 0); in markup_parse_context_end_parse()
1550 emit_error (context, error_text); in markup_parse_context_end_parse()
1554 context->parsing = false; in markup_parse_context_end_parse()
1556 return context->state != STATE_ERROR; in markup_parse_context_end_parse()
1560 markup_parse_context_get_error (markup_parse_context_ty *context) in markup_parse_context_get_error() argument
1562 return context->error_text; in markup_parse_context_get_error()