Home | History | Annotate | Download | only in ir
      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 {
     20     BoolLiteral(const Context& context, Position position, bool value)
     21     : INHERITED(position, kBoolLiteral_Kind, *context.fBool_Type)
     22     , fValue(value) {}
     23 
     24     String description() const override {
     25         return String(fValue ? "true" : "false");
     26     }
     27 
     28     bool hasSideEffects() const override {
     29         return false;
     30     }
     31 
     32     bool isConstant() const override {
     33         return true;
     34     }
     35 
     36     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