| 1135 | } PiuDebugUTF8Sequence; |
| 1136 | |
| 1137 | void PiuDebugMachineParseString(PiuDebugMachine self, char* theString) |
| 1138 | { |
| 1139 | static PiuDebugUTF8Sequence sequences[] = { |
| 1140 | {1, 0x80, 0x00, 0x0000007F}, |
| 1141 | {2, 0xE0, 0xC0, 0x000007FF}, |
| 1142 | {3, 0xF0, 0xE0, 0x0000FFFF}, |
| 1143 | {4, 0xF8, 0xF0, 0x001FFFFF}, |
| 1144 | {5, 0xFC, 0xF8, 0x03FFFFFF}, |
| 1145 | {6, 0xFE, 0xFC, 0x7FFFFFFF}, |
| 1146 | {0, 0, 0, 0}, |
| 1147 | }; |
| 1148 | txU1* p = (txU1*)theString; |
| 1149 | txU4 c; |
| 1150 | while ((c = *p)) { |
| 1151 | if (c & 0x80) { |
| 1152 | const PiuDebugUTF8Sequence *sequence; |
| 1153 | txU1* q = p + 1; |
| 1154 | txS4 size; |
| 1155 | for (sequence = sequences; sequence->size; sequence++) { |
| 1156 | if ((c & sequence->cmask) == sequence->cval) |
| 1157 | break; |
| 1158 | } |
| 1159 | size = sequence->size - 1; |
| 1160 | while (size > 0) { |
| 1161 | size--; |
| 1162 | c = (c << 6) | (*q++ & 0x3F); |
| 1163 | } |
| 1164 | c &= sequence->lmask; |
| 1165 | if (((0x00000000 < c) && (c < 0x0000D800)) || ((0x0000DFFF < c) && (c < 0x00110000))) |
| 1166 | p = q; |
| 1167 | else { |
| 1168 | while (p < q) |
| 1169 | *p++ = '?'; |
| 1170 | } |
| 1171 | } |
| 1172 | else |
| 1173 | p++; |
| 1174 | } |
| 1175 | } |
| 1176 | |
| 1177 | void PiuDebugMachineParseTag(PiuDebugMachine self, char* theName) |
| 1178 | { |
no outgoing calls
no test coverage detected