void SlimeConfigResponse::fill() { if (_filled) { LOG(info, "SlimeConfigResponse::fill() called twice, probably a bug"); return; } Memory json((*_returnValues)[0]._string._str); Slime * data = new Slime(); JsonFormat::decode(json, *data); _data.reset(data); _key = readKey(); _state = readState(); _value = readConfigValue(); readTrace(); _filled = true; if (LOG_WOULD_LOG(debug)) { LOG(debug, "trace at return(%s)", _trace.toString().c_str()); } }
static int evalNames(char *s, struct tr *tr, int *lenPtr, value * covPtr) { int len; int namesStart; char tmpC; len = 0; while (isspace(s[len])) ++len; namesStart = len; while (!isspace(s[len]) && s[len] != '\0' && s[len] != '(' && s[len] != ')' && s[len] != '!' && s[len] != '&' && s[len] != '+') { if (s[len] == '[' && s[len + 1] == '!') ++len; /* In this context '!' is name matching, not set comp. */ ++len; } if (len == namesStart) { fprintf(stderr, "missing names\n"); return -1; } tmpC = s[len]; s[len] = '\0'; readTrace(tr, s + namesStart, covPtr); s[len] = tmpC; *lenPtr = len; return 0; }