MCPcopy Create free account
hub / github.com/Moddable-OpenSource/moddable / PiuDebugMachineParseString

Function PiuDebugMachineParseString

tools/xsbug/DebugBehavior.c:1137–1175  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1135} PiuDebugUTF8Sequence;
1136
1137void 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
1177void PiuDebugMachineParseTag(PiuDebugMachine self, char* theName)
1178{

Callers 2

PiuDebugMachineParseFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected