From 4261ddd393b73f3952f3b26392b8ba852275b56d Mon Sep 17 00:00:00 2001 From: Romain BOULLARD Date: Sat, 9 May 2026 23:41:04 +0200 Subject: [PATCH] Basic asset system serialization --- Bigfoot/Sources/Engine/Asset/AssetTypeID.cpp | 3 +- .../Engine/Include/Engine/Asset/Asset.bfbs | Bin 1192 -> 1192 bytes .../Engine/Asset/Asset.bfbs_generated.hpp | 34 +- .../Engine/Include/Engine/Asset/Asset.fbs | 4 +- .../Engine/Include/Engine/Asset/Asset.hpp | 145 +++++-- .../Include/Engine/Asset/AssetTypeID.fbs | 2 + .../Include/Engine/Asset/AssetTypeID.hpp | 14 +- .../Engine/Asset/AssetTypeID_generated.hpp | 3 + .../Include/Engine/Asset/Asset_generated.hpp | 40 +- .../Include/Engine/Asset/Reference.bfbs | Bin 608 -> 592 bytes .../Engine/Asset/Reference.bfbs_generated.hpp | 35 +- .../Engine/Include/Engine/Asset/Reference.fbs | 11 +- .../Engine/Include/Engine/Asset/Reference.hpp | 93 +++-- .../Engine/Asset/Reference_generated.hpp | 15 +- .../Engine/Include/Engine/BigFile/BigFile.hpp | 8 +- .../Include/System/Log/Log_generated.hpp | 1 + .../System/Include/System/Time/Time.bfbs | Bin 272 -> 272 bytes .../System/Time/Time.bfbs_generated.hpp | 4 +- .../System/Include/System/Time/Time.fbs | 4 +- .../System/Include/System/Time/Time.hpp | 16 +- .../Include/System/Time/Time_generated.hpp | 15 +- .../System/Include/System/UUID/UUID.fbs | 2 + .../System/Include/System/UUID/UUID.hpp | 12 +- .../Include/System/UUID/UUID_generated.hpp | 3 + Bigfoot/Sources/System/Time/Time.cpp | 7 +- Bigfoot/Sources/System/UUID/UUID.cpp | 1 + .../Sources/Utils/Include/Utils/Singleton.hpp | 4 - Bigfoot/Tests/Engine/Asset/Asset.cpp | 208 ++++++++-- .../{AssetA.cpp => Asset/AssetA_fwd.cpp} | 6 +- .../{AssetB.cpp => Asset/AssetB_fwd.cpp} | 6 +- .../Engine/EngineTests/Asset/AssetC_fwd.cpp | 9 + .../Include/EngineTests/Asset/AssetA.bfbs | Bin 1184 -> 912 bytes .../Asset/AssetA.bfbs_generated.hpp | 65 ++- .../Include/EngineTests/Asset/AssetA.fbs | 15 +- .../Include/EngineTests/Asset/AssetA.hpp | 22 +- .../Include/EngineTests/Asset/AssetA_fwd.hpp | 18 + .../EngineTests/Asset/AssetA_generated.hpp | 120 +----- .../Include/EngineTests/Asset/AssetB.bfbs | Bin 1720 -> 1192 bytes .../Asset/AssetB.bfbs_generated.hpp | 117 ++---- .../Include/EngineTests/Asset/AssetB.fbs | 20 +- .../Include/EngineTests/Asset/AssetB.hpp | 24 +- .../Include/EngineTests/Asset/AssetB_fwd.hpp | 18 + .../EngineTests/Asset/AssetB_generated.hpp | 155 ++----- .../Include/EngineTests/Asset/AssetC.bfbs | Bin 0 -> 1656 bytes .../Asset/AssetC.bfbs_generated.hpp | 123 ++++++ .../Include/EngineTests/Asset/AssetC.fbs | 24 ++ .../Include/EngineTests/Asset/AssetC.hpp | 49 +++ .../Include/EngineTests/Asset/AssetC_fwd.hpp | 18 + .../EngineTests/Asset/AssetC_generated.hpp | 387 ++++++++++++++++++ CMake/Utils.cmake | 2 + conanfile.py | 2 +- 51 files changed, 1266 insertions(+), 618 deletions(-) rename Bigfoot/Tests/Engine/EngineTests/{AssetA.cpp => Asset/AssetA_fwd.cpp} (63%) rename Bigfoot/Tests/Engine/EngineTests/{AssetB.cpp => Asset/AssetB_fwd.cpp} (63%) create mode 100644 Bigfoot/Tests/Engine/EngineTests/Asset/AssetC_fwd.cpp create mode 100644 Bigfoot/Tests/Engine/Include/EngineTests/Asset/AssetA_fwd.hpp create mode 100644 Bigfoot/Tests/Engine/Include/EngineTests/Asset/AssetB_fwd.hpp create mode 100644 Bigfoot/Tests/Engine/Include/EngineTests/Asset/AssetC.bfbs create mode 100644 Bigfoot/Tests/Engine/Include/EngineTests/Asset/AssetC.bfbs_generated.hpp create mode 100644 Bigfoot/Tests/Engine/Include/EngineTests/Asset/AssetC.fbs create mode 100644 Bigfoot/Tests/Engine/Include/EngineTests/Asset/AssetC.hpp create mode 100644 Bigfoot/Tests/Engine/Include/EngineTests/Asset/AssetC_fwd.hpp create mode 100644 Bigfoot/Tests/Engine/Include/EngineTests/Asset/AssetC_generated.hpp diff --git a/Bigfoot/Sources/Engine/Asset/AssetTypeID.cpp b/Bigfoot/Sources/Engine/Asset/AssetTypeID.cpp index a459a3b..9f7c7a6 100644 --- a/Bigfoot/Sources/Engine/Asset/AssetTypeID.cpp +++ b/Bigfoot/Sources/Engine/Asset/AssetTypeID.cpp @@ -2,9 +2,10 @@ * \file AssetTypeID.cpp * * \author Romain BOULLARD - * \date February 2026 + * \date May 2026 *********************************************************************/ #include +#include namespace flatbuffers { diff --git a/Bigfoot/Sources/Engine/Include/Engine/Asset/Asset.bfbs b/Bigfoot/Sources/Engine/Include/Engine/Asset/Asset.bfbs index abcbec51eb51d5d2f41b4f826c807865713783c1..377abec56ed402ce52c9c30876b3c56306438c95 100644 GIT binary patch delta 209 zcmZ3%xq_2lfq{X+$;~MkNHK^oXiVf6m9zmeO@LSfh-HAd1BeBH*kYosay<)>5dp+J zj0_A5m>C!zFflLyDFz-O25ArhVwpex|33kWgVch64v;?qs0hZl0rDRJ#X)?aGKLbM z+!i1s=KufyAPYfe0gY$a1H>Tt1Rw^93o$TEd@Rc7GV!NAKR1w{nU|MZ6rWgJoLaKk In6Z=@0JoDQRR910 delta 182 zcmZ3%xq_2lfq{X+$;~MkNHK^o=uG4nm2?0yEr3`Dh!udi2Z%+0*k+=w^27j^i3uE> z9E=PMbC?+z?o2Ec4psQ`|NjFf1_l g_Asset_bfbs = { - std::byte{0x20}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x42}, std::byte{0x46}, std::byte{0x42}, std::byte{0x53}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x2C}, std::byte{0x00}, + std::byte{0x20}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x42}, std::byte{0x46}, std::byte{0x42}, std::byte{0x53}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x28}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x08}, std::byte{0x00}, std::byte{0x0C}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x18}, std::byte{0x00}, std::byte{0x20}, std::byte{0x00}, std::byte{0x1C}, std::byte{0x00}, - std::byte{0x14}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x40}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x38}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x2C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, - std::byte{0x20}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x8C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x3C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, + std::byte{0x14}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x3C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x34}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x28}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, + std::byte{0x1C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x88}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x38}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, - std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x58}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x08}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, - std::byte{0x9C}, std::byte{0x03}, std::byte{0x00}, std::byte{0x00}, std::byte{0xDC}, std::byte{0x02}, std::byte{0x00}, std::byte{0x00}, std::byte{0x03}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, - std::byte{0x28}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x20}, std::byte{0xFC}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0xE0}, std::byte{0x02}, std::byte{0x00}, std::byte{0x00}, - std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x30}, std::byte{0xFC}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x8C}, std::byte{0x03}, std::byte{0x00}, std::byte{0x00}, - std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x40}, std::byte{0xFC}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0xDC}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, - std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x02}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x70}, std::byte{0x03}, std::byte{0x00}, std::byte{0x00}, std::byte{0xB0}, std::byte{0x02}, std::byte{0x00}, std::byte{0x00}, - std::byte{0x60}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x1C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, - std::byte{0xB8}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x02}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x20}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x58}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, - std::byte{0x12}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x46}, std::byte{0x6C}, std::byte{0x61}, std::byte{0x74}, std::byte{0x2E}, std::byte{0x42}, std::byte{0x69}, std::byte{0x67}, std::byte{0x66}, std::byte{0x6F}, std::byte{0x6F}, std::byte{0x74}, - std::byte{0x2E}, std::byte{0x41}, std::byte{0x73}, std::byte{0x73}, std::byte{0x65}, std::byte{0x74}, std::byte{0x00}, std::byte{0x00}, std::byte{0x48}, std::byte{0xFE}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, - std::byte{0x01}, std::byte{0x00}, std::byte{0x06}, std::byte{0x00}, std::byte{0x24}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x0C}, std::byte{0x00}, - std::byte{0x06}, std::byte{0x00}, std::byte{0x07}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x08}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, - std::byte{0x00}, std::byte{0x00}, std::byte{0x0E}, std::byte{0x04}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x05}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x61}, std::byte{0x73}, std::byte{0x73}, std::byte{0x65}, - std::byte{0x74}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x34}, std::byte{0xFE}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x00}, std::byte{0x01}, std::byte{0x04}, std::byte{0x00}, std::byte{0x18}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, + std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x58}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0C}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0xA0}, std::byte{0x03}, std::byte{0x00}, std::byte{0x00}, + std::byte{0xE0}, std::byte{0x02}, std::byte{0x00}, std::byte{0x00}, std::byte{0x03}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x28}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, + std::byte{0x14}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x1C}, std::byte{0xFC}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0xE4}, std::byte{0x02}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, + std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x2C}, std::byte{0xFC}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x90}, std::byte{0x03}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, + std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x3C}, std::byte{0xFC}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0xE0}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, + std::byte{0x02}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x74}, std::byte{0x03}, std::byte{0x00}, std::byte{0x00}, std::byte{0xB4}, std::byte{0x02}, std::byte{0x00}, std::byte{0x00}, std::byte{0x5C}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0xFF}, + std::byte{0x1C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0xBC}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, + std::byte{0x02}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x60}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x1C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x12}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, + std::byte{0x46}, std::byte{0x6C}, std::byte{0x61}, std::byte{0x74}, std::byte{0x2E}, std::byte{0x42}, std::byte{0x69}, std::byte{0x67}, std::byte{0x66}, std::byte{0x6F}, std::byte{0x6F}, std::byte{0x74}, std::byte{0x2E}, std::byte{0x41}, std::byte{0x73}, std::byte{0x73}, + std::byte{0x65}, std::byte{0x74}, std::byte{0x00}, std::byte{0x00}, std::byte{0x44}, std::byte{0xFE}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x01}, std::byte{0x00}, std::byte{0x06}, std::byte{0x00}, + std::byte{0x24}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x0C}, std::byte{0x00}, std::byte{0x06}, std::byte{0x00}, std::byte{0x07}, std::byte{0x00}, + std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x08}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0E}, std::byte{0x04}, + std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0B}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x69}, std::byte{0x6E}, std::byte{0x6E}, std::byte{0x65}, std::byte{0x72}, std::byte{0x5F}, std::byte{0x61}, std::byte{0x73}, + std::byte{0x73}, std::byte{0x65}, std::byte{0x74}, std::byte{0x00}, std::byte{0x34}, std::byte{0xFE}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x00}, std::byte{0x01}, std::byte{0x04}, std::byte{0x00}, std::byte{0x18}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x20}, std::byte{0xFE}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0F}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x06}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x68}, std::byte{0x65}, std::byte{0x61}, std::byte{0x64}, std::byte{0x65}, std::byte{0x72}, std::byte{0x00}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x08}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, diff --git a/Bigfoot/Sources/Engine/Include/Engine/Asset/Asset.fbs b/Bigfoot/Sources/Engine/Include/Engine/Asset/Asset.fbs index 542571d..fb5ea76 100644 --- a/Bigfoot/Sources/Engine/Include/Engine/Asset/Asset.fbs +++ b/Bigfoot/Sources/Engine/Include/Engine/Asset/Asset.fbs @@ -1,8 +1,6 @@ include "Engine/Asset/AssetTypeID.fbs"; -native_include "Engine/Asset/AssetTypeID.hpp"; include "System/UUID/UUID.fbs"; -native_include "System/UUID/UUID.hpp"; namespace Flat.Bigfoot; @@ -19,7 +17,7 @@ table AssetHeader table Asset { header: AssetHeader (required, id: 0); - asset: [ubyte] (required, id: 1); + inner_asset: [ubyte] (required, id: 1); } root_type Asset; \ No newline at end of file diff --git a/Bigfoot/Sources/Engine/Include/Engine/Asset/Asset.hpp b/Bigfoot/Sources/Engine/Include/Engine/Asset/Asset.hpp index aa88891..70df6e9 100644 --- a/Bigfoot/Sources/Engine/Include/Engine/Asset/Asset.hpp +++ b/Bigfoot/Sources/Engine/Include/Engine/Asset/Asset.hpp @@ -7,27 +7,48 @@ #ifndef BIGFOOT_ENGINE_ASSET_HPP #define BIGFOOT_ENGINE_ASSET_HPP #include +#include +#include + +#include #include #include +#include #include namespace Bigfoot { -template +template class Asset { public: + using FLAT_ASSET = typename ASSET::FLAT; + Asset() { m_header.type_id = GetTypeID(); m_header.type_name = GetTypeName(); } - explicit Asset(const eastl::span p_flatbuffer): - m_header(UnPackHeader(p_flatbuffer)), - m_asset(UnpackAsset(p_flatbuffer)) + explicit Asset(const eastl::span p_flatbuffer) { +#ifdef BIGFOOT_NOT_OPTIMIZED + flatbuffers::Verifier verifier {std::bit_cast(p_flatbuffer.data()), p_flatbuffer.size()}; + const bool assetVerified = ::Flat::Bigfoot::VerifyAssetBuffer(verifier); + CRITICAL_ASSERT(EngineAssertHandler, assetVerified, "Given asset could not be verified!"); + + const ::Flat::Bigfoot::Asset* asset = flatbuffers::GetRoot<::Flat::Bigfoot::Asset>(p_flatbuffer.data()); + + flatbuffers::Verifier innerAssetVerifier {asset->inner_asset()->data(), asset->inner_asset()->size()}; + const bool innerAssetVerified = innerAssetVerifier.VerifyBuffer(); + CRITICAL_ASSERT(EngineAssertHandler, innerAssetVerified, "Given asset could not be verified!"); +#else + const ::Flat::Bigfoot::Asset* asset = flatbuffers::GetRoot<::Flat::Bigfoot::Asset>(p_flatbuffer.data()); +#endif + + asset->header()->UnPackTo(&m_header); + flatbuffers::GetRoot(asset->inner_asset()->data())->UnPackTo(&m_asset, nullptr); } Asset(const Asset& p_asset) = default; @@ -54,20 +75,23 @@ class Asset } [[nodiscard]] - eastl::vector Pack() const + eastl::vector Save() { + flatbuffers::FlatBufferBuilder innerAssetFbb; + innerAssetFbb.Finish(FLAT_ASSET::Pack(innerAssetFbb, &m_asset)); + + m_header.dependencies = CollectHardRefs(innerAssetFbb); + + ::Flat::Bigfoot::AssetT asset; + asset.header = eastl::make_unique<::Flat::Bigfoot::AssetHeaderT>(m_header); + asset.inner_asset = eastl::vector {innerAssetFbb.GetBufferPointer(), + innerAssetFbb.GetBufferPointer() + innerAssetFbb.GetSize()}; + flatbuffers::FlatBufferBuilder assetFbb; - assetFbb.Finish(FLAT_ASSET::Pack(assetFbb, &m_asset)); + assetFbb.Finish(::Flat::Bigfoot::Asset::Pack(assetFbb, &asset)); - ::Flat::Bigfoot::AssetT outer; - outer.header = eastl::make_unique<::Flat::Bigfoot::AssetHeaderT>(m_header); - outer.asset = {assetFbb.GetBufferSpan().begin(), assetFbb.GetBufferSpan().end()}; - - flatbuffers::FlatBufferBuilder fullFbb; - fullFbb.Finish(::Flat::Bigfoot::Asset::Pack(fullFbb, &outer)); - - return eastl::vector {std::bit_cast(fullFbb.GetBufferPointer()), - std::bit_cast(fullFbb.GetBufferPointer() + fullFbb.GetSize())}; + return eastl::vector {std::bit_cast(assetFbb.GetBufferPointer()), + std::bit_cast(assetFbb.GetBufferPointer() + assetFbb.GetSize())}; } void SetName(const eastl::string_view p_name) @@ -94,31 +118,98 @@ class Asset return FLAT_ASSET::GetFullyQualifiedName(); } - [[nodiscard]] Asset& operator=(const Asset& p_asset) = default; - [[nodiscard]] Asset& operator=(Asset&& p_asset) = default; private: - [[nodiscard]] - static ::Flat::Bigfoot::AssetHeaderT UnPackHeader(const eastl::span p_flatbuffer) + static void WalkTableForHardRef(const flatbuffers::Table* p_table, + const reflection::Object* p_obj, + const reflection::Schema* p_schema, + ankerl::unordered_dense::segmented_set& p_deps) { - ::Flat::Bigfoot::AssetHeaderT header; + constexpr auto isHardRef = [](const reflection::Object* p_object) + { + return eastl::string_view(p_object->name()->c_str()) == ::Flat::Bigfoot::HardRef::GetFullyQualifiedName(); + }; - flatbuffers::GetRoot<::Flat::Bigfoot::Asset>(p_flatbuffer.data())->header()->UnPackTo(&header); + for (const reflection::Field* field: *p_obj->fields()) + { + const reflection::BaseType baseType = field->type()->base_type(); - return header; + if (baseType == reflection::BaseType::Obj) + { + const reflection::Object* fieldObj = p_schema->objects()->Get(field->type()->index()); + + if (fieldObj->is_struct()) + { + if (!isHardRef(fieldObj)) + { + continue; + } + + if (const ::Flat::Bigfoot::HardRef* hardRef = std::bit_cast( + flatbuffers::GetFieldStruct(*p_table, *field))) + { + p_deps.insert(flatbuffers::UnPack(hardRef->uuid())); + } + } + else + { + if (const flatbuffers::Table* nestedTable = flatbuffers::GetFieldT(*p_table, *field)) + { + WalkTableForHardRef(nestedTable, fieldObj, p_schema, p_deps); + } + } + } + else if (baseType == reflection::BaseType::Vector && field->type()->element() == reflection::BaseType::Obj) + { + const reflection::Object* elemObj = p_schema->objects()->Get(field->type()->index()); + const flatbuffers::VectorOfAny* nestedTables = flatbuffers::GetFieldAnyV(*p_table, *field); + if (!nestedTables) + { + continue; + } + + if (isHardRef(elemObj)) + { + const flatbuffers::Vector<::Flat::Bigfoot::HardRef>* hardRefs = + std::bit_cast*>(nestedTables); + for (const ::Flat::Bigfoot::HardRef* hardRef: *hardRefs) + { + p_deps.insert(flatbuffers::UnPack(hardRef->uuid())); + } + } + else if (!elemObj->is_struct()) + { + const flatbuffers::Vector>* tables = + std::bit_cast>*>( + nestedTables); + for (const flatbuffers::Table* table: *tables) + { + WalkTableForHardRef(table, elemObj, p_schema, p_deps); + } + } + } + } } [[nodiscard]] - static typename FLAT_ASSET::NativeTableType UnpackAsset(const eastl::span p_flatbuffer) + static eastl::vector CollectHardRefs(const flatbuffers::FlatBufferBuilder& p_fbb) { - typename FLAT_ASSET::NativeTableType asset; + ankerl::unordered_dense::segmented_set depsSet; - const ::Flat::Bigfoot::Asset* outer = flatbuffers::GetRoot<::Flat::Bigfoot::Asset>(p_flatbuffer.data()); - flatbuffers::GetRoot(outer->asset()->data())->UnPackTo(&asset, nullptr); + const reflection::Schema* schema = reflection::GetSchema(ASSET::ReflectionInfo().data()); + const flatbuffers::Table* table = flatbuffers::GetRoot(p_fbb.GetBufferPointer()); + WalkTableForHardRef(table, schema->root_table(), schema, depsSet); - return asset; + eastl::vector deps; + deps.reserve(depsSet.size()); + for (const UUID& id: depsSet) + { + deps.push_back(id); + } + + return deps; } private: diff --git a/Bigfoot/Sources/Engine/Include/Engine/Asset/AssetTypeID.fbs b/Bigfoot/Sources/Engine/Include/Engine/Asset/AssetTypeID.fbs index 52c3b9a..6ffe9f6 100644 --- a/Bigfoot/Sources/Engine/Include/Engine/Asset/AssetTypeID.fbs +++ b/Bigfoot/Sources/Engine/Include/Engine/Asset/AssetTypeID.fbs @@ -1,3 +1,5 @@ +native_include "Engine/Asset/AssetTypeID.hpp"; + namespace Flat.Bigfoot; struct AssetTypeID (native_type: "::Bigfoot::AssetTypeID") diff --git a/Bigfoot/Sources/Engine/Include/Engine/Asset/AssetTypeID.hpp b/Bigfoot/Sources/Engine/Include/Engine/Asset/AssetTypeID.hpp index 35f90bf..f8a48e2 100644 --- a/Bigfoot/Sources/Engine/Include/Engine/Asset/AssetTypeID.hpp +++ b/Bigfoot/Sources/Engine/Include/Engine/Asset/AssetTypeID.hpp @@ -6,8 +6,6 @@ *********************************************************************/ #ifndef BIGFOOT_ENGINE_ASSETTYPEID_HPP #define BIGFOOT_ENGINE_ASSETTYPEID_HPP -#include - #include namespace Bigfoot @@ -15,6 +13,18 @@ namespace Bigfoot using AssetTypeID = std::uint64_t; } +/****************************************************************************************/ + +namespace Flat +{ +namespace Bigfoot +{ +struct AssetTypeID; +} +} // namespace Flat + +/****************************************************************************************/ + namespace flatbuffers { Flat::Bigfoot::AssetTypeID Pack(const Bigfoot::AssetTypeID& p_assetTypeID); diff --git a/Bigfoot/Sources/Engine/Include/Engine/Asset/AssetTypeID_generated.hpp b/Bigfoot/Sources/Engine/Include/Engine/Asset/AssetTypeID_generated.hpp index 1e2726b..9baaf79 100644 --- a/Bigfoot/Sources/Engine/Include/Engine/Asset/AssetTypeID_generated.hpp +++ b/Bigfoot/Sources/Engine/Include/Engine/Asset/AssetTypeID_generated.hpp @@ -13,8 +13,11 @@ static_assert(FLATBUFFERS_VERSION_MAJOR == 25 && FLATBUFFERS_VERSION_REVISION == 19, "Non-compatible flatbuffers version included"); +#include "Engine/Asset/AssetTypeID.hpp" + #include "EASTL/unique_ptr.h" #include "EASTL/string.h" +#include "EASTL/vector.h" namespace Flat { namespace Bigfoot { diff --git a/Bigfoot/Sources/Engine/Include/Engine/Asset/Asset_generated.hpp b/Bigfoot/Sources/Engine/Include/Engine/Asset/Asset_generated.hpp index 1f94f2b..973bfa3 100644 --- a/Bigfoot/Sources/Engine/Include/Engine/Asset/Asset_generated.hpp +++ b/Bigfoot/Sources/Engine/Include/Engine/Asset/Asset_generated.hpp @@ -13,7 +13,6 @@ static_assert(FLATBUFFERS_VERSION_MAJOR == 25 && FLATBUFFERS_VERSION_REVISION == 19, "Non-compatible flatbuffers version included"); -#include "Engine/Asset/AssetTypeID.hpp" #include "Engine/Asset/AssetTypeID.hpp" #include "System/UUID/UUID.hpp" #include "Engine/Asset/AssetTypeID_generated.hpp" @@ -21,6 +20,7 @@ static_assert(FLATBUFFERS_VERSION_MAJOR == 25 && #include "EASTL/unique_ptr.h" #include "EASTL/string.h" +#include "EASTL/vector.h" namespace Flat { namespace Bigfoot { @@ -47,7 +47,7 @@ struct AssetHeaderT : public ::flatbuffers::NativeTable { ::Bigfoot::AssetTypeID type_id{}; eastl::string type_name{}; uint32_t version = 0; - std::vector<::Bigfoot::UUID> dependencies{}; + eastl::vector<::Bigfoot::UUID> dependencies{}; }; struct AssetHeader FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table { @@ -174,7 +174,7 @@ struct AssetT : public ::flatbuffers::NativeTable { return "Flat.Bigfoot.AssetT"; } eastl::unique_ptr header{}; - std::vector asset{}; + eastl::vector inner_asset{}; AssetT() = default; AssetT(const AssetT &o); AssetT(AssetT&&) FLATBUFFERS_NOEXCEPT = default; @@ -193,21 +193,21 @@ struct Asset FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table { } enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { VT_HEADER = 4, - VT_ASSET = 6 + VT_INNER_ASSET = 6 }; const Flat::Bigfoot::AssetHeader *header() const { return GetPointer(VT_HEADER); } - const ::flatbuffers::Vector *asset() const { - return GetPointer *>(VT_ASSET); + const ::flatbuffers::Vector *inner_asset() const { + return GetPointer *>(VT_INNER_ASSET); } template bool Verify(::flatbuffers::VerifierTemplate &verifier) const { return VerifyTableStart(verifier) && VerifyOffsetRequired(verifier, VT_HEADER) && verifier.VerifyTable(header()) && - VerifyOffsetRequired(verifier, VT_ASSET) && - verifier.VerifyVector(asset()) && + VerifyOffsetRequired(verifier, VT_INNER_ASSET) && + verifier.VerifyVector(inner_asset()) && verifier.EndTable(); } AssetT *UnPack(const ::flatbuffers::resolver_function_t *_resolver = nullptr) const; @@ -222,8 +222,8 @@ struct AssetBuilder { void add_header(::flatbuffers::Offset header) { fbb_.AddOffset(Asset::VT_HEADER, header); } - void add_asset(::flatbuffers::Offset<::flatbuffers::Vector> asset) { - fbb_.AddOffset(Asset::VT_ASSET, asset); + void add_inner_asset(::flatbuffers::Offset<::flatbuffers::Vector> inner_asset) { + fbb_.AddOffset(Asset::VT_INNER_ASSET, inner_asset); } explicit AssetBuilder(::flatbuffers::FlatBufferBuilder &_fbb) : fbb_(_fbb) { @@ -233,7 +233,7 @@ struct AssetBuilder { const auto end = fbb_.EndTable(start_); auto o = ::flatbuffers::Offset(end); fbb_.Required(o, Asset::VT_HEADER); - fbb_.Required(o, Asset::VT_ASSET); + fbb_.Required(o, Asset::VT_INNER_ASSET); return o; } }; @@ -241,9 +241,9 @@ struct AssetBuilder { inline ::flatbuffers::Offset CreateAsset( ::flatbuffers::FlatBufferBuilder &_fbb, ::flatbuffers::Offset header = 0, - ::flatbuffers::Offset<::flatbuffers::Vector> asset = 0) { + ::flatbuffers::Offset<::flatbuffers::Vector> inner_asset = 0) { AssetBuilder builder_(_fbb); - builder_.add_asset(asset); + builder_.add_inner_asset(inner_asset); builder_.add_header(header); return builder_.Finish(); } @@ -285,7 +285,7 @@ inline ::flatbuffers::Offset AssetHeader::Pack(::flatbuffers::FlatB auto _type_id = ::flatbuffers::Pack(_o->type_id); auto _type_name = _fbb.CreateString(_o->type_name); auto _version = _o->version; - auto _dependencies = _fbb.CreateVectorOfNativeStructs(_o->dependencies); + auto _dependencies = _fbb.CreateVectorOfNativeStructs(_o->dependencies.data(), _o->dependencies.size()); return Flat::Bigfoot::CreateAssetHeader( _fbb, &_uuid, @@ -298,12 +298,12 @@ inline ::flatbuffers::Offset AssetHeader::Pack(::flatbuffers::FlatB inline AssetT::AssetT(const AssetT &o) : header((o.header) ? new Flat::Bigfoot::AssetHeaderT(*o.header) : nullptr), - asset(o.asset) { + inner_asset(o.inner_asset) { } inline AssetT &AssetT::operator=(AssetT o) FLATBUFFERS_NOEXCEPT { std::swap(header, o.header); - std::swap(asset, o.asset); + std::swap(inner_asset, o.inner_asset); return *this; } @@ -317,7 +317,7 @@ inline void Asset::UnPackTo(AssetT *_o, const ::flatbuffers::resolver_function_t (void)_o; (void)_resolver; { auto _e = header(); if (_e) { if(_o->header) { _e->UnPackTo(_o->header.get(), _resolver); } else { _o->header = eastl::unique_ptr(_e->UnPack(_resolver)); } } else if (_o->header) { _o->header.reset(); } } - { auto _e = asset(); if (_e) { _o->asset.resize(_e->size()); std::copy(_e->begin(), _e->end(), _o->asset.begin()); } } + { auto _e = inner_asset(); if (_e) { _o->inner_asset.resize(_e->size()); std::copy(_e->begin(), _e->end(), _o->inner_asset.begin()); } } } inline ::flatbuffers::Offset CreateAsset(::flatbuffers::FlatBufferBuilder &_fbb, const AssetT *_o, const ::flatbuffers::rehasher_function_t *_rehasher) { @@ -329,11 +329,11 @@ inline ::flatbuffers::Offset Asset::Pack(::flatbuffers::FlatBufferBuilder (void)_o; struct _VectorArgs { ::flatbuffers::FlatBufferBuilder *__fbb; const AssetT* __o; const ::flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; auto _header = _o->header ? CreateAssetHeader(_fbb, _o->header.get(), _rehasher) : 0; - auto _asset = _fbb.CreateVector(_o->asset); + auto _inner_asset = _fbb.CreateVector(_o->inner_asset.data(), _o->inner_asset.size()); return Flat::Bigfoot::CreateAsset( _fbb, _header, - _asset); + _inner_asset); } inline const ::flatbuffers::TypeTable *AssetHeaderTypeTable() { @@ -373,7 +373,7 @@ inline const ::flatbuffers::TypeTable *AssetTypeTable() { }; static const char * const names[] = { "header", - "asset" + "inner_asset" }; static const ::flatbuffers::TypeTable tt = { ::flatbuffers::ST_TABLE, 2, type_codes, type_refs, nullptr, nullptr, names diff --git a/Bigfoot/Sources/Engine/Include/Engine/Asset/Reference.bfbs b/Bigfoot/Sources/Engine/Include/Engine/Asset/Reference.bfbs index 18303e3150d75166901e59f6cc18004640a421b3..f407815923c90b987d5fe59c2e6564eddc10053d 100644 GIT binary patch delta 189 zcmaFBa)D(+O#KoD1_lctwqayoU;@${Kr8~p3IG28cL9pA0NEf=0OU^r(jY!im_Y+b z@cjS(AH1p}-C3?a6X(d6aX+U9yBme$${g(hT hK!&zVd@IdZGMSUnSWW@R#n9)GSd;?RH#v#%9{^}>C{q9c delta 228 zcmcb>@_=PRO#K=L1_lct_F-gTU;@${Kr8~p0ssF04*`m?0NEgr0OZdB(jY!in85-_ z`~ixAxH3RO04ffmOQ38GAT0;PZaIl1dQO??Y5DmjdO@jasYR)I$*Fq5`DtJ-1H&Gm vK@vcPAj50^gAL^eIR<1ANUXFpGX+R7 g_Reference_bfbs = { + inline constexpr eastl::array g_Reference_bfbs = { std::byte{0x1C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x42}, std::byte{0x46}, std::byte{0x42}, std::byte{0x53}, std::byte{0x14}, std::byte{0x00}, std::byte{0x24}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x08}, std::byte{0x00}, std::byte{0x0C}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x1C}, std::byte{0x00}, std::byte{0x18}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x38}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x30}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x24}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x18}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x34}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, - std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x03}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0xAC}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, - std::byte{0x38}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x4C}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x02}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x08}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, - std::byte{0x14}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x50}, std::byte{0xFE}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x54}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, - std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x60}, std::byte{0xFE}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x9C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, - std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x38}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0xFC}, std::byte{0xFE}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, + std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x03}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0xA4}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, + std::byte{0x38}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x3C}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x02}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x08}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, + std::byte{0x14}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x60}, std::byte{0xFE}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x44}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, + std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x70}, std::byte{0xFE}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x94}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, + std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x28}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0C}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x1C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, - std::byte{0x74}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x28}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x1E}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, - std::byte{0x46}, std::byte{0x6C}, std::byte{0x61}, std::byte{0x74}, std::byte{0x2E}, std::byte{0x42}, std::byte{0x69}, std::byte{0x67}, std::byte{0x66}, std::byte{0x6F}, std::byte{0x6F}, std::byte{0x74}, std::byte{0x2E}, std::byte{0x52}, std::byte{0x65}, std::byte{0x66}, - std::byte{0x65}, std::byte{0x72}, std::byte{0x65}, std::byte{0x6E}, std::byte{0x63}, std::byte{0x65}, std::byte{0x2E}, std::byte{0x53}, std::byte{0x6F}, std::byte{0x66}, std::byte{0x74}, std::byte{0x52}, std::byte{0x65}, std::byte{0x66}, std::byte{0x00}, std::byte{0x00}, - std::byte{0xBC}, std::byte{0xFE}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x18}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x7C}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0xFF}, - std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0F}, std::byte{0x02}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, - std::byte{0x75}, std::byte{0x75}, std::byte{0x69}, std::byte{0x64}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x6C}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, - std::byte{0x30}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x24}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, - std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0F}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x2F}, std::byte{0x2F}, std::byte{0x52}, std::byte{0x65}, std::byte{0x66}, std::byte{0x65}, std::byte{0x72}, std::byte{0x65}, - std::byte{0x6E}, std::byte{0x63}, std::byte{0x65}, std::byte{0x2E}, std::byte{0x66}, std::byte{0x62}, std::byte{0x73}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x28}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, - std::byte{0x1E}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x46}, std::byte{0x6C}, std::byte{0x61}, std::byte{0x74}, std::byte{0x2E}, std::byte{0x42}, std::byte{0x69}, std::byte{0x67}, std::byte{0x66}, std::byte{0x6F}, std::byte{0x6F}, std::byte{0x74}, - std::byte{0x2E}, std::byte{0x52}, std::byte{0x65}, std::byte{0x66}, std::byte{0x65}, std::byte{0x72}, std::byte{0x65}, std::byte{0x6E}, std::byte{0x63}, std::byte{0x65}, std::byte{0x2E}, std::byte{0x48}, std::byte{0x61}, std::byte{0x72}, std::byte{0x64}, std::byte{0x52}, - std::byte{0x65}, std::byte{0x66}, std::byte{0x00}, std::byte{0x00}, std::byte{0x40}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x28}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, + std::byte{0x6C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x20}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, + std::byte{0x46}, std::byte{0x6C}, std::byte{0x61}, std::byte{0x74}, std::byte{0x2E}, std::byte{0x42}, std::byte{0x69}, std::byte{0x67}, std::byte{0x66}, std::byte{0x6F}, std::byte{0x6F}, std::byte{0x74}, std::byte{0x2E}, std::byte{0x53}, std::byte{0x6F}, std::byte{0x66}, + std::byte{0x74}, std::byte{0x52}, std::byte{0x65}, std::byte{0x66}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0xC4}, std::byte{0xFE}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x18}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, + std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x84}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0F}, std::byte{0x02}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, + std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x75}, std::byte{0x75}, std::byte{0x69}, std::byte{0x64}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, + std::byte{0x74}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x30}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x24}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, + std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0F}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, + std::byte{0x2F}, std::byte{0x2F}, std::byte{0x52}, std::byte{0x65}, std::byte{0x66}, std::byte{0x65}, std::byte{0x72}, std::byte{0x65}, std::byte{0x6E}, std::byte{0x63}, std::byte{0x65}, std::byte{0x2E}, std::byte{0x66}, std::byte{0x62}, std::byte{0x73}, std::byte{0x00}, + std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x20}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x46}, std::byte{0x6C}, std::byte{0x61}, std::byte{0x74}, + std::byte{0x2E}, std::byte{0x42}, std::byte{0x69}, std::byte{0x67}, std::byte{0x66}, std::byte{0x6F}, std::byte{0x6F}, std::byte{0x74}, std::byte{0x2E}, std::byte{0x48}, std::byte{0x61}, std::byte{0x72}, std::byte{0x64}, std::byte{0x52}, std::byte{0x65}, std::byte{0x66}, + std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x40}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x28}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x07}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x08}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0C}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0F}, std::byte{0x02}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x75}, std::byte{0x75}, std::byte{0x69}, std::byte{0x64}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x1C}, std::byte{0x00}, diff --git a/Bigfoot/Sources/Engine/Include/Engine/Asset/Reference.fbs b/Bigfoot/Sources/Engine/Include/Engine/Asset/Reference.fbs index 5d96978..1c96e1c 100644 --- a/Bigfoot/Sources/Engine/Include/Engine/Asset/Reference.fbs +++ b/Bigfoot/Sources/Engine/Include/Engine/Asset/Reference.fbs @@ -1,14 +1,15 @@ -include "System/UUID/UUID.fbs"; -native_include "System/UUID/UUID.hpp"; +native_include "Engine/Asset/Reference.hpp"; -namespace Flat.Bigfoot.Reference; +include "System/UUID/UUID.fbs"; + +namespace Flat.Bigfoot; struct HardRef { - uuid:UUID (native_inline); + uuid:UUID; } struct SoftRef { - uuid:UUID (native_inline); + uuid:UUID; } \ No newline at end of file diff --git a/Bigfoot/Sources/Engine/Include/Engine/Asset/Reference.hpp b/Bigfoot/Sources/Engine/Include/Engine/Asset/Reference.hpp index a6ec5fb..1e023e0 100644 --- a/Bigfoot/Sources/Engine/Include/Engine/Asset/Reference.hpp +++ b/Bigfoot/Sources/Engine/Include/Engine/Asset/Reference.hpp @@ -6,7 +6,7 @@ *********************************************************************/ #ifndef BIGFOOT_ENGINE_REFERENCE_HPP #define BIGFOOT_ENGINE_REFERENCE_HPP -#include +#include namespace Bigfoot { @@ -35,6 +35,12 @@ class HardRef HardRef& operator=(const HardRef& p_ref) = default; HardRef& operator=(HardRef&& p_ref) = default; + [[nodiscard]] + bool operator==(const HardRef& p_ref) const + { + return m_uuid == p_ref.m_uuid; + } + private: UUID m_uuid = UUID::NULL_UUID; }; @@ -64,61 +70,68 @@ class SoftRef SoftRef& operator=(const SoftRef& p_ref) = default; SoftRef& operator=(SoftRef&& p_ref) = default; + [[nodiscard]] + bool operator==(const SoftRef& p_ref) const + { + return m_uuid == p_ref.m_uuid; + } + private: UUID m_uuid = UUID::NULL_UUID; }; } // namespace Bigfoot +#define ASSET_SOFT_REF_DECL(AssetName, AssetType) \ + namespace flatbuffers \ + { \ + Flat::Bigfoot::SoftRef PackSoftRef##AssetName(const Bigfoot::SoftRef& p_softRef); \ + Bigfoot::SoftRef UnPackSoftRef##AssetName(const Flat::Bigfoot::SoftRef& p_softRef); \ + } + +#define ASSET_HARD_REF_DECL(AssetName, AssetType) \ + namespace flatbuffers \ + { \ + Flat::Bigfoot::HardRef PackHardRef##AssetName(const Bigfoot::HardRef& p_hardRef); \ + Bigfoot::HardRef UnPackHardRef##AssetName(const Flat::Bigfoot::HardRef& p_hardRef); \ + } + +#define ASSET_REF_DECL(AssetName, AssetType) \ + ASSET_SOFT_REF_DECL(AssetName, AssetType) \ + ASSET_HARD_REF_DECL(AssetName, AssetType) + +#define ASSET_DECL(AssetName, AssetType) ASSET_REF_DECL(AssetName, AssetType) + /****************************************************************************************/ -#define ASSET_HARD_REF_DECL(Ref, FlatRef) \ +#define ASSET_SOFT_REF_IMPL(AssetName, AssetType) \ namespace flatbuffers \ { \ - ::Flat::Bigfoot::Reference::FlatRef Pack(const ::Bigfoot::HardRef<::Bigfoot::Ref>& p_ref); \ - ::Bigfoot::HardRef<::Bigfoot::Ref> UnPack(const ::Flat::Bigfoot::Reference::FlatRef& p_ref); \ - } // namespace flatbuffers + Flat::Bigfoot::SoftRef PackSoftRef##AssetName(const Bigfoot::SoftRef& p_softRef) \ + { \ + return {flatbuffers::Pack(p_softRef.GetUUID())}; \ + } \ + Bigfoot::SoftRef UnPackSoftRef##AssetName(const Flat::Bigfoot::SoftRef& p_softRef) \ + { \ + return {flatbuffers::UnPack(p_softRef.uuid())}; \ + } \ + } -#define ASSET_HARD_REF_IMPL(Ref, FlatRef) \ +#define ASSET_HARD_REF_IMPL(AssetName, AssetType) \ namespace flatbuffers \ { \ - ::Flat::Bigfoot::Reference::FlatRef Pack(const ::Bigfoot::HardRef<::Bigfoot::Ref>& p_ref) \ + Flat::Bigfoot::HardRef PackHardRef##AssetName(const Bigfoot::HardRef& p_softRef) \ { \ - return ::Flat::Bigfoot::Reference::FlatRef { \ - ::Flat::Bigfoot::Reference::HardRef {flatbuffers::Pack(p_ref.GetUUID())}}; \ + return {flatbuffers::Pack(p_softRef.GetUUID())}; \ } \ - ::Bigfoot::HardRef<::Bigfoot::Ref> UnPack(const ::Flat::Bigfoot::Reference::FlatRef& p_ref) \ + Bigfoot::HardRef UnPackHardRef##AssetName(const Flat::Bigfoot::HardRef& p_softRef) \ { \ - return ::Bigfoot::HardRef<::Bigfoot::Ref> {flatbuffers::UnPack(p_ref.hard_ref().uuid())}; \ + return {flatbuffers::UnPack(p_softRef.uuid())}; \ } \ - } // namespace flatbuffers + } -#define ASSET_SOFT_REF_DECL(Ref, FlatRef) \ - namespace flatbuffers \ - { \ - ::Flat::Bigfoot::Reference::FlatRef Pack(const ::Bigfoot::SoftRef<::Bigfoot::Ref>& p_ref); \ - ::Bigfoot::SoftRef<::Bigfoot::Ref> UnPack(const ::Flat::Bigfoot::Reference::FlatRef& p_ref); \ - } // namespace flatbuffers - -#define ASSET_SOFT_REF_IMPL(Ref, FlatRef) \ - namespace flatbuffers \ - { \ - ::Flat::Bigfoot::Reference::FlatRef Pack(const ::Bigfoot::SoftRef<::Bigfoot::Ref>& p_ref) \ - { \ - return ::Flat::Bigfoot::Reference::FlatRef { \ - ::Flat::Bigfoot::Reference::SoftRef {flatbuffers::Pack(p_ref.GetUUID())}}; \ - } \ - ::Bigfoot::SoftRef<::Bigfoot::Ref> UnPack(const ::Flat::Bigfoot::Reference::FlatRef& p_ref) \ - { \ - return ::Bigfoot::SoftRef<::Bigfoot::Ref> {flatbuffers::UnPack(p_ref.soft_ref().uuid())}; \ - } \ - } // namespace flatbuffers - -#define ASSET_REF_DECL(Ref) \ - ASSET_HARD_REF_DECL(Ref, Ref##HardRef) \ - ASSET_SOFT_REF_DECL(Ref, Ref##SoftRef) - -#define ASSET_REF_IMPL(Ref) \ - ASSET_HARD_REF_IMPL(Ref, Ref##HardRef) \ - ASSET_SOFT_REF_IMPL(Ref, Ref##SoftRef) +#define ASSET_REF_IMPL(AssetName, AssetType) \ + ASSET_SOFT_REF_IMPL(AssetName, AssetType) \ + ASSET_HARD_REF_IMPL(AssetName, AssetType) +#define ASSET_IMPL(AssetName, AssetType) ASSET_REF_IMPL(AssetName, AssetType) #endif diff --git a/Bigfoot/Sources/Engine/Include/Engine/Asset/Reference_generated.hpp b/Bigfoot/Sources/Engine/Include/Engine/Asset/Reference_generated.hpp index eb4e504..c25740f 100644 --- a/Bigfoot/Sources/Engine/Include/Engine/Asset/Reference_generated.hpp +++ b/Bigfoot/Sources/Engine/Include/Engine/Asset/Reference_generated.hpp @@ -1,8 +1,8 @@ // automatically generated by the FlatBuffers compiler, do not modify -#ifndef FLATBUFFERS_GENERATED_REFERENCE_FLAT_BIGFOOT_REFERENCE_H_ -#define FLATBUFFERS_GENERATED_REFERENCE_FLAT_BIGFOOT_REFERENCE_H_ +#ifndef FLATBUFFERS_GENERATED_REFERENCE_FLAT_BIGFOOT_H_ +#define FLATBUFFERS_GENERATED_REFERENCE_FLAT_BIGFOOT_H_ #include "flatbuffers/flatbuffers.h" @@ -13,15 +13,17 @@ static_assert(FLATBUFFERS_VERSION_MAJOR == 25 && FLATBUFFERS_VERSION_REVISION == 19, "Non-compatible flatbuffers version included"); +#include "Engine/Asset/Reference.hpp" #include "System/UUID/UUID.hpp" +#include "Engine/Asset/Reference.hpp" #include "System/UUID/UUID_generated.hpp" #include "EASTL/unique_ptr.h" #include "EASTL/string.h" +#include "EASTL/vector.h" namespace Flat { namespace Bigfoot { -namespace Reference { struct HardRef; @@ -41,7 +43,7 @@ FLATBUFFERS_MANUALLY_ALIGNED_STRUCT(1) HardRef FLATBUFFERS_FINAL_CLASS { return HardRefTypeTable(); } static FLATBUFFERS_CONSTEXPR_CPP11 const char *GetFullyQualifiedName() { - return "Flat.Bigfoot.Reference.HardRef"; + return "Flat.Bigfoot.HardRef"; } HardRef() : uuid_() { @@ -69,7 +71,7 @@ FLATBUFFERS_MANUALLY_ALIGNED_STRUCT(1) SoftRef FLATBUFFERS_FINAL_CLASS { return SoftRefTypeTable(); } static FLATBUFFERS_CONSTEXPR_CPP11 const char *GetFullyQualifiedName() { - return "Flat.Bigfoot.Reference.SoftRef"; + return "Flat.Bigfoot.SoftRef"; } SoftRef() : uuid_() { @@ -121,8 +123,7 @@ inline const ::flatbuffers::TypeTable *SoftRefTypeTable() { return &tt; } -} // namespace Reference } // namespace Bigfoot } // namespace Flat -#endif // FLATBUFFERS_GENERATED_REFERENCE_FLAT_BIGFOOT_REFERENCE_H_ +#endif // FLATBUFFERS_GENERATED_REFERENCE_FLAT_BIGFOOT_H_ diff --git a/Bigfoot/Sources/Engine/Include/Engine/BigFile/BigFile.hpp b/Bigfoot/Sources/Engine/Include/Engine/BigFile/BigFile.hpp index f3cd515..0fd7d20 100644 --- a/Bigfoot/Sources/Engine/Include/Engine/BigFile/BigFile.hpp +++ b/Bigfoot/Sources/Engine/Include/Engine/BigFile/BigFile.hpp @@ -26,8 +26,8 @@ class BigFile */ BigFile(const File& p_file); - BigFile(const BigFile& p_bigFile) = default; - BigFile(BigFile&& p_bigFile) = default; + BigFile(const BigFile& p_bigFile) = delete; + BigFile(BigFile&& p_bigFile) = delete; /** * Begin a transaction @@ -49,8 +49,8 @@ class BigFile ~BigFile(); - BigFile& operator=(const BigFile& p_bigFile) = default; - BigFile& operator=(BigFile&& p_bigFile) = default; + BigFile& operator=(const BigFile& p_bigFile) = delete; + BigFile& operator=(BigFile&& p_bigFile) = delete; class Request { diff --git a/Bigfoot/Sources/System/Include/System/Log/Log_generated.hpp b/Bigfoot/Sources/System/Include/System/Log/Log_generated.hpp index 016228b..33a06d8 100644 --- a/Bigfoot/Sources/System/Include/System/Log/Log_generated.hpp +++ b/Bigfoot/Sources/System/Include/System/Log/Log_generated.hpp @@ -15,6 +15,7 @@ static_assert(FLATBUFFERS_VERSION_MAJOR == 25 && #include "EASTL/unique_ptr.h" #include "EASTL/string.h" +#include "EASTL/vector.h" namespace Bigfoot { namespace Flat { diff --git a/Bigfoot/Sources/System/Include/System/Time/Time.bfbs b/Bigfoot/Sources/System/Include/System/Time/Time.bfbs index 8086015e455a1e699cf1764059d9fdb4b5edb0e0..dade096c72e59cba93a94e2a1efef82b4465bb32 100644 GIT binary patch delta 21 ccmbQhG=XWt9&Wds#1cKH%=EPU{E5ds0aLmNC;$Ke delta 21 ccmbQhG=XWt9&V@1^tAl^5 - #include #include #include @@ -69,10 +67,20 @@ class Time /****************************************************************************************/ +namespace Flat +{ +namespace Bigfoot +{ +struct Time; +} +} // namespace Flat + +/****************************************************************************************/ + namespace flatbuffers { -Bigfoot::Flat::Time Pack(const Bigfoot::Time& p_time); -Bigfoot::Time UnPack(const Bigfoot::Flat::Time& p_flatTime); +Flat::Bigfoot::Time Pack(const Bigfoot::Time& p_time); +Bigfoot::Time UnPack(const Flat::Bigfoot::Time& p_flatTime); } // namespace flatbuffers #endif diff --git a/Bigfoot/Sources/System/Include/System/Time/Time_generated.hpp b/Bigfoot/Sources/System/Include/System/Time/Time_generated.hpp index fe25a56..bc45238 100644 --- a/Bigfoot/Sources/System/Include/System/Time/Time_generated.hpp +++ b/Bigfoot/Sources/System/Include/System/Time/Time_generated.hpp @@ -1,8 +1,8 @@ // automatically generated by the FlatBuffers compiler, do not modify -#ifndef FLATBUFFERS_GENERATED_TIME_BIGFOOT_FLAT_H_ -#define FLATBUFFERS_GENERATED_TIME_BIGFOOT_FLAT_H_ +#ifndef FLATBUFFERS_GENERATED_TIME_FLAT_BIGFOOT_H_ +#define FLATBUFFERS_GENERATED_TIME_FLAT_BIGFOOT_H_ #include "flatbuffers/flatbuffers.h" @@ -13,11 +13,14 @@ static_assert(FLATBUFFERS_VERSION_MAJOR == 25 && FLATBUFFERS_VERSION_REVISION == 19, "Non-compatible flatbuffers version included"); +#include "System/Time/Time.hpp" + #include "EASTL/unique_ptr.h" #include "EASTL/string.h" +#include "EASTL/vector.h" -namespace Bigfoot { namespace Flat { +namespace Bigfoot { struct Time; @@ -33,7 +36,7 @@ FLATBUFFERS_MANUALLY_ALIGNED_STRUCT(8) Time FLATBUFFERS_FINAL_CLASS { return TimeTypeTable(); } static FLATBUFFERS_CONSTEXPR_CPP11 const char *GetFullyQualifiedName() { - return "Bigfoot.Flat.Time"; + return "Flat.Bigfoot.Time"; } Time() : epoch_(0) { @@ -65,7 +68,7 @@ inline const ::flatbuffers::TypeTable *TimeTypeTable() { return &tt; } -} // namespace Flat } // namespace Bigfoot +} // namespace Flat -#endif // FLATBUFFERS_GENERATED_TIME_BIGFOOT_FLAT_H_ +#endif // FLATBUFFERS_GENERATED_TIME_FLAT_BIGFOOT_H_ diff --git a/Bigfoot/Sources/System/Include/System/UUID/UUID.fbs b/Bigfoot/Sources/System/Include/System/UUID/UUID.fbs index bbdfbd0..6fab320 100644 --- a/Bigfoot/Sources/System/Include/System/UUID/UUID.fbs +++ b/Bigfoot/Sources/System/Include/System/UUID/UUID.fbs @@ -1,3 +1,5 @@ +native_include "System/UUID/UUID.hpp"; + namespace Flat.Bigfoot; struct UUID (native_type: "::Bigfoot::UUID") diff --git a/Bigfoot/Sources/System/Include/System/UUID/UUID.hpp b/Bigfoot/Sources/System/Include/System/UUID/UUID.hpp index 06aef39..bb98558 100644 --- a/Bigfoot/Sources/System/Include/System/UUID/UUID.hpp +++ b/Bigfoot/Sources/System/Include/System/UUID/UUID.hpp @@ -6,8 +6,6 @@ *********************************************************************/ #ifndef BIGFOOT_SYSTEM_UUID_HPP #define BIGFOOT_SYSTEM_UUID_HPP -#include - #include namespace Bigfoot @@ -146,6 +144,16 @@ struct quill::Codec: quill::DeferredFormatCodec /****************************************************************************************/ +namespace Flat +{ +namespace Bigfoot +{ +struct UUID; +} +} // namespace Flat + +/****************************************************************************************/ + namespace flatbuffers { Flat::Bigfoot::UUID Pack(const Bigfoot::UUID& p_uuid); diff --git a/Bigfoot/Sources/System/Include/System/UUID/UUID_generated.hpp b/Bigfoot/Sources/System/Include/System/UUID/UUID_generated.hpp index d743771..138bdf0 100644 --- a/Bigfoot/Sources/System/Include/System/UUID/UUID_generated.hpp +++ b/Bigfoot/Sources/System/Include/System/UUID/UUID_generated.hpp @@ -13,8 +13,11 @@ static_assert(FLATBUFFERS_VERSION_MAJOR == 25 && FLATBUFFERS_VERSION_REVISION == 19, "Non-compatible flatbuffers version included"); +#include "System/UUID/UUID.hpp" + #include "EASTL/unique_ptr.h" #include "EASTL/string.h" +#include "EASTL/vector.h" namespace Flat { namespace Bigfoot { diff --git a/Bigfoot/Sources/System/Time/Time.cpp b/Bigfoot/Sources/System/Time/Time.cpp index c782ebc..2fe61fd 100644 --- a/Bigfoot/Sources/System/Time/Time.cpp +++ b/Bigfoot/Sources/System/Time/Time.cpp @@ -5,6 +5,7 @@ * \date December 2025 *********************************************************************/ #include +#include #include @@ -124,14 +125,14 @@ Time Time::Now() namespace flatbuffers { -Bigfoot::Flat::Time Pack(const Bigfoot::Time& p_time) +Flat::Bigfoot::Time Pack(const Bigfoot::Time& p_time) { - return Bigfoot::Flat::Time {p_time.Epoch()}; + return Flat::Bigfoot::Time {p_time.Epoch()}; } /****************************************************************************************/ -Bigfoot::Time UnPack(const Bigfoot::Flat::Time& p_flatTime) +Bigfoot::Time UnPack(const Flat::Bigfoot::Time& p_flatTime) { return Bigfoot::Time {p_flatTime.epoch()}; } diff --git a/Bigfoot/Sources/System/UUID/UUID.cpp b/Bigfoot/Sources/System/UUID/UUID.cpp index 19fcd69..b0e7513 100644 --- a/Bigfoot/Sources/System/UUID/UUID.cpp +++ b/Bigfoot/Sources/System/UUID/UUID.cpp @@ -5,6 +5,7 @@ * \date October 2025 *********************************************************************/ #include +#include namespace Bigfoot { diff --git a/Bigfoot/Sources/Utils/Include/Utils/Singleton.hpp b/Bigfoot/Sources/Utils/Include/Utils/Singleton.hpp index 33f65d0..8b8277d 100644 --- a/Bigfoot/Sources/Utils/Include/Utils/Singleton.hpp +++ b/Bigfoot/Sources/Utils/Include/Utils/Singleton.hpp @@ -68,15 +68,11 @@ class Singleton Finalize(); } - [[nodiscard]] Lifetime& operator=(const Lifetime& p_lifetime) = delete; - [[nodiscard]] Lifetime& operator=(Lifetime&& p_lifetime) = delete; }; - [[nodiscard]] Singleton& operator=(const Singleton& p_singleton) = delete; - [[nodiscard]] Singleton& operator=(Singleton&& p_singleton) = delete; private: diff --git a/Bigfoot/Tests/Engine/Asset/Asset.cpp b/Bigfoot/Tests/Engine/Asset/Asset.cpp index 824e465..513a04e 100644 --- a/Bigfoot/Tests/Engine/Asset/Asset.cpp +++ b/Bigfoot/Tests/Engine/Asset/Asset.cpp @@ -15,8 +15,7 @@ #include #include - -#include +#include #include @@ -35,7 +34,7 @@ class AssetFixture: public ::testing::Test /****************************************************************************************/ -TEST_F(AssetFixture, Asset) +TEST_F(AssetFixture, AssetATests) { constexpr eastl::string_view name = "Hello"; constexpr std::uint32_t version = 42; @@ -48,61 +47,198 @@ TEST_F(AssetFixture, Asset) assetA.GetAsset().health = health; assetA.GetAsset().mana = mana; - const eastl::vector test = assetA.Pack(); + const eastl::vector test = assetA.Save(); - AssetA assetB {test}; + AssetA assetA_dup {test}; - EXPECT_EQ(assetA.GetHeader().uuid, assetB.GetHeader().uuid); + EXPECT_EQ(assetA.GetHeader().uuid, assetA_dup.GetHeader().uuid); EXPECT_EQ(assetA.GetHeader().type_id, AssetA::GetTypeID()); - EXPECT_EQ(assetA.GetHeader().type_id, assetB.GetHeader().type_id); + EXPECT_EQ(assetA.GetHeader().type_id, assetA_dup.GetHeader().type_id); EXPECT_EQ(assetA.GetHeader().type_name, AssetA::GetTypeName()); - EXPECT_EQ(assetA.GetHeader().type_name, assetB.GetHeader().type_name); + EXPECT_EQ(assetA.GetHeader().type_name, assetA_dup.GetHeader().type_name); EXPECT_EQ(assetA.GetHeader().name, name); - EXPECT_EQ(assetA.GetHeader().name, assetB.GetHeader().name); + EXPECT_EQ(assetA.GetHeader().name, assetA_dup.GetHeader().name); EXPECT_EQ(assetA.GetHeader().version, version); - EXPECT_EQ(assetA.GetHeader().version, assetB.GetHeader().version); + EXPECT_EQ(assetA.GetHeader().version, assetA_dup.GetHeader().version); - EXPECT_EQ(assetA.GetHeader().dependencies, assetB.GetHeader().dependencies); + EXPECT_TRUE(assetA.GetHeader().dependencies.empty()); + EXPECT_EQ(assetA.GetHeader().dependencies, assetA_dup.GetHeader().dependencies); EXPECT_EQ(assetA.GetAsset().health, health); - EXPECT_EQ(assetA.GetAsset().health, assetB.GetAsset().health); + EXPECT_EQ(assetA.GetAsset().health, assetA_dup.GetAsset().health); EXPECT_EQ(assetA.GetAsset().mana, mana); - EXPECT_EQ(assetA.GetAsset().mana, assetB.GetAsset().mana); + EXPECT_EQ(assetA.GetAsset().mana, assetA_dup.GetAsset().mana); } /****************************************************************************************/ -TEST_F(AssetFixture, Reflection) +TEST_F(AssetFixture, AssetBTests) { - [[maybe_unused]] - const reflection::Schema* reflection = reflection::GetSchema(AssetA::ReflectionInfo().data()); + constexpr eastl::string_view nameA = "Hello"; + constexpr std::uint32_t versionA = 42; + constexpr std::uint32_t healthA = 100; + constexpr std::uint32_t manaA = 50; - for (const auto test: *reflection->root_table()->fields()) - { - eastl::string typeName; + AssetA assetA; + assetA.SetName(nameA); + assetA.SetVersion(versionA); + assetA.GetAsset().health = healthA; + assetA.GetAsset().mana = manaA; - if (test->type()->base_type() == reflection::BaseType::Obj) - { - const reflection::Object* obj = reflection->objects()->Get(test->type()->index()); - typeName = obj->name()->c_str(); - } - else if (test->type()->base_type() == reflection::BaseType::Vector && - test->type()->element() == reflection::BaseType::Obj) - { - const reflection::Object* obj = reflection->objects()->Get(test->type()->index()); - typeName = eastl::string("[") + obj->name()->c_str() + "]"; - } - else - { - typeName = reflection::EnumNameBaseType(test->type()->base_type()); - } + constexpr eastl::string_view nameAA = "There"; + constexpr std::uint32_t versionAA = 42; + constexpr std::uint32_t healthAA = 100; + constexpr std::uint32_t manaAA = 50; - BIGFOOT_LOG_INFO(ENGINE_LOGGER, "{} {}", typeName, test->name()->c_str()); - } + AssetA assetAA; + assetAA.SetName(nameAA); + assetAA.SetVersion(versionAA); + assetAA.GetAsset().health = healthAA; + assetAA.GetAsset().mana = manaAA; + + constexpr eastl::string_view nameB = "Kenobi"; + constexpr std::uint32_t versionB = 1; + + AssetB assetB; + assetB.SetName(nameB); + assetB.SetVersion(versionB); + assetB.GetAsset().asset_a_ref = HardRef {assetA.GetHeader().uuid}; + assetB.GetAsset().asset_a_refs = {SoftRef {assetA.GetHeader().uuid}, + SoftRef {assetAA.GetHeader().uuid}}; + + const eastl::vector test = assetB.Save(); + + AssetB assetB_dup {test}; + + EXPECT_EQ(assetB.GetHeader().uuid, assetB_dup.GetHeader().uuid); + + EXPECT_EQ(assetB.GetHeader().type_id, AssetB::GetTypeID()); + EXPECT_EQ(assetB.GetHeader().type_id, assetB_dup.GetHeader().type_id); + + EXPECT_EQ(assetB.GetHeader().type_name, AssetB::GetTypeName()); + EXPECT_EQ(assetB.GetHeader().type_name, assetB_dup.GetHeader().type_name); + + EXPECT_EQ(assetB.GetHeader().name, nameB); + EXPECT_EQ(assetB.GetHeader().name, assetB_dup.GetHeader().name); + + EXPECT_EQ(assetB.GetHeader().version, versionB); + EXPECT_EQ(assetB.GetHeader().version, assetB_dup.GetHeader().version); + + EXPECT_EQ(assetB.GetHeader().dependencies.size(), 1); + EXPECT_NE(eastl::find(assetB.GetHeader().dependencies.begin(), + assetB.GetHeader().dependencies.end(), + assetA.GetHeader().uuid), + assetB.GetHeader().dependencies.end()); + EXPECT_EQ(assetB.GetHeader().dependencies, assetB_dup.GetHeader().dependencies); + + EXPECT_EQ(assetB.GetAsset().asset_a_ref, HardRef {assetA.GetHeader().uuid}); + EXPECT_EQ(assetB.GetAsset().asset_a_ref, assetB_dup.GetAsset().asset_a_ref); + + EXPECT_EQ(assetB.GetAsset().asset_a_refs, + (eastl::vector> {SoftRef {assetA.GetHeader().uuid}, + SoftRef {assetAA.GetHeader().uuid}})); + EXPECT_EQ(assetB.GetAsset().asset_a_refs, assetB_dup.GetAsset().asset_a_refs); +} + +/****************************************************************************************/ + +TEST_F(AssetFixture, AssetCTests) +{ + constexpr eastl::string_view nameA = "Hello"; + constexpr std::uint32_t versionA = 42; + constexpr std::uint32_t healthA = 100; + constexpr std::uint32_t manaA = 50; + + AssetA assetA; + assetA.SetName(nameA); + assetA.SetVersion(versionA); + assetA.GetAsset().health = healthA; + assetA.GetAsset().mana = manaA; + + constexpr eastl::string_view nameAA = "There"; + constexpr std::uint32_t versionAA = 42; + constexpr std::uint32_t healthAA = 100; + constexpr std::uint32_t manaAA = 50; + + AssetA assetAA; + assetAA.SetName(nameAA); + assetAA.SetVersion(versionAA); + assetAA.GetAsset().health = healthAA; + assetAA.GetAsset().mana = manaAA; + + constexpr eastl::string_view nameB = "Kenobi"; + constexpr std::uint32_t versionB = 1; + + AssetB assetB; + assetB.SetName(nameB); + assetB.SetVersion(versionB); + assetB.GetAsset().asset_a_ref = HardRef {assetA.GetHeader().uuid}; + assetB.GetAsset().asset_a_refs = {SoftRef {assetA.GetHeader().uuid}, + SoftRef {assetAA.GetHeader().uuid}}; + + constexpr eastl::string_view nameC = "General"; + constexpr std::uint32_t versionC = 1; + + AssetC assetC; + assetC.SetName(nameC); + assetC.SetVersion(versionC); + assetC.GetAsset().inner_table->asset_a_ref = HardRef {assetA.GetHeader().uuid}; + assetC.GetAsset().inner_table->asset_a_refs = {HardRef {assetA.GetHeader().uuid}, + HardRef {assetAA.GetHeader().uuid}}; + assetC.GetAsset().asset_b_ref = HardRef {assetB.GetHeader().uuid}; + assetC.GetAsset().asset_b_refs = {SoftRef {assetB.GetHeader().uuid}}; + + const eastl::vector test = assetC.Save(); + + AssetC assetC_dup {test}; + + EXPECT_EQ(assetC.GetHeader().uuid, assetC_dup.GetHeader().uuid); + + EXPECT_EQ(assetC.GetHeader().type_id, AssetC::GetTypeID()); + EXPECT_EQ(assetC.GetHeader().type_id, assetC_dup.GetHeader().type_id); + + EXPECT_EQ(assetC.GetHeader().type_name, AssetC::GetTypeName()); + EXPECT_EQ(assetC.GetHeader().type_name, assetC_dup.GetHeader().type_name); + + EXPECT_EQ(assetC.GetHeader().name, nameC); + EXPECT_EQ(assetC.GetHeader().name, assetC_dup.GetHeader().name); + + EXPECT_EQ(assetC.GetHeader().version, versionC); + EXPECT_EQ(assetC.GetHeader().version, assetC_dup.GetHeader().version); + + EXPECT_EQ(assetC.GetHeader().dependencies.size(), 3); + EXPECT_NE(eastl::find(assetC.GetHeader().dependencies.begin(), + assetC.GetHeader().dependencies.end(), + assetB.GetHeader().uuid), + assetC.GetHeader().dependencies.end()); + EXPECT_NE(eastl::find(assetC.GetHeader().dependencies.begin(), + assetC.GetHeader().dependencies.end(), + assetA.GetHeader().uuid), + assetC.GetHeader().dependencies.end()); + EXPECT_NE(eastl::find(assetC.GetHeader().dependencies.begin(), + assetC.GetHeader().dependencies.end(), + assetAA.GetHeader().uuid), + assetC.GetHeader().dependencies.end()); + EXPECT_EQ(assetC.GetHeader().dependencies, assetC_dup.GetHeader().dependencies); + + EXPECT_EQ(assetC.GetAsset().asset_b_ref, HardRef {assetB.GetHeader().uuid}); + EXPECT_EQ(assetC.GetAsset().asset_b_ref, assetC_dup.GetAsset().asset_b_ref); + + EXPECT_EQ(assetC.GetAsset().asset_b_refs, + (eastl::vector> {SoftRef {assetB.GetHeader().uuid}})); + EXPECT_EQ(assetC.GetAsset().asset_b_refs, assetC_dup.GetAsset().asset_b_refs); + + EXPECT_EQ(assetC.GetAsset().inner_table->asset_a_ref, HardRef {assetA.GetHeader().uuid}); + EXPECT_EQ(assetC.GetAsset().inner_table->asset_a_ref, assetC_dup.GetAsset().inner_table->asset_a_ref); + + EXPECT_EQ(assetC.GetAsset().inner_table->asset_a_refs, + (eastl::vector> {HardRef {assetA.GetHeader().uuid}, + HardRef {assetAA.GetHeader().uuid}})); + EXPECT_EQ(assetC.GetAsset().inner_table->asset_a_refs, assetC_dup.GetAsset().inner_table->asset_a_refs); } } // namespace Bigfoot diff --git a/Bigfoot/Tests/Engine/EngineTests/AssetA.cpp b/Bigfoot/Tests/Engine/EngineTests/Asset/AssetA_fwd.cpp similarity index 63% rename from Bigfoot/Tests/Engine/EngineTests/AssetA.cpp rename to Bigfoot/Tests/Engine/EngineTests/Asset/AssetA_fwd.cpp index b62b395..22a8589 100644 --- a/Bigfoot/Tests/Engine/EngineTests/AssetA.cpp +++ b/Bigfoot/Tests/Engine/EngineTests/Asset/AssetA_fwd.cpp @@ -1,9 +1,9 @@ /********************************************************************* - * \file AssetA.cpp + * \file AssetA_fwd.cpp * * \author Romain BOULLARD * \date May 2026 *********************************************************************/ -#include +#include -ASSET_REF_IMPL(AssetA) +ASSET_REF_IMPL(AssetA, ::Bigfoot::AssetA) diff --git a/Bigfoot/Tests/Engine/EngineTests/AssetB.cpp b/Bigfoot/Tests/Engine/EngineTests/Asset/AssetB_fwd.cpp similarity index 63% rename from Bigfoot/Tests/Engine/EngineTests/AssetB.cpp rename to Bigfoot/Tests/Engine/EngineTests/Asset/AssetB_fwd.cpp index 21c0018..fae7cb7 100644 --- a/Bigfoot/Tests/Engine/EngineTests/AssetB.cpp +++ b/Bigfoot/Tests/Engine/EngineTests/Asset/AssetB_fwd.cpp @@ -1,9 +1,9 @@ /********************************************************************* - * \file AssetB.cpp + * \file AssetB_fwd.cpp * * \author Romain BOULLARD * \date May 2026 *********************************************************************/ -#include +#include -ASSET_REF_IMPL(AssetB) +ASSET_REF_IMPL(AssetB, ::Bigfoot::AssetB) diff --git a/Bigfoot/Tests/Engine/EngineTests/Asset/AssetC_fwd.cpp b/Bigfoot/Tests/Engine/EngineTests/Asset/AssetC_fwd.cpp new file mode 100644 index 0000000..619f5cf --- /dev/null +++ b/Bigfoot/Tests/Engine/EngineTests/Asset/AssetC_fwd.cpp @@ -0,0 +1,9 @@ +/********************************************************************* + * \file AssetC_fwd.cpp + * + * \author Romain BOULLARD + * \date May 2026 + *********************************************************************/ +#include + +ASSET_REF_IMPL(AssetC, ::Bigfoot::AssetC) diff --git a/Bigfoot/Tests/Engine/Include/EngineTests/Asset/AssetA.bfbs b/Bigfoot/Tests/Engine/Include/EngineTests/Asset/AssetA.bfbs index de7eb74d3c9342f9b80a1db6ebf5f8a1037e423f..cba289bd514fee8e5fdde904afed6b7818f5ea7b 100644 GIT binary patch delta 286 zcmZ3$Ie~qGDF*`sg9s4YOte*xVgWL8fOrZc1A_(-ConNEFa!ApKr92qAbFF&|NqB8 z*+3->EkMEpC>8)z3z7$c2p~TPC=TL-)R-_$-p6>W{>H!m|3M-kqXeK*AR1&PNSOi< zgWTellUSnXl$oBEpI@REoS#+_l$r(Qvk9t?C?k|N&(w3c^b1CBlG0F%#Q&D&p7M= literal 1184 zcma)5yG{Z@6uqmcTbQ^;3JYT>C@jdXg@uI$5H#8u!Ng8i7=&b95_Tv|EG#T7{Qy70 zkFf9q{1gim&zadpi5Qu1xR1GW-&+uo>Or**B6%rEPFz_Q5B$0mWCK*B4D13Wpa48M zv=ylVVE;Xfu!vyz26_fO&cP4RnHRxNwt)>G2b6}RQ3JN*>H8jbW$4aeNFC2HO^+xuU!A7D3g?8C6%N@H)sUlx0q#%7=Bi?KT}&0^;<3C>I~ zHG4QaTWgJum!9E6TPvfW*4{-IaxG598mhF&)1RZ3tMdD z>o5+%j^9Z7hPOrN`Od@b5{=Ap&8)y0AKa6U3M1VSdHI|^PYoN!W6qnvM9$yy98dBV zezIO3+I&|QQXi~gFzB{GWY^v~6u6^|!9Ai)6$k>~pZL{#gML#b!G3(zja6_IH={vI zWuoa`@STt8_zZcEw_pePutwW6&-BcNY`bfisdeP>C2?L$$ewQn-?63QTtI37KWp2A z{AX?Tn?$SYac!x1dU{j~_?PVw{S|>#U}7FLg3j)bYqpejwkGZrC&8)PJy^|oCO2v? JZ?xi)egP?%!9oB4 diff --git a/Bigfoot/Tests/Engine/Include/EngineTests/Asset/AssetA.bfbs_generated.hpp b/Bigfoot/Tests/Engine/Include/EngineTests/Asset/AssetA.bfbs_generated.hpp index 9b1056b..3392fd2 100644 --- a/Bigfoot/Tests/Engine/Include/EngineTests/Asset/AssetA.bfbs_generated.hpp +++ b/Bigfoot/Tests/Engine/Include/EngineTests/Asset/AssetA.bfbs_generated.hpp @@ -11,35 +11,19 @@ namespace Bigfoot { - inline constexpr eastl::array g_AssetA_bfbs = { + inline constexpr eastl::array g_AssetA_bfbs = { std::byte{0x20}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x42}, std::byte{0x46}, std::byte{0x42}, std::byte{0x53}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x2C}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x08}, std::byte{0x00}, std::byte{0x0C}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x18}, std::byte{0x00}, std::byte{0x20}, std::byte{0x00}, std::byte{0x1C}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x40}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x38}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x2C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, - std::byte{0x20}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0xA0}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x44}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, + std::byte{0x20}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0xA0}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x3C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, - std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x06}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x6C}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0xD8}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, - std::byte{0x58}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x94}, std::byte{0x02}, std::byte{0x00}, std::byte{0x00}, std::byte{0x20}, std::byte{0x02}, std::byte{0x00}, std::byte{0x00}, std::byte{0x68}, std::byte{0x03}, std::byte{0x00}, std::byte{0x00}, - std::byte{0x03}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x30}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x1C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, - std::byte{0x2C}, std::byte{0xFC}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x54}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, - std::byte{0x84}, std::byte{0x02}, std::byte{0x00}, std::byte{0x00}, std::byte{0x40}, std::byte{0xFC}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x58}, std::byte{0x03}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, - std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x50}, std::byte{0xFC}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x6C}, std::byte{0x02}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, - std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x3C}, std::byte{0x03}, std::byte{0x00}, std::byte{0x00}, std::byte{0xF8}, std::byte{0xFC}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, - std::byte{0x1C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, - std::byte{0x08}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x30}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x24}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, - std::byte{0x46}, std::byte{0x6C}, std::byte{0x61}, std::byte{0x74}, std::byte{0x2E}, std::byte{0x42}, std::byte{0x69}, std::byte{0x67}, std::byte{0x66}, std::byte{0x6F}, std::byte{0x6F}, std::byte{0x74}, std::byte{0x2E}, std::byte{0x52}, std::byte{0x65}, std::byte{0x66}, - std::byte{0x65}, std::byte{0x72}, std::byte{0x65}, std::byte{0x6E}, std::byte{0x63}, std::byte{0x65}, std::byte{0x2E}, std::byte{0x41}, std::byte{0x73}, std::byte{0x73}, std::byte{0x65}, std::byte{0x74}, std::byte{0x41}, std::byte{0x53}, std::byte{0x6F}, std::byte{0x66}, - std::byte{0x74}, std::byte{0x52}, std::byte{0x65}, std::byte{0x66}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0xB4}, std::byte{0xFC}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x18}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, - std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x80}, std::byte{0xFD}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0F}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, - std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x08}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x73}, std::byte{0x6F}, std::byte{0x66}, std::byte{0x74}, std::byte{0x5F}, std::byte{0x72}, std::byte{0x65}, std::byte{0x66}, - std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x74}, std::byte{0xFD}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x1C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, - std::byte{0x10}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x8C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, - std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x30}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x24}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x46}, std::byte{0x6C}, std::byte{0x61}, std::byte{0x74}, - std::byte{0x2E}, std::byte{0x42}, std::byte{0x69}, std::byte{0x67}, std::byte{0x66}, std::byte{0x6F}, std::byte{0x6F}, std::byte{0x74}, std::byte{0x2E}, std::byte{0x52}, std::byte{0x65}, std::byte{0x66}, std::byte{0x65}, std::byte{0x72}, std::byte{0x65}, std::byte{0x6E}, - std::byte{0x63}, std::byte{0x65}, std::byte{0x2E}, std::byte{0x41}, std::byte{0x73}, std::byte{0x73}, std::byte{0x65}, std::byte{0x74}, std::byte{0x41}, std::byte{0x48}, std::byte{0x61}, std::byte{0x72}, std::byte{0x64}, std::byte{0x52}, std::byte{0x65}, std::byte{0x66}, - std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x30}, std::byte{0xFD}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x18}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, - std::byte{0xFC}, std::byte{0xFD}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0F}, std::byte{0x03}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, - std::byte{0x08}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x68}, std::byte{0x61}, std::byte{0x72}, std::byte{0x64}, std::byte{0x5F}, std::byte{0x72}, std::byte{0x65}, std::byte{0x66}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, + std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x6C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x94}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, + std::byte{0x28}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x60}, std::byte{0x02}, std::byte{0x00}, std::byte{0x00}, std::byte{0x03}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x30}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, + std::byte{0x1C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x34}, std::byte{0xFD}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x5C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, + std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x84}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x48}, std::byte{0xFD}, std::byte{0xFF}, std::byte{0xFF}, + std::byte{0x50}, std::byte{0x02}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x58}, std::byte{0xFD}, std::byte{0xFF}, std::byte{0xFF}, + std::byte{0x6C}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x34}, std::byte{0x02}, std::byte{0x00}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x08}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x30}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x20}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x2F}, std::byte{0x2F}, std::byte{0x41}, std::byte{0x73}, @@ -53,25 +37,24 @@ namespace Bigfoot std::byte{0x0C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x24}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x0C}, std::byte{0x00}, std::byte{0x07}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x08}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x08}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x06}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, - std::byte{0x68}, std::byte{0x65}, std::byte{0x61}, std::byte{0x6C}, std::byte{0x74}, std::byte{0x68}, std::byte{0x00}, std::byte{0x00}, std::byte{0xC8}, std::byte{0xFE}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, + std::byte{0x68}, std::byte{0x65}, std::byte{0x61}, std::byte{0x6C}, std::byte{0x74}, std::byte{0x68}, std::byte{0x00}, std::byte{0x00}, std::byte{0xD8}, std::byte{0xFE}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x1C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, - std::byte{0x74}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x28}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x1E}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, - std::byte{0x46}, std::byte{0x6C}, std::byte{0x61}, std::byte{0x74}, std::byte{0x2E}, std::byte{0x42}, std::byte{0x69}, std::byte{0x67}, std::byte{0x66}, std::byte{0x6F}, std::byte{0x6F}, std::byte{0x74}, std::byte{0x2E}, std::byte{0x52}, std::byte{0x65}, std::byte{0x66}, - std::byte{0x65}, std::byte{0x72}, std::byte{0x65}, std::byte{0x6E}, std::byte{0x63}, std::byte{0x65}, std::byte{0x2E}, std::byte{0x53}, std::byte{0x6F}, std::byte{0x66}, std::byte{0x74}, std::byte{0x52}, std::byte{0x65}, std::byte{0x66}, std::byte{0x00}, std::byte{0x00}, - std::byte{0x7C}, std::byte{0xFE}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x18}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x48}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0xFF}, - std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0F}, std::byte{0x05}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, - std::byte{0x75}, std::byte{0x75}, std::byte{0x69}, std::byte{0x64}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x38}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, - std::byte{0x64}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x58}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, - std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x42}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x2F}, std::byte{0x2F}, std::byte{0x2E}, std::byte{0x2E}, std::byte{0x2F}, std::byte{0x2E}, std::byte{0x2E}, std::byte{0x2F}, - std::byte{0x2E}, std::byte{0x2E}, std::byte{0x2F}, std::byte{0x2E}, std::byte{0x2E}, std::byte{0x2F}, std::byte{0x2E}, std::byte{0x2E}, std::byte{0x2F}, std::byte{0x53}, std::byte{0x6F}, std::byte{0x75}, std::byte{0x72}, std::byte{0x63}, std::byte{0x65}, std::byte{0x73}, - std::byte{0x2F}, std::byte{0x45}, std::byte{0x6E}, std::byte{0x67}, std::byte{0x69}, std::byte{0x6E}, std::byte{0x65}, std::byte{0x2F}, std::byte{0x49}, std::byte{0x6E}, std::byte{0x63}, std::byte{0x6C}, std::byte{0x75}, std::byte{0x64}, std::byte{0x65}, std::byte{0x2F}, - std::byte{0x45}, std::byte{0x6E}, std::byte{0x67}, std::byte{0x69}, std::byte{0x6E}, std::byte{0x65}, std::byte{0x2F}, std::byte{0x41}, std::byte{0x73}, std::byte{0x73}, std::byte{0x65}, std::byte{0x74}, std::byte{0x2F}, std::byte{0x52}, std::byte{0x65}, std::byte{0x66}, - std::byte{0x65}, std::byte{0x72}, std::byte{0x65}, std::byte{0x6E}, std::byte{0x63}, std::byte{0x65}, std::byte{0x2E}, std::byte{0x66}, std::byte{0x62}, std::byte{0x73}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, - std::byte{0x28}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x1E}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x46}, std::byte{0x6C}, std::byte{0x61}, std::byte{0x74}, std::byte{0x2E}, std::byte{0x42}, std::byte{0x69}, std::byte{0x67}, - std::byte{0x66}, std::byte{0x6F}, std::byte{0x6F}, std::byte{0x74}, std::byte{0x2E}, std::byte{0x52}, std::byte{0x65}, std::byte{0x66}, std::byte{0x65}, std::byte{0x72}, std::byte{0x65}, std::byte{0x6E}, std::byte{0x63}, std::byte{0x65}, std::byte{0x2E}, std::byte{0x48}, - std::byte{0x61}, std::byte{0x72}, std::byte{0x64}, std::byte{0x52}, std::byte{0x65}, std::byte{0x66}, std::byte{0x00}, std::byte{0x00}, std::byte{0x34}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x28}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, + std::byte{0x6C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x20}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, + std::byte{0x46}, std::byte{0x6C}, std::byte{0x61}, std::byte{0x74}, std::byte{0x2E}, std::byte{0x42}, std::byte{0x69}, std::byte{0x67}, std::byte{0x66}, std::byte{0x6F}, std::byte{0x6F}, std::byte{0x74}, std::byte{0x2E}, std::byte{0x53}, std::byte{0x6F}, std::byte{0x66}, + std::byte{0x74}, std::byte{0x52}, std::byte{0x65}, std::byte{0x66}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x84}, std::byte{0xFE}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x18}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, + std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x50}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0F}, std::byte{0x03}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, + std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x75}, std::byte{0x75}, std::byte{0x69}, std::byte{0x64}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, + std::byte{0x40}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x64}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x58}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, + std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x42}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, + std::byte{0x2F}, std::byte{0x2F}, std::byte{0x2E}, std::byte{0x2E}, std::byte{0x2F}, std::byte{0x2E}, std::byte{0x2E}, std::byte{0x2F}, std::byte{0x2E}, std::byte{0x2E}, std::byte{0x2F}, std::byte{0x2E}, std::byte{0x2E}, std::byte{0x2F}, std::byte{0x2E}, std::byte{0x2E}, + std::byte{0x2F}, std::byte{0x53}, std::byte{0x6F}, std::byte{0x75}, std::byte{0x72}, std::byte{0x63}, std::byte{0x65}, std::byte{0x73}, std::byte{0x2F}, std::byte{0x45}, std::byte{0x6E}, std::byte{0x67}, std::byte{0x69}, std::byte{0x6E}, std::byte{0x65}, std::byte{0x2F}, + std::byte{0x49}, std::byte{0x6E}, std::byte{0x63}, std::byte{0x6C}, std::byte{0x75}, std::byte{0x64}, std::byte{0x65}, std::byte{0x2F}, std::byte{0x45}, std::byte{0x6E}, std::byte{0x67}, std::byte{0x69}, std::byte{0x6E}, std::byte{0x65}, std::byte{0x2F}, std::byte{0x41}, + std::byte{0x73}, std::byte{0x73}, std::byte{0x65}, std::byte{0x74}, std::byte{0x2F}, std::byte{0x52}, std::byte{0x65}, std::byte{0x66}, std::byte{0x65}, std::byte{0x72}, std::byte{0x65}, std::byte{0x6E}, std::byte{0x63}, std::byte{0x65}, std::byte{0x2E}, std::byte{0x66}, + std::byte{0x62}, std::byte{0x73}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x20}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, + std::byte{0x46}, std::byte{0x6C}, std::byte{0x61}, std::byte{0x74}, std::byte{0x2E}, std::byte{0x42}, std::byte{0x69}, std::byte{0x67}, std::byte{0x66}, std::byte{0x6F}, std::byte{0x6F}, std::byte{0x74}, std::byte{0x2E}, std::byte{0x48}, std::byte{0x61}, std::byte{0x72}, + std::byte{0x64}, std::byte{0x52}, std::byte{0x65}, std::byte{0x66}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x34}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x28}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x07}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x08}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, - std::byte{0x00}, std::byte{0x00}, std::byte{0x0C}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0F}, std::byte{0x05}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, + std::byte{0x00}, std::byte{0x00}, std::byte{0x0C}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0F}, std::byte{0x03}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x75}, std::byte{0x75}, std::byte{0x69}, std::byte{0x64}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x1C}, std::byte{0x00}, std::byte{0x08}, std::byte{0x00}, std::byte{0x0C}, std::byte{0x00}, std::byte{0x07}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x18}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x60}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, diff --git a/Bigfoot/Tests/Engine/Include/EngineTests/Asset/AssetA.fbs b/Bigfoot/Tests/Engine/Include/EngineTests/Asset/AssetA.fbs index 0a6c97e..6ea9315 100644 --- a/Bigfoot/Tests/Engine/Include/EngineTests/Asset/AssetA.fbs +++ b/Bigfoot/Tests/Engine/Include/EngineTests/Asset/AssetA.fbs @@ -1,5 +1,7 @@ include "Engine/Asset/Reference.fbs"; +native_include "EngineTests/Asset/AssetA_fwd.hpp"; + namespace Flat.Bigfoot; table AssetA @@ -8,15 +10,4 @@ table AssetA mana: uint = 0; } -root_type AssetA; - -namespace Flat.Bigfoot.Reference; - -struct AssetAHardRef (native_type: "::Bigfoot::HardRef<::Bigfoot::AssetA>") -{ - hard_ref: HardRef; -} -struct AssetASoftRef (native_type: "::Bigfoot::SoftRef<::Bigfoot::AssetA>") -{ - soft_ref: SoftRef; -} \ No newline at end of file +root_type AssetA; \ No newline at end of file diff --git a/Bigfoot/Tests/Engine/Include/EngineTests/Asset/AssetA.hpp b/Bigfoot/Tests/Engine/Include/EngineTests/Asset/AssetA.hpp index 6018056..db91b4e 100644 --- a/Bigfoot/Tests/Engine/Include/EngineTests/Asset/AssetA.hpp +++ b/Bigfoot/Tests/Engine/Include/EngineTests/Asset/AssetA.hpp @@ -7,14 +7,23 @@ #ifndef BIGFOOT_ENGINE_ASSETA_HPP #define BIGFOOT_ENGINE_ASSETA_HPP #include -#include #include #include namespace Bigfoot { -class AssetA: public Asset<::Flat::Bigfoot::AssetA> +struct AssetATraits +{ + using FLAT = ::Flat::Bigfoot::AssetA; + + static constexpr eastl::span ReflectionInfo() + { + return g_AssetA_bfbs; + } +}; + +class AssetA: public Asset { public: AssetA() = default; @@ -29,18 +38,9 @@ class AssetA: public Asset<::Flat::Bigfoot::AssetA> ~AssetA() = default; - [[nodiscard]] AssetA& operator=(const AssetA& p_asset) = default; - [[nodiscard]] AssetA& operator=(AssetA&& p_asset) = default; - - static constexpr eastl::span ReflectionInfo() - { - return g_AssetA_bfbs; - } }; } // namespace Bigfoot -ASSET_REF_DECL(AssetA) - #endif diff --git a/Bigfoot/Tests/Engine/Include/EngineTests/Asset/AssetA_fwd.hpp b/Bigfoot/Tests/Engine/Include/EngineTests/Asset/AssetA_fwd.hpp new file mode 100644 index 0000000..5d58e5f --- /dev/null +++ b/Bigfoot/Tests/Engine/Include/EngineTests/Asset/AssetA_fwd.hpp @@ -0,0 +1,18 @@ +/********************************************************************* + * \file AssetA_fwd.hpp + * + * \author Romain BOULLARD + * \date May 2026 + *********************************************************************/ +#ifndef BIGFOOT_ENGINE_ASSETA_FWD_HPP +#define BIGFOOT_ENGINE_ASSETA_FWD_HPP +#include + +namespace Bigfoot +{ +class AssetA; +} // namespace Bigfoot + +ASSET_DECL(AssetA, ::Bigfoot::AssetA) + +#endif diff --git a/Bigfoot/Tests/Engine/Include/EngineTests/Asset/AssetA_generated.hpp b/Bigfoot/Tests/Engine/Include/EngineTests/Asset/AssetA_generated.hpp index af9e2f7..66a22ce 100644 --- a/Bigfoot/Tests/Engine/Include/EngineTests/Asset/AssetA_generated.hpp +++ b/Bigfoot/Tests/Engine/Include/EngineTests/Asset/AssetA_generated.hpp @@ -1,8 +1,8 @@ // automatically generated by the FlatBuffers compiler, do not modify -#ifndef FLATBUFFERS_GENERATED_ASSETA_FLAT_BIGFOOT_REFERENCE_H_ -#define FLATBUFFERS_GENERATED_ASSETA_FLAT_BIGFOOT_REFERENCE_H_ +#ifndef FLATBUFFERS_GENERATED_ASSETA_FLAT_BIGFOOT_H_ +#define FLATBUFFERS_GENERATED_ASSETA_FLAT_BIGFOOT_H_ #include "flatbuffers/flatbuffers.h" @@ -13,11 +13,15 @@ static_assert(FLATBUFFERS_VERSION_MAJOR == 25 && FLATBUFFERS_VERSION_REVISION == 19, "Non-compatible flatbuffers version included"); +#include "Engine/Asset/Reference.hpp" #include "System/UUID/UUID.hpp" +#include "Engine/Asset/Reference.hpp" +#include "EngineTests/Asset/AssetA_fwd.hpp" #include "Engine/Asset/Reference_generated.hpp" #include "EASTL/unique_ptr.h" #include "EASTL/string.h" +#include "EASTL/vector.h" namespace Flat { namespace Bigfoot { @@ -26,80 +30,8 @@ struct AssetA; struct AssetABuilder; struct AssetAT; -namespace Reference { - -struct AssetAHardRef; - -struct AssetASoftRef; - -} // namespace Reference - inline const ::flatbuffers::TypeTable *AssetATypeTable(); -namespace Reference { - -inline const ::flatbuffers::TypeTable *AssetAHardRefTypeTable(); - -inline const ::flatbuffers::TypeTable *AssetASoftRefTypeTable(); - -FLATBUFFERS_MANUALLY_ALIGNED_STRUCT(1) AssetAHardRef FLATBUFFERS_FINAL_CLASS { - private: - Flat::Bigfoot::Reference::HardRef hard_ref_; - - public: - struct Traits; - static const ::flatbuffers::TypeTable *MiniReflectTypeTable() { - return AssetAHardRefTypeTable(); - } - static FLATBUFFERS_CONSTEXPR_CPP11 const char *GetFullyQualifiedName() { - return "Flat.Bigfoot.Reference.AssetAHardRef"; - } - AssetAHardRef() - : hard_ref_() { - } - AssetAHardRef(const Flat::Bigfoot::Reference::HardRef &_hard_ref) - : hard_ref_(_hard_ref) { - } - const Flat::Bigfoot::Reference::HardRef &hard_ref() const { - return hard_ref_; - } -}; -FLATBUFFERS_STRUCT_END(AssetAHardRef, 16); - -struct AssetAHardRef::Traits { - using type = AssetAHardRef; -}; - -FLATBUFFERS_MANUALLY_ALIGNED_STRUCT(1) AssetASoftRef FLATBUFFERS_FINAL_CLASS { - private: - Flat::Bigfoot::Reference::SoftRef soft_ref_; - - public: - struct Traits; - static const ::flatbuffers::TypeTable *MiniReflectTypeTable() { - return AssetASoftRefTypeTable(); - } - static FLATBUFFERS_CONSTEXPR_CPP11 const char *GetFullyQualifiedName() { - return "Flat.Bigfoot.Reference.AssetASoftRef"; - } - AssetASoftRef() - : soft_ref_() { - } - AssetASoftRef(const Flat::Bigfoot::Reference::SoftRef &_soft_ref) - : soft_ref_(_soft_ref) { - } - const Flat::Bigfoot::Reference::SoftRef &soft_ref() const { - return soft_ref_; - } -}; -FLATBUFFERS_STRUCT_END(AssetASoftRef, 16); - -struct AssetASoftRef::Traits { - using type = AssetASoftRef; -}; - -} // namespace Reference - struct AssetAT : public ::flatbuffers::NativeTable { typedef AssetA TableType; static FLATBUFFERS_CONSTEXPR_CPP11 const char *GetFullyQualifiedName() { @@ -223,44 +155,6 @@ inline const ::flatbuffers::TypeTable *AssetATypeTable() { return &tt; } -namespace Reference { - -inline const ::flatbuffers::TypeTable *AssetAHardRefTypeTable() { - static const ::flatbuffers::TypeCode type_codes[] = { - { ::flatbuffers::ET_SEQUENCE, 0, 0 } - }; - static const ::flatbuffers::TypeFunction type_refs[] = { - Flat::Bigfoot::Reference::HardRefTypeTable - }; - static const int64_t values[] = { 0, 16 }; - static const char * const names[] = { - "hard_ref" - }; - static const ::flatbuffers::TypeTable tt = { - ::flatbuffers::ST_STRUCT, 1, type_codes, type_refs, nullptr, values, names - }; - return &tt; -} - -inline const ::flatbuffers::TypeTable *AssetASoftRefTypeTable() { - static const ::flatbuffers::TypeCode type_codes[] = { - { ::flatbuffers::ET_SEQUENCE, 0, 0 } - }; - static const ::flatbuffers::TypeFunction type_refs[] = { - Flat::Bigfoot::Reference::SoftRefTypeTable - }; - static const int64_t values[] = { 0, 16 }; - static const char * const names[] = { - "soft_ref" - }; - static const ::flatbuffers::TypeTable tt = { - ::flatbuffers::ST_STRUCT, 1, type_codes, type_refs, nullptr, values, names - }; - return &tt; -} - -} // namespace Reference - inline const Flat::Bigfoot::AssetA *GetAssetA(const void *buf) { return ::flatbuffers::GetRoot(buf); } @@ -312,4 +206,4 @@ inline eastl::unique_ptr UnPackSizePrefixedAssetA( } // namespace Bigfoot } // namespace Flat -#endif // FLATBUFFERS_GENERATED_ASSETA_FLAT_BIGFOOT_REFERENCE_H_ +#endif // FLATBUFFERS_GENERATED_ASSETA_FLAT_BIGFOOT_H_ diff --git a/Bigfoot/Tests/Engine/Include/EngineTests/Asset/AssetB.bfbs b/Bigfoot/Tests/Engine/Include/EngineTests/Asset/AssetB.bfbs index 47c73be2fd7e35168c5656eb9645df19b9972cc3..59b999de30242b2b3c2070314574a5fe0b5e26e9 100644 GIT binary patch delta 332 zcmdnNyMl9q3Fit11_l8jwwY+FT+a$*bTBe7lmO{9ObiSTKwQDhz`z3J`v9>85Gw#N zh_CSH|NjIi8>oz729QVq>a_rhM*wM%8X(2c02KEDiupjz0SYn10Qng}ahMtdklg?O zjQ=NpV3wZD%v8$AJh_s|U7qLP|NlVc{2=o|W^n^?VsUY5Nqk~_QEJ-c>&!P9Z%p3E zA|99nRiOZ+MS$2XC$U7&DKkASKfgpTI6tiSNy0QxLQ@&Et; literal 1720 zcma)6y>8P`6g~#GF%XedWatnf4;?z$89HR>k_f6)%76%!Iv_P};xv)c1jUY&N*y{f zbl?#fcmM_-fRTZRVPHT|FyD9Yb?T4?#mVu#=iGD8?|1BqNd2JR!XhQv6z53v+Hy+2{%di(t!ciymYEcx%_13r-Lk2bZ3?JKA>El}4F66MMEe8}q z^<<)TuU7b;8U3|biJvIkE<3w6+{3K7JIBM+gGeR2vLkXV*%Dy)>i6!F`XoT>-Cvfd((3+yNNj3Z!S zPXdOk;wa;UC=}dWd^WTX%LY1i-R<8xciLm!AAvIVl8T3S&V{*$?`3LCpOh9MrNnXycso zem4$ks*~)IjUKU6>^bez=GR2^ge6w|c`ypFo!?Y5c*%^3IX zY{{K@lrTB$SI*!-FhR6|$7 g_AssetB_bfbs = { + inline constexpr eastl::array g_AssetB_bfbs = { std::byte{0x20}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x42}, std::byte{0x46}, std::byte{0x42}, std::byte{0x53}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x28}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x08}, std::byte{0x00}, std::byte{0x0C}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x18}, std::byte{0x00}, std::byte{0x20}, std::byte{0x00}, std::byte{0x1C}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x3C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x34}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x28}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, - std::byte{0x1C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0xB0}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x4C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, + std::byte{0x1C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0xA8}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x3C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, - std::byte{0x09}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x88}, std::byte{0x03}, std::byte{0x00}, std::byte{0x00}, std::byte{0x7C}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0xF0}, std::byte{0x02}, std::byte{0x00}, std::byte{0x00}, - std::byte{0x70}, std::byte{0x02}, std::byte{0x00}, std::byte{0x00}, std::byte{0xF4}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x74}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0xA4}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, - std::byte{0x30}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x78}, std::byte{0x05}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x4C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, - std::byte{0x38}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x20}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x20}, std::byte{0xFA}, std::byte{0xFF}, std::byte{0xFF}, - std::byte{0x58}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x02}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x90}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, - std::byte{0x50}, std::byte{0x03}, std::byte{0x00}, std::byte{0x00}, std::byte{0x38}, std::byte{0xFA}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x48}, std::byte{0x03}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, - std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x78}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x4C}, std::byte{0xFA}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x4C}, std::byte{0x05}, std::byte{0x00}, std::byte{0x00}, - std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x5C}, std::byte{0xFA}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x60}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, - std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x30}, std::byte{0x05}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0xFB}, std::byte{0xFF}, std::byte{0xFF}, - std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x1C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, - std::byte{0x10}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0xF4}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x30}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, - std::byte{0x24}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x46}, std::byte{0x6C}, std::byte{0x61}, std::byte{0x74}, std::byte{0x2E}, std::byte{0x42}, std::byte{0x69}, std::byte{0x67}, std::byte{0x66}, std::byte{0x6F}, std::byte{0x6F}, std::byte{0x74}, - std::byte{0x2E}, std::byte{0x52}, std::byte{0x65}, std::byte{0x66}, std::byte{0x65}, std::byte{0x72}, std::byte{0x65}, std::byte{0x6E}, std::byte{0x63}, std::byte{0x65}, std::byte{0x2E}, std::byte{0x41}, std::byte{0x73}, std::byte{0x73}, std::byte{0x65}, std::byte{0x74}, - std::byte{0x42}, std::byte{0x53}, std::byte{0x6F}, std::byte{0x66}, std::byte{0x74}, std::byte{0x52}, std::byte{0x65}, std::byte{0x66}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0xC0}, std::byte{0xFA}, std::byte{0xFF}, std::byte{0xFF}, - std::byte{0x18}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x8C}, std::byte{0xFB}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0F}, - std::byte{0x07}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x08}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x73}, std::byte{0x6F}, std::byte{0x66}, std::byte{0x74}, - std::byte{0x5F}, std::byte{0x72}, std::byte{0x65}, std::byte{0x66}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x80}, std::byte{0xFB}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, - std::byte{0x1C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, - std::byte{0x78}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x30}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x24}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, - std::byte{0x46}, std::byte{0x6C}, std::byte{0x61}, std::byte{0x74}, std::byte{0x2E}, std::byte{0x42}, std::byte{0x69}, std::byte{0x67}, std::byte{0x66}, std::byte{0x6F}, std::byte{0x6F}, std::byte{0x74}, std::byte{0x2E}, std::byte{0x52}, std::byte{0x65}, std::byte{0x66}, - std::byte{0x65}, std::byte{0x72}, std::byte{0x65}, std::byte{0x6E}, std::byte{0x63}, std::byte{0x65}, std::byte{0x2E}, std::byte{0x41}, std::byte{0x73}, std::byte{0x73}, std::byte{0x65}, std::byte{0x74}, std::byte{0x42}, std::byte{0x48}, std::byte{0x61}, std::byte{0x72}, - std::byte{0x64}, std::byte{0x52}, std::byte{0x65}, std::byte{0x66}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x3C}, std::byte{0xFB}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x18}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, - std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x08}, std::byte{0xFC}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0F}, std::byte{0x06}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, - std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x08}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x68}, std::byte{0x61}, std::byte{0x72}, std::byte{0x64}, std::byte{0x5F}, std::byte{0x72}, std::byte{0x65}, std::byte{0x66}, - std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0C}, std::byte{0xFE}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x30}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x20}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, - std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x2F}, std::byte{0x2F}, std::byte{0x41}, std::byte{0x73}, - std::byte{0x73}, std::byte{0x65}, std::byte{0x74}, std::byte{0x42}, std::byte{0x2E}, std::byte{0x66}, std::byte{0x62}, std::byte{0x73}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x02}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, - std::byte{0xA0}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x38}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x13}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x46}, std::byte{0x6C}, std::byte{0x61}, std::byte{0x74}, - std::byte{0x2E}, std::byte{0x42}, std::byte{0x69}, std::byte{0x67}, std::byte{0x66}, std::byte{0x6F}, std::byte{0x6F}, std::byte{0x74}, std::byte{0x2E}, std::byte{0x41}, std::byte{0x73}, std::byte{0x73}, std::byte{0x65}, std::byte{0x74}, std::byte{0x42}, std::byte{0x00}, - std::byte{0x1C}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x0C}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x08}, std::byte{0x00}, std::byte{0x0A}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, - std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x07}, std::byte{0x00}, std::byte{0x1C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, - std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x01}, std::byte{0x00}, std::byte{0x06}, std::byte{0x00}, std::byte{0x28}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, - std::byte{0x10}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x06}, std::byte{0x00}, std::byte{0x07}, std::byte{0x00}, std::byte{0x08}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0C}, std::byte{0x00}, - std::byte{0x10}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0E}, std::byte{0x0F}, std::byte{0x02}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, - std::byte{0x0C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x61}, std::byte{0x73}, std::byte{0x73}, std::byte{0x65}, std::byte{0x74}, std::byte{0x5F}, std::byte{0x61}, std::byte{0x5F}, std::byte{0x72}, std::byte{0x65}, std::byte{0x66}, std::byte{0x73}, - std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x1C}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x08}, std::byte{0x00}, std::byte{0x0C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x06}, std::byte{0x00}, - std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x05}, std::byte{0x00}, - std::byte{0x1C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x04}, std::byte{0x00}, std::byte{0x18}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, - std::byte{0x04}, std::byte{0xFD}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0F}, std::byte{0x02}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, - std::byte{0x0B}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x61}, std::byte{0x73}, std::byte{0x73}, std::byte{0x65}, std::byte{0x74}, std::byte{0x5F}, std::byte{0x61}, std::byte{0x5F}, std::byte{0x72}, std::byte{0x65}, std::byte{0x66}, std::byte{0x00}, - std::byte{0xF8}, std::byte{0xFC}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x1C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, - std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x08}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, - std::byte{0x30}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x24}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x46}, std::byte{0x6C}, std::byte{0x61}, std::byte{0x74}, std::byte{0x2E}, std::byte{0x42}, std::byte{0x69}, std::byte{0x67}, - std::byte{0x66}, std::byte{0x6F}, std::byte{0x6F}, std::byte{0x74}, std::byte{0x2E}, std::byte{0x52}, std::byte{0x65}, std::byte{0x66}, std::byte{0x65}, std::byte{0x72}, std::byte{0x65}, std::byte{0x6E}, std::byte{0x63}, std::byte{0x65}, std::byte{0x2E}, std::byte{0x41}, - std::byte{0x73}, std::byte{0x73}, std::byte{0x65}, std::byte{0x74}, std::byte{0x41}, std::byte{0x53}, std::byte{0x6F}, std::byte{0x66}, std::byte{0x74}, std::byte{0x52}, std::byte{0x65}, std::byte{0x66}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, - std::byte{0xB4}, std::byte{0xFC}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x18}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x80}, std::byte{0xFD}, std::byte{0xFF}, std::byte{0xFF}, - std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0F}, std::byte{0x07}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x08}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, - std::byte{0x73}, std::byte{0x6F}, std::byte{0x66}, std::byte{0x74}, std::byte{0x5F}, std::byte{0x72}, std::byte{0x65}, std::byte{0x66}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x74}, std::byte{0xFD}, std::byte{0xFF}, std::byte{0xFF}, - std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x1C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, - std::byte{0x10}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x8C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x30}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, - std::byte{0x24}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x46}, std::byte{0x6C}, std::byte{0x61}, std::byte{0x74}, std::byte{0x2E}, std::byte{0x42}, std::byte{0x69}, std::byte{0x67}, std::byte{0x66}, std::byte{0x6F}, std::byte{0x6F}, std::byte{0x74}, - std::byte{0x2E}, std::byte{0x52}, std::byte{0x65}, std::byte{0x66}, std::byte{0x65}, std::byte{0x72}, std::byte{0x65}, std::byte{0x6E}, std::byte{0x63}, std::byte{0x65}, std::byte{0x2E}, std::byte{0x41}, std::byte{0x73}, std::byte{0x73}, std::byte{0x65}, std::byte{0x74}, - std::byte{0x41}, std::byte{0x48}, std::byte{0x61}, std::byte{0x72}, std::byte{0x64}, std::byte{0x52}, std::byte{0x65}, std::byte{0x66}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x30}, std::byte{0xFD}, std::byte{0xFF}, std::byte{0xFF}, - std::byte{0x18}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0xFC}, std::byte{0xFD}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0F}, - std::byte{0x06}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x08}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x68}, std::byte{0x61}, std::byte{0x72}, std::byte{0x64}, - std::byte{0x5F}, std::byte{0x72}, std::byte{0x65}, std::byte{0x66}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x08}, std::byte{0x00}, + std::byte{0x05}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x88}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x74}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0xAC}, std::byte{0x02}, std::byte{0x00}, std::byte{0x00}, + std::byte{0x40}, std::byte{0x02}, std::byte{0x00}, std::byte{0x00}, std::byte{0x78}, std::byte{0x03}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x4C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, + std::byte{0x38}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x20}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x20}, std::byte{0xFC}, std::byte{0xFF}, std::byte{0xFF}, + std::byte{0x60}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x02}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x98}, std::byte{0x02}, std::byte{0x00}, std::byte{0x00}, + std::byte{0x60}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x38}, std::byte{0xFC}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x58}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, + std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x80}, std::byte{0x02}, std::byte{0x00}, std::byte{0x00}, std::byte{0x4C}, std::byte{0xFC}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x4C}, std::byte{0x03}, std::byte{0x00}, std::byte{0x00}, + std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x5C}, std::byte{0xFC}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x68}, std::byte{0x02}, std::byte{0x00}, std::byte{0x00}, + std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x30}, std::byte{0x03}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0xFF}, + std::byte{0x30}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x20}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, + std::byte{0x0C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x2F}, std::byte{0x2F}, std::byte{0x41}, std::byte{0x73}, std::byte{0x73}, std::byte{0x65}, std::byte{0x74}, std::byte{0x42}, std::byte{0x2E}, std::byte{0x66}, std::byte{0x62}, std::byte{0x73}, + std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x02}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0xA0}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x38}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, + std::byte{0x13}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x46}, std::byte{0x6C}, std::byte{0x61}, std::byte{0x74}, std::byte{0x2E}, std::byte{0x42}, std::byte{0x69}, std::byte{0x67}, std::byte{0x66}, std::byte{0x6F}, std::byte{0x6F}, std::byte{0x74}, + std::byte{0x2E}, std::byte{0x41}, std::byte{0x73}, std::byte{0x73}, std::byte{0x65}, std::byte{0x74}, std::byte{0x42}, std::byte{0x00}, std::byte{0x1C}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x0C}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, + std::byte{0x08}, std::byte{0x00}, std::byte{0x0A}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, + std::byte{0x00}, std::byte{0x00}, std::byte{0x07}, std::byte{0x00}, std::byte{0x1C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x01}, std::byte{0x00}, std::byte{0x06}, std::byte{0x00}, + std::byte{0x28}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x06}, std::byte{0x00}, std::byte{0x07}, std::byte{0x00}, + std::byte{0x08}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0C}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0E}, std::byte{0x0F}, + std::byte{0x03}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x61}, std::byte{0x73}, std::byte{0x73}, std::byte{0x65}, + std::byte{0x74}, std::byte{0x5F}, std::byte{0x61}, std::byte{0x5F}, std::byte{0x72}, std::byte{0x65}, std::byte{0x66}, std::byte{0x73}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x1C}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, + std::byte{0x08}, std::byte{0x00}, std::byte{0x0C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x06}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, + std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x05}, std::byte{0x00}, std::byte{0x1C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x04}, std::byte{0x00}, + std::byte{0x18}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0C}, std::byte{0xFE}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0F}, + std::byte{0x02}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0B}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x61}, std::byte{0x73}, std::byte{0x73}, std::byte{0x65}, + std::byte{0x74}, std::byte{0x5F}, std::byte{0x61}, std::byte{0x5F}, std::byte{0x72}, std::byte{0x65}, std::byte{0x66}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x08}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x30}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x20}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x2F}, std::byte{0x2F}, std::byte{0x41}, std::byte{0x73}, std::byte{0x73}, std::byte{0x65}, std::byte{0x74}, std::byte{0x41}, std::byte{0x2E}, std::byte{0x66}, std::byte{0x62}, std::byte{0x73}, @@ -87,25 +55,24 @@ namespace Bigfoot std::byte{0x24}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x0C}, std::byte{0x00}, std::byte{0x07}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x08}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x08}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x06}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x68}, std::byte{0x65}, std::byte{0x61}, std::byte{0x6C}, std::byte{0x74}, std::byte{0x68}, std::byte{0x00}, std::byte{0x00}, - std::byte{0xC8}, std::byte{0xFE}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x1C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, - std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x74}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, - std::byte{0x28}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x1E}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x46}, std::byte{0x6C}, std::byte{0x61}, std::byte{0x74}, std::byte{0x2E}, std::byte{0x42}, std::byte{0x69}, std::byte{0x67}, - std::byte{0x66}, std::byte{0x6F}, std::byte{0x6F}, std::byte{0x74}, std::byte{0x2E}, std::byte{0x52}, std::byte{0x65}, std::byte{0x66}, std::byte{0x65}, std::byte{0x72}, std::byte{0x65}, std::byte{0x6E}, std::byte{0x63}, std::byte{0x65}, std::byte{0x2E}, std::byte{0x53}, - std::byte{0x6F}, std::byte{0x66}, std::byte{0x74}, std::byte{0x52}, std::byte{0x65}, std::byte{0x66}, std::byte{0x00}, std::byte{0x00}, std::byte{0x7C}, std::byte{0xFE}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x18}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, - std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x48}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0F}, std::byte{0x08}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, - std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x75}, std::byte{0x75}, std::byte{0x69}, std::byte{0x64}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, - std::byte{0x38}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x64}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x58}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, - std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x42}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, - std::byte{0x2F}, std::byte{0x2F}, std::byte{0x2E}, std::byte{0x2E}, std::byte{0x2F}, std::byte{0x2E}, std::byte{0x2E}, std::byte{0x2F}, std::byte{0x2E}, std::byte{0x2E}, std::byte{0x2F}, std::byte{0x2E}, std::byte{0x2E}, std::byte{0x2F}, std::byte{0x2E}, std::byte{0x2E}, - std::byte{0x2F}, std::byte{0x53}, std::byte{0x6F}, std::byte{0x75}, std::byte{0x72}, std::byte{0x63}, std::byte{0x65}, std::byte{0x73}, std::byte{0x2F}, std::byte{0x45}, std::byte{0x6E}, std::byte{0x67}, std::byte{0x69}, std::byte{0x6E}, std::byte{0x65}, std::byte{0x2F}, - std::byte{0x49}, std::byte{0x6E}, std::byte{0x63}, std::byte{0x6C}, std::byte{0x75}, std::byte{0x64}, std::byte{0x65}, std::byte{0x2F}, std::byte{0x45}, std::byte{0x6E}, std::byte{0x67}, std::byte{0x69}, std::byte{0x6E}, std::byte{0x65}, std::byte{0x2F}, std::byte{0x41}, - std::byte{0x73}, std::byte{0x73}, std::byte{0x65}, std::byte{0x74}, std::byte{0x2F}, std::byte{0x52}, std::byte{0x65}, std::byte{0x66}, std::byte{0x65}, std::byte{0x72}, std::byte{0x65}, std::byte{0x6E}, std::byte{0x63}, std::byte{0x65}, std::byte{0x2E}, std::byte{0x66}, - std::byte{0x62}, std::byte{0x73}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x28}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x1E}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, - std::byte{0x46}, std::byte{0x6C}, std::byte{0x61}, std::byte{0x74}, std::byte{0x2E}, std::byte{0x42}, std::byte{0x69}, std::byte{0x67}, std::byte{0x66}, std::byte{0x6F}, std::byte{0x6F}, std::byte{0x74}, std::byte{0x2E}, std::byte{0x52}, std::byte{0x65}, std::byte{0x66}, - std::byte{0x65}, std::byte{0x72}, std::byte{0x65}, std::byte{0x6E}, std::byte{0x63}, std::byte{0x65}, std::byte{0x2E}, std::byte{0x48}, std::byte{0x61}, std::byte{0x72}, std::byte{0x64}, std::byte{0x52}, std::byte{0x65}, std::byte{0x66}, std::byte{0x00}, std::byte{0x00}, + std::byte{0xD8}, std::byte{0xFE}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x1C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, + std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x6C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, + std::byte{0x20}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x46}, std::byte{0x6C}, std::byte{0x61}, std::byte{0x74}, std::byte{0x2E}, std::byte{0x42}, std::byte{0x69}, std::byte{0x67}, + std::byte{0x66}, std::byte{0x6F}, std::byte{0x6F}, std::byte{0x74}, std::byte{0x2E}, std::byte{0x53}, std::byte{0x6F}, std::byte{0x66}, std::byte{0x74}, std::byte{0x52}, std::byte{0x65}, std::byte{0x66}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, + std::byte{0x84}, std::byte{0xFE}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x18}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x50}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0xFF}, + std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0F}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, + std::byte{0x75}, std::byte{0x75}, std::byte{0x69}, std::byte{0x64}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x40}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, + std::byte{0x64}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x58}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, + std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x42}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x2F}, std::byte{0x2F}, std::byte{0x2E}, std::byte{0x2E}, std::byte{0x2F}, std::byte{0x2E}, std::byte{0x2E}, std::byte{0x2F}, + std::byte{0x2E}, std::byte{0x2E}, std::byte{0x2F}, std::byte{0x2E}, std::byte{0x2E}, std::byte{0x2F}, std::byte{0x2E}, std::byte{0x2E}, std::byte{0x2F}, std::byte{0x53}, std::byte{0x6F}, std::byte{0x75}, std::byte{0x72}, std::byte{0x63}, std::byte{0x65}, std::byte{0x73}, + std::byte{0x2F}, std::byte{0x45}, std::byte{0x6E}, std::byte{0x67}, std::byte{0x69}, std::byte{0x6E}, std::byte{0x65}, std::byte{0x2F}, std::byte{0x49}, std::byte{0x6E}, std::byte{0x63}, std::byte{0x6C}, std::byte{0x75}, std::byte{0x64}, std::byte{0x65}, std::byte{0x2F}, + std::byte{0x45}, std::byte{0x6E}, std::byte{0x67}, std::byte{0x69}, std::byte{0x6E}, std::byte{0x65}, std::byte{0x2F}, std::byte{0x41}, std::byte{0x73}, std::byte{0x73}, std::byte{0x65}, std::byte{0x74}, std::byte{0x2F}, std::byte{0x52}, std::byte{0x65}, std::byte{0x66}, + std::byte{0x65}, std::byte{0x72}, std::byte{0x65}, std::byte{0x6E}, std::byte{0x63}, std::byte{0x65}, std::byte{0x2E}, std::byte{0x66}, std::byte{0x62}, std::byte{0x73}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, + std::byte{0x20}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x46}, std::byte{0x6C}, std::byte{0x61}, std::byte{0x74}, std::byte{0x2E}, std::byte{0x42}, std::byte{0x69}, std::byte{0x67}, + std::byte{0x66}, std::byte{0x6F}, std::byte{0x6F}, std::byte{0x74}, std::byte{0x2E}, std::byte{0x48}, std::byte{0x61}, std::byte{0x72}, std::byte{0x64}, std::byte{0x52}, std::byte{0x65}, std::byte{0x66}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x34}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x28}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x07}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x08}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0C}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, - std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0F}, std::byte{0x08}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, + std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0F}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x75}, std::byte{0x75}, std::byte{0x69}, std::byte{0x64}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x1C}, std::byte{0x00}, std::byte{0x08}, std::byte{0x00}, std::byte{0x0C}, std::byte{0x00}, std::byte{0x07}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x18}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x60}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x54}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, diff --git a/Bigfoot/Tests/Engine/Include/EngineTests/Asset/AssetB.fbs b/Bigfoot/Tests/Engine/Include/EngineTests/Asset/AssetB.fbs index 1403fc6..869c303 100644 --- a/Bigfoot/Tests/Engine/Include/EngineTests/Asset/AssetB.fbs +++ b/Bigfoot/Tests/Engine/Include/EngineTests/Asset/AssetB.fbs @@ -1,25 +1,15 @@ include "Engine/Asset/Reference.fbs"; include "EngineTests/Asset/AssetA.fbs"; -native_include "EngineTests/Asset/AssetA.hpp"; + +native_include "EngineTests/Asset/AssetB_fwd.hpp"; namespace Flat.Bigfoot; table AssetB { - asset_a_ref: Flat.Bigfoot.Reference.AssetAHardRef (native_inline); - asset_a_refs: [Flat.Bigfoot.Reference.AssetAHardRef] (native_inline); + asset_a_ref: Flat.Bigfoot.HardRef (native_type: "::Bigfoot::HardRef<::Bigfoot::AssetA>", native_inline, native_type_pack_name: "HardRefAssetA"); + asset_a_refs: [Flat.Bigfoot.SoftRef] (native_type: "::Bigfoot::SoftRef<::Bigfoot::AssetA>", native_inline, native_type_pack_name: "SoftRefAssetA"); } -root_type AssetB; - -namespace Flat.Bigfoot.Reference; - -struct AssetBHardRef (native_type: "::Bigfoot::HardRef<::Bigfoot::AssetB>") -{ - hard_ref: HardRef; -} -struct AssetBSoftRef (native_type: "::Bigfoot::SoftRef<::Bigfoot::AssetB>") -{ - soft_ref: SoftRef; -} \ No newline at end of file +root_type AssetB; \ No newline at end of file diff --git a/Bigfoot/Tests/Engine/Include/EngineTests/Asset/AssetB.hpp b/Bigfoot/Tests/Engine/Include/EngineTests/Asset/AssetB.hpp index ebedfed..689d67e 100644 --- a/Bigfoot/Tests/Engine/Include/EngineTests/Asset/AssetB.hpp +++ b/Bigfoot/Tests/Engine/Include/EngineTests/Asset/AssetB.hpp @@ -1,5 +1,5 @@ /********************************************************************* - * \file AssetA.hpp + * \file AssetB.hpp * * \author Romain BOULLARD * \date April 2026 @@ -7,14 +7,23 @@ #ifndef BIGFOOT_ENGINE_ASSETB_HPP #define BIGFOOT_ENGINE_ASSETB_HPP #include -#include #include #include namespace Bigfoot { -class AssetB: public Asset<::Flat::Bigfoot::AssetB> +struct AssetBTraits +{ + using FLAT = ::Flat::Bigfoot::AssetB; + + static constexpr eastl::span ReflectionInfo() + { + return g_AssetB_bfbs; + } +}; + +class AssetB: public Asset { public: AssetB() = default; @@ -29,18 +38,9 @@ class AssetB: public Asset<::Flat::Bigfoot::AssetB> ~AssetB() = default; - [[nodiscard]] AssetB& operator=(const AssetB& p_asset) = default; - [[nodiscard]] AssetB& operator=(AssetB&& p_asset) = default; - - static constexpr eastl::span ReflectionInfo() - { - return g_AssetB_bfbs; - } }; } // namespace Bigfoot -ASSET_REF_DECL(AssetB) - #endif diff --git a/Bigfoot/Tests/Engine/Include/EngineTests/Asset/AssetB_fwd.hpp b/Bigfoot/Tests/Engine/Include/EngineTests/Asset/AssetB_fwd.hpp new file mode 100644 index 0000000..5171d6e --- /dev/null +++ b/Bigfoot/Tests/Engine/Include/EngineTests/Asset/AssetB_fwd.hpp @@ -0,0 +1,18 @@ +/********************************************************************* + * \file AssetB_fwd.hpp + * + * \author Romain BOULLARD + * \date May 2026 + *********************************************************************/ +#ifndef BIGFOOT_ENGINE_ASSETB_FWD_HPP +#define BIGFOOT_ENGINE_ASSETB_FWD_HPP +#include + +namespace Bigfoot +{ +class AssetB; +} // namespace Bigfoot + +ASSET_DECL(AssetB, ::Bigfoot::AssetB) + +#endif diff --git a/Bigfoot/Tests/Engine/Include/EngineTests/Asset/AssetB_generated.hpp b/Bigfoot/Tests/Engine/Include/EngineTests/Asset/AssetB_generated.hpp index 4a42014..18441bb 100644 --- a/Bigfoot/Tests/Engine/Include/EngineTests/Asset/AssetB_generated.hpp +++ b/Bigfoot/Tests/Engine/Include/EngineTests/Asset/AssetB_generated.hpp @@ -1,8 +1,8 @@ // automatically generated by the FlatBuffers compiler, do not modify -#ifndef FLATBUFFERS_GENERATED_ASSETB_FLAT_BIGFOOT_REFERENCE_H_ -#define FLATBUFFERS_GENERATED_ASSETB_FLAT_BIGFOOT_REFERENCE_H_ +#ifndef FLATBUFFERS_GENERATED_ASSETB_FLAT_BIGFOOT_H_ +#define FLATBUFFERS_GENERATED_ASSETB_FLAT_BIGFOOT_H_ #include "flatbuffers/flatbuffers.h" @@ -13,13 +13,17 @@ static_assert(FLATBUFFERS_VERSION_MAJOR == 25 && FLATBUFFERS_VERSION_REVISION == 19, "Non-compatible flatbuffers version included"); +#include "Engine/Asset/Reference.hpp" #include "System/UUID/UUID.hpp" -#include "EngineTests/Asset/AssetA.hpp" +#include "Engine/Asset/Reference.hpp" +#include "EngineTests/Asset/AssetA_fwd.hpp" +#include "EngineTests/Asset/AssetB_fwd.hpp" #include "Engine/Asset/Reference_generated.hpp" #include "EngineTests/Asset/AssetA_generated.hpp" #include "EASTL/unique_ptr.h" #include "EASTL/string.h" +#include "EASTL/vector.h" namespace Flat { namespace Bigfoot { @@ -28,87 +32,15 @@ struct AssetB; struct AssetBBuilder; struct AssetBT; -namespace Reference { - -struct AssetBHardRef; - -struct AssetBSoftRef; - -} // namespace Reference - inline const ::flatbuffers::TypeTable *AssetBTypeTable(); -namespace Reference { - -inline const ::flatbuffers::TypeTable *AssetBHardRefTypeTable(); - -inline const ::flatbuffers::TypeTable *AssetBSoftRefTypeTable(); - -FLATBUFFERS_MANUALLY_ALIGNED_STRUCT(1) AssetBHardRef FLATBUFFERS_FINAL_CLASS { - private: - Flat::Bigfoot::Reference::HardRef hard_ref_; - - public: - struct Traits; - static const ::flatbuffers::TypeTable *MiniReflectTypeTable() { - return AssetBHardRefTypeTable(); - } - static FLATBUFFERS_CONSTEXPR_CPP11 const char *GetFullyQualifiedName() { - return "Flat.Bigfoot.Reference.AssetBHardRef"; - } - AssetBHardRef() - : hard_ref_() { - } - AssetBHardRef(const Flat::Bigfoot::Reference::HardRef &_hard_ref) - : hard_ref_(_hard_ref) { - } - const Flat::Bigfoot::Reference::HardRef &hard_ref() const { - return hard_ref_; - } -}; -FLATBUFFERS_STRUCT_END(AssetBHardRef, 16); - -struct AssetBHardRef::Traits { - using type = AssetBHardRef; -}; - -FLATBUFFERS_MANUALLY_ALIGNED_STRUCT(1) AssetBSoftRef FLATBUFFERS_FINAL_CLASS { - private: - Flat::Bigfoot::Reference::SoftRef soft_ref_; - - public: - struct Traits; - static const ::flatbuffers::TypeTable *MiniReflectTypeTable() { - return AssetBSoftRefTypeTable(); - } - static FLATBUFFERS_CONSTEXPR_CPP11 const char *GetFullyQualifiedName() { - return "Flat.Bigfoot.Reference.AssetBSoftRef"; - } - AssetBSoftRef() - : soft_ref_() { - } - AssetBSoftRef(const Flat::Bigfoot::Reference::SoftRef &_soft_ref) - : soft_ref_(_soft_ref) { - } - const Flat::Bigfoot::Reference::SoftRef &soft_ref() const { - return soft_ref_; - } -}; -FLATBUFFERS_STRUCT_END(AssetBSoftRef, 16); - -struct AssetBSoftRef::Traits { - using type = AssetBSoftRef; -}; - -} // namespace Reference - struct AssetBT : public ::flatbuffers::NativeTable { typedef AssetB TableType; static FLATBUFFERS_CONSTEXPR_CPP11 const char *GetFullyQualifiedName() { return "Flat.Bigfoot.AssetBT"; } ::Bigfoot::HardRef<::Bigfoot::AssetA> asset_a_ref{}; - std::vector<::Bigfoot::HardRef<::Bigfoot::AssetA>> asset_a_refs{}; + eastl::vector<::Bigfoot::SoftRef<::Bigfoot::AssetA>> asset_a_refs{}; }; struct AssetB FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table { @@ -125,16 +57,16 @@ struct AssetB FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table { VT_ASSET_A_REF = 4, VT_ASSET_A_REFS = 6 }; - const Flat::Bigfoot::Reference::AssetAHardRef *asset_a_ref() const { - return GetStruct(VT_ASSET_A_REF); + const Flat::Bigfoot::HardRef *asset_a_ref() const { + return GetStruct(VT_ASSET_A_REF); } - const ::flatbuffers::Vector *asset_a_refs() const { - return GetPointer *>(VT_ASSET_A_REFS); + const ::flatbuffers::Vector *asset_a_refs() const { + return GetPointer *>(VT_ASSET_A_REFS); } template bool Verify(::flatbuffers::VerifierTemplate &verifier) const { return VerifyTableStart(verifier) && - VerifyField(verifier, VT_ASSET_A_REF, 1) && + VerifyField(verifier, VT_ASSET_A_REF, 1) && VerifyOffset(verifier, VT_ASSET_A_REFS) && verifier.VerifyVector(asset_a_refs()) && verifier.EndTable(); @@ -148,10 +80,10 @@ struct AssetBBuilder { typedef AssetB Table; ::flatbuffers::FlatBufferBuilder &fbb_; ::flatbuffers::uoffset_t start_; - void add_asset_a_ref(const Flat::Bigfoot::Reference::AssetAHardRef *asset_a_ref) { + void add_asset_a_ref(const Flat::Bigfoot::HardRef *asset_a_ref) { fbb_.AddStruct(AssetB::VT_ASSET_A_REF, asset_a_ref); } - void add_asset_a_refs(::flatbuffers::Offset<::flatbuffers::Vector> asset_a_refs) { + void add_asset_a_refs(::flatbuffers::Offset<::flatbuffers::Vector> asset_a_refs) { fbb_.AddOffset(AssetB::VT_ASSET_A_REFS, asset_a_refs); } explicit AssetBBuilder(::flatbuffers::FlatBufferBuilder &_fbb) @@ -167,8 +99,8 @@ struct AssetBBuilder { inline ::flatbuffers::Offset CreateAssetB( ::flatbuffers::FlatBufferBuilder &_fbb, - const Flat::Bigfoot::Reference::AssetAHardRef *asset_a_ref = nullptr, - ::flatbuffers::Offset<::flatbuffers::Vector> asset_a_refs = 0) { + const Flat::Bigfoot::HardRef *asset_a_ref = nullptr, + ::flatbuffers::Offset<::flatbuffers::Vector> asset_a_refs = 0) { AssetBBuilder builder_(_fbb); builder_.add_asset_a_refs(asset_a_refs); builder_.add_asset_a_ref(asset_a_ref); @@ -191,8 +123,8 @@ inline AssetBT *AssetB::UnPack(const ::flatbuffers::resolver_function_t *_resolv inline void AssetB::UnPackTo(AssetBT *_o, const ::flatbuffers::resolver_function_t *_resolver) const { (void)_o; (void)_resolver; - { auto _e = asset_a_ref(); if (_e) _o->asset_a_ref = ::flatbuffers::UnPack(*_e); } - { auto _e = asset_a_refs(); if (_e) { _o->asset_a_refs.resize(_e->size()); for (::flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->asset_a_refs[_i] = ::flatbuffers::UnPack(*_e->Get(_i)); } } else { _o->asset_a_refs.resize(0); } } + { auto _e = asset_a_ref(); if (_e) _o->asset_a_ref = ::flatbuffers::UnPackHardRefAssetA(*_e); } + { auto _e = asset_a_refs(); if (_e) { _o->asset_a_refs.resize(_e->size()); for (::flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->asset_a_refs[_i] = ::flatbuffers::UnPackSoftRefAssetA(*_e->Get(_i)); } } else { _o->asset_a_refs.resize(0); } } } inline ::flatbuffers::Offset CreateAssetB(::flatbuffers::FlatBufferBuilder &_fbb, const AssetBT *_o, const ::flatbuffers::rehasher_function_t *_rehasher) { @@ -203,8 +135,8 @@ inline ::flatbuffers::Offset AssetB::Pack(::flatbuffers::FlatBufferBuild (void)_rehasher; (void)_o; struct _VectorArgs { ::flatbuffers::FlatBufferBuilder *__fbb; const AssetBT* __o; const ::flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; - auto _asset_a_ref = ::flatbuffers::Pack(_o->asset_a_ref); - auto _asset_a_refs = _fbb.CreateVectorOfNativeStructs>(_o->asset_a_refs); + auto _asset_a_ref = ::flatbuffers::PackHardRefAssetA(_o->asset_a_ref); + auto _asset_a_refs = _fbb.CreateVectorOfNativeStructs>(_o->asset_a_refs.data(), _o->asset_a_refs.size(), ::flatbuffers::PackSoftRefAssetA); return Flat::Bigfoot::CreateAssetB( _fbb, &_asset_a_ref, @@ -214,10 +146,11 @@ inline ::flatbuffers::Offset AssetB::Pack(::flatbuffers::FlatBufferBuild inline const ::flatbuffers::TypeTable *AssetBTypeTable() { static const ::flatbuffers::TypeCode type_codes[] = { { ::flatbuffers::ET_SEQUENCE, 0, 0 }, - { ::flatbuffers::ET_SEQUENCE, 1, 0 } + { ::flatbuffers::ET_SEQUENCE, 1, 1 } }; static const ::flatbuffers::TypeFunction type_refs[] = { - Flat::Bigfoot::Reference::AssetAHardRefTypeTable + Flat::Bigfoot::HardRefTypeTable, + Flat::Bigfoot::SoftRefTypeTable }; static const char * const names[] = { "asset_a_ref", @@ -229,44 +162,6 @@ inline const ::flatbuffers::TypeTable *AssetBTypeTable() { return &tt; } -namespace Reference { - -inline const ::flatbuffers::TypeTable *AssetBHardRefTypeTable() { - static const ::flatbuffers::TypeCode type_codes[] = { - { ::flatbuffers::ET_SEQUENCE, 0, 0 } - }; - static const ::flatbuffers::TypeFunction type_refs[] = { - Flat::Bigfoot::Reference::HardRefTypeTable - }; - static const int64_t values[] = { 0, 16 }; - static const char * const names[] = { - "hard_ref" - }; - static const ::flatbuffers::TypeTable tt = { - ::flatbuffers::ST_STRUCT, 1, type_codes, type_refs, nullptr, values, names - }; - return &tt; -} - -inline const ::flatbuffers::TypeTable *AssetBSoftRefTypeTable() { - static const ::flatbuffers::TypeCode type_codes[] = { - { ::flatbuffers::ET_SEQUENCE, 0, 0 } - }; - static const ::flatbuffers::TypeFunction type_refs[] = { - Flat::Bigfoot::Reference::SoftRefTypeTable - }; - static const int64_t values[] = { 0, 16 }; - static const char * const names[] = { - "soft_ref" - }; - static const ::flatbuffers::TypeTable tt = { - ::flatbuffers::ST_STRUCT, 1, type_codes, type_refs, nullptr, values, names - }; - return &tt; -} - -} // namespace Reference - inline const Flat::Bigfoot::AssetB *GetAssetB(const void *buf) { return ::flatbuffers::GetRoot(buf); } @@ -318,4 +213,4 @@ inline eastl::unique_ptr UnPackSizePrefixedAssetB( } // namespace Bigfoot } // namespace Flat -#endif // FLATBUFFERS_GENERATED_ASSETB_FLAT_BIGFOOT_REFERENCE_H_ +#endif // FLATBUFFERS_GENERATED_ASSETB_FLAT_BIGFOOT_H_ diff --git a/Bigfoot/Tests/Engine/Include/EngineTests/Asset/AssetC.bfbs b/Bigfoot/Tests/Engine/Include/EngineTests/Asset/AssetC.bfbs new file mode 100644 index 0000000000000000000000000000000000000000..7280b17d2422878f58f49e8662ef48ace431b591 GIT binary patch literal 1656 zcmah}yKWOf6uleP55X$l2uq|$v4snY$m@cF!i8-hiX{q!9mxffy|%}(C1)+!>mpK0 zK7oRQf|5_*BPdhw8L3fVIcH|qS%U+UoSi%OHTO04M5J}n>R^+y9E&YQal{3ED4rZ) z7ij>`fn&e}t^x8-0SoxwDnOz80DksFK7x*Hkt-P5*y}kF{L38Z0S%x6KqP}7aXh6S zXqZb6ga^WbpDW00?37`XItUxG58&S>e8yG*{|k6Gl;h0x6=x?oQ|B7=;Ab3rpdEm` z8-RDd13cgp@EACm2T`>(JD)5TQMI{Rspy5g{uRd%S$nA6Aqd`6)4cr>b8`Xu4XEB9 z_Lpk1!cpEQc9!HfcI8{`tHiq*$0HzPhq}AELjoJKa=I5{*&83d#0TR@eaym8E&EY0 zoGTq~4Kgp0Q;+fazDcM$8S400*EIhppto{w(_z>6i%tI7JZhS^uk+Z>KiK5&Q703( ziyq*b9l2{8v7!HuxLet{Kf@7cc6ZNOda^m^MR^FV>?%N}m&JUZg5<2b_{&QH`dqZ+ z+ST8?{EoDLRyOUGHo_-o?#Sfsm|3_t_cEg3+cce`AHGq{8Q=lz^B;X|X6rG4oVo0- zM^k6Smv19h^9J(TKYe~P{Vk?vP_1+olX{8v!D>uZFps7p z-;+1MnzN?7gZn(8J?!+iHG7@KBzmhRVCy%OzPUFh&Jz8nv98y%G4&coX7Rw^ne-m! z*8+UMTHX5ZEY{1BTKTWS^I53;b~u`^$0|MQhvFj!wN&9qnM%{A2mBT9X|Nn8@jgQw z?1QP1t82ur-p!QkjK7SDVSfrq-vzIoKCr9-K3x(3YsZ}Gz`Z$jE?1Gd*yNNP&(7K} ueSXrpp}z`n0BqHtO5mA!De9@Dp2>+b#9uvj!SwyWc6Dsz4lg6cAD7>jto< +#include + +namespace Bigfoot +{ + inline constexpr eastl::array g_AssetC_bfbs = { + std::byte{0x20}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x42}, std::byte{0x46}, std::byte{0x42}, std::byte{0x53}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x2C}, std::byte{0x00}, + std::byte{0x04}, std::byte{0x00}, std::byte{0x08}, std::byte{0x00}, std::byte{0x0C}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x18}, std::byte{0x00}, std::byte{0x20}, std::byte{0x00}, std::byte{0x1C}, std::byte{0x00}, + std::byte{0x14}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x40}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x38}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x2C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, + std::byte{0x20}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0xD4}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x48}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, + std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, + std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, + std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x07}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x54}, std::byte{0x03}, std::byte{0x00}, std::byte{0x00}, std::byte{0x40}, std::byte{0x02}, std::byte{0x00}, std::byte{0x00}, + std::byte{0x98}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x74}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x7C}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, + std::byte{0x3C}, std::byte{0x05}, std::byte{0x00}, std::byte{0x00}, std::byte{0x05}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x6C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x58}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, + std::byte{0x40}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x24}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x60}, std::byte{0xFA}, std::byte{0xFF}, std::byte{0xFF}, + std::byte{0x68}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x03}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x58}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, + std::byte{0x20}, std::byte{0x03}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0C}, std::byte{0x02}, std::byte{0x00}, std::byte{0x00}, std::byte{0x7C}, std::byte{0xFA}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x04}, std::byte{0x02}, std::byte{0x00}, std::byte{0x00}, + std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x02}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x3C}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x03}, std::byte{0x00}, std::byte{0x00}, + std::byte{0x94}, std::byte{0xFA}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0xFC}, std::byte{0x02}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, + std::byte{0x24}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0xA8}, std::byte{0xFA}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0xF0}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, + std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0xB8}, std::byte{0xFA}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x0C}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, + std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0xD4}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x60}, std::byte{0xFD}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x20}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, + std::byte{0x0C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0xF0}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x03}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, + std::byte{0x5C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x20}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x9C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x13}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, + std::byte{0x46}, std::byte{0x6C}, std::byte{0x61}, std::byte{0x74}, std::byte{0x2E}, std::byte{0x42}, std::byte{0x69}, std::byte{0x67}, std::byte{0x66}, std::byte{0x6F}, std::byte{0x6F}, std::byte{0x74}, std::byte{0x2E}, std::byte{0x41}, std::byte{0x73}, std::byte{0x73}, + std::byte{0x65}, std::byte{0x74}, std::byte{0x43}, std::byte{0x00}, std::byte{0x4C}, std::byte{0xFE}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x02}, std::byte{0x00}, std::byte{0x08}, std::byte{0x00}, + std::byte{0x18}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x30}, std::byte{0xFE}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0E}, std::byte{0x0F}, + std::byte{0x05}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x61}, std::byte{0x73}, std::byte{0x73}, std::byte{0x65}, + std::byte{0x74}, std::byte{0x5F}, std::byte{0x62}, std::byte{0x5F}, std::byte{0x72}, std::byte{0x65}, std::byte{0x66}, std::byte{0x73}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x84}, std::byte{0xFE}, std::byte{0xFF}, std::byte{0xFF}, + std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x01}, std::byte{0x00}, std::byte{0x06}, std::byte{0x00}, std::byte{0x18}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, + std::byte{0x14}, std::byte{0xFC}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0F}, std::byte{0x03}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, + std::byte{0x0B}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x61}, std::byte{0x73}, std::byte{0x73}, std::byte{0x65}, std::byte{0x74}, std::byte{0x5F}, std::byte{0x62}, std::byte{0x5F}, std::byte{0x72}, std::byte{0x65}, std::byte{0x66}, std::byte{0x00}, + std::byte{0x14}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x08}, std::byte{0x00}, std::byte{0x0C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x06}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, + std::byte{0x00}, std::byte{0x00}, std::byte{0x05}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x04}, std::byte{0x00}, std::byte{0x18}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, + std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x58}, std::byte{0xFC}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0F}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, + std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0B}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x69}, std::byte{0x6E}, std::byte{0x6E}, std::byte{0x65}, std::byte{0x72}, std::byte{0x5F}, std::byte{0x74}, std::byte{0x61}, + std::byte{0x62}, std::byte{0x6C}, std::byte{0x65}, std::byte{0x00}, std::byte{0x4C}, std::byte{0xFE}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x30}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x20}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, + std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x2F}, std::byte{0x2F}, std::byte{0x41}, std::byte{0x73}, + std::byte{0x73}, std::byte{0x65}, std::byte{0x74}, std::byte{0x43}, std::byte{0x2E}, std::byte{0x66}, std::byte{0x62}, std::byte{0x73}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x02}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, + std::byte{0x5C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x20}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x17}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x46}, std::byte{0x6C}, std::byte{0x61}, std::byte{0x74}, + std::byte{0x2E}, std::byte{0x42}, std::byte{0x69}, std::byte{0x67}, std::byte{0x66}, std::byte{0x6F}, std::byte{0x6F}, std::byte{0x74}, std::byte{0x2E}, std::byte{0x49}, std::byte{0x6E}, std::byte{0x6E}, std::byte{0x65}, std::byte{0x72}, std::byte{0x54}, std::byte{0x61}, + std::byte{0x62}, std::byte{0x6C}, std::byte{0x65}, std::byte{0x00}, std::byte{0x4C}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x01}, std::byte{0x00}, std::byte{0x06}, std::byte{0x00}, + std::byte{0x18}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x30}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0E}, std::byte{0x0F}, + std::byte{0x03}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x61}, std::byte{0x73}, std::byte{0x73}, std::byte{0x65}, + std::byte{0x74}, std::byte{0x5F}, std::byte{0x61}, std::byte{0x5F}, std::byte{0x72}, std::byte{0x65}, std::byte{0x66}, std::byte{0x73}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x20}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0xFF}, + std::byte{0x00}, std::byte{0x01}, std::byte{0x04}, std::byte{0x00}, std::byte{0x18}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x10}, std::byte{0xFD}, std::byte{0xFF}, std::byte{0xFF}, + std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0F}, std::byte{0x03}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0B}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, + std::byte{0x61}, std::byte{0x73}, std::byte{0x73}, std::byte{0x65}, std::byte{0x74}, std::byte{0x5F}, std::byte{0x61}, std::byte{0x5F}, std::byte{0x72}, std::byte{0x65}, std::byte{0x66}, std::byte{0x00}, std::byte{0x04}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0xFF}, + std::byte{0x30}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x20}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, + std::byte{0x0C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x2F}, std::byte{0x2F}, std::byte{0x41}, std::byte{0x73}, std::byte{0x73}, std::byte{0x65}, std::byte{0x74}, std::byte{0x42}, std::byte{0x2E}, std::byte{0x66}, std::byte{0x62}, std::byte{0x73}, + std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x02}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0xA0}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x38}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, + std::byte{0x13}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x46}, std::byte{0x6C}, std::byte{0x61}, std::byte{0x74}, std::byte{0x2E}, std::byte{0x42}, std::byte{0x69}, std::byte{0x67}, std::byte{0x66}, std::byte{0x6F}, std::byte{0x6F}, std::byte{0x74}, + std::byte{0x2E}, std::byte{0x41}, std::byte{0x73}, std::byte{0x73}, std::byte{0x65}, std::byte{0x74}, std::byte{0x42}, std::byte{0x00}, std::byte{0x1C}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x0C}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, + std::byte{0x08}, std::byte{0x00}, std::byte{0x0A}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, + std::byte{0x00}, std::byte{0x00}, std::byte{0x07}, std::byte{0x00}, std::byte{0x1C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x01}, std::byte{0x00}, std::byte{0x06}, std::byte{0x00}, + std::byte{0x28}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x06}, std::byte{0x00}, std::byte{0x07}, std::byte{0x00}, + std::byte{0x08}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0C}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0E}, std::byte{0x0F}, + std::byte{0x05}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x61}, std::byte{0x73}, std::byte{0x73}, std::byte{0x65}, + std::byte{0x74}, std::byte{0x5F}, std::byte{0x61}, std::byte{0x5F}, std::byte{0x72}, std::byte{0x65}, std::byte{0x66}, std::byte{0x73}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x1C}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, + std::byte{0x08}, std::byte{0x00}, std::byte{0x0C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x06}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, + std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x05}, std::byte{0x00}, std::byte{0x1C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x04}, std::byte{0x00}, + std::byte{0x18}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0C}, std::byte{0xFE}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0F}, + std::byte{0x03}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0B}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x61}, std::byte{0x73}, std::byte{0x73}, std::byte{0x65}, + std::byte{0x74}, std::byte{0x5F}, std::byte{0x61}, std::byte{0x5F}, std::byte{0x72}, std::byte{0x65}, std::byte{0x66}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x08}, std::byte{0x00}, + std::byte{0x00}, std::byte{0x00}, std::byte{0x0C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, + std::byte{0x30}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x20}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, + std::byte{0x0C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x2F}, std::byte{0x2F}, std::byte{0x41}, std::byte{0x73}, std::byte{0x73}, std::byte{0x65}, std::byte{0x74}, std::byte{0x41}, std::byte{0x2E}, std::byte{0x66}, std::byte{0x62}, std::byte{0x73}, + std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x02}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x60}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x28}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, + std::byte{0x13}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x46}, std::byte{0x6C}, std::byte{0x61}, std::byte{0x74}, std::byte{0x2E}, std::byte{0x42}, std::byte{0x69}, std::byte{0x67}, std::byte{0x66}, std::byte{0x6F}, std::byte{0x6F}, std::byte{0x74}, + std::byte{0x2E}, std::byte{0x41}, std::byte{0x73}, std::byte{0x73}, std::byte{0x65}, std::byte{0x74}, std::byte{0x41}, std::byte{0x00}, std::byte{0x0C}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x08}, std::byte{0x00}, std::byte{0x0C}, std::byte{0x00}, + std::byte{0x04}, std::byte{0x00}, std::byte{0x06}, std::byte{0x00}, std::byte{0x0C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x06}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, + std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0xCC}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x08}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, + std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x6D}, std::byte{0x61}, std::byte{0x6E}, std::byte{0x61}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0C}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, + std::byte{0x08}, std::byte{0x00}, std::byte{0x0C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x06}, std::byte{0x00}, std::byte{0x0C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, + std::byte{0x24}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x0C}, std::byte{0x00}, std::byte{0x07}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, + std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x08}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x08}, + std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x06}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x68}, std::byte{0x65}, std::byte{0x61}, std::byte{0x6C}, std::byte{0x74}, std::byte{0x68}, std::byte{0x00}, std::byte{0x00}, + std::byte{0xD8}, std::byte{0xFE}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x1C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, + std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x6C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, + std::byte{0x20}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x46}, std::byte{0x6C}, std::byte{0x61}, std::byte{0x74}, std::byte{0x2E}, std::byte{0x42}, std::byte{0x69}, std::byte{0x67}, + std::byte{0x66}, std::byte{0x6F}, std::byte{0x6F}, std::byte{0x74}, std::byte{0x2E}, std::byte{0x53}, std::byte{0x6F}, std::byte{0x66}, std::byte{0x74}, std::byte{0x52}, std::byte{0x65}, std::byte{0x66}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, + std::byte{0x84}, std::byte{0xFE}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x18}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x50}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0xFF}, + std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0F}, std::byte{0x06}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, + std::byte{0x75}, std::byte{0x75}, std::byte{0x69}, std::byte{0x64}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x40}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, + std::byte{0x64}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x58}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, + std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x42}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x2F}, std::byte{0x2F}, std::byte{0x2E}, std::byte{0x2E}, std::byte{0x2F}, std::byte{0x2E}, std::byte{0x2E}, std::byte{0x2F}, + std::byte{0x2E}, std::byte{0x2E}, std::byte{0x2F}, std::byte{0x2E}, std::byte{0x2E}, std::byte{0x2F}, std::byte{0x2E}, std::byte{0x2E}, std::byte{0x2F}, std::byte{0x53}, std::byte{0x6F}, std::byte{0x75}, std::byte{0x72}, std::byte{0x63}, std::byte{0x65}, std::byte{0x73}, + std::byte{0x2F}, std::byte{0x45}, std::byte{0x6E}, std::byte{0x67}, std::byte{0x69}, std::byte{0x6E}, std::byte{0x65}, std::byte{0x2F}, std::byte{0x49}, std::byte{0x6E}, std::byte{0x63}, std::byte{0x6C}, std::byte{0x75}, std::byte{0x64}, std::byte{0x65}, std::byte{0x2F}, + std::byte{0x45}, std::byte{0x6E}, std::byte{0x67}, std::byte{0x69}, std::byte{0x6E}, std::byte{0x65}, std::byte{0x2F}, std::byte{0x41}, std::byte{0x73}, std::byte{0x73}, std::byte{0x65}, std::byte{0x74}, std::byte{0x2F}, std::byte{0x52}, std::byte{0x65}, std::byte{0x66}, + std::byte{0x65}, std::byte{0x72}, std::byte{0x65}, std::byte{0x6E}, std::byte{0x63}, std::byte{0x65}, std::byte{0x2E}, std::byte{0x66}, std::byte{0x62}, std::byte{0x73}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, + std::byte{0x20}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x46}, std::byte{0x6C}, std::byte{0x61}, std::byte{0x74}, std::byte{0x2E}, std::byte{0x42}, std::byte{0x69}, std::byte{0x67}, + std::byte{0x66}, std::byte{0x6F}, std::byte{0x6F}, std::byte{0x74}, std::byte{0x2E}, std::byte{0x48}, std::byte{0x61}, std::byte{0x72}, std::byte{0x64}, std::byte{0x52}, std::byte{0x65}, std::byte{0x66}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, + std::byte{0x34}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0xFF}, std::byte{0x28}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, + std::byte{0x07}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x08}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0C}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, + std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x0F}, std::byte{0x06}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, + std::byte{0x75}, std::byte{0x75}, std::byte{0x69}, std::byte{0x64}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x1C}, std::byte{0x00}, std::byte{0x08}, std::byte{0x00}, std::byte{0x0C}, std::byte{0x00}, + std::byte{0x07}, std::byte{0x00}, std::byte{0x10}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x18}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, + std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x60}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x54}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, + std::byte{0x10}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x3C}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x2F}, std::byte{0x2F}, std::byte{0x2E}, std::byte{0x2E}, + std::byte{0x2F}, std::byte{0x2E}, std::byte{0x2E}, std::byte{0x2F}, std::byte{0x2E}, std::byte{0x2E}, std::byte{0x2F}, std::byte{0x2E}, std::byte{0x2E}, std::byte{0x2F}, std::byte{0x2E}, std::byte{0x2E}, std::byte{0x2F}, std::byte{0x53}, std::byte{0x6F}, std::byte{0x75}, + std::byte{0x72}, std::byte{0x63}, std::byte{0x65}, std::byte{0x73}, std::byte{0x2F}, std::byte{0x53}, std::byte{0x79}, std::byte{0x73}, std::byte{0x74}, std::byte{0x65}, std::byte{0x6D}, std::byte{0x2F}, std::byte{0x49}, std::byte{0x6E}, std::byte{0x63}, std::byte{0x6C}, + std::byte{0x75}, std::byte{0x64}, std::byte{0x65}, std::byte{0x2F}, std::byte{0x53}, std::byte{0x79}, std::byte{0x73}, std::byte{0x74}, std::byte{0x65}, std::byte{0x6D}, std::byte{0x2F}, std::byte{0x55}, std::byte{0x55}, std::byte{0x49}, std::byte{0x44}, std::byte{0x2F}, + std::byte{0x55}, std::byte{0x55}, std::byte{0x49}, std::byte{0x44}, std::byte{0x2E}, std::byte{0x66}, std::byte{0x62}, std::byte{0x73}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, + std::byte{0x24}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x11}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x46}, std::byte{0x6C}, std::byte{0x61}, std::byte{0x74}, std::byte{0x2E}, std::byte{0x42}, std::byte{0x69}, std::byte{0x67}, + std::byte{0x66}, std::byte{0x6F}, std::byte{0x6F}, std::byte{0x74}, std::byte{0x2E}, std::byte{0x55}, std::byte{0x55}, std::byte{0x49}, std::byte{0x44}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x08}, std::byte{0x00}, std::byte{0x0C}, std::byte{0x00}, + std::byte{0x04}, std::byte{0x00}, std::byte{0x08}, std::byte{0x00}, std::byte{0x08}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x24}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x14}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, + std::byte{0x10}, std::byte{0x00}, std::byte{0x0C}, std::byte{0x00}, std::byte{0x04}, std::byte{0x00}, std::byte{0x05}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x06}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x08}, std::byte{0x00}, + std::byte{0x10}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x11}, std::byte{0x04}, std::byte{0x10}, std::byte{0x00}, std::byte{0x01}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, std::byte{0x05}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00}, + std::byte{0x62}, std::byte{0x79}, std::byte{0x74}, std::byte{0x65}, std::byte{0x73}, std::byte{0x00}, std::byte{0x00}, std::byte{0x00} + }; + +} // namespace Bigfoot + +#endif // ASSETC_BFBS_HPP diff --git a/Bigfoot/Tests/Engine/Include/EngineTests/Asset/AssetC.fbs b/Bigfoot/Tests/Engine/Include/EngineTests/Asset/AssetC.fbs new file mode 100644 index 0000000..9e2da2b --- /dev/null +++ b/Bigfoot/Tests/Engine/Include/EngineTests/Asset/AssetC.fbs @@ -0,0 +1,24 @@ +include "Engine/Asset/Reference.fbs"; + +include "EngineTests/Asset/AssetA.fbs"; +include "EngineTests/Asset/AssetB.fbs"; + +native_include "EngineTests/Asset/AssetC_fwd.hpp"; + +namespace Flat.Bigfoot; + +table InnerTable +{ + asset_a_ref: Flat.Bigfoot.HardRef (native_type: "::Bigfoot::HardRef<::Bigfoot::AssetA>", native_inline, native_type_pack_name: "HardRefAssetA"); + asset_a_refs: [Flat.Bigfoot.HardRef] (native_type: "::Bigfoot::HardRef<::Bigfoot::AssetA>", native_inline, native_type_pack_name: "HardRefAssetA"); +} + +table AssetC +{ + inner_table: InnerTable (required); + + asset_b_ref: Flat.Bigfoot.HardRef (native_type: "::Bigfoot::HardRef<::Bigfoot::AssetB>", native_inline, native_type_pack_name: "HardRefAssetB"); + asset_b_refs: [Flat.Bigfoot.SoftRef] (native_type: "::Bigfoot::SoftRef<::Bigfoot::AssetB>", native_inline, native_type_pack_name: "SoftRefAssetB"); +} + +root_type AssetC; \ No newline at end of file diff --git a/Bigfoot/Tests/Engine/Include/EngineTests/Asset/AssetC.hpp b/Bigfoot/Tests/Engine/Include/EngineTests/Asset/AssetC.hpp new file mode 100644 index 0000000..1bf5d47 --- /dev/null +++ b/Bigfoot/Tests/Engine/Include/EngineTests/Asset/AssetC.hpp @@ -0,0 +1,49 @@ +/********************************************************************* + * \file AssetC.hpp + * + * \author Romain BOULLARD + * \date April 2026 + *********************************************************************/ +#ifndef BIGFOOT_ENGINE_ASSETC_HPP +#define BIGFOOT_ENGINE_ASSETC_HPP +#include + +#include +#include + +namespace Bigfoot +{ +struct AssetCTraits +{ + using FLAT = ::Flat::Bigfoot::AssetC; + + static constexpr eastl::span ReflectionInfo() + { + return g_AssetC_bfbs; + } +}; + +class AssetC: public Asset +{ + public: + AssetC() + { + GetAsset().inner_table = eastl::make_unique<::Flat::Bigfoot::InnerTableT>(); + } + + AssetC(const eastl::span p_flatbuffer): + Asset(p_flatbuffer) + { + } + + AssetC(const AssetC& p_asset) = default; + AssetC(AssetC&& p_asset) = default; + + ~AssetC() = default; + + AssetC& operator=(const AssetC& p_asset) = default; + AssetC& operator=(AssetC&& p_asset) = default; +}; +} // namespace Bigfoot + +#endif diff --git a/Bigfoot/Tests/Engine/Include/EngineTests/Asset/AssetC_fwd.hpp b/Bigfoot/Tests/Engine/Include/EngineTests/Asset/AssetC_fwd.hpp new file mode 100644 index 0000000..3f71b53 --- /dev/null +++ b/Bigfoot/Tests/Engine/Include/EngineTests/Asset/AssetC_fwd.hpp @@ -0,0 +1,18 @@ +/********************************************************************* + * \file AssetC_fwd.hpp + * + * \author Romain BOULLARD + * \date May 2026 + *********************************************************************/ +#ifndef BIGFOOT_ENGINE_ASSETC_FWD_HPP +#define BIGFOOT_ENGINE_ASSETC_FWD_HPP +#include + +namespace Bigfoot +{ +class AssetC; +} // namespace Bigfoot + +ASSET_DECL(AssetC, ::Bigfoot::AssetC) + +#endif diff --git a/Bigfoot/Tests/Engine/Include/EngineTests/Asset/AssetC_generated.hpp b/Bigfoot/Tests/Engine/Include/EngineTests/Asset/AssetC_generated.hpp new file mode 100644 index 0000000..c2577fd --- /dev/null +++ b/Bigfoot/Tests/Engine/Include/EngineTests/Asset/AssetC_generated.hpp @@ -0,0 +1,387 @@ +// automatically generated by the FlatBuffers compiler, do not modify + + +#ifndef FLATBUFFERS_GENERATED_ASSETC_FLAT_BIGFOOT_H_ +#define FLATBUFFERS_GENERATED_ASSETC_FLAT_BIGFOOT_H_ + +#include "flatbuffers/flatbuffers.h" + +// Ensure the included flatbuffers.h is the same version as when this file was +// generated, otherwise it may not be compatible. +static_assert(FLATBUFFERS_VERSION_MAJOR == 25 && + FLATBUFFERS_VERSION_MINOR == 12 && + FLATBUFFERS_VERSION_REVISION == 19, + "Non-compatible flatbuffers version included"); + +#include "Engine/Asset/Reference.hpp" +#include "System/UUID/UUID.hpp" +#include "Engine/Asset/Reference.hpp" +#include "EngineTests/Asset/AssetA_fwd.hpp" +#include "EngineTests/Asset/AssetB_fwd.hpp" +#include "EngineTests/Asset/AssetC_fwd.hpp" +#include "Engine/Asset/Reference_generated.hpp" +#include "EngineTests/Asset/AssetA_generated.hpp" +#include "EngineTests/Asset/AssetB_generated.hpp" + +#include "EASTL/unique_ptr.h" +#include "EASTL/string.h" +#include "EASTL/vector.h" + +namespace Flat { +namespace Bigfoot { + +struct InnerTable; +struct InnerTableBuilder; +struct InnerTableT; + +struct AssetC; +struct AssetCBuilder; +struct AssetCT; + +inline const ::flatbuffers::TypeTable *InnerTableTypeTable(); + +inline const ::flatbuffers::TypeTable *AssetCTypeTable(); + +struct InnerTableT : public ::flatbuffers::NativeTable { + typedef InnerTable TableType; + static FLATBUFFERS_CONSTEXPR_CPP11 const char *GetFullyQualifiedName() { + return "Flat.Bigfoot.InnerTableT"; + } + ::Bigfoot::HardRef<::Bigfoot::AssetA> asset_a_ref{}; + eastl::vector<::Bigfoot::HardRef<::Bigfoot::AssetA>> asset_a_refs{}; +}; + +struct InnerTable FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table { + typedef InnerTableT NativeTableType; + typedef InnerTableBuilder Builder; + struct Traits; + static const ::flatbuffers::TypeTable *MiniReflectTypeTable() { + return InnerTableTypeTable(); + } + static FLATBUFFERS_CONSTEXPR_CPP11 const char *GetFullyQualifiedName() { + return "Flat.Bigfoot.InnerTable"; + } + enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { + VT_ASSET_A_REF = 4, + VT_ASSET_A_REFS = 6 + }; + const Flat::Bigfoot::HardRef *asset_a_ref() const { + return GetStruct(VT_ASSET_A_REF); + } + const ::flatbuffers::Vector *asset_a_refs() const { + return GetPointer *>(VT_ASSET_A_REFS); + } + template + bool Verify(::flatbuffers::VerifierTemplate &verifier) const { + return VerifyTableStart(verifier) && + VerifyField(verifier, VT_ASSET_A_REF, 1) && + VerifyOffset(verifier, VT_ASSET_A_REFS) && + verifier.VerifyVector(asset_a_refs()) && + verifier.EndTable(); + } + InnerTableT *UnPack(const ::flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(InnerTableT *_o, const ::flatbuffers::resolver_function_t *_resolver = nullptr) const; + static ::flatbuffers::Offset Pack(::flatbuffers::FlatBufferBuilder &_fbb, const InnerTableT* _o, const ::flatbuffers::rehasher_function_t *_rehasher = nullptr); +}; + +struct InnerTableBuilder { + typedef InnerTable Table; + ::flatbuffers::FlatBufferBuilder &fbb_; + ::flatbuffers::uoffset_t start_; + void add_asset_a_ref(const Flat::Bigfoot::HardRef *asset_a_ref) { + fbb_.AddStruct(InnerTable::VT_ASSET_A_REF, asset_a_ref); + } + void add_asset_a_refs(::flatbuffers::Offset<::flatbuffers::Vector> asset_a_refs) { + fbb_.AddOffset(InnerTable::VT_ASSET_A_REFS, asset_a_refs); + } + explicit InnerTableBuilder(::flatbuffers::FlatBufferBuilder &_fbb) + : fbb_(_fbb) { + start_ = fbb_.StartTable(); + } + ::flatbuffers::Offset Finish() { + const auto end = fbb_.EndTable(start_); + auto o = ::flatbuffers::Offset(end); + return o; + } +}; + +inline ::flatbuffers::Offset CreateInnerTable( + ::flatbuffers::FlatBufferBuilder &_fbb, + const Flat::Bigfoot::HardRef *asset_a_ref = nullptr, + ::flatbuffers::Offset<::flatbuffers::Vector> asset_a_refs = 0) { + InnerTableBuilder builder_(_fbb); + builder_.add_asset_a_refs(asset_a_refs); + builder_.add_asset_a_ref(asset_a_ref); + return builder_.Finish(); +} + +struct InnerTable::Traits { + using type = InnerTable; + static auto constexpr Create = CreateInnerTable; +}; + +::flatbuffers::Offset CreateInnerTable(::flatbuffers::FlatBufferBuilder &_fbb, const InnerTableT *_o, const ::flatbuffers::rehasher_function_t *_rehasher = nullptr); + +struct AssetCT : public ::flatbuffers::NativeTable { + typedef AssetC TableType; + static FLATBUFFERS_CONSTEXPR_CPP11 const char *GetFullyQualifiedName() { + return "Flat.Bigfoot.AssetCT"; + } + eastl::unique_ptr inner_table{}; + ::Bigfoot::HardRef<::Bigfoot::AssetB> asset_b_ref{}; + eastl::vector<::Bigfoot::SoftRef<::Bigfoot::AssetB>> asset_b_refs{}; + AssetCT() = default; + AssetCT(const AssetCT &o); + AssetCT(AssetCT&&) FLATBUFFERS_NOEXCEPT = default; + AssetCT &operator=(AssetCT o) FLATBUFFERS_NOEXCEPT; +}; + +struct AssetC FLATBUFFERS_FINAL_CLASS : private ::flatbuffers::Table { + typedef AssetCT NativeTableType; + typedef AssetCBuilder Builder; + struct Traits; + static const ::flatbuffers::TypeTable *MiniReflectTypeTable() { + return AssetCTypeTable(); + } + static FLATBUFFERS_CONSTEXPR_CPP11 const char *GetFullyQualifiedName() { + return "Flat.Bigfoot.AssetC"; + } + enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE { + VT_INNER_TABLE = 4, + VT_ASSET_B_REF = 6, + VT_ASSET_B_REFS = 8 + }; + const Flat::Bigfoot::InnerTable *inner_table() const { + return GetPointer(VT_INNER_TABLE); + } + const Flat::Bigfoot::HardRef *asset_b_ref() const { + return GetStruct(VT_ASSET_B_REF); + } + const ::flatbuffers::Vector *asset_b_refs() const { + return GetPointer *>(VT_ASSET_B_REFS); + } + template + bool Verify(::flatbuffers::VerifierTemplate &verifier) const { + return VerifyTableStart(verifier) && + VerifyOffsetRequired(verifier, VT_INNER_TABLE) && + verifier.VerifyTable(inner_table()) && + VerifyField(verifier, VT_ASSET_B_REF, 1) && + VerifyOffset(verifier, VT_ASSET_B_REFS) && + verifier.VerifyVector(asset_b_refs()) && + verifier.EndTable(); + } + AssetCT *UnPack(const ::flatbuffers::resolver_function_t *_resolver = nullptr) const; + void UnPackTo(AssetCT *_o, const ::flatbuffers::resolver_function_t *_resolver = nullptr) const; + static ::flatbuffers::Offset Pack(::flatbuffers::FlatBufferBuilder &_fbb, const AssetCT* _o, const ::flatbuffers::rehasher_function_t *_rehasher = nullptr); +}; + +struct AssetCBuilder { + typedef AssetC Table; + ::flatbuffers::FlatBufferBuilder &fbb_; + ::flatbuffers::uoffset_t start_; + void add_inner_table(::flatbuffers::Offset inner_table) { + fbb_.AddOffset(AssetC::VT_INNER_TABLE, inner_table); + } + void add_asset_b_ref(const Flat::Bigfoot::HardRef *asset_b_ref) { + fbb_.AddStruct(AssetC::VT_ASSET_B_REF, asset_b_ref); + } + void add_asset_b_refs(::flatbuffers::Offset<::flatbuffers::Vector> asset_b_refs) { + fbb_.AddOffset(AssetC::VT_ASSET_B_REFS, asset_b_refs); + } + explicit AssetCBuilder(::flatbuffers::FlatBufferBuilder &_fbb) + : fbb_(_fbb) { + start_ = fbb_.StartTable(); + } + ::flatbuffers::Offset Finish() { + const auto end = fbb_.EndTable(start_); + auto o = ::flatbuffers::Offset(end); + fbb_.Required(o, AssetC::VT_INNER_TABLE); + return o; + } +}; + +inline ::flatbuffers::Offset CreateAssetC( + ::flatbuffers::FlatBufferBuilder &_fbb, + ::flatbuffers::Offset inner_table = 0, + const Flat::Bigfoot::HardRef *asset_b_ref = nullptr, + ::flatbuffers::Offset<::flatbuffers::Vector> asset_b_refs = 0) { + AssetCBuilder builder_(_fbb); + builder_.add_asset_b_refs(asset_b_refs); + builder_.add_asset_b_ref(asset_b_ref); + builder_.add_inner_table(inner_table); + return builder_.Finish(); +} + +struct AssetC::Traits { + using type = AssetC; + static auto constexpr Create = CreateAssetC; +}; + +::flatbuffers::Offset CreateAssetC(::flatbuffers::FlatBufferBuilder &_fbb, const AssetCT *_o, const ::flatbuffers::rehasher_function_t *_rehasher = nullptr); + +inline InnerTableT *InnerTable::UnPack(const ::flatbuffers::resolver_function_t *_resolver) const { + auto _o = std::make_unique(); + UnPackTo(_o.get(), _resolver); + return _o.release(); +} + +inline void InnerTable::UnPackTo(InnerTableT *_o, const ::flatbuffers::resolver_function_t *_resolver) const { + (void)_o; + (void)_resolver; + { auto _e = asset_a_ref(); if (_e) _o->asset_a_ref = ::flatbuffers::UnPackHardRefAssetA(*_e); } + { auto _e = asset_a_refs(); if (_e) { _o->asset_a_refs.resize(_e->size()); for (::flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->asset_a_refs[_i] = ::flatbuffers::UnPackHardRefAssetA(*_e->Get(_i)); } } else { _o->asset_a_refs.resize(0); } } +} + +inline ::flatbuffers::Offset CreateInnerTable(::flatbuffers::FlatBufferBuilder &_fbb, const InnerTableT *_o, const ::flatbuffers::rehasher_function_t *_rehasher) { + return InnerTable::Pack(_fbb, _o, _rehasher); +} + +inline ::flatbuffers::Offset InnerTable::Pack(::flatbuffers::FlatBufferBuilder &_fbb, const InnerTableT* _o, const ::flatbuffers::rehasher_function_t *_rehasher) { + (void)_rehasher; + (void)_o; + struct _VectorArgs { ::flatbuffers::FlatBufferBuilder *__fbb; const InnerTableT* __o; const ::flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; + auto _asset_a_ref = ::flatbuffers::PackHardRefAssetA(_o->asset_a_ref); + auto _asset_a_refs = _fbb.CreateVectorOfNativeStructs>(_o->asset_a_refs.data(), _o->asset_a_refs.size(), ::flatbuffers::PackHardRefAssetA); + return Flat::Bigfoot::CreateInnerTable( + _fbb, + &_asset_a_ref, + _asset_a_refs); +} + +inline AssetCT::AssetCT(const AssetCT &o) + : inner_table((o.inner_table) ? new Flat::Bigfoot::InnerTableT(*o.inner_table) : nullptr), + asset_b_ref(o.asset_b_ref), + asset_b_refs(o.asset_b_refs) { +} + +inline AssetCT &AssetCT::operator=(AssetCT o) FLATBUFFERS_NOEXCEPT { + std::swap(inner_table, o.inner_table); + std::swap(asset_b_ref, o.asset_b_ref); + std::swap(asset_b_refs, o.asset_b_refs); + return *this; +} + +inline AssetCT *AssetC::UnPack(const ::flatbuffers::resolver_function_t *_resolver) const { + auto _o = std::make_unique(); + UnPackTo(_o.get(), _resolver); + return _o.release(); +} + +inline void AssetC::UnPackTo(AssetCT *_o, const ::flatbuffers::resolver_function_t *_resolver) const { + (void)_o; + (void)_resolver; + { auto _e = inner_table(); if (_e) { if(_o->inner_table) { _e->UnPackTo(_o->inner_table.get(), _resolver); } else { _o->inner_table = eastl::unique_ptr(_e->UnPack(_resolver)); } } else if (_o->inner_table) { _o->inner_table.reset(); } } + { auto _e = asset_b_ref(); if (_e) _o->asset_b_ref = ::flatbuffers::UnPackHardRefAssetB(*_e); } + { auto _e = asset_b_refs(); if (_e) { _o->asset_b_refs.resize(_e->size()); for (::flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->asset_b_refs[_i] = ::flatbuffers::UnPackSoftRefAssetB(*_e->Get(_i)); } } else { _o->asset_b_refs.resize(0); } } +} + +inline ::flatbuffers::Offset CreateAssetC(::flatbuffers::FlatBufferBuilder &_fbb, const AssetCT *_o, const ::flatbuffers::rehasher_function_t *_rehasher) { + return AssetC::Pack(_fbb, _o, _rehasher); +} + +inline ::flatbuffers::Offset AssetC::Pack(::flatbuffers::FlatBufferBuilder &_fbb, const AssetCT* _o, const ::flatbuffers::rehasher_function_t *_rehasher) { + (void)_rehasher; + (void)_o; + struct _VectorArgs { ::flatbuffers::FlatBufferBuilder *__fbb; const AssetCT* __o; const ::flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va; + auto _inner_table = _o->inner_table ? CreateInnerTable(_fbb, _o->inner_table.get(), _rehasher) : 0; + auto _asset_b_ref = ::flatbuffers::PackHardRefAssetB(_o->asset_b_ref); + auto _asset_b_refs = _fbb.CreateVectorOfNativeStructs>(_o->asset_b_refs.data(), _o->asset_b_refs.size(), ::flatbuffers::PackSoftRefAssetB); + return Flat::Bigfoot::CreateAssetC( + _fbb, + _inner_table, + &_asset_b_ref, + _asset_b_refs); +} + +inline const ::flatbuffers::TypeTable *InnerTableTypeTable() { + static const ::flatbuffers::TypeCode type_codes[] = { + { ::flatbuffers::ET_SEQUENCE, 0, 0 }, + { ::flatbuffers::ET_SEQUENCE, 1, 0 } + }; + static const ::flatbuffers::TypeFunction type_refs[] = { + Flat::Bigfoot::HardRefTypeTable + }; + static const char * const names[] = { + "asset_a_ref", + "asset_a_refs" + }; + static const ::flatbuffers::TypeTable tt = { + ::flatbuffers::ST_TABLE, 2, type_codes, type_refs, nullptr, nullptr, names + }; + return &tt; +} + +inline const ::flatbuffers::TypeTable *AssetCTypeTable() { + static const ::flatbuffers::TypeCode type_codes[] = { + { ::flatbuffers::ET_SEQUENCE, 0, 0 }, + { ::flatbuffers::ET_SEQUENCE, 0, 1 }, + { ::flatbuffers::ET_SEQUENCE, 1, 2 } + }; + static const ::flatbuffers::TypeFunction type_refs[] = { + Flat::Bigfoot::InnerTableTypeTable, + Flat::Bigfoot::HardRefTypeTable, + Flat::Bigfoot::SoftRefTypeTable + }; + static const char * const names[] = { + "inner_table", + "asset_b_ref", + "asset_b_refs" + }; + static const ::flatbuffers::TypeTable tt = { + ::flatbuffers::ST_TABLE, 3, type_codes, type_refs, nullptr, nullptr, names + }; + return &tt; +} + +inline const Flat::Bigfoot::AssetC *GetAssetC(const void *buf) { + return ::flatbuffers::GetRoot(buf); +} + +inline const Flat::Bigfoot::AssetC *GetSizePrefixedAssetC(const void *buf) { + return ::flatbuffers::GetSizePrefixedRoot(buf); +} + +template +inline bool VerifyAssetCBuffer( + ::flatbuffers::VerifierTemplate &verifier) { + return verifier.template VerifyBuffer(nullptr); +} + +template +inline bool VerifySizePrefixedAssetCBuffer( + ::flatbuffers::VerifierTemplate &verifier) { + return verifier.template VerifySizePrefixedBuffer(nullptr); +} + +inline const char *AssetCExtension() { + return "bfbs"; +} + +inline void FinishAssetCBuffer( + ::flatbuffers::FlatBufferBuilder &fbb, + ::flatbuffers::Offset root) { + fbb.Finish(root); +} + +inline void FinishSizePrefixedAssetCBuffer( + ::flatbuffers::FlatBufferBuilder &fbb, + ::flatbuffers::Offset root) { + fbb.FinishSizePrefixed(root); +} + +inline eastl::unique_ptr UnPackAssetC( + const void *buf, + const ::flatbuffers::resolver_function_t *res = nullptr) { + return eastl::unique_ptr(GetAssetC(buf)->UnPack(res)); +} + +inline eastl::unique_ptr UnPackSizePrefixedAssetC( + const void *buf, + const ::flatbuffers::resolver_function_t *res = nullptr) { + return eastl::unique_ptr(GetSizePrefixedAssetC(buf)->UnPack(res)); +} + +} // namespace Bigfoot +} // namespace Flat + +#endif // FLATBUFFERS_GENERATED_ASSETC_FLAT_BIGFOOT_H_ diff --git a/CMake/Utils.cmake b/CMake/Utils.cmake index 6143af5..3908f2b 100644 --- a/CMake/Utils.cmake +++ b/CMake/Utils.cmake @@ -88,8 +88,10 @@ function(bigfoot_compile_flatbuffers BigfootDependencies) --force-empty --cpp-ptr-type "eastl::unique_ptr" --cpp-str-type "eastl::string" + --cpp-vec-type "eastl::vector" --cpp-include "EASTL/unique_ptr.h" --cpp-include "EASTL/string.h" + --cpp-include "EASTL/vector.h" -o "${SOURCE_DIRECTORY}" --schema "${SOURCE_FILE}" ) diff --git a/conanfile.py b/conanfile.py index 2581b0e..8eb8b3c 100644 --- a/conanfile.py +++ b/conanfile.py @@ -66,7 +66,7 @@ class Bigfoot(ConanFile): self.requires("sqlite3/3.51.2@bigfootdev/main", transitive_headers=True) self.requires("rapidhash/3.0@bigfootdev/main", transitive_headers=True) self.requires("effolkronium-random/1.5.0", transitive_headers=True) - self.requires("flatbuffers/25.12.19@bigfootdev/main", transitive_headers=True) + self.requires("flatbuffers/25.12.19-2026-02-06-03fffb2-bigfoot@bigfootdev/main", transitive_headers=True) if(self.settings.build_type == "RelWithDebInfo" or self.settings.build_type == "Debug"): self.requires("quill/11.0.2", transitive_headers=True)