• Home
  • Raw
  • Download

Lines Matching refs:Value

33   const Value* GetExistingValue() const;
44 Value* GetExistingMutableValueIfExists(const ParseNode* origin);
47 Value* SetValue(Value value, const ParseNode* set_node);
63 Value* list_;
99 Value* base = in Init()
126 if (!base->VerifyTypeIs(Value::LIST, err)) { in Init()
141 if (!base->VerifyTypeIs(Value::SCOPE, err)) { in Init()
152 const Value* ValueDestination::GetExistingValue() const { in GetExistingValue()
160 Value* ValueDestination::GetExistingMutableValueIfExists( in GetExistingMutableValueIfExists()
163 Value* value = scope_->GetMutableValue(name_token_->value(), in GetExistingMutableValueIfExists()
176 Value* ValueDestination::SetValue(Value value, const ParseNode* set_node) { in SetValue()
180 Value* dest = &list_->list_value()[index_]; in SetValue()
196 Err MakeOverwriteError(const BinaryOpNode* op_node, const Value& old_value) { in MakeOverwriteError()
200 if (old_value.type() == Value::LIST) { in MakeOverwriteError()
203 } else if (old_value.type() == Value::SCOPE) { in MakeOverwriteError()
226 const Value& left, in MakeIncompatibleTypeError()
227 const Value& right) { in MakeIncompatibleTypeError()
229 Value::DescribeType(left.type()) + "> " + in MakeIncompatibleTypeError()
231 Value::DescribeType(right.type()) + ">."; in MakeIncompatibleTypeError()
232 if (left.type() == Value::LIST) { in MakeIncompatibleTypeError()
241 Value GetValueOrFillError(const BinaryOpNode* op_node, in GetValueOrFillError()
246 Value value = node->Execute(scope, err); in GetValueOrFillError()
248 return Value(); in GetValueOrFillError()
249 if (value.type() == Value::NONE) { in GetValueOrFillError()
254 return Value(); in GetValueOrFillError()
260 Value* list, in RemoveMatchesFromList()
261 const Value& to_remove, in RemoveMatchesFromList()
263 std::vector<Value>& v = list->list_value(); in RemoveMatchesFromList()
265 case Value::BOOLEAN: in RemoveMatchesFromList()
266 case Value::INTEGER: // Filter out the individual int/string. in RemoveMatchesFromList()
267 case Value::STRING: in RemoveMatchesFromList()
268 case Value::SCOPE: { in RemoveMatchesFromList()
286 case Value::LIST: // Filter out each individual thing. in RemoveMatchesFromList()
296 case Value::NONE: in RemoveMatchesFromList()
305 Value ExecuteEquals(Scope* exec_scope, in ExecuteEquals()
308 Value right, in ExecuteEquals()
310 const Value* old_value = dest->GetExistingValue(); in ExecuteEquals()
317 if (old_value->type() == Value::LIST && right.type() == Value::LIST && in ExecuteEquals()
320 return Value(); in ExecuteEquals()
321 } else if (old_value->type() == Value::SCOPE && in ExecuteEquals()
322 right.type() == Value::SCOPE && in ExecuteEquals()
326 return Value(); in ExecuteEquals()
331 return Value(); in ExecuteEquals()
338 Value ExecutePlus(const BinaryOpNode* op_node, in ExecutePlus()
339 Value left, in ExecutePlus()
340 Value right, in ExecutePlus()
344 if (left.type() == Value::INTEGER) { in ExecutePlus()
345 if (right.type() == Value::INTEGER) { in ExecutePlus()
347 return Value(op_node, left.int_value() + right.int_value()); in ExecutePlus()
348 } else if (right.type() == Value::STRING && allow_left_type_conversion) { in ExecutePlus()
350 return Value(op_node, base::Int64ToString(left.int_value()) + in ExecutePlus()
354 return Value(); in ExecutePlus()
358 if (left.type() == Value::STRING) { in ExecutePlus()
359 if (right.type() == Value::INTEGER) { in ExecutePlus()
361 return Value(op_node, left.string_value() + in ExecutePlus()
363 } else if (right.type() == Value::STRING) { in ExecutePlus()
371 return Value(); in ExecutePlus()
375 if (left.type() == Value::LIST && right.type() == Value::LIST) { in ExecutePlus()
378 for (Value& value : right.list_value()) in ExecutePlus()
384 return Value(); in ExecutePlus()
389 Value ExecuteMinus(const BinaryOpNode* op_node, in ExecuteMinus()
390 Value left, in ExecuteMinus()
391 const Value& right, in ExecuteMinus()
394 if (left.type() == Value::INTEGER && right.type() == Value::INTEGER) { in ExecuteMinus()
396 return Value(op_node, left.int_value() - right.int_value()); in ExecuteMinus()
400 if (left.type() == Value::LIST && right.type() == Value::LIST) { in ExecuteMinus()
407 return Value(); in ExecuteMinus()
415 Value right, in ExecutePlusEquals()
432 Value* mutable_dest = dest->GetExistingMutableValueIfExists(op_node); in ExecutePlusEquals()
434 const Value* existing_value = dest->GetExistingValue(); in ExecutePlusEquals()
441 if (existing_value->type() != Value::STRING && in ExecutePlusEquals()
442 existing_value->type() != Value::LIST) { in ExecutePlusEquals()
452 } else if (mutable_dest->type() != Value::STRING && in ExecutePlusEquals()
453 mutable_dest->type() != Value::LIST) { in ExecutePlusEquals()
461 if (mutable_dest->type() == Value::STRING) { in ExecutePlusEquals()
462 if (right.type() == Value::INTEGER) { in ExecutePlusEquals()
466 } else if (right.type() == Value::STRING) { in ExecutePlusEquals()
472 } else if (mutable_dest->type() == Value::LIST) { in ExecutePlusEquals()
474 if (right.type() == Value::LIST) { in ExecutePlusEquals()
476 for (Value& value : right.list_value()) in ExecutePlusEquals()
487 const Value& right, in ExecuteMinusEquals()
494 Value* mutable_dest = dest->GetExistingMutableValueIfExists(op_node); in ExecuteMinusEquals()
496 (mutable_dest->type() != Value::LIST || right.type() != Value::LIST)) { in ExecuteMinusEquals()
497 const Value* existing_value = dest->GetExistingValue(); in ExecuteMinusEquals()
513 Value ExecuteEqualsEquals(Scope* scope, in ExecuteEqualsEquals()
515 const Value& left, in ExecuteEqualsEquals()
516 const Value& right, in ExecuteEqualsEquals()
519 return Value(op_node, true); in ExecuteEqualsEquals()
520 return Value(op_node, false); in ExecuteEqualsEquals()
523 Value ExecuteNotEquals(Scope* scope, in ExecuteNotEquals()
525 const Value& left, in ExecuteNotEquals()
526 const Value& right, in ExecuteNotEquals()
529 Value result = ExecuteEqualsEquals(scope, op_node, left, right, err); in ExecuteNotEquals()
534 Value FillNeedsTwoIntegersError(const BinaryOpNode* op_node, in FillNeedsTwoIntegersError()
535 const Value& left, in FillNeedsTwoIntegersError()
536 const Value& right, in FillNeedsTwoIntegersError()
542 return Value(); in FillNeedsTwoIntegersError()
545 Value ExecuteLessEquals(Scope* scope, in ExecuteLessEquals()
547 const Value& left, in ExecuteLessEquals()
548 const Value& right, in ExecuteLessEquals()
550 if (left.type() != Value::INTEGER || right.type() != Value::INTEGER) in ExecuteLessEquals()
552 return Value(op_node, left.int_value() <= right.int_value()); in ExecuteLessEquals()
555 Value ExecuteGreaterEquals(Scope* scope, in ExecuteGreaterEquals()
557 const Value& left, in ExecuteGreaterEquals()
558 const Value& right, in ExecuteGreaterEquals()
560 if (left.type() != Value::INTEGER || right.type() != Value::INTEGER) in ExecuteGreaterEquals()
562 return Value(op_node, left.int_value() >= right.int_value()); in ExecuteGreaterEquals()
565 Value ExecuteGreater(Scope* scope, in ExecuteGreater()
567 const Value& left, in ExecuteGreater()
568 const Value& right, in ExecuteGreater()
570 if (left.type() != Value::INTEGER || right.type() != Value::INTEGER) in ExecuteGreater()
572 return Value(op_node, left.int_value() > right.int_value()); in ExecuteGreater()
575 Value ExecuteLess(Scope* scope, in ExecuteLess()
577 const Value& left, in ExecuteLess()
578 const Value& right, in ExecuteLess()
580 if (left.type() != Value::INTEGER || right.type() != Value::INTEGER) in ExecuteLess()
582 return Value(op_node, left.int_value() < right.int_value()); in ExecuteLess()
587 Value ExecuteOr(Scope* scope, in ExecuteOr()
592 Value left = GetValueOrFillError(op_node, left_node, "left", scope, err); in ExecuteOr()
594 return Value(); in ExecuteOr()
595 if (left.type() != Value::BOOLEAN) { in ExecuteOr()
597 "Type is \"" + std::string(Value::DescribeType(left.type())) + in ExecuteOr()
599 return Value(); in ExecuteOr()
602 return Value(op_node, left.boolean_value()); in ExecuteOr()
604 Value right = GetValueOrFillError(op_node, right_node, "right", scope, err); in ExecuteOr()
606 return Value(); in ExecuteOr()
607 if (right.type() != Value::BOOLEAN) { in ExecuteOr()
609 "Type is \"" + std::string(Value::DescribeType(right.type())) + in ExecuteOr()
611 return Value(); in ExecuteOr()
614 return Value(op_node, left.boolean_value() || right.boolean_value()); in ExecuteOr()
617 Value ExecuteAnd(Scope* scope, in ExecuteAnd()
622 Value left = GetValueOrFillError(op_node, left_node, "left", scope, err); in ExecuteAnd()
624 return Value(); in ExecuteAnd()
625 if (left.type() != Value::BOOLEAN) { in ExecuteAnd()
627 "Type is \"" + std::string(Value::DescribeType(left.type())) + in ExecuteAnd()
629 return Value(); in ExecuteAnd()
632 return Value(op_node, left.boolean_value()); in ExecuteAnd()
634 Value right = GetValueOrFillError(op_node, right_node, "right", scope, err); in ExecuteAnd()
636 return Value(); in ExecuteAnd()
637 if (right.type() != Value::BOOLEAN) { in ExecuteAnd()
639 "Type is \"" + std::string(Value::DescribeType(right.type())) + in ExecuteAnd()
641 return Value(); in ExecuteAnd()
643 return Value(op_node, left.boolean_value() && right.boolean_value()); in ExecuteAnd()
650 Value ExecuteUnaryOperator(Scope* scope, in ExecuteUnaryOperator()
652 const Value& expr, in ExecuteUnaryOperator()
656 if (expr.type() != Value::BOOLEAN) { in ExecuteUnaryOperator()
658 "Type is \"" + std::string(Value::DescribeType(expr.type())) + in ExecuteUnaryOperator()
660 return Value(); in ExecuteUnaryOperator()
663 return Value(op_node, !expr.boolean_value()); in ExecuteUnaryOperator()
666 Value ExecuteBinaryOperator(Scope* scope, in ExecuteBinaryOperator()
679 return Value(); in ExecuteBinaryOperator()
682 Value right_value = right->Execute(scope, err); in ExecuteBinaryOperator()
684 return Value(); in ExecuteBinaryOperator()
685 if (right_value.type() == Value::NONE) { in ExecuteBinaryOperator()
689 return Value(); in ExecuteBinaryOperator()
703 return Value(); in ExecuteBinaryOperator()
714 Value left_value = GetValueOrFillError(op_node, left, "left", scope, err); in ExecuteBinaryOperator()
716 return Value(); in ExecuteBinaryOperator()
717 Value right_value = GetValueOrFillError(op_node, right, "right", scope, err); in ExecuteBinaryOperator()
719 return Value(); in ExecuteBinaryOperator()
743 return Value(); in ExecuteBinaryOperator()