summaryrefslogtreecommitdiffstats
path: root/src/video_core/shader/expr.cpp
diff options
context:
space:
mode:
authorLioncash <mathew1800@gmail.com>2019-10-05 14:17:32 +0200
committerLioncash <mathew1800@gmail.com>2019-10-05 15:14:23 +0200
commit8eb1398f8d90fb2813f438b9fffac716b6ec51d2 (patch)
tree39a270023b64af2dce85e3d4a13484c95243b2b3 /src/video_core/shader/expr.cpp
parentvideo_core/ast: Supply const accessors for data where applicable (diff)
downloadyuzu-8eb1398f8d90fb2813f438b9fffac716b6ec51d2.tar
yuzu-8eb1398f8d90fb2813f438b9fffac716b6ec51d2.tar.gz
yuzu-8eb1398f8d90fb2813f438b9fffac716b6ec51d2.tar.bz2
yuzu-8eb1398f8d90fb2813f438b9fffac716b6ec51d2.tar.lz
yuzu-8eb1398f8d90fb2813f438b9fffac716b6ec51d2.tar.xz
yuzu-8eb1398f8d90fb2813f438b9fffac716b6ec51d2.tar.zst
yuzu-8eb1398f8d90fb2813f438b9fffac716b6ec51d2.zip
Diffstat (limited to 'src/video_core/shader/expr.cpp')
-rw-r--r--src/video_core/shader/expr.cpp31
1 files changed, 15 insertions, 16 deletions
diff --git a/src/video_core/shader/expr.cpp b/src/video_core/shader/expr.cpp
index ca633ffb1..39df7a927 100644
--- a/src/video_core/shader/expr.cpp
+++ b/src/video_core/shader/expr.cpp
@@ -2,14 +2,21 @@
// Licensed under GPLv2 or any later version
// Refer to the license.txt file included.
-#pragma once
-
#include <memory>
#include <variant>
#include "video_core/shader/expr.h"
namespace VideoCommon::Shader {
+namespace {
+bool ExprIsBoolean(const Expr& expr) {
+ return std::holds_alternative<ExprBoolean>(*expr);
+}
+
+bool ExprBooleanGet(const Expr& expr) {
+ return std::get_if<ExprBoolean>(expr.get())->value;
+}
+} // Anonymous namespace
bool ExprAnd::operator==(const ExprAnd& b) const {
return (*operand1 == *b.operand1) && (*operand2 == *b.operand2);
@@ -23,19 +30,11 @@ bool ExprNot::operator==(const ExprNot& b) const {
return (*operand1 == *b.operand1);
}
-bool ExprIsBoolean(Expr expr) {
- return std::holds_alternative<ExprBoolean>(*expr);
-}
-
-bool ExprBooleanGet(Expr expr) {
- return std::get_if<ExprBoolean>(expr.get())->value;
-}
-
Expr MakeExprNot(Expr first) {
if (std::holds_alternative<ExprNot>(*first)) {
return std::get_if<ExprNot>(first.get())->operand1;
}
- return MakeExpr<ExprNot>(first);
+ return MakeExpr<ExprNot>(std::move(first));
}
Expr MakeExprAnd(Expr first, Expr second) {
@@ -45,7 +44,7 @@ Expr MakeExprAnd(Expr first, Expr second) {
if (ExprIsBoolean(second)) {
return ExprBooleanGet(second) ? first : second;
}
- return MakeExpr<ExprAnd>(first, second);
+ return MakeExpr<ExprAnd>(std::move(first), std::move(second));
}
Expr MakeExprOr(Expr first, Expr second) {
@@ -55,14 +54,14 @@ Expr MakeExprOr(Expr first, Expr second) {
if (ExprIsBoolean(second)) {
return ExprBooleanGet(second) ? second : first;
}
- return MakeExpr<ExprOr>(first, second);
+ return MakeExpr<ExprOr>(std::move(first), std::move(second));
}
-bool ExprAreEqual(Expr first, Expr second) {
+bool ExprAreEqual(const Expr& first, const Expr& second) {
return (*first) == (*second);
}
-bool ExprAreOpposite(Expr first, Expr second) {
+bool ExprAreOpposite(const Expr& first, const Expr& second) {
if (std::holds_alternative<ExprNot>(*first)) {
return ExprAreEqual(std::get_if<ExprNot>(first.get())->operand1, second);
}
@@ -72,7 +71,7 @@ bool ExprAreOpposite(Expr first, Expr second) {
return false;
}
-bool ExprIsTrue(Expr first) {
+bool ExprIsTrue(const Expr& first) {
if (ExprIsBoolean(first)) {
return ExprBooleanGet(first);
}