Lines Matching refs:ptr
48 # define IS_INVALID_CHAR(enc, ptr, n) (0) argument
51 # define INVALID_LEAD_CASE(n, ptr, nextTokPtr) \ argument
53 if (end - ptr < n) \
55 if (IS_INVALID_CHAR(enc, ptr, n)) { \
56 *(nextTokPtr) = (ptr); \
59 ptr += n; \
62 # define INVALID_CASES(ptr, nextTokPtr) \ argument
63 INVALID_LEAD_CASE(2, ptr, nextTokPtr) \
64 INVALID_LEAD_CASE(3, ptr, nextTokPtr) \
65 INVALID_LEAD_CASE(4, ptr, nextTokPtr) \
69 *(nextTokPtr) = (ptr); \
72 # define CHECK_NAME_CASE(n, enc, ptr, end, nextTokPtr) \ argument
74 if (end - ptr < n) \
76 if (IS_INVALID_CHAR(enc, ptr, n) || ! IS_NAME_CHAR(enc, ptr, n)) { \
77 *nextTokPtr = ptr; \
80 ptr += n; \
83 # define CHECK_NAME_CASES(enc, ptr, end, nextTokPtr) \ argument
85 if (! IS_NAME_CHAR_MINBPC(enc, ptr)) { \
86 *nextTokPtr = ptr; \
95 ptr += MINBPC(enc); \
97 CHECK_NAME_CASE(2, enc, ptr, end, nextTokPtr) \
98 CHECK_NAME_CASE(3, enc, ptr, end, nextTokPtr) \
99 CHECK_NAME_CASE(4, enc, ptr, end, nextTokPtr)
101 # define CHECK_NMSTRT_CASE(n, enc, ptr, end, nextTokPtr) \ argument
103 if ((end) - (ptr) < (n)) \
105 if (IS_INVALID_CHAR(enc, ptr, n) || ! IS_NMSTRT_CHAR(enc, ptr, n)) { \
106 *nextTokPtr = ptr; \
109 ptr += n; \
112 # define CHECK_NMSTRT_CASES(enc, ptr, end, nextTokPtr) \ argument
114 if (! IS_NMSTRT_CHAR_MINBPC(enc, ptr)) { \
115 *nextTokPtr = ptr; \
121 ptr += MINBPC(enc); \
123 CHECK_NMSTRT_CASE(2, enc, ptr, end, nextTokPtr) \
124 CHECK_NMSTRT_CASE(3, enc, ptr, end, nextTokPtr) \
125 CHECK_NMSTRT_CASE(4, enc, ptr, end, nextTokPtr)
131 # define HAS_CHARS(enc, ptr, end, count) \ argument
132 ((end) - (ptr) >= ((count) * MINBPC(enc)))
134 # define HAS_CHAR(enc, ptr, end) HAS_CHARS(enc, ptr, end, 1) argument
136 # define REQUIRE_CHARS(enc, ptr, end, count) \ argument
138 if (! HAS_CHARS(enc, ptr, end, count)) { \
143 # define REQUIRE_CHAR(enc, ptr, end) REQUIRE_CHARS(enc, ptr, end, 1) argument
148 PREFIX(scanComment)(const ENCODING *enc, const char *ptr, const char *end, in PREFIX()
150 if (HAS_CHAR(enc, ptr, end)) { in PREFIX()
151 if (! CHAR_MATCHES(enc, ptr, ASCII_MINUS)) { in PREFIX()
152 *nextTokPtr = ptr; in PREFIX()
155 ptr += MINBPC(enc); in PREFIX()
156 while (HAS_CHAR(enc, ptr, end)) { in PREFIX()
157 switch (BYTE_TYPE(enc, ptr)) { in PREFIX()
158 INVALID_CASES(ptr, nextTokPtr) in PREFIX()
160 ptr += MINBPC(enc); in PREFIX()
161 REQUIRE_CHAR(enc, ptr, end); in PREFIX()
162 if (CHAR_MATCHES(enc, ptr, ASCII_MINUS)) { in PREFIX()
163 ptr += MINBPC(enc); in PREFIX()
164 REQUIRE_CHAR(enc, ptr, end); in PREFIX()
165 if (! CHAR_MATCHES(enc, ptr, ASCII_GT)) { in PREFIX()
166 *nextTokPtr = ptr; in PREFIX()
169 *nextTokPtr = ptr + MINBPC(enc); in PREFIX()
174 ptr += MINBPC(enc); in PREFIX()
185 PREFIX(scanDecl)(const ENCODING *enc, const char *ptr, const char *end, in PREFIX()
187 REQUIRE_CHAR(enc, ptr, end); in PREFIX()
188 switch (BYTE_TYPE(enc, ptr)) { in PREFIX()
190 return PREFIX(scanComment)(enc, ptr + MINBPC(enc), end, nextTokPtr); in PREFIX()
192 *nextTokPtr = ptr + MINBPC(enc); in PREFIX()
196 ptr += MINBPC(enc); in PREFIX()
199 *nextTokPtr = ptr; in PREFIX()
202 while (HAS_CHAR(enc, ptr, end)) { in PREFIX()
203 switch (BYTE_TYPE(enc, ptr)) { in PREFIX()
205 REQUIRE_CHARS(enc, ptr, end, 2); in PREFIX()
207 switch (BYTE_TYPE(enc, ptr + MINBPC(enc))) { in PREFIX()
212 *nextTokPtr = ptr; in PREFIX()
219 *nextTokPtr = ptr; in PREFIX()
223 ptr += MINBPC(enc); in PREFIX()
226 *nextTokPtr = ptr; in PREFIX()
234 PREFIX(checkPiTarget)(const ENCODING *enc, const char *ptr, const char *end, in PREFIX()
239 if (end - ptr != MINBPC(enc) * 3) in PREFIX()
241 switch (BYTE_TO_ASCII(enc, ptr)) { in PREFIX()
250 ptr += MINBPC(enc); in PREFIX()
251 switch (BYTE_TO_ASCII(enc, ptr)) { in PREFIX()
260 ptr += MINBPC(enc); in PREFIX()
261 switch (BYTE_TO_ASCII(enc, ptr)) { in PREFIX()
279 PREFIX(scanPi)(const ENCODING *enc, const char *ptr, const char *end, in PREFIX()
282 const char *target = ptr; in PREFIX()
283 REQUIRE_CHAR(enc, ptr, end); in PREFIX()
284 switch (BYTE_TYPE(enc, ptr)) { in PREFIX()
285 CHECK_NMSTRT_CASES(enc, ptr, end, nextTokPtr) in PREFIX()
287 *nextTokPtr = ptr; in PREFIX()
290 while (HAS_CHAR(enc, ptr, end)) { in PREFIX()
291 switch (BYTE_TYPE(enc, ptr)) { in PREFIX()
292 CHECK_NAME_CASES(enc, ptr, end, nextTokPtr) in PREFIX()
296 if (! PREFIX(checkPiTarget)(enc, target, ptr, &tok)) { in PREFIX()
297 *nextTokPtr = ptr; in PREFIX()
300 ptr += MINBPC(enc); in PREFIX()
301 while (HAS_CHAR(enc, ptr, end)) { in PREFIX()
302 switch (BYTE_TYPE(enc, ptr)) { in PREFIX()
303 INVALID_CASES(ptr, nextTokPtr) in PREFIX()
305 ptr += MINBPC(enc); in PREFIX()
306 REQUIRE_CHAR(enc, ptr, end); in PREFIX()
307 if (CHAR_MATCHES(enc, ptr, ASCII_GT)) { in PREFIX()
308 *nextTokPtr = ptr + MINBPC(enc); in PREFIX()
313 ptr += MINBPC(enc); in PREFIX()
319 if (! PREFIX(checkPiTarget)(enc, target, ptr, &tok)) { in PREFIX()
320 *nextTokPtr = ptr; in PREFIX()
323 ptr += MINBPC(enc); in PREFIX()
324 REQUIRE_CHAR(enc, ptr, end); in PREFIX()
325 if (CHAR_MATCHES(enc, ptr, ASCII_GT)) { in PREFIX()
326 *nextTokPtr = ptr + MINBPC(enc); in PREFIX()
331 *nextTokPtr = ptr; in PREFIX()
339 PREFIX(scanCdataSection)(const ENCODING *enc, const char *ptr, const char *end, in PREFIX()
346 REQUIRE_CHARS(enc, ptr, end, 6); in PREFIX()
347 for (i = 0; i < 6; i++, ptr += MINBPC(enc)) { in PREFIX()
348 if (! CHAR_MATCHES(enc, ptr, CDATA_LSQB[i])) { in PREFIX()
349 *nextTokPtr = ptr; in PREFIX()
353 *nextTokPtr = ptr; in PREFIX()
358 PREFIX(cdataSectionTok)(const ENCODING *enc, const char *ptr, const char *end, in PREFIX()
360 if (ptr >= end) in PREFIX()
363 size_t n = end - ptr; in PREFIX()
368 end = ptr + n; in PREFIX()
371 switch (BYTE_TYPE(enc, ptr)) { in PREFIX()
373 ptr += MINBPC(enc); in PREFIX()
374 REQUIRE_CHAR(enc, ptr, end); in PREFIX()
375 if (! CHAR_MATCHES(enc, ptr, ASCII_RSQB)) in PREFIX()
377 ptr += MINBPC(enc); in PREFIX()
378 REQUIRE_CHAR(enc, ptr, end); in PREFIX()
379 if (! CHAR_MATCHES(enc, ptr, ASCII_GT)) { in PREFIX()
380 ptr -= MINBPC(enc); in PREFIX()
383 *nextTokPtr = ptr + MINBPC(enc); in PREFIX()
386 ptr += MINBPC(enc); in PREFIX()
387 REQUIRE_CHAR(enc, ptr, end); in PREFIX()
388 if (BYTE_TYPE(enc, ptr) == BT_LF) in PREFIX()
389 ptr += MINBPC(enc); in PREFIX()
390 *nextTokPtr = ptr; in PREFIX()
393 *nextTokPtr = ptr + MINBPC(enc); in PREFIX()
395 INVALID_CASES(ptr, nextTokPtr) in PREFIX()
397 ptr += MINBPC(enc); in PREFIX()
400 while (HAS_CHAR(enc, ptr, end)) { in PREFIX()
401 switch (BYTE_TYPE(enc, ptr)) { in PREFIX()
404 if (end - ptr < n || IS_INVALID_CHAR(enc, ptr, n)) { \ in PREFIX()
405 *nextTokPtr = ptr; \ in PREFIX()
408 ptr += n; \ in PREFIX()
420 *nextTokPtr = ptr; in PREFIX()
423 ptr += MINBPC(enc); in PREFIX()
427 *nextTokPtr = ptr; in PREFIX()
434 PREFIX(scanEndTag)(const ENCODING *enc, const char *ptr, const char *end, in PREFIX()
436 REQUIRE_CHAR(enc, ptr, end); in PREFIX()
437 switch (BYTE_TYPE(enc, ptr)) { in PREFIX()
438 CHECK_NMSTRT_CASES(enc, ptr, end, nextTokPtr) in PREFIX()
440 *nextTokPtr = ptr; in PREFIX()
443 while (HAS_CHAR(enc, ptr, end)) { in PREFIX()
444 switch (BYTE_TYPE(enc, ptr)) { in PREFIX()
445 CHECK_NAME_CASES(enc, ptr, end, nextTokPtr) in PREFIX()
449 for (ptr += MINBPC(enc); HAS_CHAR(enc, ptr, end); ptr += MINBPC(enc)) { in PREFIX()
450 switch (BYTE_TYPE(enc, ptr)) { in PREFIX()
456 *nextTokPtr = ptr + MINBPC(enc); in PREFIX()
459 *nextTokPtr = ptr; in PREFIX()
468 ptr += MINBPC(enc); in PREFIX()
472 *nextTokPtr = ptr + MINBPC(enc); in PREFIX()
475 *nextTokPtr = ptr; in PREFIX()
485 PREFIX(scanHexCharRef)(const ENCODING *enc, const char *ptr, const char *end, in PREFIX()
487 if (HAS_CHAR(enc, ptr, end)) { in PREFIX()
488 switch (BYTE_TYPE(enc, ptr)) { in PREFIX()
493 *nextTokPtr = ptr; in PREFIX()
496 for (ptr += MINBPC(enc); HAS_CHAR(enc, ptr, end); ptr += MINBPC(enc)) { in PREFIX()
497 switch (BYTE_TYPE(enc, ptr)) { in PREFIX()
502 *nextTokPtr = ptr + MINBPC(enc); in PREFIX()
505 *nextTokPtr = ptr; in PREFIX()
516 PREFIX(scanCharRef)(const ENCODING *enc, const char *ptr, const char *end, in PREFIX()
518 if (HAS_CHAR(enc, ptr, end)) { in PREFIX()
519 if (CHAR_MATCHES(enc, ptr, ASCII_x)) in PREFIX()
520 return PREFIX(scanHexCharRef)(enc, ptr + MINBPC(enc), end, nextTokPtr); in PREFIX()
521 switch (BYTE_TYPE(enc, ptr)) { in PREFIX()
525 *nextTokPtr = ptr; in PREFIX()
528 for (ptr += MINBPC(enc); HAS_CHAR(enc, ptr, end); ptr += MINBPC(enc)) { in PREFIX()
529 switch (BYTE_TYPE(enc, ptr)) { in PREFIX()
533 *nextTokPtr = ptr + MINBPC(enc); in PREFIX()
536 *nextTokPtr = ptr; in PREFIX()
547 PREFIX(scanRef)(const ENCODING *enc, const char *ptr, const char *end, in PREFIX()
549 REQUIRE_CHAR(enc, ptr, end); in PREFIX()
550 switch (BYTE_TYPE(enc, ptr)) { in PREFIX()
551 CHECK_NMSTRT_CASES(enc, ptr, end, nextTokPtr) in PREFIX()
553 return PREFIX(scanCharRef)(enc, ptr + MINBPC(enc), end, nextTokPtr); in PREFIX()
555 *nextTokPtr = ptr; in PREFIX()
558 while (HAS_CHAR(enc, ptr, end)) { in PREFIX()
559 switch (BYTE_TYPE(enc, ptr)) { in PREFIX()
560 CHECK_NAME_CASES(enc, ptr, end, nextTokPtr) in PREFIX()
562 *nextTokPtr = ptr + MINBPC(enc); in PREFIX()
565 *nextTokPtr = ptr; in PREFIX()
575 PREFIX(scanAtts)(const ENCODING *enc, const char *ptr, const char *end, in PREFIX()
580 while (HAS_CHAR(enc, ptr, end)) { in PREFIX()
581 switch (BYTE_TYPE(enc, ptr)) { in PREFIX()
582 CHECK_NAME_CASES(enc, ptr, end, nextTokPtr) in PREFIX()
586 *nextTokPtr = ptr; in PREFIX()
590 ptr += MINBPC(enc); in PREFIX()
591 REQUIRE_CHAR(enc, ptr, end); in PREFIX()
592 switch (BYTE_TYPE(enc, ptr)) { in PREFIX()
593 CHECK_NMSTRT_CASES(enc, ptr, end, nextTokPtr) in PREFIX()
595 *nextTokPtr = ptr; in PREFIX()
606 ptr += MINBPC(enc); in PREFIX()
607 REQUIRE_CHAR(enc, ptr, end); in PREFIX()
608 t = BYTE_TYPE(enc, ptr); in PREFIX()
617 *nextTokPtr = ptr; in PREFIX()
628 ptr += MINBPC(enc); in PREFIX()
629 REQUIRE_CHAR(enc, ptr, end); in PREFIX()
630 open = BYTE_TYPE(enc, ptr); in PREFIX()
639 *nextTokPtr = ptr; in PREFIX()
643 ptr += MINBPC(enc); in PREFIX()
647 REQUIRE_CHAR(enc, ptr, end); in PREFIX()
648 t = BYTE_TYPE(enc, ptr); in PREFIX()
652 INVALID_CASES(ptr, nextTokPtr) in PREFIX()
654 int tok = PREFIX(scanRef)(enc, ptr + MINBPC(enc), end, &ptr); in PREFIX()
657 *nextTokPtr = ptr; in PREFIX()
663 *nextTokPtr = ptr; in PREFIX()
666 ptr += MINBPC(enc); in PREFIX()
670 ptr += MINBPC(enc); in PREFIX()
671 REQUIRE_CHAR(enc, ptr, end); in PREFIX()
672 switch (BYTE_TYPE(enc, ptr)) { in PREFIX()
682 *nextTokPtr = ptr; in PREFIX()
687 ptr += MINBPC(enc); in PREFIX()
688 REQUIRE_CHAR(enc, ptr, end); in PREFIX()
689 switch (BYTE_TYPE(enc, ptr)) { in PREFIX()
690 CHECK_NMSTRT_CASES(enc, ptr, end, nextTokPtr) in PREFIX()
697 *nextTokPtr = ptr + MINBPC(enc); in PREFIX()
701 ptr += MINBPC(enc); in PREFIX()
702 REQUIRE_CHAR(enc, ptr, end); in PREFIX()
703 if (! CHAR_MATCHES(enc, ptr, ASCII_GT)) { in PREFIX()
704 *nextTokPtr = ptr; in PREFIX()
707 *nextTokPtr = ptr + MINBPC(enc); in PREFIX()
710 *nextTokPtr = ptr; in PREFIX()
718 *nextTokPtr = ptr; in PREFIX()
728 PREFIX(scanLt)(const ENCODING *enc, const char *ptr, const char *end, in PREFIX()
733 REQUIRE_CHAR(enc, ptr, end); in PREFIX()
734 switch (BYTE_TYPE(enc, ptr)) { in PREFIX()
735 CHECK_NMSTRT_CASES(enc, ptr, end, nextTokPtr) in PREFIX()
737 ptr += MINBPC(enc); in PREFIX()
738 REQUIRE_CHAR(enc, ptr, end); in PREFIX()
739 switch (BYTE_TYPE(enc, ptr)) { in PREFIX()
741 return PREFIX(scanComment)(enc, ptr + MINBPC(enc), end, nextTokPtr); in PREFIX()
743 return PREFIX(scanCdataSection)(enc, ptr + MINBPC(enc), end, nextTokPtr); in PREFIX()
745 *nextTokPtr = ptr; in PREFIX()
748 return PREFIX(scanPi)(enc, ptr + MINBPC(enc), end, nextTokPtr); in PREFIX()
750 return PREFIX(scanEndTag)(enc, ptr + MINBPC(enc), end, nextTokPtr); in PREFIX()
752 *nextTokPtr = ptr; in PREFIX()
759 while (HAS_CHAR(enc, ptr, end)) { in PREFIX()
760 switch (BYTE_TYPE(enc, ptr)) { in PREFIX()
761 CHECK_NAME_CASES(enc, ptr, end, nextTokPtr) in PREFIX()
765 *nextTokPtr = ptr; in PREFIX()
769 ptr += MINBPC(enc); in PREFIX()
770 REQUIRE_CHAR(enc, ptr, end); in PREFIX()
771 switch (BYTE_TYPE(enc, ptr)) { in PREFIX()
772 CHECK_NMSTRT_CASES(enc, ptr, end, nextTokPtr) in PREFIX()
774 *nextTokPtr = ptr; in PREFIX()
782 ptr += MINBPC(enc); in PREFIX()
783 while (HAS_CHAR(enc, ptr, end)) { in PREFIX()
784 switch (BYTE_TYPE(enc, ptr)) { in PREFIX()
785 CHECK_NMSTRT_CASES(enc, ptr, end, nextTokPtr) in PREFIX()
793 ptr += MINBPC(enc); in PREFIX()
796 *nextTokPtr = ptr; in PREFIX()
799 return PREFIX(scanAtts)(enc, ptr, end, nextTokPtr); in PREFIX()
805 *nextTokPtr = ptr + MINBPC(enc); in PREFIX()
809 ptr += MINBPC(enc); in PREFIX()
810 REQUIRE_CHAR(enc, ptr, end); in PREFIX()
811 if (! CHAR_MATCHES(enc, ptr, ASCII_GT)) { in PREFIX()
812 *nextTokPtr = ptr; in PREFIX()
815 *nextTokPtr = ptr + MINBPC(enc); in PREFIX()
818 *nextTokPtr = ptr; in PREFIX()
826 PREFIX(contentTok)(const ENCODING *enc, const char *ptr, const char *end, in PREFIX()
828 if (ptr >= end) in PREFIX()
831 size_t n = end - ptr; in PREFIX()
836 end = ptr + n; in PREFIX()
839 switch (BYTE_TYPE(enc, ptr)) { in PREFIX()
841 return PREFIX(scanLt)(enc, ptr + MINBPC(enc), end, nextTokPtr); in PREFIX()
843 return PREFIX(scanRef)(enc, ptr + MINBPC(enc), end, nextTokPtr); in PREFIX()
845 ptr += MINBPC(enc); in PREFIX()
846 if (! HAS_CHAR(enc, ptr, end)) in PREFIX()
848 if (BYTE_TYPE(enc, ptr) == BT_LF) in PREFIX()
849 ptr += MINBPC(enc); in PREFIX()
850 *nextTokPtr = ptr; in PREFIX()
853 *nextTokPtr = ptr + MINBPC(enc); in PREFIX()
856 ptr += MINBPC(enc); in PREFIX()
857 if (! HAS_CHAR(enc, ptr, end)) in PREFIX()
859 if (! CHAR_MATCHES(enc, ptr, ASCII_RSQB)) in PREFIX()
861 ptr += MINBPC(enc); in PREFIX()
862 if (! HAS_CHAR(enc, ptr, end)) in PREFIX()
864 if (! CHAR_MATCHES(enc, ptr, ASCII_GT)) { in PREFIX()
865 ptr -= MINBPC(enc); in PREFIX()
868 *nextTokPtr = ptr; in PREFIX()
870 INVALID_CASES(ptr, nextTokPtr) in PREFIX()
872 ptr += MINBPC(enc); in PREFIX()
875 while (HAS_CHAR(enc, ptr, end)) { in PREFIX()
876 switch (BYTE_TYPE(enc, ptr)) { in PREFIX()
879 if (end - ptr < n || IS_INVALID_CHAR(enc, ptr, n)) { \ in PREFIX()
880 *nextTokPtr = ptr; \ in PREFIX()
883 ptr += n; \ in PREFIX()
890 if (HAS_CHARS(enc, ptr, end, 2)) { in PREFIX()
891 if (! CHAR_MATCHES(enc, ptr + MINBPC(enc), ASCII_RSQB)) { in PREFIX()
892 ptr += MINBPC(enc); in PREFIX()
895 if (HAS_CHARS(enc, ptr, end, 3)) { in PREFIX()
896 if (! CHAR_MATCHES(enc, ptr + 2 * MINBPC(enc), ASCII_GT)) { in PREFIX()
897 ptr += MINBPC(enc); in PREFIX()
900 *nextTokPtr = ptr + 2 * MINBPC(enc); in PREFIX()
912 *nextTokPtr = ptr; in PREFIX()
915 ptr += MINBPC(enc); in PREFIX()
919 *nextTokPtr = ptr; in PREFIX()
926 PREFIX(scanPercent)(const ENCODING *enc, const char *ptr, const char *end, in PREFIX()
928 REQUIRE_CHAR(enc, ptr, end); in PREFIX()
929 switch (BYTE_TYPE(enc, ptr)) { in PREFIX()
930 CHECK_NMSTRT_CASES(enc, ptr, end, nextTokPtr) in PREFIX()
935 *nextTokPtr = ptr; in PREFIX()
938 *nextTokPtr = ptr; in PREFIX()
941 while (HAS_CHAR(enc, ptr, end)) { in PREFIX()
942 switch (BYTE_TYPE(enc, ptr)) { in PREFIX()
943 CHECK_NAME_CASES(enc, ptr, end, nextTokPtr) in PREFIX()
945 *nextTokPtr = ptr + MINBPC(enc); in PREFIX()
948 *nextTokPtr = ptr; in PREFIX()
956 PREFIX(scanPoundName)(const ENCODING *enc, const char *ptr, const char *end, in PREFIX()
958 REQUIRE_CHAR(enc, ptr, end); in PREFIX()
959 switch (BYTE_TYPE(enc, ptr)) { in PREFIX()
960 CHECK_NMSTRT_CASES(enc, ptr, end, nextTokPtr) in PREFIX()
962 *nextTokPtr = ptr; in PREFIX()
965 while (HAS_CHAR(enc, ptr, end)) { in PREFIX()
966 switch (BYTE_TYPE(enc, ptr)) { in PREFIX()
967 CHECK_NAME_CASES(enc, ptr, end, nextTokPtr) in PREFIX()
975 *nextTokPtr = ptr; in PREFIX()
978 *nextTokPtr = ptr; in PREFIX()
986 PREFIX(scanLit)(int open, const ENCODING *enc, const char *ptr, const char *end, in PREFIX()
988 while (HAS_CHAR(enc, ptr, end)) { in PREFIX()
989 int t = BYTE_TYPE(enc, ptr); in PREFIX()
991 INVALID_CASES(ptr, nextTokPtr) in PREFIX()
994 ptr += MINBPC(enc); in PREFIX()
997 if (! HAS_CHAR(enc, ptr, end)) in PREFIX()
999 *nextTokPtr = ptr; in PREFIX()
1000 switch (BYTE_TYPE(enc, ptr)) { in PREFIX()
1012 ptr += MINBPC(enc); in PREFIX()
1020 PREFIX(prologTok)(const ENCODING *enc, const char *ptr, const char *end, in PREFIX()
1023 if (ptr >= end) in PREFIX()
1026 size_t n = end - ptr; in PREFIX()
1031 end = ptr + n; in PREFIX()
1034 switch (BYTE_TYPE(enc, ptr)) { in PREFIX()
1036 return PREFIX(scanLit)(BT_QUOT, enc, ptr + MINBPC(enc), end, nextTokPtr); in PREFIX()
1038 return PREFIX(scanLit)(BT_APOS, enc, ptr + MINBPC(enc), end, nextTokPtr); in PREFIX()
1040 ptr += MINBPC(enc); in PREFIX()
1041 REQUIRE_CHAR(enc, ptr, end); in PREFIX()
1042 switch (BYTE_TYPE(enc, ptr)) { in PREFIX()
1044 return PREFIX(scanDecl)(enc, ptr + MINBPC(enc), end, nextTokPtr); in PREFIX()
1046 return PREFIX(scanPi)(enc, ptr + MINBPC(enc), end, nextTokPtr); in PREFIX()
1053 *nextTokPtr = ptr - MINBPC(enc); in PREFIX()
1056 *nextTokPtr = ptr; in PREFIX()
1060 if (ptr + MINBPC(enc) == end) { in PREFIX()
1069 ptr += MINBPC(enc); in PREFIX()
1070 if (! HAS_CHAR(enc, ptr, end)) in PREFIX()
1072 switch (BYTE_TYPE(enc, ptr)) { in PREFIX()
1078 if (ptr + MINBPC(enc) != end) in PREFIX()
1082 *nextTokPtr = ptr; in PREFIX()
1086 *nextTokPtr = ptr; in PREFIX()
1089 return PREFIX(scanPercent)(enc, ptr + MINBPC(enc), end, nextTokPtr); in PREFIX()
1091 *nextTokPtr = ptr + MINBPC(enc); in PREFIX()
1094 *nextTokPtr = ptr + MINBPC(enc); in PREFIX()
1097 ptr += MINBPC(enc); in PREFIX()
1098 if (! HAS_CHAR(enc, ptr, end)) in PREFIX()
1100 if (CHAR_MATCHES(enc, ptr, ASCII_RSQB)) { in PREFIX()
1101 REQUIRE_CHARS(enc, ptr, end, 2); in PREFIX()
1102 if (CHAR_MATCHES(enc, ptr + MINBPC(enc), ASCII_GT)) { in PREFIX()
1103 *nextTokPtr = ptr + 2 * MINBPC(enc); in PREFIX()
1107 *nextTokPtr = ptr; in PREFIX()
1110 *nextTokPtr = ptr + MINBPC(enc); in PREFIX()
1113 ptr += MINBPC(enc); in PREFIX()
1114 if (! HAS_CHAR(enc, ptr, end)) in PREFIX()
1116 switch (BYTE_TYPE(enc, ptr)) { in PREFIX()
1118 *nextTokPtr = ptr + MINBPC(enc); in PREFIX()
1121 *nextTokPtr = ptr + MINBPC(enc); in PREFIX()
1124 *nextTokPtr = ptr + MINBPC(enc); in PREFIX()
1133 *nextTokPtr = ptr; in PREFIX()
1136 *nextTokPtr = ptr; in PREFIX()
1139 *nextTokPtr = ptr + MINBPC(enc); in PREFIX()
1142 *nextTokPtr = ptr + MINBPC(enc); in PREFIX()
1145 return PREFIX(scanPoundName)(enc, ptr + MINBPC(enc), end, nextTokPtr); in PREFIX()
1148 if (end - ptr < n) \ in PREFIX()
1150 if (IS_INVALID_CHAR(enc, ptr, n)) { \ in PREFIX()
1151 *nextTokPtr = ptr; \ in PREFIX()
1154 if (IS_NMSTRT_CHAR(enc, ptr, n)) { \ in PREFIX()
1155 ptr += n; \ in PREFIX()
1159 if (IS_NAME_CHAR(enc, ptr, n)) { \ in PREFIX()
1160 ptr += n; \ in PREFIX()
1164 *nextTokPtr = ptr; \ in PREFIX()
1173 ptr += MINBPC(enc); in PREFIX()
1182 ptr += MINBPC(enc); in PREFIX()
1185 if (IS_NMSTRT_CHAR_MINBPC(enc, ptr)) { in PREFIX()
1186 ptr += MINBPC(enc); in PREFIX()
1190 if (IS_NAME_CHAR_MINBPC(enc, ptr)) { in PREFIX()
1191 ptr += MINBPC(enc); in PREFIX()
1197 *nextTokPtr = ptr; in PREFIX()
1200 while (HAS_CHAR(enc, ptr, end)) { in PREFIX()
1201 switch (BYTE_TYPE(enc, ptr)) { in PREFIX()
1202 CHECK_NAME_CASES(enc, ptr, end, nextTokPtr) in PREFIX()
1212 *nextTokPtr = ptr; in PREFIX()
1216 ptr += MINBPC(enc); in PREFIX()
1219 REQUIRE_CHAR(enc, ptr, end); in PREFIX()
1221 switch (BYTE_TYPE(enc, ptr)) { in PREFIX()
1222 CHECK_NAME_CASES(enc, ptr, end, nextTokPtr) in PREFIX()
1236 *nextTokPtr = ptr; in PREFIX()
1239 *nextTokPtr = ptr + MINBPC(enc); in PREFIX()
1243 *nextTokPtr = ptr; in PREFIX()
1246 *nextTokPtr = ptr + MINBPC(enc); in PREFIX()
1250 *nextTokPtr = ptr; in PREFIX()
1253 *nextTokPtr = ptr + MINBPC(enc); in PREFIX()
1256 *nextTokPtr = ptr; in PREFIX()
1264 PREFIX(attributeValueTok)(const ENCODING *enc, const char *ptr, const char *end, in PREFIX()
1267 if (ptr >= end) in PREFIX()
1269 else if (! HAS_CHAR(enc, ptr, end)) { in PREFIX()
1277 start = ptr; in PREFIX()
1278 while (HAS_CHAR(enc, ptr, end)) { in PREFIX()
1279 switch (BYTE_TYPE(enc, ptr)) { in PREFIX()
1282 ptr += n; /* NOTE: The encoding has already been validated. */ \ in PREFIX()
1289 if (ptr == start) in PREFIX()
1290 return PREFIX(scanRef)(enc, ptr + MINBPC(enc), end, nextTokPtr); in PREFIX()
1291 *nextTokPtr = ptr; in PREFIX()
1295 *nextTokPtr = ptr; in PREFIX()
1298 if (ptr == start) { in PREFIX()
1299 *nextTokPtr = ptr + MINBPC(enc); in PREFIX()
1302 *nextTokPtr = ptr; in PREFIX()
1305 if (ptr == start) { in PREFIX()
1306 ptr += MINBPC(enc); in PREFIX()
1307 if (! HAS_CHAR(enc, ptr, end)) in PREFIX()
1309 if (BYTE_TYPE(enc, ptr) == BT_LF) in PREFIX()
1310 ptr += MINBPC(enc); in PREFIX()
1311 *nextTokPtr = ptr; in PREFIX()
1314 *nextTokPtr = ptr; in PREFIX()
1317 if (ptr == start) { in PREFIX()
1318 *nextTokPtr = ptr + MINBPC(enc); in PREFIX()
1321 *nextTokPtr = ptr; in PREFIX()
1324 ptr += MINBPC(enc); in PREFIX()
1328 *nextTokPtr = ptr; in PREFIX()
1333 PREFIX(entityValueTok)(const ENCODING *enc, const char *ptr, const char *end, in PREFIX()
1336 if (ptr >= end) in PREFIX()
1338 else if (! HAS_CHAR(enc, ptr, end)) { in PREFIX()
1346 start = ptr; in PREFIX()
1347 while (HAS_CHAR(enc, ptr, end)) { in PREFIX()
1348 switch (BYTE_TYPE(enc, ptr)) { in PREFIX()
1351 ptr += n; /* NOTE: The encoding has already been validated. */ \ in PREFIX()
1358 if (ptr == start) in PREFIX()
1359 return PREFIX(scanRef)(enc, ptr + MINBPC(enc), end, nextTokPtr); in PREFIX()
1360 *nextTokPtr = ptr; in PREFIX()
1363 if (ptr == start) { in PREFIX()
1364 int tok = PREFIX(scanPercent)(enc, ptr + MINBPC(enc), end, nextTokPtr); in PREFIX()
1367 *nextTokPtr = ptr; in PREFIX()
1370 if (ptr == start) { in PREFIX()
1371 *nextTokPtr = ptr + MINBPC(enc); in PREFIX()
1374 *nextTokPtr = ptr; in PREFIX()
1377 if (ptr == start) { in PREFIX()
1378 ptr += MINBPC(enc); in PREFIX()
1379 if (! HAS_CHAR(enc, ptr, end)) in PREFIX()
1381 if (BYTE_TYPE(enc, ptr) == BT_LF) in PREFIX()
1382 ptr += MINBPC(enc); in PREFIX()
1383 *nextTokPtr = ptr; in PREFIX()
1386 *nextTokPtr = ptr; in PREFIX()
1389 ptr += MINBPC(enc); in PREFIX()
1393 *nextTokPtr = ptr; in PREFIX()
1400 PREFIX(ignoreSectionTok)(const ENCODING *enc, const char *ptr, const char *end, in PREFIX()
1404 size_t n = end - ptr; in PREFIX()
1407 end = ptr + n; in PREFIX()
1410 while (HAS_CHAR(enc, ptr, end)) { in PREFIX()
1411 switch (BYTE_TYPE(enc, ptr)) { in PREFIX()
1412 INVALID_CASES(ptr, nextTokPtr) in PREFIX()
1414 ptr += MINBPC(enc); in PREFIX()
1415 REQUIRE_CHAR(enc, ptr, end); in PREFIX()
1416 if (CHAR_MATCHES(enc, ptr, ASCII_EXCL)) { in PREFIX()
1417 ptr += MINBPC(enc); in PREFIX()
1418 REQUIRE_CHAR(enc, ptr, end); in PREFIX()
1419 if (CHAR_MATCHES(enc, ptr, ASCII_LSQB)) { in PREFIX()
1421 ptr += MINBPC(enc); in PREFIX()
1426 ptr += MINBPC(enc); in PREFIX()
1427 REQUIRE_CHAR(enc, ptr, end); in PREFIX()
1428 if (CHAR_MATCHES(enc, ptr, ASCII_RSQB)) { in PREFIX()
1429 ptr += MINBPC(enc); in PREFIX()
1430 REQUIRE_CHAR(enc, ptr, end); in PREFIX()
1431 if (CHAR_MATCHES(enc, ptr, ASCII_GT)) { in PREFIX()
1432 ptr += MINBPC(enc); in PREFIX()
1434 *nextTokPtr = ptr; in PREFIX()
1442 ptr += MINBPC(enc); in PREFIX()
1452 PREFIX(isPublicId)(const ENCODING *enc, const char *ptr, const char *end, in PREFIX()
1454 ptr += MINBPC(enc); in PREFIX()
1456 for (; HAS_CHAR(enc, ptr, end); ptr += MINBPC(enc)) { in PREFIX()
1457 switch (BYTE_TYPE(enc, ptr)) { in PREFIX()
1481 if (CHAR_MATCHES(enc, ptr, ASCII_TAB)) { in PREFIX()
1482 *badPtr = ptr; in PREFIX()
1488 if (! (BYTE_TO_ASCII(enc, ptr) & ~0x7f)) in PREFIX()
1492 switch (BYTE_TO_ASCII(enc, ptr)) { in PREFIX()
1497 *badPtr = ptr; in PREFIX()
1512 PREFIX(getAtts)(const ENCODING *enc, const char *ptr, int attsMax, in PREFIX()
1519 for (ptr += MINBPC(enc);; ptr += MINBPC(enc)) { in PREFIX()
1520 switch (BYTE_TYPE(enc, ptr)) { in PREFIX()
1524 atts[nAtts].name = ptr; \ in PREFIX()
1531 START_NAME ptr += (n - MINBPC(enc)); \ in PREFIX()
1546 atts[nAtts].valuePtr = ptr + MINBPC(enc); in PREFIX()
1552 atts[nAtts].valueEnd = ptr; in PREFIX()
1559 atts[nAtts].valuePtr = ptr + MINBPC(enc); in PREFIX()
1565 atts[nAtts].valueEnd = ptr; in PREFIX()
1577 && (ptr == atts[nAtts].valuePtr in PREFIX()
1578 || BYTE_TO_ASCII(enc, ptr) != ASCII_SPACE in PREFIX()
1579 || BYTE_TO_ASCII(enc, ptr + MINBPC(enc)) == ASCII_SPACE in PREFIX()
1580 || BYTE_TYPE(enc, ptr + MINBPC(enc)) == open)) in PREFIX()
1605 PREFIX(charRefNumber)(const ENCODING *enc, const char *ptr) { in PREFIX()
1609 ptr += 2 * MINBPC(enc); in PREFIX()
1610 if (CHAR_MATCHES(enc, ptr, ASCII_x)) { in PREFIX()
1611 for (ptr += MINBPC(enc); ! CHAR_MATCHES(enc, ptr, ASCII_SEMI); in PREFIX()
1612 ptr += MINBPC(enc)) { in PREFIX()
1613 int c = BYTE_TO_ASCII(enc, ptr); in PREFIX()
1651 for (; ! CHAR_MATCHES(enc, ptr, ASCII_SEMI); ptr += MINBPC(enc)) { in PREFIX()
1652 int c = BYTE_TO_ASCII(enc, ptr); in PREFIX()
1663 PREFIX(predefinedEntityName)(const ENCODING *enc, const char *ptr, in PREFIX()
1666 switch ((end - ptr) / MINBPC(enc)) { in PREFIX()
1668 if (CHAR_MATCHES(enc, ptr + MINBPC(enc), ASCII_t)) { in PREFIX()
1669 switch (BYTE_TO_ASCII(enc, ptr)) { in PREFIX()
1678 if (CHAR_MATCHES(enc, ptr, ASCII_a)) { in PREFIX()
1679 ptr += MINBPC(enc); in PREFIX()
1680 if (CHAR_MATCHES(enc, ptr, ASCII_m)) { in PREFIX()
1681 ptr += MINBPC(enc); in PREFIX()
1682 if (CHAR_MATCHES(enc, ptr, ASCII_p)) in PREFIX()
1688 switch (BYTE_TO_ASCII(enc, ptr)) { in PREFIX()
1690 ptr += MINBPC(enc); in PREFIX()
1691 if (CHAR_MATCHES(enc, ptr, ASCII_u)) { in PREFIX()
1692 ptr += MINBPC(enc); in PREFIX()
1693 if (CHAR_MATCHES(enc, ptr, ASCII_o)) { in PREFIX()
1694 ptr += MINBPC(enc); in PREFIX()
1695 if (CHAR_MATCHES(enc, ptr, ASCII_t)) in PREFIX()
1701 ptr += MINBPC(enc); in PREFIX()
1702 if (CHAR_MATCHES(enc, ptr, ASCII_p)) { in PREFIX()
1703 ptr += MINBPC(enc); in PREFIX()
1704 if (CHAR_MATCHES(enc, ptr, ASCII_o)) { in PREFIX()
1705 ptr += MINBPC(enc); in PREFIX()
1706 if (CHAR_MATCHES(enc, ptr, ASCII_s)) in PREFIX()
1736 PREFIX(nameLength)(const ENCODING *enc, const char *ptr) { in PREFIX()
1737 const char *start = ptr; in PREFIX()
1739 switch (BYTE_TYPE(enc, ptr)) { in PREFIX()
1742 ptr += n; /* NOTE: The encoding has already been validated. */ \ in PREFIX()
1757 ptr += MINBPC(enc); in PREFIX()
1760 return (int)(ptr - start); in PREFIX()
1766 PREFIX(skipS)(const ENCODING *enc, const char *ptr) { in PREFIX()
1768 switch (BYTE_TYPE(enc, ptr)) { in PREFIX()
1772 ptr += MINBPC(enc); in PREFIX()
1775 return ptr; in PREFIX()
1781 PREFIX(updatePosition)(const ENCODING *enc, const char *ptr, const char *end, in PREFIX()
1783 while (HAS_CHAR(enc, ptr, end)) { in PREFIX()
1784 switch (BYTE_TYPE(enc, ptr)) { in PREFIX()
1787 ptr += n; /* NOTE: The encoding has already been validated. */ \ in PREFIX()
1797 ptr += MINBPC(enc); in PREFIX()
1801 ptr += MINBPC(enc); in PREFIX()
1802 if (HAS_CHAR(enc, ptr, end) && BYTE_TYPE(enc, ptr) == BT_LF) in PREFIX()
1803 ptr += MINBPC(enc); in PREFIX()
1807 ptr += MINBPC(enc); in PREFIX()