mirror of
https://github.com/Laupetin/OpenAssetTools.git
synced 2025-06-28 15:21:57 +00:00
Reformat code with clang format
This commit is contained in:
@ -1,31 +1,33 @@
|
||||
#include "AssetStructTestsTemplate.h"
|
||||
|
||||
#include <iostream>
|
||||
#include <sstream>
|
||||
|
||||
#include "Domain/Computations/StructureComputations.h"
|
||||
#include "Internal/BaseTemplate.h"
|
||||
|
||||
#include <iostream>
|
||||
#include <sstream>
|
||||
|
||||
class AssetStructTestsTemplate::Internal final : BaseTemplate
|
||||
{
|
||||
void TestMethod(StructureInformation* structure)
|
||||
{
|
||||
LINE("TEST_CASE(\""<<m_env.m_game<<"::"<<m_env.m_asset->m_definition->GetFullName()<<": Tests for "<<structure->m_definition->GetFullName()<<"\", \"[assetstruct]\")")
|
||||
LINE("TEST_CASE(\"" << m_env.m_game << "::" << m_env.m_asset->m_definition->GetFullName() << ": Tests for " << structure->m_definition->GetFullName()
|
||||
<< "\", \"[assetstruct]\")")
|
||||
LINE("{")
|
||||
m_intendation++;
|
||||
|
||||
for(const auto& member : structure->m_ordered_members)
|
||||
for (const auto& member : structure->m_ordered_members)
|
||||
{
|
||||
if(!member->m_member->m_name.empty() && !member->m_member->m_type_declaration->m_has_custom_bit_size)
|
||||
if (!member->m_member->m_name.empty() && !member->m_member->m_type_declaration->m_has_custom_bit_size)
|
||||
{
|
||||
LINE("REQUIRE(offsetof(" << structure->m_definition->GetFullName() << ", " << member->m_member->m_name << ") == " << member->m_member->m_offset << ");")
|
||||
LINE("REQUIRE(offsetof(" << structure->m_definition->GetFullName() << ", " << member->m_member->m_name << ") == " << member->m_member->m_offset
|
||||
<< ");")
|
||||
}
|
||||
}
|
||||
|
||||
LINE("")
|
||||
|
||||
LINE("REQUIRE("<<structure->m_definition->GetSize()<<"u == sizeof("<<structure->m_definition->GetFullName()<<"));")
|
||||
LINE("REQUIRE("<<structure->m_definition->GetAlignment()<<"u == alignof("<<structure->m_definition->GetFullName()<<"));")
|
||||
LINE("REQUIRE(" << structure->m_definition->GetSize() << "u == sizeof(" << structure->m_definition->GetFullName() << "));")
|
||||
LINE("REQUIRE(" << structure->m_definition->GetAlignment() << "u == alignof(" << structure->m_definition->GetFullName() << "));")
|
||||
m_intendation--;
|
||||
LINE("}")
|
||||
}
|
||||
@ -51,7 +53,7 @@ public:
|
||||
LINE("")
|
||||
LINE("using namespace " << m_env.m_game << ";")
|
||||
LINE("")
|
||||
LINE("namespace game::"<<m_env.m_game<<"::xassets::asset_"<<Lower(m_env.m_asset->m_definition->m_name))
|
||||
LINE("namespace game::" << m_env.m_game << "::xassets::asset_" << Lower(m_env.m_asset->m_definition->m_name))
|
||||
LINE("{")
|
||||
m_intendation++;
|
||||
|
||||
|
@ -1,11 +1,10 @@
|
||||
#include "BaseTemplate.h"
|
||||
|
||||
#include <sstream>
|
||||
|
||||
|
||||
#include "Domain/Computations/MemberComputations.h"
|
||||
#include "Domain/Definition/ArrayDeclarationModifier.h"
|
||||
|
||||
#include <sstream>
|
||||
|
||||
BaseTemplate::BaseTemplate(std::ostream& stream, RenderingContext* context)
|
||||
: m_out(stream),
|
||||
m_env(*context),
|
||||
@ -88,7 +87,6 @@ std::string BaseTemplate::MakeTypeVarName(const DataDefinition* def)
|
||||
return str.str();
|
||||
}
|
||||
|
||||
|
||||
std::string BaseTemplate::MakeTypeWrittenVarName(const DataDefinition* def)
|
||||
{
|
||||
std::ostringstream str;
|
||||
@ -137,7 +135,10 @@ std::string BaseTemplate::MakeWrittenMemberAccess(StructureInformation* info, Me
|
||||
return str.str();
|
||||
}
|
||||
|
||||
std::string BaseTemplate::MakeMemberAccess(const std::string& variableName, StructureInformation* info, MemberInformation* member, const DeclarationModifierComputations& modifier)
|
||||
std::string BaseTemplate::MakeMemberAccess(const std::string& variableName,
|
||||
StructureInformation* info,
|
||||
MemberInformation* member,
|
||||
const DeclarationModifierComputations& modifier)
|
||||
{
|
||||
std::ostringstream str;
|
||||
str << variableName << "->" << member->m_member->m_name;
|
||||
@ -210,7 +211,7 @@ std::string BaseTemplate::MakeCustomActionCall(CustomAction* action)
|
||||
|
||||
std::string BaseTemplate::MakeArrayCount(const ArrayDeclarationModifier* arrayModifier)
|
||||
{
|
||||
if(arrayModifier->m_dynamic_count_evaluation)
|
||||
if (arrayModifier->m_dynamic_count_evaluation)
|
||||
{
|
||||
return MakeEvaluation(arrayModifier->m_dynamic_count_evaluation.get());
|
||||
}
|
||||
@ -234,11 +235,11 @@ void BaseTemplate::MakeOperandDynamic(const OperandDynamic* op, std::ostringstre
|
||||
{
|
||||
MakeTypeVarNameInternal(op->m_structure->m_definition, str);
|
||||
|
||||
if(!op->m_referenced_member_chain.empty())
|
||||
if (!op->m_referenced_member_chain.empty())
|
||||
{
|
||||
str << "->";
|
||||
const auto lastEntry = op->m_referenced_member_chain.end() - 1;
|
||||
for(auto i = op->m_referenced_member_chain.begin(); i != lastEntry; ++i)
|
||||
for (auto i = op->m_referenced_member_chain.begin(); i != lastEntry; ++i)
|
||||
{
|
||||
MemberComputations computations(*i);
|
||||
str << (*i)->m_member->m_name;
|
||||
|
@ -1,8 +1,5 @@
|
||||
#pragma once
|
||||
|
||||
#include <ostream>
|
||||
#include <sstream>
|
||||
|
||||
#include "Domain/Computations/MemberDeclarationModifierComputations.h"
|
||||
#include "Domain/Definition/ArrayDeclarationModifier.h"
|
||||
#include "Domain/Evaluation/OperandDynamic.h"
|
||||
@ -10,6 +7,9 @@
|
||||
#include "Domain/Evaluation/Operation.h"
|
||||
#include "Generating/RenderingContext.h"
|
||||
|
||||
#include <ostream>
|
||||
#include <sstream>
|
||||
|
||||
class BaseTemplate
|
||||
{
|
||||
protected:
|
||||
@ -45,7 +45,10 @@ protected:
|
||||
static std::string MakeSafeTypeName(const DataDefinition* def);
|
||||
static std::string MakeMemberAccess(StructureInformation* info, MemberInformation* member, const DeclarationModifierComputations& modifier);
|
||||
static std::string MakeWrittenMemberAccess(StructureInformation* info, MemberInformation* member, const DeclarationModifierComputations& modifier);
|
||||
static std::string MakeMemberAccess(const std::string& variableName, StructureInformation* info, MemberInformation* member, const DeclarationModifierComputations& modifier);
|
||||
static std::string MakeMemberAccess(const std::string& variableName,
|
||||
StructureInformation* info,
|
||||
MemberInformation* member,
|
||||
const DeclarationModifierComputations& modifier);
|
||||
static std::string MakeTypeDecl(const TypeDeclaration* decl);
|
||||
static std::string MakeFollowingReferences(const std::vector<DeclarationModifier*>& modifiers);
|
||||
static std::string MakeArrayIndices(const DeclarationModifierComputations& modifierComputations);
|
||||
@ -54,7 +57,21 @@ protected:
|
||||
static std::string MakeEvaluation(const IEvaluation* evaluation);
|
||||
};
|
||||
|
||||
#define LINE(x) {DoIntendation(); m_out << x << "\n";}
|
||||
#define LINE_START(x) {DoIntendation(); m_out << x;}
|
||||
#define LINE_MIDDLE(x) {m_out << x;}
|
||||
#define LINE_END(x) {m_out << x << "\n";}
|
||||
#define LINE(x) \
|
||||
{ \
|
||||
DoIntendation(); \
|
||||
m_out << x << "\n"; \
|
||||
}
|
||||
#define LINE_START(x) \
|
||||
{ \
|
||||
DoIntendation(); \
|
||||
m_out << x; \
|
||||
}
|
||||
#define LINE_MIDDLE(x) \
|
||||
{ \
|
||||
m_out << x; \
|
||||
}
|
||||
#define LINE_END(x) \
|
||||
{ \
|
||||
m_out << x << "\n"; \
|
||||
}
|
||||
|
@ -1,13 +1,13 @@
|
||||
#include "ZoneLoadTemplate.h"
|
||||
|
||||
#include <cassert>
|
||||
#include <iostream>
|
||||
#include <sstream>
|
||||
|
||||
#include "Domain/Computations/MemberComputations.h"
|
||||
#include "Domain/Computations/StructureComputations.h"
|
||||
#include "Internal/BaseTemplate.h"
|
||||
|
||||
#include <cassert>
|
||||
#include <iostream>
|
||||
#include <sstream>
|
||||
|
||||
class ZoneLoadTemplate::Internal final : BaseTemplate
|
||||
{
|
||||
enum class MemberLoadType
|
||||
@ -43,52 +43,52 @@ class ZoneLoadTemplate::Internal final : BaseTemplate
|
||||
|
||||
void PrintHeaderPtrArrayLoadMethodDeclaration(const DataDefinition* def) const
|
||||
{
|
||||
LINE("void LoadPtrArray_"<< MakeSafeTypeName(def)<<"(bool atStreamStart, size_t count);")
|
||||
LINE("void LoadPtrArray_" << MakeSafeTypeName(def) << "(bool atStreamStart, size_t count);")
|
||||
}
|
||||
|
||||
void PrintHeaderArrayLoadMethodDeclaration(const DataDefinition* def) const
|
||||
{
|
||||
LINE("void LoadArray_"<< MakeSafeTypeName(def)<<"(bool atStreamStart, size_t count);")
|
||||
LINE("void LoadArray_" << MakeSafeTypeName(def) << "(bool atStreamStart, size_t count);")
|
||||
}
|
||||
|
||||
void PrintHeaderLoadMethodDeclaration(const StructureInformation* info) const
|
||||
{
|
||||
LINE("void Load_"<< MakeSafeTypeName(info->m_definition)<<"(bool atStreamStart);")
|
||||
LINE("void Load_" << MakeSafeTypeName(info->m_definition) << "(bool atStreamStart);")
|
||||
}
|
||||
|
||||
void PrintHeaderTempPtrLoadMethodDeclaration(const StructureInformation* info) const
|
||||
{
|
||||
LINE("void LoadPtr_"<< MakeSafeTypeName(info->m_definition)<<"(bool atStreamStart);")
|
||||
LINE("void LoadPtr_" << MakeSafeTypeName(info->m_definition) << "(bool atStreamStart);")
|
||||
}
|
||||
|
||||
void PrintHeaderAssetLoadMethodDeclaration(const StructureInformation* info) const
|
||||
{
|
||||
LINE("void LoadAsset_"<< MakeSafeTypeName(info->m_definition)<<"("<<info->m_definition->GetFullName()<<"** pAsset);")
|
||||
LINE("void LoadAsset_" << MakeSafeTypeName(info->m_definition) << "(" << info->m_definition->GetFullName() << "** pAsset);")
|
||||
}
|
||||
|
||||
void PrintHeaderGetNameMethodDeclaration(const StructureInformation* info) const
|
||||
{
|
||||
LINE("static std::string GetAssetName("<<info->m_definition->GetFullName()<<"* pAsset);")
|
||||
LINE("static std::string GetAssetName(" << info->m_definition->GetFullName() << "* pAsset);")
|
||||
}
|
||||
|
||||
void PrintHeaderMainLoadMethodDeclaration(const StructureInformation* info) const
|
||||
{
|
||||
LINE("XAssetInfo<"<<info->m_definition->GetFullName()<<">* Load("<<info->m_definition->GetFullName()<<"** pAsset);")
|
||||
LINE("XAssetInfo<" << info->m_definition->GetFullName() << ">* Load(" << info->m_definition->GetFullName() << "** pAsset);")
|
||||
}
|
||||
|
||||
void PrintHeaderConstructor() const
|
||||
{
|
||||
LINE(LoaderClassName(m_env.m_asset)<<"(Zone* zone, IZoneInputStream* stream);")
|
||||
LINE(LoaderClassName(m_env.m_asset) << "(Zone* zone, IZoneInputStream* stream);")
|
||||
}
|
||||
|
||||
void PrintVariableInitialization(const DataDefinition* def) const
|
||||
{
|
||||
LINE("var"<<def->m_name<<" = nullptr;")
|
||||
LINE("var" << def->m_name << " = nullptr;")
|
||||
}
|
||||
|
||||
void PrintPointerVariableInitialization(const DataDefinition* def) const
|
||||
{
|
||||
LINE("var"<<def->m_name<<"Ptr = nullptr;")
|
||||
LINE("var" << def->m_name << "Ptr = nullptr;")
|
||||
}
|
||||
|
||||
void PrintConstructorMethod()
|
||||
@ -96,7 +96,7 @@ class ZoneLoadTemplate::Internal final : BaseTemplate
|
||||
LINE(LoaderClassName(m_env.m_asset) << "::" << LoaderClassName(m_env.m_asset) << "(Zone* zone, IZoneInputStream* stream)")
|
||||
|
||||
m_intendation++;
|
||||
LINE_START(": AssetLoader("<<m_env.m_asset->m_asset_enum_entry->m_name<<", zone, stream)")
|
||||
LINE_START(": AssetLoader(" << m_env.m_asset->m_asset_enum_entry->m_name << ", zone, stream)")
|
||||
if (m_env.m_has_actions)
|
||||
{
|
||||
LINE_MIDDLE(", m_actions(zone)")
|
||||
@ -133,16 +133,16 @@ class ZoneLoadTemplate::Internal final : BaseTemplate
|
||||
|
||||
void PrintLoadPtrArrayMethod_Loading(const DataDefinition* def, StructureInformation* info) const
|
||||
{
|
||||
LINE("*"<< MakeTypePtrVarName(def)<<" = m_stream->Alloc<"<<def->GetFullName()<<">("<< def->GetAlignment() <<");")
|
||||
LINE("*" << MakeTypePtrVarName(def) << " = m_stream->Alloc<" << def->GetFullName() << ">(" << def->GetAlignment() << ");")
|
||||
|
||||
if (info && !info->m_is_leaf)
|
||||
{
|
||||
LINE(MakeTypeVarName(info->m_definition)<<" = *"<< MakeTypePtrVarName(def)<<";")
|
||||
LINE("Load_"<< MakeSafeTypeName(def)<<"(true);")
|
||||
LINE(MakeTypeVarName(info->m_definition) << " = *" << MakeTypePtrVarName(def) << ";")
|
||||
LINE("Load_" << MakeSafeTypeName(def) << "(true);")
|
||||
}
|
||||
else
|
||||
{
|
||||
LINE("m_stream->Load<"<<def->GetFullName()<<">(*"<< MakeTypePtrVarName(def)<<");")
|
||||
LINE("m_stream->Load<" << def->GetFullName() << ">(*" << MakeTypePtrVarName(def) << ");")
|
||||
}
|
||||
}
|
||||
|
||||
@ -154,8 +154,8 @@ class ZoneLoadTemplate::Internal final : BaseTemplate
|
||||
|
||||
if (info && StructureComputations(info).IsAsset())
|
||||
{
|
||||
LINE(LoaderClassName(info)<<" loader(m_zone, m_stream);")
|
||||
LINE("AddDependency(loader.Load("<< MakeTypePtrVarName(def)<<"));")
|
||||
LINE(LoaderClassName(info) << " loader(m_zone, m_stream);")
|
||||
LINE("AddDependency(loader.Load(" << MakeTypePtrVarName(def) << "));")
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -173,7 +173,7 @@ class ZoneLoadTemplate::Internal final : BaseTemplate
|
||||
LINE("{")
|
||||
m_intendation++;
|
||||
|
||||
LINE("*"<< MakeTypePtrVarName(def)<<" = m_stream->ConvertOffsetToPointer(*"<< MakeTypePtrVarName(def)<<");")
|
||||
LINE("*" << MakeTypePtrVarName(def) << " = m_stream->ConvertOffsetToPointer(*" << MakeTypePtrVarName(def) << ");")
|
||||
|
||||
m_intendation--;
|
||||
LINE("}")
|
||||
@ -190,7 +190,7 @@ class ZoneLoadTemplate::Internal final : BaseTemplate
|
||||
|
||||
void PrintLoadPtrArrayMethod(const DataDefinition* def, StructureInformation* info, const bool reusable)
|
||||
{
|
||||
LINE("void "<<LoaderClassName(m_env.m_asset)<<"::LoadPtrArray_"<< MakeSafeTypeName(def)<<"(const bool atStreamStart, const size_t count)")
|
||||
LINE("void " << LoaderClassName(m_env.m_asset) << "::LoadPtrArray_" << MakeSafeTypeName(def) << "(const bool atStreamStart, const size_t count)")
|
||||
LINE("{")
|
||||
m_intendation++;
|
||||
|
||||
@ -199,7 +199,7 @@ class ZoneLoadTemplate::Internal final : BaseTemplate
|
||||
|
||||
LINE("if(atStreamStart)")
|
||||
m_intendation++;
|
||||
LINE("m_stream->Load<"<<def->GetFullName()<<"*>("<< MakeTypePtrVarName(def)<<", count);")
|
||||
LINE("m_stream->Load<" << def->GetFullName() << "*>(" << MakeTypePtrVarName(def) << ", count);")
|
||||
m_intendation--;
|
||||
|
||||
LINE("")
|
||||
@ -229,7 +229,7 @@ class ZoneLoadTemplate::Internal final : BaseTemplate
|
||||
LINE("")
|
||||
LINE("if(atStreamStart)")
|
||||
m_intendation++;
|
||||
LINE("m_stream->Load<"<<def->GetFullName()<<">("<<MakeTypeVarName(def)<<", count);")
|
||||
LINE("m_stream->Load<" << def->GetFullName() << ">(" << MakeTypeVarName(def) << ", count);")
|
||||
m_intendation--;
|
||||
|
||||
LINE("")
|
||||
@ -239,7 +239,7 @@ class ZoneLoadTemplate::Internal final : BaseTemplate
|
||||
m_intendation++;
|
||||
|
||||
LINE(MakeTypeVarName(info->m_definition) << " = var;")
|
||||
LINE("Load_"<<info->m_definition->m_name<<"(false);")
|
||||
LINE("Load_" << info->m_definition->m_name << "(false);")
|
||||
LINE("var++;")
|
||||
|
||||
m_intendation--;
|
||||
@ -249,7 +249,10 @@ class ZoneLoadTemplate::Internal final : BaseTemplate
|
||||
LINE("}")
|
||||
}
|
||||
|
||||
void LoadMember_ScriptString(StructureInformation* info, MemberInformation* member, const DeclarationModifierComputations& modifier, const MemberLoadType loadType) const
|
||||
void LoadMember_ScriptString(StructureInformation* info,
|
||||
MemberInformation* member,
|
||||
const DeclarationModifierComputations& modifier,
|
||||
const MemberLoadType loadType) const
|
||||
{
|
||||
if (loadType == MemberLoadType::ARRAY_POINTER)
|
||||
{
|
||||
@ -272,12 +275,15 @@ class ZoneLoadTemplate::Internal final : BaseTemplate
|
||||
}
|
||||
}
|
||||
|
||||
void LoadMember_Asset(StructureInformation* info, MemberInformation* member, const DeclarationModifierComputations& modifier, const MemberLoadType loadType) const
|
||||
void LoadMember_Asset(StructureInformation* info,
|
||||
MemberInformation* member,
|
||||
const DeclarationModifierComputations& modifier,
|
||||
const MemberLoadType loadType) const
|
||||
{
|
||||
if (loadType == MemberLoadType::SINGLE_POINTER)
|
||||
{
|
||||
LINE(LoaderClassName(member->m_type)<<" loader(m_zone, m_stream);")
|
||||
LINE("AddDependency(loader.Load(&"<<MakeMemberAccess(info, member, modifier)<<"));")
|
||||
LINE(LoaderClassName(member->m_type) << " loader(m_zone, m_stream);")
|
||||
LINE("AddDependency(loader.Load(&" << MakeMemberAccess(info, member, modifier) << "));")
|
||||
}
|
||||
else if (loadType == MemberLoadType::POINTER_ARRAY)
|
||||
{
|
||||
@ -290,7 +296,10 @@ class ZoneLoadTemplate::Internal final : BaseTemplate
|
||||
}
|
||||
}
|
||||
|
||||
void LoadMember_String(StructureInformation* info, MemberInformation* member, const DeclarationModifierComputations& modifier, const MemberLoadType loadType) const
|
||||
void LoadMember_String(StructureInformation* info,
|
||||
MemberInformation* member,
|
||||
const DeclarationModifierComputations& modifier,
|
||||
const MemberLoadType loadType) const
|
||||
{
|
||||
if (loadType == MemberLoadType::SINGLE_POINTER)
|
||||
{
|
||||
@ -309,17 +318,17 @@ class ZoneLoadTemplate::Internal final : BaseTemplate
|
||||
LINE("varXString = " << MakeMemberAccess(info, member, modifier) << ";")
|
||||
if (modifier.IsArray())
|
||||
{
|
||||
LINE("LoadXStringArray(false, "<<modifier.GetArraySize()<<");")
|
||||
LINE("LoadXStringArray(false, " << modifier.GetArraySize() << ");")
|
||||
}
|
||||
else
|
||||
{
|
||||
LINE("LoadXStringArray(true, "<<MakeEvaluation(modifier.GetPointerArrayCountEvaluation())<<");")
|
||||
LINE("LoadXStringArray(true, " << MakeEvaluation(modifier.GetPointerArrayCountEvaluation()) << ");")
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
assert(false);
|
||||
LINE("#error unsupported loadType "<<static_cast<int>(loadType)<<" for string")
|
||||
LINE("#error unsupported loadType " << static_cast<int>(loadType) << " for string")
|
||||
}
|
||||
}
|
||||
|
||||
@ -329,7 +338,8 @@ class ZoneLoadTemplate::Internal final : BaseTemplate
|
||||
if (member->m_type && !member->m_type->m_is_leaf && !computations.IsInRuntimeBlock())
|
||||
{
|
||||
LINE(MakeTypeVarName(member->m_member->m_type_declaration->m_type) << " = " << MakeMemberAccess(info, member, modifier) << ";")
|
||||
LINE("LoadArray_" << MakeSafeTypeName(member->m_member->m_type_declaration->m_type) << "(true, " << MakeEvaluation(modifier.GetArrayPointerCountEvaluation()) << ");")
|
||||
LINE("LoadArray_" << MakeSafeTypeName(member->m_member->m_type_declaration->m_type) << "(true, "
|
||||
<< MakeEvaluation(modifier.GetArrayPointerCountEvaluation()) << ");")
|
||||
|
||||
if (member->m_type->m_post_load_action)
|
||||
{
|
||||
@ -339,8 +349,9 @@ class ZoneLoadTemplate::Internal final : BaseTemplate
|
||||
}
|
||||
else
|
||||
{
|
||||
LINE("m_stream->Load<" << MakeTypeDecl(member->m_member->m_type_declaration.get()) << MakeFollowingReferences(modifier.GetFollowingDeclarationModifiers())
|
||||
<< ">(" << MakeMemberAccess(info, member, modifier) << ", " << MakeEvaluation(modifier.GetArrayPointerCountEvaluation()) << ");")
|
||||
LINE("m_stream->Load<" << MakeTypeDecl(member->m_member->m_type_declaration.get())
|
||||
<< MakeFollowingReferences(modifier.GetFollowingDeclarationModifiers()) << ">(" << MakeMemberAccess(info, member, modifier)
|
||||
<< ", " << MakeEvaluation(modifier.GetArrayPointerCountEvaluation()) << ");")
|
||||
}
|
||||
}
|
||||
|
||||
@ -349,11 +360,12 @@ class ZoneLoadTemplate::Internal final : BaseTemplate
|
||||
LINE(MakeTypePtrVarName(member->m_member->m_type_declaration->m_type) << " = " << MakeMemberAccess(info, member, modifier) << ";")
|
||||
if (modifier.IsArray())
|
||||
{
|
||||
LINE("LoadPtrArray_"<<MakeSafeTypeName(member->m_member->m_type_declaration->m_type)<<"(false, "<<modifier.GetArraySize()<<");")
|
||||
LINE("LoadPtrArray_" << MakeSafeTypeName(member->m_member->m_type_declaration->m_type) << "(false, " << modifier.GetArraySize() << ");")
|
||||
}
|
||||
else
|
||||
{
|
||||
LINE("LoadPtrArray_"<<MakeSafeTypeName(member->m_member->m_type_declaration->m_type)<<"(true, "<<MakeEvaluation(modifier.GetPointerArrayCountEvaluation())<<");")
|
||||
LINE("LoadPtrArray_" << MakeSafeTypeName(member->m_member->m_type_declaration->m_type) << "(true, "
|
||||
<< MakeEvaluation(modifier.GetPointerArrayCountEvaluation()) << ");")
|
||||
}
|
||||
}
|
||||
|
||||
@ -373,11 +385,11 @@ class ZoneLoadTemplate::Internal final : BaseTemplate
|
||||
|
||||
if (computations.IsAfterPartialLoad())
|
||||
{
|
||||
LINE("LoadArray_" << MakeSafeTypeName(member->m_member->m_type_declaration->m_type) << "(true, "<<arraySizeStr <<");")
|
||||
LINE("LoadArray_" << MakeSafeTypeName(member->m_member->m_type_declaration->m_type) << "(true, " << arraySizeStr << ");")
|
||||
}
|
||||
else
|
||||
{
|
||||
LINE("LoadArray_"<<MakeSafeTypeName(member->m_member->m_type_declaration->m_type)<<"(false, "<<arraySizeStr <<");")
|
||||
LINE("LoadArray_" << MakeSafeTypeName(member->m_member->m_type_declaration->m_type) << "(false, " << arraySizeStr << ");")
|
||||
}
|
||||
|
||||
if (member->m_type->m_post_load_action)
|
||||
@ -388,8 +400,9 @@ class ZoneLoadTemplate::Internal final : BaseTemplate
|
||||
}
|
||||
else if (computations.IsAfterPartialLoad())
|
||||
{
|
||||
LINE("m_stream->Load<" << MakeTypeDecl(member->m_member->m_type_declaration.get()) << MakeFollowingReferences(modifier.GetFollowingDeclarationModifiers())
|
||||
<< ">(" << MakeMemberAccess(info, member, modifier) <<", "<<arraySizeStr <<");")
|
||||
LINE("m_stream->Load<" << MakeTypeDecl(member->m_member->m_type_declaration.get())
|
||||
<< MakeFollowingReferences(modifier.GetFollowingDeclarationModifiers()) << ">(" << MakeMemberAccess(info, member, modifier)
|
||||
<< ", " << arraySizeStr << ");")
|
||||
}
|
||||
}
|
||||
|
||||
@ -398,12 +411,14 @@ class ZoneLoadTemplate::Internal final : BaseTemplate
|
||||
if (member->m_type && !member->m_type->m_is_leaf)
|
||||
{
|
||||
LINE(MakeTypeVarName(member->m_member->m_type_declaration->m_type) << " = " << MakeMemberAccess(info, member, modifier) << ";")
|
||||
LINE("LoadArray_"<<MakeSafeTypeName(member->m_member->m_type_declaration->m_type)<<"(true, "<<MakeEvaluation(modifier.GetDynamicArraySizeEvaluation())<<");")
|
||||
LINE("LoadArray_" << MakeSafeTypeName(member->m_member->m_type_declaration->m_type) << "(true, "
|
||||
<< MakeEvaluation(modifier.GetDynamicArraySizeEvaluation()) << ");")
|
||||
}
|
||||
else
|
||||
{
|
||||
LINE("m_stream->Load<"<<MakeTypeDecl(member->m_member->m_type_declaration.get())<<MakeFollowingReferences(modifier.GetFollowingDeclarationModifiers())
|
||||
<<">("<<MakeMemberAccess(info, member, modifier)<<", "<<MakeEvaluation(modifier.GetDynamicArraySizeEvaluation())<<");")
|
||||
LINE("m_stream->Load<" << MakeTypeDecl(member->m_member->m_type_declaration.get())
|
||||
<< MakeFollowingReferences(modifier.GetFollowingDeclarationModifiers()) << ">(" << MakeMemberAccess(info, member, modifier)
|
||||
<< ", " << MakeEvaluation(modifier.GetDynamicArraySizeEvaluation()) << ");")
|
||||
}
|
||||
}
|
||||
|
||||
@ -431,8 +446,9 @@ class ZoneLoadTemplate::Internal final : BaseTemplate
|
||||
}
|
||||
else if (computations.IsAfterPartialLoad())
|
||||
{
|
||||
LINE("m_stream->Load<"<<MakeTypeDecl(member->m_member->m_type_declaration.get()) << MakeFollowingReferences(modifier.GetFollowingDeclarationModifiers())
|
||||
<< ">(&" << MakeMemberAccess(info, member, modifier)<<");")
|
||||
LINE("m_stream->Load<" << MakeTypeDecl(member->m_member->m_type_declaration.get())
|
||||
<< MakeFollowingReferences(modifier.GetFollowingDeclarationModifiers()) << ">(&" << MakeMemberAccess(info, member, modifier)
|
||||
<< ");")
|
||||
}
|
||||
}
|
||||
|
||||
@ -452,12 +468,16 @@ class ZoneLoadTemplate::Internal final : BaseTemplate
|
||||
}
|
||||
else
|
||||
{
|
||||
LINE("m_stream->Load<" << MakeTypeDecl(member->m_member->m_type_declaration.get()) << MakeFollowingReferences(modifier.GetFollowingDeclarationModifiers())
|
||||
<< ">(" << MakeMemberAccess(info, member, modifier) << ");")
|
||||
LINE("m_stream->Load<" << MakeTypeDecl(member->m_member->m_type_declaration.get())
|
||||
<< MakeFollowingReferences(modifier.GetFollowingDeclarationModifiers()) << ">(" << MakeMemberAccess(info, member, modifier)
|
||||
<< ");")
|
||||
}
|
||||
}
|
||||
|
||||
void LoadMember_TypeCheck(StructureInformation* info, MemberInformation* member, const DeclarationModifierComputations& modifier, const MemberLoadType loadType) const
|
||||
void LoadMember_TypeCheck(StructureInformation* info,
|
||||
MemberInformation* member,
|
||||
const DeclarationModifierComputations& modifier,
|
||||
const MemberLoadType loadType) const
|
||||
{
|
||||
if (member->m_is_string)
|
||||
{
|
||||
@ -506,11 +526,12 @@ class ZoneLoadTemplate::Internal final : BaseTemplate
|
||||
}
|
||||
}
|
||||
|
||||
static bool LoadMember_ShouldMakeAlloc(StructureInformation* info, MemberInformation* member, const DeclarationModifierComputations& modifier, const MemberLoadType loadType)
|
||||
static bool LoadMember_ShouldMakeAlloc(StructureInformation* info,
|
||||
MemberInformation* member,
|
||||
const DeclarationModifierComputations& modifier,
|
||||
const MemberLoadType loadType)
|
||||
{
|
||||
if (loadType != MemberLoadType::ARRAY_POINTER
|
||||
&& loadType != MemberLoadType::POINTER_ARRAY
|
||||
&& loadType != MemberLoadType::SINGLE_POINTER)
|
||||
if (loadType != MemberLoadType::ARRAY_POINTER && loadType != MemberLoadType::POINTER_ARRAY && loadType != MemberLoadType::SINGLE_POINTER)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
@ -544,23 +565,25 @@ class ZoneLoadTemplate::Internal final : BaseTemplate
|
||||
const MemberComputations computations(member);
|
||||
if (computations.IsInTempBlock())
|
||||
{
|
||||
LINE(member->m_member->m_type_declaration->m_type->GetFullName()<< "* ptr = "<<MakeMemberAccess(info, member, modifier)<<";")
|
||||
LINE(member->m_member->m_type_declaration->m_type->GetFullName() << "* ptr = " << MakeMemberAccess(info, member, modifier) << ";")
|
||||
}
|
||||
|
||||
const auto typeDecl = MakeTypeDecl(member->m_member->m_type_declaration.get());
|
||||
const auto followingReferences = MakeFollowingReferences(modifier.GetFollowingDeclarationModifiers());
|
||||
|
||||
// This used to use `alignof()` to calculate alignment but due to inconsistencies between compilers and bugs discovered in MSVC
|
||||
// (Alignment specified via `__declspec(align())` showing as correct via intellisense but is incorrect when compiled for types that have a larger alignment than the specified value)
|
||||
// this was changed to make ZoneCodeGenerator calculate what is supposed to be used as alignment when allocating.
|
||||
// (Alignment specified via `__declspec(align())` showing as correct via intellisense but is incorrect when compiled for types that have a larger
|
||||
// alignment than the specified value) this was changed to make ZoneCodeGenerator calculate what is supposed to be used as alignment when allocating.
|
||||
// This is more reliable when being used with different compilers and the value used can be seen in the source code directly
|
||||
if (member->m_alloc_alignment)
|
||||
{
|
||||
LINE(MakeMemberAccess(info, member, modifier)<<" = m_stream->Alloc<"<<typeDecl<<followingReferences<<">("<<MakeEvaluation(member->m_alloc_alignment.get())<<");")
|
||||
LINE(MakeMemberAccess(info, member, modifier)
|
||||
<< " = m_stream->Alloc<" << typeDecl << followingReferences << ">(" << MakeEvaluation(member->m_alloc_alignment.get()) << ");")
|
||||
}
|
||||
else
|
||||
{
|
||||
LINE(MakeMemberAccess(info, member, modifier)<<" = m_stream->Alloc<"<<typeDecl<<followingReferences<<">("<<modifier.GetAlignment()<<");")
|
||||
LINE(MakeMemberAccess(info, member, modifier)
|
||||
<< " = m_stream->Alloc<" << typeDecl << followingReferences << ">(" << modifier.GetAlignment() << ");")
|
||||
}
|
||||
|
||||
if (computations.IsInTempBlock())
|
||||
@ -569,7 +592,7 @@ class ZoneLoadTemplate::Internal final : BaseTemplate
|
||||
LINE(member->m_member->m_type_declaration->m_type->GetFullName() << "** toInsert = nullptr;")
|
||||
LINE("if(ptr == PTR_INSERT)")
|
||||
m_intendation++;
|
||||
LINE("toInsert = m_stream->InsertPointer<"<<member->m_member->m_type_declaration->m_type->GetFullName() << ">();")
|
||||
LINE("toInsert = m_stream->InsertPointer<" << member->m_member->m_type_declaration->m_type->GetFullName() << ">();")
|
||||
m_intendation--;
|
||||
LINE("")
|
||||
}
|
||||
@ -581,22 +604,22 @@ class ZoneLoadTemplate::Internal final : BaseTemplate
|
||||
LINE("")
|
||||
LINE("if(toInsert != nullptr)")
|
||||
m_intendation++;
|
||||
LINE("*toInsert = "<<MakeTypeVarName(info->m_definition)<<"->"<<member->m_member->m_name<<";")
|
||||
LINE("*toInsert = " << MakeTypeVarName(info->m_definition) << "->" << member->m_member->m_name << ";")
|
||||
m_intendation--;
|
||||
}
|
||||
}
|
||||
|
||||
static bool LoadMember_ShouldMakeReuse(StructureInformation* info, MemberInformation* member, const DeclarationModifierComputations& modifier, const MemberLoadType loadType)
|
||||
static bool LoadMember_ShouldMakeReuse(StructureInformation* info,
|
||||
MemberInformation* member,
|
||||
const DeclarationModifierComputations& modifier,
|
||||
const MemberLoadType loadType)
|
||||
{
|
||||
if (loadType != MemberLoadType::ARRAY_POINTER
|
||||
&& loadType != MemberLoadType::SINGLE_POINTER
|
||||
&& loadType != MemberLoadType::POINTER_ARRAY)
|
||||
if (loadType != MemberLoadType::ARRAY_POINTER && loadType != MemberLoadType::SINGLE_POINTER && loadType != MemberLoadType::POINTER_ARRAY)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (loadType == MemberLoadType::POINTER_ARRAY
|
||||
&& modifier.IsArray())
|
||||
if (loadType == MemberLoadType::POINTER_ARRAY && modifier.IsArray())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
@ -606,8 +629,7 @@ class ZoneLoadTemplate::Internal final : BaseTemplate
|
||||
|
||||
void LoadMember_Reuse(StructureInformation* info, MemberInformation* member, const DeclarationModifierComputations& modifier, const MemberLoadType loadType)
|
||||
{
|
||||
if (!LoadMember_ShouldMakeReuse(info, member, modifier, loadType)
|
||||
|| !member->m_is_reusable)
|
||||
if (!LoadMember_ShouldMakeReuse(info, member, modifier, loadType) || !member->m_is_reusable)
|
||||
{
|
||||
LoadMember_Alloc(info, member, modifier, loadType);
|
||||
return;
|
||||
@ -616,7 +638,7 @@ class ZoneLoadTemplate::Internal final : BaseTemplate
|
||||
const MemberComputations computations(member);
|
||||
if (computations.IsInTempBlock())
|
||||
{
|
||||
LINE("if("<<MakeMemberAccess(info, member, modifier)<<" == PTR_FOLLOWING || "<<MakeMemberAccess(info, member, modifier)<<" == PTR_INSERT)")
|
||||
LINE("if(" << MakeMemberAccess(info, member, modifier) << " == PTR_FOLLOWING || " << MakeMemberAccess(info, member, modifier) << " == PTR_INSERT)")
|
||||
LINE("{")
|
||||
m_intendation++;
|
||||
|
||||
@ -635,7 +657,7 @@ class ZoneLoadTemplate::Internal final : BaseTemplate
|
||||
}
|
||||
else
|
||||
{
|
||||
LINE("if("<<MakeMemberAccess(info, member, modifier)<<" == PTR_FOLLOWING)")
|
||||
LINE("if(" << MakeMemberAccess(info, member, modifier) << " == PTR_FOLLOWING)")
|
||||
LINE("{")
|
||||
m_intendation++;
|
||||
|
||||
@ -647,11 +669,12 @@ class ZoneLoadTemplate::Internal final : BaseTemplate
|
||||
LINE("{")
|
||||
m_intendation++;
|
||||
|
||||
LINE(MakeMemberAccess(info, member, modifier)<< " = m_stream->ConvertOffsetToPointer("<<MakeMemberAccess(info, member, modifier)<<");")
|
||||
LINE(MakeMemberAccess(info, member, modifier) << " = m_stream->ConvertOffsetToPointer(" << MakeMemberAccess(info, member, modifier) << ");")
|
||||
|
||||
if (member->m_is_script_string && loadType == MemberLoadType::ARRAY_POINTER)
|
||||
{
|
||||
LINE("MarkScriptStringArrayAsUsed(" << MakeMemberAccess(info, member, modifier) << ", " << MakeEvaluation(modifier.GetArrayPointerCountEvaluation()) << ");")
|
||||
LINE("MarkScriptStringArrayAsUsed(" << MakeMemberAccess(info, member, modifier) << ", "
|
||||
<< MakeEvaluation(modifier.GetArrayPointerCountEvaluation()) << ");")
|
||||
}
|
||||
|
||||
m_intendation--;
|
||||
@ -659,11 +682,12 @@ class ZoneLoadTemplate::Internal final : BaseTemplate
|
||||
}
|
||||
}
|
||||
|
||||
static bool LoadMember_ShouldMakePointerCheck(StructureInformation* info, MemberInformation* member, const DeclarationModifierComputations& modifier, MemberLoadType loadType)
|
||||
static bool LoadMember_ShouldMakePointerCheck(StructureInformation* info,
|
||||
MemberInformation* member,
|
||||
const DeclarationModifierComputations& modifier,
|
||||
MemberLoadType loadType)
|
||||
{
|
||||
if (loadType != MemberLoadType::ARRAY_POINTER
|
||||
&& loadType != MemberLoadType::POINTER_ARRAY
|
||||
&& loadType != MemberLoadType::SINGLE_POINTER)
|
||||
if (loadType != MemberLoadType::ARRAY_POINTER && loadType != MemberLoadType::POINTER_ARRAY && loadType != MemberLoadType::SINGLE_POINTER)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
@ -681,7 +705,10 @@ class ZoneLoadTemplate::Internal final : BaseTemplate
|
||||
return true;
|
||||
}
|
||||
|
||||
void LoadMember_PointerCheck(StructureInformation* info, MemberInformation* member, const DeclarationModifierComputations& modifier, const MemberLoadType loadType)
|
||||
void LoadMember_PointerCheck(StructureInformation* info,
|
||||
MemberInformation* member,
|
||||
const DeclarationModifierComputations& modifier,
|
||||
const MemberLoadType loadType)
|
||||
{
|
||||
if (LoadMember_ShouldMakePointerCheck(info, member, modifier, loadType))
|
||||
{
|
||||
@ -769,7 +796,7 @@ class ZoneLoadTemplate::Internal final : BaseTemplate
|
||||
else
|
||||
{
|
||||
assert(false);
|
||||
LINE("#error LoadMemberReference failed @ "<<member->m_member->m_name)
|
||||
LINE("#error LoadMemberReference failed @ " << member->m_member->m_name)
|
||||
}
|
||||
}
|
||||
|
||||
@ -778,7 +805,7 @@ class ZoneLoadTemplate::Internal final : BaseTemplate
|
||||
LINE("")
|
||||
if (member->m_condition)
|
||||
{
|
||||
LINE("if("<<MakeEvaluation(member->m_condition.get())<<")")
|
||||
LINE("if(" << MakeEvaluation(member->m_condition.get()) << ")")
|
||||
LINE("{")
|
||||
m_intendation++;
|
||||
|
||||
@ -802,7 +829,7 @@ class ZoneLoadTemplate::Internal final : BaseTemplate
|
||||
LINE("")
|
||||
if (member->m_condition)
|
||||
{
|
||||
LINE("if("<<MakeEvaluation(member->m_condition.get())<<")")
|
||||
LINE("if(" << MakeEvaluation(member->m_condition.get()) << ")")
|
||||
LINE("{")
|
||||
m_intendation++;
|
||||
|
||||
@ -820,7 +847,7 @@ class ZoneLoadTemplate::Internal final : BaseTemplate
|
||||
{
|
||||
if (member->m_condition)
|
||||
{
|
||||
LINE("else if("<<MakeEvaluation(member->m_condition.get())<<")")
|
||||
LINE("else if(" << MakeEvaluation(member->m_condition.get()) << ")")
|
||||
LINE("{")
|
||||
m_intendation++;
|
||||
|
||||
@ -845,7 +872,7 @@ class ZoneLoadTemplate::Internal final : BaseTemplate
|
||||
{
|
||||
if (member->m_condition)
|
||||
{
|
||||
LINE("else if("<<MakeEvaluation(member->m_condition.get())<<")")
|
||||
LINE("else if(" << MakeEvaluation(member->m_condition.get()) << ")")
|
||||
LINE("{")
|
||||
m_intendation++;
|
||||
|
||||
@ -856,7 +883,7 @@ class ZoneLoadTemplate::Internal final : BaseTemplate
|
||||
}
|
||||
else
|
||||
{
|
||||
LINE("#error Middle member of union must have condition ("<<member->m_member->m_name<<")")
|
||||
LINE("#error Middle member of union must have condition (" << member->m_member->m_name << ")")
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -867,10 +894,7 @@ class ZoneLoadTemplate::Internal final : BaseTemplate
|
||||
if (computations.ShouldIgnore())
|
||||
return;
|
||||
|
||||
if (member->m_is_string
|
||||
|| member->m_is_script_string
|
||||
|| computations.ContainsNonEmbeddedReference()
|
||||
|| member->m_type && !member->m_type->m_is_leaf
|
||||
if (member->m_is_string || member->m_is_script_string || computations.ContainsNonEmbeddedReference() || member->m_type && !member->m_type->m_is_leaf
|
||||
|| computations.IsAfterPartialLoad())
|
||||
{
|
||||
if (info->m_definition->GetType() == DataDefinitionType::UNION)
|
||||
@ -887,7 +911,7 @@ class ZoneLoadTemplate::Internal final : BaseTemplate
|
||||
LINE("{")
|
||||
m_intendation++;
|
||||
|
||||
LINE("assert(" <<MakeTypeVarName(info->m_definition) << " != nullptr);")
|
||||
LINE("assert(" << MakeTypeVarName(info->m_definition) << " != nullptr);")
|
||||
|
||||
auto* dynamicMember = computations.GetDynamicMember();
|
||||
if (!(info->m_definition->GetType() == DataDefinitionType::UNION && dynamicMember))
|
||||
@ -898,12 +922,13 @@ class ZoneLoadTemplate::Internal final : BaseTemplate
|
||||
|
||||
if (dynamicMember == nullptr)
|
||||
{
|
||||
LINE("m_stream->Load<"<<info->m_definition->GetFullName()<<">("<<MakeTypeVarName(info->m_definition)<<"); // Size: "<<info->m_definition->GetSize())
|
||||
LINE("m_stream->Load<" << info->m_definition->GetFullName() << ">(" << MakeTypeVarName(info->m_definition)
|
||||
<< "); // Size: " << info->m_definition->GetSize())
|
||||
}
|
||||
else
|
||||
{
|
||||
LINE("m_stream->LoadPartial<"<<info->m_definition->GetFullName()<<">("<<MakeTypeVarName(info->m_definition)<<", offsetof("<<info->m_definition->GetFullName()
|
||||
<<", "<<dynamicMember->m_member->m_name<<"));")
|
||||
LINE("m_stream->LoadPartial<" << info->m_definition->GetFullName() << ">(" << MakeTypeVarName(info->m_definition) << ", offsetof("
|
||||
<< info->m_definition->GetFullName() << ", " << dynamicMember->m_member->m_name << "));")
|
||||
}
|
||||
|
||||
m_intendation--;
|
||||
@ -921,7 +946,7 @@ class ZoneLoadTemplate::Internal final : BaseTemplate
|
||||
else if (info->m_block)
|
||||
{
|
||||
LINE("")
|
||||
LINE("m_stream->PushBlock("<<info->m_block->m_name<<");")
|
||||
LINE("m_stream->PushBlock(" << info->m_block->m_name << ");")
|
||||
}
|
||||
|
||||
for (const auto& member : info->m_ordered_members)
|
||||
@ -942,16 +967,16 @@ class ZoneLoadTemplate::Internal final : BaseTemplate
|
||||
void PrintLoadPtrMethod(StructureInformation* info)
|
||||
{
|
||||
const bool inTemp = info->m_block && info->m_block->m_type == FastFileBlockType::TEMP;
|
||||
LINE("void "<<LoaderClassName(m_env.m_asset)<<"::LoadPtr_"<<MakeSafeTypeName(info->m_definition)<<"(const bool atStreamStart)")
|
||||
LINE("void " << LoaderClassName(m_env.m_asset) << "::LoadPtr_" << MakeSafeTypeName(info->m_definition) << "(const bool atStreamStart)")
|
||||
LINE("{")
|
||||
m_intendation++;
|
||||
|
||||
LINE("assert("<<MakeTypePtrVarName(info->m_definition)<<" != nullptr);")
|
||||
LINE("assert(" << MakeTypePtrVarName(info->m_definition) << " != nullptr);")
|
||||
LINE("")
|
||||
|
||||
LINE("if(atStreamStart)")
|
||||
m_intendation++;
|
||||
LINE("m_stream->Load<"<<info->m_definition->GetFullName()<<"*>("<< MakeTypePtrVarName(info->m_definition)<<");")
|
||||
LINE("m_stream->Load<" << info->m_definition->GetFullName() << "*>(" << MakeTypePtrVarName(info->m_definition) << ");")
|
||||
m_intendation--;
|
||||
|
||||
LINE("")
|
||||
@ -961,7 +986,7 @@ class ZoneLoadTemplate::Internal final : BaseTemplate
|
||||
LINE("")
|
||||
}
|
||||
|
||||
LINE("if(*"<< MakeTypePtrVarName(info->m_definition)<<" != nullptr)")
|
||||
LINE("if(*" << MakeTypePtrVarName(info->m_definition) << " != nullptr)")
|
||||
LINE("{")
|
||||
m_intendation++;
|
||||
|
||||
@ -980,7 +1005,8 @@ class ZoneLoadTemplate::Internal final : BaseTemplate
|
||||
{
|
||||
LINE(info->m_definition->GetFullName() << "* ptr = *" << MakeTypePtrVarName(info->m_definition) << ";")
|
||||
}
|
||||
LINE("*" << MakeTypePtrVarName(info->m_definition) << " = m_stream->Alloc<" << info->m_definition->GetFullName() << ">("<< info->m_definition->GetAlignment() <<");")
|
||||
LINE("*" << MakeTypePtrVarName(info->m_definition) << " = m_stream->Alloc<" << info->m_definition->GetFullName() << ">("
|
||||
<< info->m_definition->GetAlignment() << ");")
|
||||
|
||||
if (inTemp)
|
||||
{
|
||||
@ -1001,8 +1027,8 @@ class ZoneLoadTemplate::Internal final : BaseTemplate
|
||||
startLoadSection = false;
|
||||
LINE("")
|
||||
}
|
||||
LINE(MakeTypeVarName(info->m_definition)<<" = *"<< MakeTypePtrVarName(info->m_definition)<<";")
|
||||
LINE("Load_"<<MakeSafeTypeName(info->m_definition)<<"(true);")
|
||||
LINE(MakeTypeVarName(info->m_definition) << " = *" << MakeTypePtrVarName(info->m_definition) << ";")
|
||||
LINE("Load_" << MakeSafeTypeName(info->m_definition) << "(true);")
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -1018,7 +1044,7 @@ class ZoneLoadTemplate::Internal final : BaseTemplate
|
||||
if (StructureComputations(info).IsAsset())
|
||||
{
|
||||
LINE("")
|
||||
LINE("LoadAsset_"<<MakeSafeTypeName(info->m_definition)<<"("<<MakeTypePtrVarName(info->m_definition)<<");")
|
||||
LINE("LoadAsset_" << MakeSafeTypeName(info->m_definition) << "(" << MakeTypePtrVarName(info->m_definition) << ");")
|
||||
}
|
||||
|
||||
if (inTemp)
|
||||
@ -1067,12 +1093,13 @@ class ZoneLoadTemplate::Internal final : BaseTemplate
|
||||
|
||||
void PrintLoadAssetMethod(StructureInformation* info)
|
||||
{
|
||||
LINE("void " << LoaderClassName(m_env.m_asset) << "::LoadAsset_" << MakeSafeTypeName(info->m_definition) << "(" << info->m_definition->GetFullName() << "** pAsset)")
|
||||
LINE("void " << LoaderClassName(m_env.m_asset) << "::LoadAsset_" << MakeSafeTypeName(info->m_definition) << "(" << info->m_definition->GetFullName()
|
||||
<< "** pAsset)")
|
||||
LINE("{")
|
||||
m_intendation++;
|
||||
|
||||
LINE("assert(pAsset != nullptr);")
|
||||
LINE("m_asset_info = reinterpret_cast<XAssetInfo<"<<info->m_definition->GetFullName()<<">*>(LinkAsset(GetAssetName(*pAsset), *pAsset));")
|
||||
LINE("m_asset_info = reinterpret_cast<XAssetInfo<" << info->m_definition->GetFullName() << ">*>(LinkAsset(GetAssetName(*pAsset), *pAsset));")
|
||||
LINE("*pAsset = m_asset_info->Asset();")
|
||||
|
||||
m_intendation--;
|
||||
@ -1081,7 +1108,8 @@ class ZoneLoadTemplate::Internal final : BaseTemplate
|
||||
|
||||
void PrintMainLoadMethod()
|
||||
{
|
||||
LINE("XAssetInfo<" << m_env.m_asset->m_definition->GetFullName() << ">* " << LoaderClassName(m_env.m_asset) << "::Load(" << m_env.m_asset->m_definition->GetFullName() << "** pAsset)")
|
||||
LINE("XAssetInfo<" << m_env.m_asset->m_definition->GetFullName() << ">* " << LoaderClassName(m_env.m_asset) << "::Load("
|
||||
<< m_env.m_asset->m_definition->GetFullName() << "** pAsset)")
|
||||
LINE("{")
|
||||
m_intendation++;
|
||||
|
||||
@ -1094,7 +1122,7 @@ class ZoneLoadTemplate::Internal final : BaseTemplate
|
||||
LINE("")
|
||||
LINE("if(m_asset_info == nullptr && *pAsset != nullptr)")
|
||||
m_intendation++;
|
||||
LINE("m_asset_info = reinterpret_cast<XAssetInfo<"<<m_env.m_asset->m_definition->GetFullName()<<">*>(GetAssetInfo(GetAssetName(*pAsset)));")
|
||||
LINE("m_asset_info = reinterpret_cast<XAssetInfo<" << m_env.m_asset->m_definition->GetFullName() << ">*>(GetAssetInfo(GetAssetName(*pAsset)));")
|
||||
m_intendation--;
|
||||
LINE("")
|
||||
LINE("return m_asset_info;")
|
||||
@ -1119,7 +1147,7 @@ class ZoneLoadTemplate::Internal final : BaseTemplate
|
||||
if (first)
|
||||
{
|
||||
first = false;
|
||||
LINE_MIDDLE("->"<<member->m_member->m_name)
|
||||
LINE_MIDDLE("->" << member->m_member->m_name)
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -1130,7 +1158,7 @@ class ZoneLoadTemplate::Internal final : BaseTemplate
|
||||
}
|
||||
else
|
||||
{
|
||||
LINE("return \""<<m_env.m_asset->m_definition->m_name<<"\";")
|
||||
LINE("return \"" << m_env.m_asset->m_definition->m_name << "\";")
|
||||
}
|
||||
|
||||
m_intendation--;
|
||||
@ -1157,7 +1185,8 @@ public:
|
||||
LINE("#include \"Game/" << m_env.m_game << "/" << m_env.m_game << ".h\"")
|
||||
if (m_env.m_has_actions)
|
||||
{
|
||||
LINE("#include \"Game/" << m_env.m_game << "/XAssets/" << Lower(m_env.m_asset->m_definition->m_name) << "/" << Lower(m_env.m_asset->m_definition->m_name) << "_actions.h\"")
|
||||
LINE("#include \"Game/" << m_env.m_game << "/XAssets/" << Lower(m_env.m_asset->m_definition->m_name) << "/"
|
||||
<< Lower(m_env.m_asset->m_definition->m_name) << "_actions.h\"")
|
||||
}
|
||||
LINE("#include <string>")
|
||||
LINE("")
|
||||
@ -1168,10 +1197,10 @@ public:
|
||||
LINE("{")
|
||||
m_intendation++;
|
||||
|
||||
LINE("XAssetInfo<"<<m_env.m_asset->m_definition->GetFullName()<<">* m_asset_info;")
|
||||
LINE("XAssetInfo<" << m_env.m_asset->m_definition->GetFullName() << ">* m_asset_info;")
|
||||
if (m_env.m_has_actions)
|
||||
{
|
||||
LINE("Actions_"<<m_env.m_asset->m_definition->m_name<<" m_actions;")
|
||||
LINE("Actions_" << m_env.m_asset->m_definition->m_name << " m_actions;")
|
||||
}
|
||||
LINE(VariableDecl(m_env.m_asset->m_definition))
|
||||
LINE(PointerVariableDecl(m_env.m_asset->m_definition))
|
||||
@ -1242,7 +1271,7 @@ public:
|
||||
LINE("// Any changes will be discarded when regenerating.")
|
||||
LINE("// ====================================================================")
|
||||
LINE("")
|
||||
LINE("#include \""<<Lower(m_env.m_asset->m_definition->m_name)<<"_load_db.h\"")
|
||||
LINE("#include \"" << Lower(m_env.m_asset->m_definition->m_name) << "_load_db.h\"")
|
||||
LINE("#include <cassert>")
|
||||
LINE("")
|
||||
|
||||
@ -1251,7 +1280,7 @@ public:
|
||||
LINE("// Referenced Assets:")
|
||||
for (auto* type : m_env.m_referenced_assets)
|
||||
{
|
||||
LINE("#include \"../"<<Lower(type->m_type->m_name)<<"/"<<Lower(type->m_type->m_name)<<"_load_db.h\"")
|
||||
LINE("#include \"../" << Lower(type->m_type->m_name) << "/" << Lower(type->m_type->m_name) << "_load_db.h\"")
|
||||
}
|
||||
LINE("")
|
||||
}
|
||||
|
@ -1,12 +1,12 @@
|
||||
#include "ZoneWriteTemplate.h"
|
||||
|
||||
#include "Domain/Computations/StructureComputations.h"
|
||||
#include "Internal/BaseTemplate.h"
|
||||
|
||||
#include <cassert>
|
||||
#include <iostream>
|
||||
#include <sstream>
|
||||
|
||||
#include "Domain/Computations/StructureComputations.h"
|
||||
#include "Internal/BaseTemplate.h"
|
||||
|
||||
class ZoneWriteTemplate::Internal final : BaseTemplate
|
||||
{
|
||||
enum class MemberWriteType
|
||||
@ -86,7 +86,7 @@ class ZoneWriteTemplate::Internal final : BaseTemplate
|
||||
|
||||
void PrintHeaderConstructor() const
|
||||
{
|
||||
LINE(WriterClassName(m_env.m_asset) << "("<<m_env.m_asset->m_definition->GetFullName()<<"* asset, Zone* zone, IZoneOutputStream* stream);")
|
||||
LINE(WriterClassName(m_env.m_asset) << "(" << m_env.m_asset->m_definition->GetFullName() << "* asset, Zone* zone, IZoneOutputStream* stream);")
|
||||
}
|
||||
|
||||
void PrintVariableInitialization(const DataDefinition* def) const
|
||||
@ -111,10 +111,12 @@ class ZoneWriteTemplate::Internal final : BaseTemplate
|
||||
|
||||
void PrintConstructorMethod()
|
||||
{
|
||||
LINE(WriterClassName(m_env.m_asset) << "::" << WriterClassName(m_env.m_asset) << "("<<m_env.m_asset->m_definition->GetFullName()<<"* asset, Zone* zone, IZoneOutputStream* stream)")
|
||||
LINE(WriterClassName(m_env.m_asset) << "::" << WriterClassName(m_env.m_asset) << "(" << m_env.m_asset->m_definition->GetFullName()
|
||||
<< "* asset, Zone* zone, IZoneOutputStream* stream)")
|
||||
|
||||
m_intendation++;
|
||||
LINE_START(": AssetWriter(zone->m_pools->GetAsset("<<m_env.m_asset->m_asset_enum_entry->m_name<<", GetAssetName(asset))"<<", zone, stream)")
|
||||
LINE_START(": AssetWriter(zone->m_pools->GetAsset(" << m_env.m_asset->m_asset_enum_entry->m_name << ", GetAssetName(asset))"
|
||||
<< ", zone, stream)")
|
||||
LINE_END("")
|
||||
m_intendation--;
|
||||
|
||||
@ -148,12 +150,15 @@ class ZoneWriteTemplate::Internal final : BaseTemplate
|
||||
LINE("}")
|
||||
}
|
||||
|
||||
void WriteMember_ScriptString(StructureInformation* info, MemberInformation* member, const DeclarationModifierComputations& modifier, const MemberWriteType writeType) const
|
||||
void WriteMember_ScriptString(StructureInformation* info,
|
||||
MemberInformation* member,
|
||||
const DeclarationModifierComputations& modifier,
|
||||
const MemberWriteType writeType) const
|
||||
{
|
||||
if (writeType == MemberWriteType::ARRAY_POINTER)
|
||||
{
|
||||
LINE("varScriptString = " << MakeMemberAccess(info, member, modifier) << ";")
|
||||
LINE("m_stream->MarkFollowing("<<MakeWrittenMemberAccess(info, member, modifier)<<");")
|
||||
LINE("m_stream->MarkFollowing(" << MakeWrittenMemberAccess(info, member, modifier) << ");")
|
||||
LINE("WriteScriptStringArray(true, " << MakeEvaluation(modifier.GetArrayPointerCountEvaluation()) << ");")
|
||||
}
|
||||
else if (writeType == MemberWriteType::EMBEDDED_ARRAY)
|
||||
@ -172,11 +177,14 @@ class ZoneWriteTemplate::Internal final : BaseTemplate
|
||||
}
|
||||
}
|
||||
|
||||
void WriteMember_Asset(StructureInformation* info, MemberInformation* member, const DeclarationModifierComputations& modifier, const MemberWriteType writeType) const
|
||||
void WriteMember_Asset(StructureInformation* info,
|
||||
MemberInformation* member,
|
||||
const DeclarationModifierComputations& modifier,
|
||||
const MemberWriteType writeType) const
|
||||
{
|
||||
if (writeType == MemberWriteType::SINGLE_POINTER)
|
||||
{
|
||||
LINE(WriterClassName(member->m_type) << " writer("<<MakeMemberAccess(info, member, modifier)<<", m_zone, m_stream);")
|
||||
LINE(WriterClassName(member->m_type) << " writer(" << MakeMemberAccess(info, member, modifier) << ", m_zone, m_stream);")
|
||||
LINE("writer.Write(&" << MakeWrittenMemberAccess(info, member, modifier) << ");")
|
||||
}
|
||||
else if (writeType == MemberWriteType::POINTER_ARRAY)
|
||||
@ -190,7 +198,10 @@ class ZoneWriteTemplate::Internal final : BaseTemplate
|
||||
}
|
||||
}
|
||||
|
||||
void WriteMember_String(StructureInformation* info, MemberInformation* member, const DeclarationModifierComputations& modifier, const MemberWriteType writeType) const
|
||||
void WriteMember_String(StructureInformation* info,
|
||||
MemberInformation* member,
|
||||
const DeclarationModifierComputations& modifier,
|
||||
const MemberWriteType writeType) const
|
||||
{
|
||||
if (writeType == MemberWriteType::SINGLE_POINTER)
|
||||
{
|
||||
@ -232,12 +243,14 @@ class ZoneWriteTemplate::Internal final : BaseTemplate
|
||||
if (member->m_type && !member->m_type->m_is_leaf && !computations.IsInRuntimeBlock())
|
||||
{
|
||||
LINE(MakeTypeVarName(member->m_member->m_type_declaration->m_type) << " = " << MakeMemberAccess(info, member, modifier) << ";")
|
||||
LINE("WriteArray_" << MakeSafeTypeName(member->m_member->m_type_declaration->m_type) << "(true, " << MakeEvaluation(modifier.GetArrayPointerCountEvaluation()) << ");")
|
||||
LINE("WriteArray_" << MakeSafeTypeName(member->m_member->m_type_declaration->m_type) << "(true, "
|
||||
<< MakeEvaluation(modifier.GetArrayPointerCountEvaluation()) << ");")
|
||||
}
|
||||
else
|
||||
{
|
||||
LINE("m_stream->Write<" << MakeTypeDecl(member->m_member->m_type_declaration.get()) << MakeFollowingReferences(modifier.GetFollowingDeclarationModifiers())
|
||||
<< ">(" << MakeMemberAccess(info, member, modifier) << ", " << MakeEvaluation(modifier.GetArrayPointerCountEvaluation()) << ");")
|
||||
LINE("m_stream->Write<" << MakeTypeDecl(member->m_member->m_type_declaration.get())
|
||||
<< MakeFollowingReferences(modifier.GetFollowingDeclarationModifiers()) << ">(" << MakeMemberAccess(info, member, modifier)
|
||||
<< ", " << MakeEvaluation(modifier.GetArrayPointerCountEvaluation()) << ");")
|
||||
}
|
||||
}
|
||||
|
||||
@ -252,7 +265,8 @@ class ZoneWriteTemplate::Internal final : BaseTemplate
|
||||
else
|
||||
{
|
||||
LINE("m_stream->MarkFollowing(" << MakeWrittenMemberAccess(info, member, modifier) << ");")
|
||||
LINE("WritePtrArray_" << MakeSafeTypeName(member->m_member->m_type_declaration->m_type) << "(true, " << MakeEvaluation(modifier.GetPointerArrayCountEvaluation()) << ");")
|
||||
LINE("WritePtrArray_" << MakeSafeTypeName(member->m_member->m_type_declaration->m_type) << "(true, "
|
||||
<< MakeEvaluation(modifier.GetPointerArrayCountEvaluation()) << ");")
|
||||
}
|
||||
}
|
||||
|
||||
@ -270,7 +284,7 @@ class ZoneWriteTemplate::Internal final : BaseTemplate
|
||||
{
|
||||
if (computations.IsAfterPartialLoad())
|
||||
{
|
||||
LINE(MakeTypeVarName(member->m_member->m_type_declaration->m_type)<<" = "<< MakeMemberAccess(info, member, modifier) <<";")
|
||||
LINE(MakeTypeVarName(member->m_member->m_type_declaration->m_type) << " = " << MakeMemberAccess(info, member, modifier) << ";")
|
||||
LINE("WriteArray_" << MakeSafeTypeName(member->m_member->m_type_declaration->m_type) << "(true, " << arraySizeStr << ");")
|
||||
}
|
||||
else
|
||||
@ -282,8 +296,9 @@ class ZoneWriteTemplate::Internal final : BaseTemplate
|
||||
}
|
||||
else if (computations.IsAfterPartialLoad())
|
||||
{
|
||||
LINE("m_stream->Write<" << MakeTypeDecl(member->m_member->m_type_declaration.get()) << MakeFollowingReferences(modifier.GetFollowingDeclarationModifiers())
|
||||
<< ">(" << MakeMemberAccess(info, member, modifier) << ", " << arraySizeStr << ");")
|
||||
LINE("m_stream->Write<" << MakeTypeDecl(member->m_member->m_type_declaration.get())
|
||||
<< MakeFollowingReferences(modifier.GetFollowingDeclarationModifiers()) << ">(" << MakeMemberAccess(info, member, modifier)
|
||||
<< ", " << arraySizeStr << ");")
|
||||
}
|
||||
}
|
||||
|
||||
@ -292,12 +307,14 @@ class ZoneWriteTemplate::Internal final : BaseTemplate
|
||||
if (member->m_type && !member->m_type->m_is_leaf)
|
||||
{
|
||||
LINE(MakeTypeVarName(member->m_member->m_type_declaration->m_type) << " = " << MakeMemberAccess(info, member, modifier) << ";")
|
||||
LINE("WriteArray_" << MakeSafeTypeName(member->m_member->m_type_declaration->m_type) << "(true, " << MakeEvaluation(modifier.GetDynamicArraySizeEvaluation()) << ");")
|
||||
LINE("WriteArray_" << MakeSafeTypeName(member->m_member->m_type_declaration->m_type) << "(true, "
|
||||
<< MakeEvaluation(modifier.GetDynamicArraySizeEvaluation()) << ");")
|
||||
}
|
||||
else
|
||||
{
|
||||
LINE("m_stream->Write<" << MakeTypeDecl(member->m_member->m_type_declaration.get()) << MakeFollowingReferences(modifier.GetFollowingDeclarationModifiers())
|
||||
<< ">(" << MakeMemberAccess(info, member, modifier) << ", " << MakeEvaluation(modifier.GetDynamicArraySizeEvaluation()) << ");")
|
||||
LINE("m_stream->Write<" << MakeTypeDecl(member->m_member->m_type_declaration.get())
|
||||
<< MakeFollowingReferences(modifier.GetFollowingDeclarationModifiers()) << ">(" << MakeMemberAccess(info, member, modifier)
|
||||
<< ", " << MakeEvaluation(modifier.GetDynamicArraySizeEvaluation()) << ");")
|
||||
}
|
||||
}
|
||||
|
||||
@ -321,8 +338,9 @@ class ZoneWriteTemplate::Internal final : BaseTemplate
|
||||
}
|
||||
else if (computations.IsAfterPartialLoad())
|
||||
{
|
||||
LINE("m_stream->Write<" << MakeTypeDecl(member->m_member->m_type_declaration.get()) << MakeFollowingReferences(modifier.GetFollowingDeclarationModifiers())
|
||||
<< ">(&" << MakeMemberAccess(info, member, modifier) << ");")
|
||||
LINE("m_stream->Write<" << MakeTypeDecl(member->m_member->m_type_declaration.get())
|
||||
<< MakeFollowingReferences(modifier.GetFollowingDeclarationModifiers()) << ">(&" << MakeMemberAccess(info, member, modifier)
|
||||
<< ");")
|
||||
}
|
||||
}
|
||||
|
||||
@ -337,12 +355,16 @@ class ZoneWriteTemplate::Internal final : BaseTemplate
|
||||
}
|
||||
else
|
||||
{
|
||||
LINE("m_stream->Write<" << MakeTypeDecl(member->m_member->m_type_declaration.get()) << MakeFollowingReferences(modifier.GetFollowingDeclarationModifiers())
|
||||
<< ">(" << MakeMemberAccess(info, member, modifier) << ");")
|
||||
LINE("m_stream->Write<" << MakeTypeDecl(member->m_member->m_type_declaration.get())
|
||||
<< MakeFollowingReferences(modifier.GetFollowingDeclarationModifiers()) << ">(" << MakeMemberAccess(info, member, modifier)
|
||||
<< ");")
|
||||
}
|
||||
}
|
||||
|
||||
void WriteMember_TypeCheck(StructureInformation* info, MemberInformation* member, const DeclarationModifierComputations& modifier, const MemberWriteType writeType) const
|
||||
void WriteMember_TypeCheck(StructureInformation* info,
|
||||
MemberInformation* member,
|
||||
const DeclarationModifierComputations& modifier,
|
||||
const MemberWriteType writeType) const
|
||||
{
|
||||
if (member->m_is_string)
|
||||
{
|
||||
@ -391,17 +413,17 @@ class ZoneWriteTemplate::Internal final : BaseTemplate
|
||||
}
|
||||
}
|
||||
|
||||
static bool WriteMember_ShouldMakeInsertReuse(StructureInformation* info, MemberInformation* member, const DeclarationModifierComputations& modifier, const MemberWriteType writeType)
|
||||
static bool WriteMember_ShouldMakeInsertReuse(StructureInformation* info,
|
||||
MemberInformation* member,
|
||||
const DeclarationModifierComputations& modifier,
|
||||
const MemberWriteType writeType)
|
||||
{
|
||||
if (writeType != MemberWriteType::ARRAY_POINTER
|
||||
&& writeType != MemberWriteType::SINGLE_POINTER
|
||||
&& writeType != MemberWriteType::POINTER_ARRAY)
|
||||
if (writeType != MemberWriteType::ARRAY_POINTER && writeType != MemberWriteType::SINGLE_POINTER && writeType != MemberWriteType::POINTER_ARRAY)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (writeType == MemberWriteType::POINTER_ARRAY
|
||||
&& modifier.IsArray())
|
||||
if (writeType == MemberWriteType::POINTER_ARRAY && modifier.IsArray())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
@ -425,7 +447,10 @@ class ZoneWriteTemplate::Internal final : BaseTemplate
|
||||
return true;
|
||||
}
|
||||
|
||||
void WriteMember_InsertReuse(StructureInformation* info, MemberInformation* member, const DeclarationModifierComputations& modifier, const MemberWriteType writeType)
|
||||
void WriteMember_InsertReuse(StructureInformation* info,
|
||||
MemberInformation* member,
|
||||
const DeclarationModifierComputations& modifier,
|
||||
const MemberWriteType writeType)
|
||||
{
|
||||
if (!WriteMember_ShouldMakeInsertReuse(info, member, modifier, writeType))
|
||||
{
|
||||
@ -435,7 +460,8 @@ class ZoneWriteTemplate::Internal final : BaseTemplate
|
||||
|
||||
if (writeType == MemberWriteType::ARRAY_POINTER)
|
||||
{
|
||||
LINE("m_stream->ReusableAddOffset("<<MakeMemberAccess(info, member, modifier)<<", "<<MakeEvaluation(modifier.GetArrayPointerCountEvaluation())<<");")
|
||||
LINE("m_stream->ReusableAddOffset(" << MakeMemberAccess(info, member, modifier) << ", " << MakeEvaluation(modifier.GetArrayPointerCountEvaluation())
|
||||
<< ");")
|
||||
}
|
||||
else if (writeType == MemberWriteType::POINTER_ARRAY)
|
||||
{
|
||||
@ -443,7 +469,8 @@ class ZoneWriteTemplate::Internal final : BaseTemplate
|
||||
|
||||
if (evaluation)
|
||||
{
|
||||
LINE("m_stream->ReusableAddOffset(" << MakeMemberAccess(info, member, modifier) << ", " << MakeEvaluation(modifier.GetPointerArrayCountEvaluation()) << ");")
|
||||
LINE("m_stream->ReusableAddOffset(" << MakeMemberAccess(info, member, modifier) << ", "
|
||||
<< MakeEvaluation(modifier.GetPointerArrayCountEvaluation()) << ");")
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -452,17 +479,18 @@ class ZoneWriteTemplate::Internal final : BaseTemplate
|
||||
}
|
||||
else
|
||||
{
|
||||
LINE("m_stream->ReusableAddOffset("<<MakeMemberAccess(info, member, modifier)<<");")
|
||||
LINE("m_stream->ReusableAddOffset(" << MakeMemberAccess(info, member, modifier) << ");")
|
||||
}
|
||||
|
||||
WriteMember_TypeCheck(info, member, modifier, writeType);
|
||||
}
|
||||
|
||||
static bool WriteMember_ShouldMakeAlign(StructureInformation* info, MemberInformation* member, const DeclarationModifierComputations& modifier, const MemberWriteType writeType)
|
||||
static bool WriteMember_ShouldMakeAlign(StructureInformation* info,
|
||||
MemberInformation* member,
|
||||
const DeclarationModifierComputations& modifier,
|
||||
const MemberWriteType writeType)
|
||||
{
|
||||
if (writeType != MemberWriteType::ARRAY_POINTER
|
||||
&& writeType != MemberWriteType::POINTER_ARRAY
|
||||
&& writeType != MemberWriteType::SINGLE_POINTER)
|
||||
if (writeType != MemberWriteType::ARRAY_POINTER && writeType != MemberWriteType::POINTER_ARRAY && writeType != MemberWriteType::SINGLE_POINTER)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
@ -485,7 +513,10 @@ class ZoneWriteTemplate::Internal final : BaseTemplate
|
||||
return true;
|
||||
}
|
||||
|
||||
void WriteMember_Align(StructureInformation* info, MemberInformation* member, const DeclarationModifierComputations& modifier, const MemberWriteType writeType)
|
||||
void WriteMember_Align(StructureInformation* info,
|
||||
MemberInformation* member,
|
||||
const DeclarationModifierComputations& modifier,
|
||||
const MemberWriteType writeType)
|
||||
{
|
||||
if (!WriteMember_ShouldMakeAlign(info, member, modifier, writeType))
|
||||
{
|
||||
@ -498,27 +529,27 @@ class ZoneWriteTemplate::Internal final : BaseTemplate
|
||||
|
||||
if (member->m_alloc_alignment)
|
||||
{
|
||||
LINE("m_stream->Align("<<MakeEvaluation(member->m_alloc_alignment.get())<<");")
|
||||
LINE("m_stream->Align(" << MakeEvaluation(member->m_alloc_alignment.get()) << ");")
|
||||
}
|
||||
else
|
||||
{
|
||||
LINE("m_stream->Align("<<modifier.GetAlignment()<<");")
|
||||
LINE("m_stream->Align(" << modifier.GetAlignment() << ");")
|
||||
}
|
||||
|
||||
WriteMember_InsertReuse(info, member, modifier, writeType);
|
||||
}
|
||||
|
||||
static bool WriteMember_ShouldMakeReuse(StructureInformation* info, MemberInformation* member, const DeclarationModifierComputations& modifier, const MemberWriteType writeType)
|
||||
static bool WriteMember_ShouldMakeReuse(StructureInformation* info,
|
||||
MemberInformation* member,
|
||||
const DeclarationModifierComputations& modifier,
|
||||
const MemberWriteType writeType)
|
||||
{
|
||||
if (writeType != MemberWriteType::ARRAY_POINTER
|
||||
&& writeType != MemberWriteType::SINGLE_POINTER
|
||||
&& writeType != MemberWriteType::POINTER_ARRAY)
|
||||
if (writeType != MemberWriteType::ARRAY_POINTER && writeType != MemberWriteType::SINGLE_POINTER && writeType != MemberWriteType::POINTER_ARRAY)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (writeType == MemberWriteType::POINTER_ARRAY
|
||||
&& modifier.IsArray())
|
||||
if (writeType == MemberWriteType::POINTER_ARRAY && modifier.IsArray())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
@ -526,7 +557,10 @@ class ZoneWriteTemplate::Internal final : BaseTemplate
|
||||
return member->m_is_reusable;
|
||||
}
|
||||
|
||||
void WriteMember_Reuse(StructureInformation* info, MemberInformation* member, const DeclarationModifierComputations& modifier, const MemberWriteType writeType)
|
||||
void WriteMember_Reuse(StructureInformation* info,
|
||||
MemberInformation* member,
|
||||
const DeclarationModifierComputations& modifier,
|
||||
const MemberWriteType writeType)
|
||||
{
|
||||
if (!WriteMember_ShouldMakeReuse(info, member, modifier, writeType))
|
||||
{
|
||||
@ -544,11 +578,12 @@ class ZoneWriteTemplate::Internal final : BaseTemplate
|
||||
LINE("}")
|
||||
}
|
||||
|
||||
static bool WriteMember_ShouldMakePointerCheck(StructureInformation* info, MemberInformation* member, const DeclarationModifierComputations& modifier, const MemberWriteType writeType)
|
||||
static bool WriteMember_ShouldMakePointerCheck(StructureInformation* info,
|
||||
MemberInformation* member,
|
||||
const DeclarationModifierComputations& modifier,
|
||||
const MemberWriteType writeType)
|
||||
{
|
||||
if (writeType != MemberWriteType::ARRAY_POINTER
|
||||
&& writeType != MemberWriteType::POINTER_ARRAY
|
||||
&& writeType != MemberWriteType::SINGLE_POINTER)
|
||||
if (writeType != MemberWriteType::ARRAY_POINTER && writeType != MemberWriteType::POINTER_ARRAY && writeType != MemberWriteType::SINGLE_POINTER)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
@ -566,7 +601,10 @@ class ZoneWriteTemplate::Internal final : BaseTemplate
|
||||
return true;
|
||||
}
|
||||
|
||||
void WriteMember_PointerCheck(StructureInformation* info, MemberInformation* member, const DeclarationModifierComputations& modifier, const MemberWriteType writeType)
|
||||
void WriteMember_PointerCheck(StructureInformation* info,
|
||||
MemberInformation* member,
|
||||
const DeclarationModifierComputations& modifier,
|
||||
const MemberWriteType writeType)
|
||||
{
|
||||
if (WriteMember_ShouldMakePointerCheck(info, member, modifier, writeType))
|
||||
{
|
||||
@ -752,10 +790,7 @@ class ZoneWriteTemplate::Internal final : BaseTemplate
|
||||
if (computations.ShouldIgnore())
|
||||
return;
|
||||
|
||||
if (member->m_is_string
|
||||
|| member->m_is_script_string
|
||||
|| computations.ContainsNonEmbeddedReference()
|
||||
|| member->m_type && !member->m_type->m_is_leaf
|
||||
if (member->m_is_string || member->m_is_script_string || computations.ContainsNonEmbeddedReference() || member->m_type && !member->m_type->m_is_leaf
|
||||
|| computations.IsAfterPartialLoad())
|
||||
{
|
||||
if (info->m_definition->GetType() == DataDefinitionType::UNION)
|
||||
@ -783,13 +818,14 @@ class ZoneWriteTemplate::Internal final : BaseTemplate
|
||||
|
||||
if (dynamicMember == nullptr)
|
||||
{
|
||||
LINE(MakeTypeWrittenVarName(info->m_definition)<<" = m_stream->Write<" << info->m_definition->GetFullName() << ">(" << MakeTypeVarName(info->m_definition) << "); // Size: "
|
||||
<< info->m_definition->GetSize())
|
||||
LINE(MakeTypeWrittenVarName(info->m_definition) << " = m_stream->Write<" << info->m_definition->GetFullName() << ">("
|
||||
<< MakeTypeVarName(info->m_definition) << "); // Size: " << info->m_definition->GetSize())
|
||||
}
|
||||
else
|
||||
{
|
||||
LINE(MakeTypeWrittenVarName(info->m_definition) << " = m_stream->WritePartial<" << info->m_definition->GetFullName() << ">(" << MakeTypeVarName(info->m_definition) << ", offsetof(" <<
|
||||
info->m_definition->GetFullName() << ", " << dynamicMember->m_member->m_name << "));")
|
||||
LINE(MakeTypeWrittenVarName(info->m_definition)
|
||||
<< " = m_stream->WritePartial<" << info->m_definition->GetFullName() << ">(" << MakeTypeVarName(info->m_definition) << ", offsetof("
|
||||
<< info->m_definition->GetFullName() << ", " << dynamicMember->m_member->m_name << "));")
|
||||
}
|
||||
|
||||
m_intendation--;
|
||||
@ -840,7 +876,8 @@ class ZoneWriteTemplate::Internal final : BaseTemplate
|
||||
|
||||
LINE("if(atStreamStart)")
|
||||
m_intendation++;
|
||||
LINE(MakeTypeWrittenPtrVarName(info->m_definition)<<" = m_stream->Write<" << info->m_definition->GetFullName() << "*>(" << MakeTypePtrVarName(info->m_definition) << ");")
|
||||
LINE(MakeTypeWrittenPtrVarName(info->m_definition)
|
||||
<< " = m_stream->Write<" << info->m_definition->GetFullName() << "*>(" << MakeTypePtrVarName(info->m_definition) << ");")
|
||||
m_intendation--;
|
||||
|
||||
LINE("")
|
||||
@ -857,7 +894,7 @@ class ZoneWriteTemplate::Internal final : BaseTemplate
|
||||
m_intendation++;
|
||||
|
||||
LINE("m_stream->Align(" << info->m_definition->GetAlignment() << ");")
|
||||
LINE("m_stream->ReusableAddOffset(*"<<MakeTypePtrVarName(info->m_definition)<<");")
|
||||
LINE("m_stream->ReusableAddOffset(*" << MakeTypePtrVarName(info->m_definition) << ");")
|
||||
LINE("")
|
||||
if (!info->m_is_leaf)
|
||||
{
|
||||
@ -870,7 +907,7 @@ class ZoneWriteTemplate::Internal final : BaseTemplate
|
||||
}
|
||||
|
||||
LINE("")
|
||||
LINE("m_stream->MarkFollowing(*"<<MakeTypeWrittenPtrVarName(info->m_definition)<<");")
|
||||
LINE("m_stream->MarkFollowing(*" << MakeTypeWrittenPtrVarName(info->m_definition) << ");")
|
||||
|
||||
m_intendation--;
|
||||
LINE("}")
|
||||
@ -895,7 +932,7 @@ class ZoneWriteTemplate::Internal final : BaseTemplate
|
||||
LINE("assert(m_asset != nullptr);")
|
||||
LINE("assert(m_asset->m_ptr != nullptr);")
|
||||
LINE("")
|
||||
LINE("auto* zoneAsset = static_cast<"<<m_env.m_asset->m_definition->GetFullName()<<"*>(m_asset->m_ptr);")
|
||||
LINE("auto* zoneAsset = static_cast<" << m_env.m_asset->m_definition->GetFullName() << "*>(m_asset->m_ptr);")
|
||||
LINE(MakeTypePtrVarName(m_env.m_asset->m_definition) << " = &zoneAsset;")
|
||||
LINE(MakeTypeWrittenPtrVarName(m_env.m_asset->m_definition) << " = &zoneAsset;")
|
||||
LINE("WritePtr_" << MakeSafeTypeName(m_env.m_asset->m_definition) << "(false);")
|
||||
@ -941,11 +978,11 @@ class ZoneWriteTemplate::Internal final : BaseTemplate
|
||||
|
||||
void PrintWritePtrArrayMethod_Loading(const DataDefinition* def, StructureInformation* info, const bool reusable) const
|
||||
{
|
||||
LINE("m_stream->Align("<<def->GetAlignment()<<");")
|
||||
LINE("m_stream->Align(" << def->GetAlignment() << ");")
|
||||
|
||||
if (reusable)
|
||||
{
|
||||
LINE("m_stream->ReusableAddOffset(*"<<MakeTypePtrVarName(def)<< ");")
|
||||
LINE("m_stream->ReusableAddOffset(*" << MakeTypePtrVarName(def) << ");")
|
||||
}
|
||||
|
||||
if (info && !info->m_is_leaf)
|
||||
@ -957,7 +994,7 @@ class ZoneWriteTemplate::Internal final : BaseTemplate
|
||||
{
|
||||
LINE("m_stream->Write<" << def->GetFullName() << ">(*" << MakeTypePtrVarName(def) << ");")
|
||||
}
|
||||
LINE("m_stream->MarkFollowing(*"<< MakeTypeWrittenPtrVarName(def)<<");")
|
||||
LINE("m_stream->MarkFollowing(*" << MakeTypeWrittenPtrVarName(def) << ");")
|
||||
}
|
||||
|
||||
void PrintWritePtrArrayMethod_PointerCheck(const DataDefinition* def, StructureInformation* info, const bool reusable)
|
||||
@ -968,7 +1005,7 @@ class ZoneWriteTemplate::Internal final : BaseTemplate
|
||||
|
||||
if (info && StructureComputations(info).IsAsset())
|
||||
{
|
||||
LINE(WriterClassName(info) << " writer(*"<< MakeTypePtrVarName(def)<<", m_zone, m_stream);")
|
||||
LINE(WriterClassName(info) << " writer(*" << MakeTypePtrVarName(def) << ", m_zone, m_stream);")
|
||||
LINE("writer.Write(" << MakeTypeWrittenPtrVarName(def) << ");")
|
||||
}
|
||||
else
|
||||
@ -1005,7 +1042,7 @@ class ZoneWriteTemplate::Internal final : BaseTemplate
|
||||
|
||||
LINE("if(atStreamStart)")
|
||||
m_intendation++;
|
||||
LINE(MakeTypeWrittenPtrVarName(def)<<" = m_stream->Write<" << def->GetFullName() << "*>(" << MakeTypePtrVarName(def) << ", count);")
|
||||
LINE(MakeTypeWrittenPtrVarName(def) << " = m_stream->Write<" << def->GetFullName() << "*>(" << MakeTypePtrVarName(def) << ", count);")
|
||||
m_intendation--;
|
||||
|
||||
LINE("")
|
||||
@ -1041,7 +1078,7 @@ class ZoneWriteTemplate::Internal final : BaseTemplate
|
||||
LINE("")
|
||||
LINE("if(atStreamStart)")
|
||||
m_intendation++;
|
||||
LINE(MakeTypeWrittenVarName(def)<<" = m_stream->Write<" << def->GetFullName() << ">(" << MakeTypeVarName(def) << ", count);")
|
||||
LINE(MakeTypeWrittenVarName(def) << " = m_stream->Write<" << def->GetFullName() << ">(" << MakeTypeVarName(def) << ", count);")
|
||||
m_intendation--;
|
||||
|
||||
LINE("")
|
||||
|
Reference in New Issue
Block a user