Create SkSLOperators, centralize functionality
Change-Id: I3593e7ab0caac2fd572346038cbc8ff63e6fe970
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/366406
Reviewed-by: John Stiles <johnstiles@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
diff --git a/src/sksl/SkSLMetalCodeGenerator.h b/src/sksl/SkSLMetalCodeGenerator.h
index 9cc0f46..a8110ab 100644
--- a/src/sksl/SkSLMetalCodeGenerator.h
+++ b/src/sksl/SkSLMetalCodeGenerator.h
@@ -8,12 +8,14 @@
#ifndef SKSL_METALCODEGENERATOR
#define SKSL_METALCODEGENERATOR
+#include <set>
#include <stack>
#include <tuple>
#include <unordered_map>
#include <unordered_set>
#include "src/sksl/SkSLCodeGenerator.h"
+#include "src/sksl/SkSLOperators.h"
#include "src/sksl/SkSLStringStream.h"
#include "src/sksl/ir/SkSLBinaryExpression.h"
#include "src/sksl/ir/SkSLBoolLiteral.h"
@@ -54,27 +56,6 @@
static constexpr const char* SAMPLER_SUFFIX = "Smplr";
static constexpr const char* PACKED_PREFIX = "packed_";
- enum Precedence {
- kParentheses_Precedence = 1,
- kPostfix_Precedence = 2,
- kPrefix_Precedence = 3,
- kMultiplicative_Precedence = 4,
- kAdditive_Precedence = 5,
- kShift_Precedence = 6,
- kRelational_Precedence = 7,
- kEquality_Precedence = 8,
- kBitwiseAnd_Precedence = 9,
- kBitwiseXor_Precedence = 10,
- kBitwiseOr_Precedence = 11,
- kLogicalAnd_Precedence = 12,
- kLogicalXor_Precedence = 13,
- kLogicalOr_Precedence = 14,
- kTernary_Precedence = 15,
- kAssignment_Precedence = 16,
- kSequence_Precedence = 17,
- kTopLevel_Precedence = kSequence_Precedence
- };
-
MetalCodeGenerator(const Context* context, const Program* program, ErrorReporter* errors,
OutputStream* out)
: INHERITED(program, errors, out)
@@ -87,6 +68,8 @@
bool generateCode() override;
protected:
+ using Precedence = Operators::Precedence;
+
typedef int Requirements;
static constexpr Requirements kNo_Requirements = 0;
static constexpr Requirements kInputs_Requirement = 1 << 0;
@@ -243,8 +226,6 @@
void writeSwizzle(const Swizzle& swizzle);
- static Precedence GetBinaryPrecedence(Token::Kind op);
-
void writeBinaryExpression(const BinaryExpression& b, Precedence parentPrecedence);
void writeTernaryExpression(const TernaryExpression& t, Precedence parentPrecedence);