Lines Matching refs:Value
38 Value::Value() {}
40 Value::~Value() {}
42 string Value::DebugString(const Value* v) {
46 class Literal : public Value {
66 class ValueList : public Value {
70 ValueList(Value* v1, Value* v2, Value* v3) : ValueList() {
77 ValueList(Value* v1, Value* v2) : ValueList() {
83 ValueList(vector<Value*>* values) : ValueList() {
89 for (Value* v : vals_) {
96 for (Value* v : vals_) {
103 for (Value* v : vals_) {
117 vector<Value*> vals_;
120 class SymRef : public Value {
140 class VarRef : public Value {
142 explicit VarRef(Value* n) : name_(n) {}
157 return StringPrintf("VarRef(%s)", Value::DebugString(name_).c_str());
161 Value* name_;
164 class VarSubst : public Value {
166 explicit VarSubst(Value* n, Value* p, Value* s)
184 const string&& value = v->Eval(ev);
187 for (StringPiece tok : WordScanner(value)) {
194 return StringPrintf("VarSubst(%s:%s=%s)", Value::DebugString(name_).c_str(),
195 Value::DebugString(pat_).c_str(),
196 Value::DebugString(subst_).c_str());
200 Value* name_;
201 Value* pat_;
202 Value* subst_;
205 class Func : public Value {
210 for (Value* a : args_)
227 void AddArg(Value* v) { args_.push_back(v); }
237 vector<Value*> args_;
266 Value* Value::NewExpr(Value* v1, Value* v2) {
270 Value* Value::NewExpr(Value* v1, Value* v2, Value* v3) {
274 Value* Value::NewExpr(vector<Value*>* values) {
276 Value* v = (*values)[0];
283 Value* Value::NewLiteral(StringPiece s) {
326 Value* v = ParseExprImpl(loc, s.substr(i), terms, ParseExprOpt::FUNC, &n,
357 Value* ParseDollar(const Loc& loc, StringPiece s, size_t* index_out) {
371 Value* vname =
386 Value* r = new SymRef(sym);
421 Value* pat =
426 return new VarRef(Value::NewExpr(vname, new Literal(":"), pat));
430 Value* subst =
449 Value* ParseExprImpl(const Loc& loc,
462 vector<Value*> list;
478 return Value::NewExpr(&list);
498 return Value::NewExpr(&list);
577 return Value::NewExpr(&list);
580 Value* ParseExpr(const Loc& loc, StringPiece s, ParseExprOpt opt) {
585 string JoinValues(const vector<Value*>& vals, const char* sep) {
587 for (Value* v : vals) {
588 val_strs.push_back(Value::DebugString(v));