Пример #1
0
// 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;
}
Пример #2
0
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;
}
Пример #3
0
// 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);
}
Пример #4
0
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);
}