mirror of
https://github.com/Laupetin/OpenAssetTools.git
synced 2025-07-01 17:17:55 -05:00
chore: update ZoneCodeGenerator code style
This commit is contained in:
@ -2,32 +2,35 @@
|
||||
|
||||
#include "Domain/Information/MemberInformation.h"
|
||||
|
||||
#include <vector>
|
||||
|
||||
class MemberComputations
|
||||
{
|
||||
const MemberInformation* const m_info;
|
||||
|
||||
public:
|
||||
explicit MemberComputations(const MemberInformation* member);
|
||||
|
||||
_NODISCARD bool ShouldIgnore() const;
|
||||
_NODISCARD bool ContainsNonEmbeddedReference() const;
|
||||
_NODISCARD bool ContainsSinglePointerReference() const;
|
||||
_NODISCARD bool ContainsArrayPointerReference() const;
|
||||
_NODISCARD bool ContainsPointerArrayReference() const;
|
||||
_NODISCARD bool ContainsArrayReference() const;
|
||||
_NODISCARD const IEvaluation* GetArrayPointerCountEvaluation() const;
|
||||
_NODISCARD bool IsArray() const;
|
||||
_NODISCARD std::vector<int> GetArraySizes() const;
|
||||
_NODISCARD int GetArrayDimension() const;
|
||||
_NODISCARD bool IsPointerToArray() const;
|
||||
_NODISCARD std::vector<int> GetPointerToArraySizes() const;
|
||||
_NODISCARD int GetPointerDepth() const;
|
||||
_NODISCARD bool IsNotInDefaultNormalBlock() const;
|
||||
_NODISCARD bool IsInTempBlock() const;
|
||||
_NODISCARD bool IsInRuntimeBlock() const;
|
||||
_NODISCARD bool IsFirstMember() const;
|
||||
_NODISCARD bool IsLastMember() const;
|
||||
_NODISCARD bool HasDynamicArraySize() const;
|
||||
_NODISCARD bool IsDynamicMember() const;
|
||||
_NODISCARD bool IsAfterPartialLoad() const;
|
||||
[[nodiscard]] bool ShouldIgnore() const;
|
||||
[[nodiscard]] bool ContainsNonEmbeddedReference() const;
|
||||
[[nodiscard]] bool ContainsSinglePointerReference() const;
|
||||
[[nodiscard]] bool ContainsArrayPointerReference() const;
|
||||
[[nodiscard]] bool ContainsPointerArrayReference() const;
|
||||
[[nodiscard]] bool ContainsArrayReference() const;
|
||||
[[nodiscard]] const IEvaluation* GetArrayPointerCountEvaluation() const;
|
||||
[[nodiscard]] bool IsArray() const;
|
||||
[[nodiscard]] std::vector<int> GetArraySizes() const;
|
||||
[[nodiscard]] int GetArrayDimension() const;
|
||||
[[nodiscard]] bool IsPointerToArray() const;
|
||||
[[nodiscard]] std::vector<int> GetPointerToArraySizes() const;
|
||||
[[nodiscard]] int GetPointerDepth() const;
|
||||
[[nodiscard]] bool IsNotInDefaultNormalBlock() const;
|
||||
[[nodiscard]] bool IsInTempBlock() const;
|
||||
[[nodiscard]] bool IsInRuntimeBlock() const;
|
||||
[[nodiscard]] bool IsFirstMember() const;
|
||||
[[nodiscard]] bool IsLastMember() const;
|
||||
[[nodiscard]] bool HasDynamicArraySize() const;
|
||||
[[nodiscard]] bool IsDynamicMember() const;
|
||||
[[nodiscard]] bool IsAfterPartialLoad() const;
|
||||
|
||||
private:
|
||||
const MemberInformation* const m_info;
|
||||
};
|
||||
|
@ -2,34 +2,36 @@
|
||||
|
||||
#include "Domain/Evaluation/IEvaluation.h"
|
||||
#include "Domain/Information/MemberInformation.h"
|
||||
#include "Utils/ClassUtils.h"
|
||||
|
||||
#include <vector>
|
||||
|
||||
class DeclarationModifierComputations
|
||||
{
|
||||
const MemberInformation* const m_information;
|
||||
std::vector<int> m_modifier_indices;
|
||||
int m_combined_index;
|
||||
|
||||
DeclarationModifierComputations(const MemberInformation* member, std::vector<int> modifierIndices);
|
||||
|
||||
public:
|
||||
explicit DeclarationModifierComputations(const MemberInformation* member);
|
||||
|
||||
_NODISCARD DeclarationModifier* GetDeclarationModifier() const;
|
||||
_NODISCARD DeclarationModifier* GetNextDeclarationModifier() const;
|
||||
_NODISCARD std::vector<DeclarationModifier*> GetFollowingDeclarationModifiers() const;
|
||||
_NODISCARD std::vector<int> GetArrayIndices() const;
|
||||
_NODISCARD bool IsArray() const;
|
||||
_NODISCARD int GetArraySize() const;
|
||||
_NODISCARD bool HasDynamicArrayCount() const;
|
||||
_NODISCARD const IEvaluation* GetDynamicArrayCountEvaluation() const;
|
||||
_NODISCARD std::vector<DeclarationModifierComputations> GetArrayEntries() const;
|
||||
_NODISCARD bool IsSinglePointer() const;
|
||||
_NODISCARD bool IsArrayPointer() const;
|
||||
_NODISCARD const IEvaluation* GetArrayPointerCountEvaluation() const;
|
||||
_NODISCARD bool IsPointerArray() const;
|
||||
_NODISCARD const IEvaluation* GetPointerArrayCountEvaluation() const;
|
||||
_NODISCARD bool IsDynamicArray() const;
|
||||
_NODISCARD const IEvaluation* GetDynamicArraySizeEvaluation() const;
|
||||
_NODISCARD unsigned GetAlignment() const;
|
||||
[[nodiscard]] DeclarationModifier* GetDeclarationModifier() const;
|
||||
[[nodiscard]] DeclarationModifier* GetNextDeclarationModifier() const;
|
||||
[[nodiscard]] std::vector<DeclarationModifier*> GetFollowingDeclarationModifiers() const;
|
||||
[[nodiscard]] std::vector<int> GetArrayIndices() const;
|
||||
[[nodiscard]] bool IsArray() const;
|
||||
[[nodiscard]] int GetArraySize() const;
|
||||
[[nodiscard]] bool HasDynamicArrayCount() const;
|
||||
[[nodiscard]] const IEvaluation* GetDynamicArrayCountEvaluation() const;
|
||||
[[nodiscard]] std::vector<DeclarationModifierComputations> GetArrayEntries() const;
|
||||
[[nodiscard]] bool IsSinglePointer() const;
|
||||
[[nodiscard]] bool IsArrayPointer() const;
|
||||
[[nodiscard]] const IEvaluation* GetArrayPointerCountEvaluation() const;
|
||||
[[nodiscard]] bool IsPointerArray() const;
|
||||
[[nodiscard]] const IEvaluation* GetPointerArrayCountEvaluation() const;
|
||||
[[nodiscard]] bool IsDynamicArray() const;
|
||||
[[nodiscard]] const IEvaluation* GetDynamicArraySizeEvaluation() const;
|
||||
[[nodiscard]] unsigned GetAlignment() const;
|
||||
|
||||
private:
|
||||
DeclarationModifierComputations(const MemberInformation* member, std::vector<int> modifierIndices);
|
||||
|
||||
const MemberInformation* const m_information;
|
||||
std::vector<int> m_modifier_indices;
|
||||
int m_combined_index;
|
||||
};
|
||||
|
@ -4,12 +4,13 @@
|
||||
|
||||
class StructureComputations
|
||||
{
|
||||
const StructureInformation* const m_info;
|
||||
|
||||
public:
|
||||
explicit StructureComputations(const StructureInformation* structure);
|
||||
|
||||
_NODISCARD bool IsAsset() const;
|
||||
_NODISCARD MemberInformation* GetDynamicMember() const;
|
||||
_NODISCARD std::vector<MemberInformation*> GetUsedMembers() const;
|
||||
[[nodiscard]] bool IsAsset() const;
|
||||
[[nodiscard]] MemberInformation* GetDynamicMember() const;
|
||||
[[nodiscard]] std::vector<MemberInformation*> GetUsedMembers() const;
|
||||
|
||||
private:
|
||||
const StructureInformation* m_info;
|
||||
};
|
||||
|
@ -2,13 +2,16 @@
|
||||
|
||||
#include "DeclarationModifier.h"
|
||||
#include "Domain/Evaluation/IEvaluation.h"
|
||||
#include "Utils/ClassUtils.h"
|
||||
|
||||
#include <memory>
|
||||
|
||||
class ArrayDeclarationModifier final : public DeclarationModifier
|
||||
{
|
||||
public:
|
||||
explicit ArrayDeclarationModifier(int size);
|
||||
|
||||
[[nodiscard]] DeclarationModifierType GetType() const override;
|
||||
|
||||
int m_size;
|
||||
|
||||
/**
|
||||
@ -20,8 +23,4 @@ public:
|
||||
* \brief The array has a size that is given by \c m_size but only a certain dynamic amount is handled by generated count.
|
||||
*/
|
||||
std::unique_ptr<IEvaluation> m_dynamic_count_evaluation;
|
||||
|
||||
explicit ArrayDeclarationModifier(int size);
|
||||
|
||||
_NODISCARD DeclarationModifierType GetType() const override;
|
||||
};
|
||||
|
@ -4,17 +4,6 @@
|
||||
class BaseTypeDefinition final : public DataDefinition
|
||||
{
|
||||
public:
|
||||
const unsigned m_size;
|
||||
|
||||
private:
|
||||
BaseTypeDefinition(std::string name, unsigned size);
|
||||
|
||||
public:
|
||||
_NODISCARD DataDefinitionType GetType() const override;
|
||||
_NODISCARD unsigned GetAlignment() const override;
|
||||
_NODISCARD bool GetForceAlignment() const override;
|
||||
_NODISCARD unsigned GetSize() const override;
|
||||
|
||||
static const BaseTypeDefinition* const FLOAT;
|
||||
static const BaseTypeDefinition* const DOUBLE;
|
||||
static const BaseTypeDefinition* const BOOL;
|
||||
@ -32,4 +21,14 @@ public:
|
||||
|
||||
static const BaseTypeDefinition* const ALL_BASE_TYPES[];
|
||||
static const size_t ALL_BASE_TYPES_COUNT;
|
||||
|
||||
[[nodiscard]] DataDefinitionType GetType() const override;
|
||||
[[nodiscard]] unsigned GetAlignment() const override;
|
||||
[[nodiscard]] bool GetForceAlignment() const override;
|
||||
[[nodiscard]] unsigned GetSize() const override;
|
||||
|
||||
const unsigned m_size;
|
||||
|
||||
private:
|
||||
BaseTypeDefinition(std::string name, unsigned size);
|
||||
};
|
||||
|
@ -25,13 +25,13 @@ public:
|
||||
DataDefinition& operator=(const DataDefinition& other) = default;
|
||||
DataDefinition& operator=(DataDefinition&& other) noexcept = default;
|
||||
|
||||
[[nodiscard]] virtual DataDefinitionType GetType() const = 0;
|
||||
[[nodiscard]] virtual unsigned GetAlignment() const = 0;
|
||||
[[nodiscard]] virtual bool GetForceAlignment() const = 0;
|
||||
[[nodiscard]] virtual unsigned GetSize() const = 0;
|
||||
|
||||
[[nodiscard]] std::string GetFullName() const;
|
||||
|
||||
std::string m_namespace;
|
||||
std::string m_name;
|
||||
|
||||
_NODISCARD virtual DataDefinitionType GetType() const = 0;
|
||||
_NODISCARD virtual unsigned GetAlignment() const = 0;
|
||||
_NODISCARD virtual bool GetForceAlignment() const = 0;
|
||||
_NODISCARD virtual unsigned GetSize() const = 0;
|
||||
|
||||
_NODISCARD std::string GetFullName() const;
|
||||
};
|
||||
|
@ -18,5 +18,5 @@ public:
|
||||
DeclarationModifier& operator=(const DeclarationModifier& other) = default;
|
||||
DeclarationModifier& operator=(DeclarationModifier&& other) noexcept = default;
|
||||
|
||||
_NODISCARD virtual DeclarationModifierType GetType() const = 0;
|
||||
[[nodiscard]] virtual DeclarationModifierType GetType() const = 0;
|
||||
};
|
||||
|
@ -14,26 +14,6 @@ DefinitionWithMembers::DefinitionWithMembers(std::string _namespace, std::string
|
||||
{
|
||||
}
|
||||
|
||||
// void DefinitionWithMembers::CalculateAlignment()
|
||||
//{
|
||||
// if (m_has_alignment_override)
|
||||
// {
|
||||
// m_flags |= FLAG_ALIGNMENT_FORCED;
|
||||
// m_alignment = m_alignment_override;
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// m_alignment = 0;
|
||||
// for (const auto& member : m_members)
|
||||
// {
|
||||
// const auto memberAlignment = member->GetAlignment();
|
||||
// if (memberAlignment > m_alignment)
|
||||
// m_alignment = memberAlignment;
|
||||
// }
|
||||
// }
|
||||
// m_flags |= FLAG_ALIGNMENT_CALCULATED;
|
||||
// }
|
||||
|
||||
unsigned DefinitionWithMembers::GetAlignment() const
|
||||
{
|
||||
assert(m_flags & FLAG_FIELDS_CALCULATED);
|
||||
|
@ -13,6 +13,12 @@ public:
|
||||
static constexpr int FLAG_FIELDS_CALCULATING = 1 << 1;
|
||||
static constexpr int FLAG_ALIGNMENT_FORCED = 1 << 2;
|
||||
|
||||
DefinitionWithMembers(std::string _namespace, std::string name, unsigned pack);
|
||||
|
||||
[[nodiscard]] unsigned GetAlignment() const override;
|
||||
[[nodiscard]] bool GetForceAlignment() const override;
|
||||
[[nodiscard]] unsigned GetSize() const override;
|
||||
|
||||
unsigned m_flags;
|
||||
unsigned m_size;
|
||||
unsigned m_alignment;
|
||||
@ -24,10 +30,4 @@ public:
|
||||
unsigned m_alignment_override;
|
||||
|
||||
std::vector<std::shared_ptr<Variable>> m_members;
|
||||
|
||||
DefinitionWithMembers(std::string _namespace, std::string name, unsigned pack);
|
||||
|
||||
_NODISCARD unsigned GetAlignment() const override;
|
||||
_NODISCARD bool GetForceAlignment() const override;
|
||||
_NODISCARD unsigned GetSize() const override;
|
||||
};
|
||||
|
@ -10,15 +10,15 @@
|
||||
class EnumDefinition final : public DataDefinition
|
||||
{
|
||||
public:
|
||||
const BaseTypeDefinition* m_parent_type;
|
||||
std::vector<std::unique_ptr<EnumMember>> m_members;
|
||||
|
||||
EnumDefinition(std::string _namespace, std::string name, const BaseTypeDefinition* parentType);
|
||||
|
||||
_NODISCARD DataDefinitionType GetType() const override;
|
||||
_NODISCARD unsigned GetAlignment() const override;
|
||||
_NODISCARD bool GetForceAlignment() const override;
|
||||
_NODISCARD unsigned GetSize() const override;
|
||||
[[nodiscard]] DataDefinitionType GetType() const override;
|
||||
[[nodiscard]] unsigned GetAlignment() const override;
|
||||
[[nodiscard]] bool GetForceAlignment() const override;
|
||||
[[nodiscard]] unsigned GetSize() const override;
|
||||
|
||||
void AddEnumMember(EnumMember enumMember);
|
||||
|
||||
const BaseTypeDefinition* m_parent_type;
|
||||
std::vector<std::unique_ptr<EnumMember>> m_members;
|
||||
};
|
||||
|
@ -5,9 +5,9 @@
|
||||
class EnumMember
|
||||
{
|
||||
public:
|
||||
std::string m_name;
|
||||
int m_value;
|
||||
|
||||
EnumMember();
|
||||
EnumMember(std::string name, int value);
|
||||
|
||||
std::string m_name;
|
||||
int m_value;
|
||||
};
|
||||
|
@ -5,13 +5,13 @@
|
||||
class ForwardDeclaration final : public DataDefinition
|
||||
{
|
||||
public:
|
||||
const DataDefinitionType m_forwarded_type;
|
||||
const DataDefinition* m_definition;
|
||||
|
||||
ForwardDeclaration(std::string _namespace, std::string name, DataDefinitionType type);
|
||||
|
||||
_NODISCARD DataDefinitionType GetType() const override;
|
||||
_NODISCARD unsigned GetAlignment() const override;
|
||||
_NODISCARD bool GetForceAlignment() const override;
|
||||
_NODISCARD unsigned GetSize() const override;
|
||||
[[nodiscard]] DataDefinitionType GetType() const override;
|
||||
[[nodiscard]] unsigned GetAlignment() const override;
|
||||
[[nodiscard]] bool GetForceAlignment() const override;
|
||||
[[nodiscard]] unsigned GetSize() const override;
|
||||
|
||||
const DataDefinitionType m_forwarded_type;
|
||||
const DataDefinition* m_definition;
|
||||
};
|
||||
|
@ -8,19 +8,19 @@
|
||||
|
||||
class PointerDeclarationModifier final : public DeclarationModifier
|
||||
{
|
||||
static const IEvaluation* const DEFAULT_COUNT;
|
||||
|
||||
static bool EvaluationIsArray(const IEvaluation* evaluation);
|
||||
|
||||
public:
|
||||
[[nodiscard]] DeclarationModifierType GetType() const override;
|
||||
[[nodiscard]] const IEvaluation* GetCountEvaluation() const;
|
||||
[[nodiscard]] const IEvaluation* GetCountEvaluationForArrayIndex(int index);
|
||||
|
||||
[[nodiscard]] bool CountEvaluationIsArray() const;
|
||||
[[nodiscard]] bool CountEvaluationIsArray(int index) const;
|
||||
[[nodiscard]] bool AnyCountEvaluationIsArray() const;
|
||||
|
||||
std::unique_ptr<IEvaluation> m_count_evaluation;
|
||||
std::vector<std::unique_ptr<IEvaluation>> m_count_evaluation_by_array_index;
|
||||
|
||||
_NODISCARD DeclarationModifierType GetType() const override;
|
||||
_NODISCARD const IEvaluation* GetCountEvaluation() const;
|
||||
_NODISCARD const IEvaluation* GetCountEvaluationForArrayIndex(int index);
|
||||
|
||||
_NODISCARD bool CountEvaluationIsArray() const;
|
||||
_NODISCARD bool CountEvaluationIsArray(int index) const;
|
||||
_NODISCARD bool AnyCountEvaluationIsArray() const;
|
||||
private:
|
||||
static const IEvaluation* const DEFAULT_COUNT;
|
||||
static bool EvaluationIsArray(const IEvaluation* evaluation);
|
||||
};
|
||||
|
@ -7,5 +7,5 @@ class StructDefinition final : public DefinitionWithMembers
|
||||
public:
|
||||
StructDefinition(std::string _namespace, std::string name, int pack);
|
||||
|
||||
_NODISCARD DataDefinitionType GetType() const override;
|
||||
[[nodiscard]] DataDefinitionType GetType() const override;
|
||||
};
|
||||
|
@ -13,21 +13,21 @@ public:
|
||||
static constexpr int FLAG_FIELDS_CALCULATED = 1 << 0;
|
||||
static constexpr int FLAG_ALIGNMENT_FORCED = 1 << 1;
|
||||
|
||||
unsigned m_flags;
|
||||
unsigned m_size;
|
||||
unsigned m_alignment;
|
||||
|
||||
explicit TypeDeclaration(const DataDefinition* type);
|
||||
|
||||
[[nodiscard]] unsigned GetSize() const;
|
||||
[[nodiscard]] unsigned GetAlignment() const;
|
||||
[[nodiscard]] bool GetForceAlignment() const;
|
||||
|
||||
std::vector<std::unique_ptr<DeclarationModifier>> m_declaration_modifiers;
|
||||
|
||||
bool m_is_const;
|
||||
bool m_has_custom_bit_size;
|
||||
|
||||
const DataDefinition* m_type;
|
||||
unsigned m_custom_bit_size;
|
||||
|
||||
std::vector<std::unique_ptr<DeclarationModifier>> m_declaration_modifiers;
|
||||
|
||||
_NODISCARD unsigned GetSize() const;
|
||||
_NODISCARD unsigned GetAlignment() const;
|
||||
_NODISCARD bool GetForceAlignment() const;
|
||||
unsigned m_flags;
|
||||
unsigned m_size;
|
||||
unsigned m_alignment;
|
||||
};
|
||||
|
@ -6,14 +6,14 @@
|
||||
class TypedefDefinition final : public DataDefinition
|
||||
{
|
||||
public:
|
||||
TypedefDefinition(std::string _namespace, std::string name, std::unique_ptr<TypeDeclaration> typeDeclaration);
|
||||
|
||||
[[nodiscard]] DataDefinitionType GetType() const override;
|
||||
[[nodiscard]] unsigned GetAlignment() const override;
|
||||
[[nodiscard]] bool GetForceAlignment() const override;
|
||||
[[nodiscard]] unsigned GetSize() const override;
|
||||
|
||||
bool m_has_alignment_override;
|
||||
unsigned m_alignment_override;
|
||||
std::unique_ptr<TypeDeclaration> m_type_declaration;
|
||||
|
||||
TypedefDefinition(std::string _namespace, std::string name, std::unique_ptr<TypeDeclaration> typeDeclaration);
|
||||
|
||||
_NODISCARD DataDefinitionType GetType() const override;
|
||||
_NODISCARD unsigned GetAlignment() const override;
|
||||
_NODISCARD bool GetForceAlignment() const override;
|
||||
_NODISCARD unsigned GetSize() const override;
|
||||
};
|
||||
|
@ -4,11 +4,8 @@
|
||||
|
||||
class UnionDefinition final : public DefinitionWithMembers
|
||||
{
|
||||
// protected:
|
||||
// void CalculateSize() override;
|
||||
|
||||
public:
|
||||
UnionDefinition(std::string _namespace, std::string name, int pack);
|
||||
|
||||
_NODISCARD DataDefinitionType GetType() const override;
|
||||
[[nodiscard]] DataDefinitionType GetType() const override;
|
||||
};
|
||||
|
@ -9,14 +9,14 @@
|
||||
class Variable
|
||||
{
|
||||
public:
|
||||
Variable(std::string name, std::unique_ptr<TypeDeclaration> typeDeclaration);
|
||||
|
||||
[[nodiscard]] unsigned GetAlignment() const;
|
||||
[[nodiscard]] bool GetForceAlignment() const;
|
||||
|
||||
std::string m_name;
|
||||
bool m_has_alignment_override;
|
||||
unsigned m_alignment_override;
|
||||
unsigned m_offset;
|
||||
std::unique_ptr<TypeDeclaration> m_type_declaration;
|
||||
|
||||
Variable(std::string name, std::unique_ptr<TypeDeclaration> typeDeclaration);
|
||||
|
||||
_NODISCARD unsigned GetAlignment() const;
|
||||
_NODISCARD bool GetForceAlignment() const;
|
||||
};
|
||||
|
@ -1,7 +1,5 @@
|
||||
#pragma once
|
||||
|
||||
#include "Utils/ClassUtils.h"
|
||||
|
||||
enum class EvaluationType
|
||||
{
|
||||
OPERAND_DYNAMIC,
|
||||
@ -20,7 +18,7 @@ public:
|
||||
IEvaluation& operator=(const IEvaluation& other) = default;
|
||||
IEvaluation& operator=(IEvaluation&& other) noexcept = default;
|
||||
|
||||
_NODISCARD virtual EvaluationType GetType() const = 0;
|
||||
_NODISCARD virtual bool IsStatic() const = 0;
|
||||
_NODISCARD virtual int EvaluateNumeric() const = 0;
|
||||
[[nodiscard]] virtual EvaluationType GetType() const = 0;
|
||||
[[nodiscard]] virtual bool IsStatic() const = 0;
|
||||
[[nodiscard]] virtual int EvaluateNumeric() const = 0;
|
||||
};
|
||||
|
@ -9,16 +9,16 @@
|
||||
class OperandDynamic final : public IEvaluation
|
||||
{
|
||||
public:
|
||||
StructureInformation* const m_structure;
|
||||
std::vector<MemberInformation*> m_referenced_member_chain;
|
||||
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;
|
||||
_NODISCARD int EvaluateNumeric() const override;
|
||||
[[nodiscard]] EvaluationType GetType() const override;
|
||||
[[nodiscard]] bool IsStatic() const override;
|
||||
[[nodiscard]] int EvaluateNumeric() const override;
|
||||
|
||||
StructureInformation* const m_structure;
|
||||
std::vector<MemberInformation*> m_referenced_member_chain;
|
||||
std::vector<std::unique_ptr<IEvaluation>> m_array_indices;
|
||||
};
|
||||
|
@ -6,13 +6,13 @@
|
||||
class OperandStatic final : public IEvaluation
|
||||
{
|
||||
public:
|
||||
const int m_value;
|
||||
EnumMember* const m_enum_member;
|
||||
|
||||
explicit OperandStatic(int value);
|
||||
explicit OperandStatic(EnumMember* enumMember);
|
||||
|
||||
_NODISCARD EvaluationType GetType() const override;
|
||||
_NODISCARD bool IsStatic() const override;
|
||||
_NODISCARD int EvaluateNumeric() const override;
|
||||
[[nodiscard]] EvaluationType GetType() const override;
|
||||
[[nodiscard]] bool IsStatic() const override;
|
||||
[[nodiscard]] int EvaluateNumeric() const override;
|
||||
|
||||
const int m_value;
|
||||
EnumMember* const m_enum_member;
|
||||
};
|
||||
|
@ -9,17 +9,17 @@
|
||||
class Operation final : public IEvaluation
|
||||
{
|
||||
public:
|
||||
const OperationType* const m_operation_type;
|
||||
std::unique_ptr<IEvaluation> m_operand1;
|
||||
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;
|
||||
_NODISCARD int EvaluateNumeric() const override;
|
||||
[[nodiscard]] EvaluationType GetType() const override;
|
||||
[[nodiscard]] bool IsStatic() const override;
|
||||
[[nodiscard]] int EvaluateNumeric() const override;
|
||||
|
||||
_NODISCARD bool Operand1NeedsParenthesis() const;
|
||||
_NODISCARD bool Operand2NeedsParenthesis() const;
|
||||
[[nodiscard]] bool Operand1NeedsParenthesis() const;
|
||||
[[nodiscard]] bool Operand2NeedsParenthesis() const;
|
||||
|
||||
const OperationType* const m_operation_type;
|
||||
std::unique_ptr<IEvaluation> m_operand1;
|
||||
std::unique_ptr<IEvaluation> m_operand2;
|
||||
};
|
||||
|
@ -20,14 +20,6 @@ enum class OperationPrecedence
|
||||
|
||||
class OperationType
|
||||
{
|
||||
public:
|
||||
std::string m_syntax;
|
||||
OperationPrecedence m_precedence;
|
||||
std::function<int(int operand1, int operand2)> m_evaluation_function;
|
||||
|
||||
private:
|
||||
OperationType(std::string syntax, OperationPrecedence precedence, std::function<int(int, int)> evaluationFunction);
|
||||
|
||||
public:
|
||||
static const OperationType* const OPERATION_ADD;
|
||||
static const OperationType* const OPERATION_SUBTRACT;
|
||||
@ -49,4 +41,11 @@ public:
|
||||
static const OperationType* const OPERATION_OR;
|
||||
|
||||
static const OperationType* const ALL_OPERATION_TYPES[];
|
||||
|
||||
std::string m_syntax;
|
||||
OperationPrecedence m_precedence;
|
||||
std::function<int(int operand1, int operand2)> m_evaluation_function;
|
||||
|
||||
private:
|
||||
OperationType(std::string syntax, OperationPrecedence precedence, std::function<int(int, int)> evaluationFunction);
|
||||
};
|
||||
|
@ -8,8 +8,8 @@
|
||||
class CustomAction
|
||||
{
|
||||
public:
|
||||
CustomAction(std::string actionName, std::vector<DataDefinition*> parameterTypes);
|
||||
|
||||
std::string m_action_name;
|
||||
std::vector<DataDefinition*> m_parameter_types;
|
||||
|
||||
CustomAction(std::string actionName, std::vector<DataDefinition*> parameterTypes);
|
||||
};
|
||||
|
@ -13,10 +13,10 @@ enum class FastFileBlockType
|
||||
class FastFileBlock
|
||||
{
|
||||
public:
|
||||
FastFileBlock(std::string name, unsigned index, FastFileBlockType type, bool isDefault);
|
||||
|
||||
std::string m_name;
|
||||
unsigned m_index;
|
||||
FastFileBlockType m_type;
|
||||
bool m_is_default;
|
||||
|
||||
FastFileBlock(std::string name, unsigned index, FastFileBlockType type, bool isDefault);
|
||||
};
|
||||
|
@ -12,6 +12,8 @@ class StructureInformation;
|
||||
class MemberInformation
|
||||
{
|
||||
public:
|
||||
MemberInformation(StructureInformation* parent, StructureInformation* type, Variable* member);
|
||||
|
||||
StructureInformation* m_parent;
|
||||
StructureInformation* m_type;
|
||||
Variable* m_member;
|
||||
@ -24,6 +26,4 @@ public:
|
||||
std::unique_ptr<CustomAction> m_post_load_action;
|
||||
const FastFileBlock* m_fast_file_block;
|
||||
const EnumMember* m_asset_ref;
|
||||
|
||||
MemberInformation(StructureInformation* parent, StructureInformation* type, Variable* member);
|
||||
};
|
||||
|
@ -5,13 +5,17 @@
|
||||
#include "Domain/Extension/CustomAction.h"
|
||||
#include "Domain/FastFile/FastFileBlock.h"
|
||||
#include "MemberInformation.h"
|
||||
#include "Utils/ClassUtils.h"
|
||||
|
||||
#include <memory>
|
||||
#include <vector>
|
||||
|
||||
class MemberInformation;
|
||||
|
||||
class StructureInformation
|
||||
{
|
||||
public:
|
||||
explicit StructureInformation(DefinitionWithMembers* definition);
|
||||
|
||||
DefinitionWithMembers* const m_definition;
|
||||
EnumMember* m_asset_enum_entry;
|
||||
|
||||
@ -31,6 +35,4 @@ public:
|
||||
std::unique_ptr<CustomAction> m_post_load_action;
|
||||
const FastFileBlock* m_block;
|
||||
std::vector<MemberInformation*> m_name_chain;
|
||||
|
||||
explicit StructureInformation(DefinitionWithMembers* definition);
|
||||
};
|
||||
|
Reference in New Issue
Block a user