Exemple #1
0
std::vector<int64_t> parseInts(Tokens& tokens) {
    std::vector<int64_t> r;
    if (tokens.peek() == "[") {
        tokens.next();
        while (tokens.peek() != "]") r.push_back(parseInt(tokens));
        tokens.next();
    } else {
        r.push_back(parseInt(tokens));
    }
    return r;
}
Exemple #2
0
std::vector<bool> parseBools(Tokens& tokens) {
    std::vector<bool> r;
    if (tokens.peek() == "[") {
        tokens.next();
        while (tokens.peek() != "]") r.push_back(parseBool(tokens));
        tokens.next();
    } else {
        r.push_back(parseBool(tokens));
    }
    return r;
}
Exemple #3
0
std::vector<std::string> parseStrings(Tokens& tokens) {
    std::vector<std::string> r;
    if (tokens.peek() == "[") {
        tokens.next();
        while (tokens.peek() != "]") r.push_back(parseString(tokens));
        tokens.next();
    } else {
        r.push_back(parseString(tokens));
    }
    return r;
}
Exemple #4
0
Params parseParams(Tokens& tokens) {
    Params r;
    while (tokens.peek()[0] == '"') {
        auto param = parseString(tokens);
        if (param.rfind("string", 0) == 0 || param.rfind("texture", 0) == 0 ||
            param.rfind("spectrum", 0) == 0)
            r.strings[param] = parseStrings(tokens);
        else if (param.rfind("integer", 0) == 0)
            r.ints[param] = parseInts(tokens);
        else if (param.rfind("bool", 0) == 0)
            r.bools[param] = parseBools(tokens);
        else
            r.reals[param] = parseReals(tokens);
    }

    return r;
}