Add base for menu eventhandlerset parsing

This commit is contained in:
Jan
2021-11-06 16:28:24 +01:00
parent b15efd4a4c
commit bf19208351
19 changed files with 334 additions and 46 deletions

View File

@ -0,0 +1,19 @@
#include "CommonEventHandlerCondition.h"
using namespace menu;
CommonEventHandlerCondition::CommonEventHandlerCondition()
= default;
CommonEventHandlerCondition::CommonEventHandlerCondition(std::unique_ptr<ICommonExpression> condition, std::unique_ptr<CommonEventHandlerSet> conditionElements,
std::unique_ptr<CommonEventHandlerSet> elseElements)
: m_condition(std::move(condition)),
m_condition_elements(std::move(conditionElements)),
m_else_elements(std::move(elseElements))
{
}
CommonEventHandlerElementType CommonEventHandlerCondition::GetType()
{
return CommonEventHandlerElementType::CONDITION;
}

View File

@ -0,0 +1,24 @@
#pragma once
#include <memory>
#include "CommonEventHandlerSet.h"
#include "ICommonEventHandlerElement.h"
#include "Parsing/Menu/Domain/Expression/ICommonExpression.h"
namespace menu
{
class CommonEventHandlerCondition final : public ICommonEventHandlerElement
{
public:
std::unique_ptr<ICommonExpression> m_condition;
std::unique_ptr<CommonEventHandlerSet> m_condition_elements;
std::unique_ptr<CommonEventHandlerSet> m_else_elements;
CommonEventHandlerCondition();
explicit CommonEventHandlerCondition(std::unique_ptr<ICommonExpression> condition, std::unique_ptr<CommonEventHandlerSet> conditionElements,
std::unique_ptr<CommonEventHandlerSet> elseElements);
CommonEventHandlerElementType GetType() override;
};
}

View File

@ -0,0 +1,16 @@
#include "CommonEventHandlerScript.h"
using namespace menu;
CommonEventHandlerScript::CommonEventHandlerScript()
= default;
CommonEventHandlerScript::CommonEventHandlerScript(std::string script)
: m_script(std::move(script))
{
}
CommonEventHandlerElementType CommonEventHandlerScript::GetType()
{
return CommonEventHandlerElementType::SCRIPT;
}

View File

@ -0,0 +1,19 @@
#pragma once
#include <string>
#include "ICommonEventHandlerElement.h"
namespace menu
{
class CommonEventHandlerScript final : public ICommonEventHandlerElement
{
public:
std::string m_script;
CommonEventHandlerScript();
explicit CommonEventHandlerScript(std::string script);
CommonEventHandlerElementType GetType() override;
};
}

View File

@ -0,0 +1,11 @@
#include "CommonEventHandlerSet.h"
using namespace menu;
CommonEventHandlerSet::CommonEventHandlerSet()
= default;
CommonEventHandlerSet::CommonEventHandlerSet(std::vector<std::unique_ptr<ICommonEventHandlerElement>> elements)
: m_elements(std::move(elements))
{
}

View File

@ -0,0 +1,18 @@
#pragma once
#include <memory>
#include <vector>
#include "ICommonEventHandlerElement.h"
namespace menu
{
class CommonEventHandlerSet
{
public:
std::vector<std::unique_ptr<ICommonEventHandlerElement>> m_elements;
CommonEventHandlerSet();
explicit CommonEventHandlerSet(std::vector<std::unique_ptr<ICommonEventHandlerElement>> elements);
};
}

View File

@ -0,0 +1,17 @@
#include "CommonEventHandlerSetLocalVar.h"
using namespace menu;
CommonEventHandlerSetLocalVar::CommonEventHandlerSetLocalVar()
= default;
CommonEventHandlerSetLocalVar::CommonEventHandlerSetLocalVar(std::string varName, std::unique_ptr<ICommonExpression> value)
: m_var_name(std::move(varName)),
m_value(std::move(value))
{
}
CommonEventHandlerElementType CommonEventHandlerSetLocalVar::GetType()
{
return CommonEventHandlerElementType::SET_LOCAL_VAR;
}

View File

@ -0,0 +1,21 @@
#pragma once
#include <memory>
#include <string>
#include "ICommonEventHandlerElement.h"
#include "Parsing/Menu/Domain/Expression/ICommonExpression.h"
namespace menu
{
class CommonEventHandlerSetLocalVar final : public ICommonEventHandlerElement
{
public:
std::string m_var_name;
std::unique_ptr<ICommonExpression> m_value;
CommonEventHandlerSetLocalVar();
CommonEventHandlerSetLocalVar(std::string varName, std::unique_ptr<ICommonExpression> value);
CommonEventHandlerElementType GetType() override;
};
}

View File

@ -0,0 +1,26 @@
#pragma once
namespace menu
{
enum class CommonEventHandlerElementType
{
SCRIPT,
CONDITION,
SET_LOCAL_VAR
};
class ICommonEventHandlerElement
{
protected:
ICommonEventHandlerElement() = default;
public:
virtual ~ICommonEventHandlerElement() = default;
ICommonEventHandlerElement(const ICommonEventHandlerElement& other) = default;
ICommonEventHandlerElement(ICommonEventHandlerElement&& other) noexcept = default;
ICommonEventHandlerElement& operator=(const ICommonEventHandlerElement& other) = default;
ICommonEventHandlerElement& operator=(ICommonEventHandlerElement&& other) noexcept = default;
virtual CommonEventHandlerElementType GetType() = 0;
};
}