1 /* 2 * Copyright 2016 Google Inc. 3 * 4 * Use of this source code is governed by a BSD-style license that can be 5 * found in the LICENSE file. 6 */ 7 8 #ifndef SKSL_BOOLLITERAL 9 #define SKSL_BOOLLITERAL 10 11 #include "SkSLContext.h" 12 #include "SkSLExpression.h" 13 14 namespace SkSL { 15 16 /** 17 * Represents 'true' or 'false'. 18 */ 19 struct BoolLiteral : public Expression { BoolLiteralBoolLiteral20 BoolLiteral(const Context& context, Position position, bool value) 21 : INHERITED(position, kBoolLiteral_Kind, *context.fBool_Type) 22 , fValue(value) {} 23 descriptionBoolLiteral24 String description() const override { 25 return String(fValue ? "true" : "false"); 26 } 27 hasSideEffectsBoolLiteral28 bool hasSideEffects() const override { 29 return false; 30 } 31 isConstantBoolLiteral32 bool isConstant() const override { 33 return true; 34 } 35 compareConstantBoolLiteral36 bool compareConstant(const Context& context, const Expression& other) const override { 37 BoolLiteral& b = (BoolLiteral&) other; 38 return fValue == b.fValue; 39 } 40 41 const bool fValue; 42 43 typedef Expression INHERITED; 44 }; 45 46 } // namespace 47 48 #endif 49