mirror of
https://github.com/Laupetin/OpenAssetTools.git
synced 2025-06-10 06:49:28 -05:00
Menu conversion base
This commit is contained in:
@ -1,5 +1,7 @@
|
||||
#pragma once
|
||||
|
||||
#include "Utils/ClassUtils.h"
|
||||
|
||||
class SimpleExpressionValue;
|
||||
class ISimpleExpression
|
||||
{
|
||||
@ -12,8 +14,8 @@ public:
|
||||
ISimpleExpression& operator=(const ISimpleExpression& other) = default;
|
||||
ISimpleExpression& operator=(ISimpleExpression&& other) noexcept = default;
|
||||
|
||||
virtual bool IsStatic() = 0;
|
||||
virtual SimpleExpressionValue Evaluate() = 0;
|
||||
_NODISCARD virtual bool IsStatic() const = 0;
|
||||
_NODISCARD virtual SimpleExpressionValue Evaluate() const = 0;
|
||||
};
|
||||
|
||||
// Include SimpleExpressionValue after definition to avoid "base class not defined"
|
||||
|
@ -443,14 +443,14 @@ bool SimpleExpressionBinaryOperation::Operand2NeedsParenthesis() const
|
||||
return operation && operation->m_operation_type->m_precedence > m_operation_type->m_precedence;
|
||||
}
|
||||
|
||||
bool SimpleExpressionBinaryOperation::IsStatic()
|
||||
bool SimpleExpressionBinaryOperation::IsStatic() const
|
||||
{
|
||||
assert(m_operand1 && m_operand2);
|
||||
|
||||
return m_operand1->IsStatic() && m_operand2->IsStatic();
|
||||
}
|
||||
|
||||
SimpleExpressionValue SimpleExpressionBinaryOperation::Evaluate()
|
||||
SimpleExpressionValue SimpleExpressionBinaryOperation::Evaluate() const
|
||||
{
|
||||
return m_operation_type->m_evaluation_function(m_operand1->Evaluate(), m_operand2->Evaluate());
|
||||
}
|
||||
|
@ -93,6 +93,6 @@ public:
|
||||
_NODISCARD bool Operand1NeedsParenthesis() const;
|
||||
_NODISCARD bool Operand2NeedsParenthesis() const;
|
||||
|
||||
bool IsStatic() override;
|
||||
SimpleExpressionValue Evaluate() override;
|
||||
_NODISCARD bool IsStatic() const override;
|
||||
_NODISCARD SimpleExpressionValue Evaluate() const override;
|
||||
};
|
||||
|
@ -11,12 +11,12 @@ SimpleExpressionConditionalOperator::SimpleExpressionConditionalOperator(std::un
|
||||
{
|
||||
}
|
||||
|
||||
bool SimpleExpressionConditionalOperator::IsStatic()
|
||||
bool SimpleExpressionConditionalOperator::IsStatic() const
|
||||
{
|
||||
return m_condition->IsStatic() && m_true_value->IsStatic() && m_false_value->IsStatic();
|
||||
}
|
||||
|
||||
SimpleExpressionValue SimpleExpressionConditionalOperator::Evaluate()
|
||||
SimpleExpressionValue SimpleExpressionConditionalOperator::Evaluate() const
|
||||
{
|
||||
return m_condition->Evaluate().IsTruthy() ? m_true_value->Evaluate() : m_false_value->Evaluate();
|
||||
}
|
||||
|
@ -8,8 +8,8 @@ public:
|
||||
std::unique_ptr<ISimpleExpression> m_true_value;
|
||||
std::unique_ptr<ISimpleExpression> m_false_value;
|
||||
|
||||
bool IsStatic() override;
|
||||
SimpleExpressionValue Evaluate() override;
|
||||
_NODISCARD bool IsStatic() const override;
|
||||
_NODISCARD SimpleExpressionValue Evaluate() const override;
|
||||
|
||||
SimpleExpressionConditionalOperator();
|
||||
SimpleExpressionConditionalOperator(std::unique_ptr<ISimpleExpression> condition, std::unique_ptr<ISimpleExpression> trueExpression, std::unique_ptr<ISimpleExpression> falseExpression);
|
||||
|
@ -64,14 +64,14 @@ bool SimpleExpressionUnaryOperation::OperandNeedsParenthesis() const
|
||||
return dynamic_cast<const SimpleExpressionBinaryOperation*>(m_operand.get()) != nullptr;
|
||||
}
|
||||
|
||||
bool SimpleExpressionUnaryOperation::IsStatic()
|
||||
bool SimpleExpressionUnaryOperation::IsStatic() const
|
||||
{
|
||||
assert(m_operand);
|
||||
|
||||
return m_operand->IsStatic();
|
||||
}
|
||||
|
||||
SimpleExpressionValue SimpleExpressionUnaryOperation::Evaluate()
|
||||
SimpleExpressionValue SimpleExpressionUnaryOperation::Evaluate() const
|
||||
{
|
||||
return m_operation_type->m_evaluation_function(m_operand->Evaluate());
|
||||
}
|
||||
|
@ -46,6 +46,6 @@ public:
|
||||
|
||||
_NODISCARD bool OperandNeedsParenthesis() const;
|
||||
|
||||
bool IsStatic() override;
|
||||
SimpleExpressionValue Evaluate() override;
|
||||
_NODISCARD bool IsStatic() const override;
|
||||
_NODISCARD SimpleExpressionValue Evaluate() const override;
|
||||
};
|
||||
|
@ -24,12 +24,12 @@ SimpleExpressionValue::SimpleExpressionValue(const int intValue)
|
||||
m_int_value = intValue;
|
||||
}
|
||||
|
||||
bool SimpleExpressionValue::IsStatic()
|
||||
bool SimpleExpressionValue::IsStatic() const
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
SimpleExpressionValue SimpleExpressionValue::Evaluate()
|
||||
SimpleExpressionValue SimpleExpressionValue::Evaluate() const
|
||||
{
|
||||
return *this;
|
||||
}
|
||||
|
@ -29,7 +29,7 @@ public:
|
||||
explicit SimpleExpressionValue(double doubleValue);
|
||||
explicit SimpleExpressionValue(int intValue);
|
||||
|
||||
bool IsStatic() override;
|
||||
SimpleExpressionValue Evaluate() override;
|
||||
_NODISCARD bool IsStatic() const override;
|
||||
_NODISCARD SimpleExpressionValue Evaluate() const override;
|
||||
_NODISCARD bool IsTruthy() const;
|
||||
};
|
||||
|
Reference in New Issue
Block a user