Calculate size and alignment in post processor

This commit is contained in:
Jan
2021-02-19 16:23:16 +01:00
parent 1264be4274
commit 7c51c26255
48 changed files with 966 additions and 246 deletions

View File

@ -7,6 +7,13 @@ OperandDynamic::OperandDynamic(StructureInformation* structure)
{
}
OperandDynamic::OperandDynamic(StructureInformation* structure, std::vector<MemberInformation*> referencedMemberChain, std::vector<std::unique_ptr<IEvaluation>> arrayIndices)
: m_structure(structure),
m_referenced_member_chain(std::move(referencedMemberChain)),
m_array_indices(std::move(arrayIndices))
{
}
EvaluationType OperandDynamic::GetType() const
{
return EvaluationType::OPERAND_DYNAMIC;

View File

@ -14,6 +14,7 @@ public:
std::vector<std::unique_ptr<IEvaluation>> m_array_indices;
explicit OperandDynamic(StructureInformation* structure);
OperandDynamic(StructureInformation* structure, std::vector<MemberInformation*> referencedMemberChain, std::vector<std::unique_ptr<IEvaluation>> arrayIndices);
_NODISCARD EvaluationType GetType() const override;
_NODISCARD bool IsStatic() const override;

View File

@ -6,8 +6,8 @@ OperandStatic::OperandStatic(const int value)
{
}
OperandStatic::OperandStatic(const int value, EnumMember* enumMember)
: m_value(value),
OperandStatic::OperandStatic(EnumMember* enumMember)
: m_value(enumMember->m_value),
m_enum_member(enumMember)
{
}

View File

@ -10,7 +10,7 @@ public:
EnumMember* const m_enum_member;
explicit OperandStatic(int value);
OperandStatic(int value, EnumMember* enumMember);
explicit OperandStatic(EnumMember* enumMember);
_NODISCARD EvaluationType GetType() const override;
_NODISCARD bool IsStatic() const override;

View File

@ -5,6 +5,13 @@ Operation::Operation(const OperationType* type)
{
}
Operation::Operation(const OperationType* type, std::unique_ptr<IEvaluation> operand1, std::unique_ptr<IEvaluation> operand2)
: m_operation_type(type),
m_operand1(std::move(operand1)),
m_operand2(std::move(operand2))
{
}
EvaluationType Operation::GetType() const
{
return EvaluationType::OPERATION;

View File

@ -14,6 +14,7 @@ public:
std::unique_ptr<IEvaluation> m_operand2;
explicit Operation(const OperationType* type);
Operation(const OperationType* type, std::unique_ptr<IEvaluation> operand1, std::unique_ptr<IEvaluation> operand2);
_NODISCARD EvaluationType GetType() const override;
_NODISCARD bool IsStatic() const override;

View File

@ -73,7 +73,7 @@ const OperationType* const OperationType::OPERATION_GREATER_THAN
return op1 > op2 ? 1 : 0;
});
const OperationType* const OperationType::OPERATION_GREATER_EQUALS_THAN
const OperationType* const OperationType::OPERATION_GREATER_EQUAL_THAN
= new OperationType(">=", OperationPrecedence::RELATIONAL_GREATER_LESS_THAN, [](auto op1, auto op2)
{
return op1 >= op2 ? 1 : 0;
@ -85,7 +85,7 @@ const OperationType* const OperationType::OPERATION_LESS_THAN
return op1 < op2 ? 1 : 0;
});
const OperationType* const OperationType::OPERATION_LESS_EQUALS_THAN
const OperationType* const OperationType::OPERATION_LESS_EQUAL_THAN
= new OperationType("<=", OperationPrecedence::RELATIONAL_GREATER_LESS_THAN, [](auto op1, auto op2)
{
return op1 <= op2 ? 1 : 0;
@ -97,7 +97,7 @@ const OperationType* const OperationType::OPERATION_EQUALS
return op1 == op2 ? 1 : 0;
});
const OperationType* const OperationType::OPERATION_NOT_EQUALS
const OperationType* const OperationType::OPERATION_NOT_EQUAL
= new OperationType("!=", OperationPrecedence::RELATIONAL_EQUALS, [](auto op1, auto op2)
{
return op1 != op2 ? 1 : 0;
@ -129,11 +129,11 @@ const OperationType* const OperationType::ALL_OPERATION_TYPES[]
OPERATION_SHIFT_LEFT,
OPERATION_SHIFT_RIGHT,
OPERATION_GREATER_THAN,
OPERATION_GREATER_EQUALS_THAN,
OPERATION_GREATER_EQUAL_THAN,
OPERATION_LESS_THAN,
OPERATION_LESS_EQUALS_THAN,
OPERATION_LESS_EQUAL_THAN,
OPERATION_EQUALS,
OPERATION_NOT_EQUALS,
OPERATION_NOT_EQUAL,
OPERATION_AND,
OPERATION_OR
};

View File

@ -40,11 +40,11 @@ public:
static const OperationType* const OPERATION_SHIFT_LEFT;
static const OperationType* const OPERATION_SHIFT_RIGHT;
static const OperationType* const OPERATION_GREATER_THAN;
static const OperationType* const OPERATION_GREATER_EQUALS_THAN;
static const OperationType* const OPERATION_GREATER_EQUAL_THAN;
static const OperationType* const OPERATION_LESS_THAN;
static const OperationType* const OPERATION_LESS_EQUALS_THAN;
static const OperationType* const OPERATION_LESS_EQUAL_THAN;
static const OperationType* const OPERATION_EQUALS;
static const OperationType* const OPERATION_NOT_EQUALS;
static const OperationType* const OPERATION_NOT_EQUAL;
static const OperationType* const OPERATION_AND;
static const OperationType* const OPERATION_OR;