#include "src/sksl/ir/SkSLPrefixExpression.h"
#include "include/core/SkTypes.h"
#include "src/sksl/SkSLAnalysis.h"
#include "src/sksl/SkSLConstantFolder.h"
#include "src/sksl/SkSLContext.h"
#include "src/sksl/SkSLDefines.h"
#include "src/sksl/SkSLErrorReporter.h"
#include "src/sksl/SkSLOperator.h"
#include "src/sksl/SkSLProgramSettings.h"
#include "src/sksl/ir/SkSLBinaryExpression.h"
#include "src/sksl/ir/SkSLConstructorArray.h"
#include "src/sksl/ir/SkSLConstructorCompound.h"
#include "src/sksl/ir/SkSLConstructorDiagonalMatrix.h"
#include "src/sksl/ir/SkSLLiteral.h"
#include "src/sksl/ir/SkSLType.h"
#include "src/sksl/ir/SkSLVariableReference.h"
#include <cstddef>
#include <optional>
namespace SkSL {
static ExpressionArray negate_operands(const Context& context,
Position pos,
const ExpressionArray& operands);
static double negate_value(double value) { … }
static double bitwise_not_value(double value) { … }
static std::unique_ptr<Expression> apply_to_elements(const Context& context,
Position pos,
const Expression& expr,
double (*fn)(double)) { … }
static std::unique_ptr<Expression> simplify_negation(const Context& context,
Position pos,
const Expression& originalExpr) { … }
static ExpressionArray negate_operands(const Context& context,
Position pos,
const ExpressionArray& array) { … }
static std::unique_ptr<Expression> negate_operand(const Context& context,
Position pos,
std::unique_ptr<Expression> value) { … }
static std::unique_ptr<Expression> logical_not_operand(const Context& context,
Position pos,
std::unique_ptr<Expression> operand) { … }
static std::unique_ptr<Expression> bitwise_not_operand(const Context& context,
Position pos,
std::unique_ptr<Expression> operand) { … }
std::unique_ptr<Expression> PrefixExpression::Convert(const Context& context,
Position pos,
Operator op,
std::unique_ptr<Expression> base) { … }
std::unique_ptr<Expression> PrefixExpression::Make(const Context& context,
Position pos,
Operator op,
std::unique_ptr<Expression> base) { … }
std::string PrefixExpression::description(OperatorPrecedence parentPrecedence) const { … }
}