// s might be modified in-place bool MuiFromText(ParsedMui& res, const std::string_view& str) { TxtParser parser; parser.SetToParse(str); bool ok = ParseTxt(parser); if (!ok) return false; ParseMuiDefinition(GetRootArray(&parser), res); CrashIf(!ok); return ok; }
bool MuiFromText(char *s, ParsedMui& res) { TxtParser parser; parser.SetToParse(s, str::Len(s)); bool ok = ParseTxt(parser); if (!ok) return false; ParseMuiDefinition(GetRootArray(&parser), res); CrashIf(!ok); return ok; }
// data and defaultData is in text format. we might modify it in place uint8_t* DeserializeWithDefault(char *data, size_t dataSize, char *defaultData, size_t defaultDataSize, StructMetadata *def, const char *fieldNamesSeq) { if (!data) return NULL; DecodeState ds; ds.fieldNamesSeq = fieldNamesSeq; ds.parser.SetToParse(data, dataSize); bool ok = ParseTxt(ds.parser); if (!ok) return NULL; TxtNode *defaultFirstNode = NULL; DecodeState ds2; ds2.fieldNamesSeq = fieldNamesSeq; ds2.parser.SetToParse(defaultData, defaultDataSize); ok = ParseTxt(ds2.parser); if (ok) defaultFirstNode = ds2.parser.nodes.At(0); return DeserializeRec(ds, ds.parser.nodes.At(0), defaultFirstNode, def); }
uint8_t* Deserialize(char *data, size_t dataSize, const StructMetadata *def) { if (!data) return NULL; DecodeState ds; ds.parser.SetToParse(data, dataSize); bool ok = ParseTxt(ds.parser); if (!ok) return NULL; return DeserializeRec(ds, ds.parser.nodes.At(0), def); }