new project design for multy dll

This commit is contained in:
ouczbs 2024-08-06 16:08:11 +08:00
parent a552c5d8e4
commit 9e3d8fc977
44 changed files with 3031 additions and 595 deletions

View File

@ -0,0 +1,276 @@
#include "resource_system.h"
#include "os/file_manager.h"
#include "os/file_handle.h"
#include "archive/json.h"
#include "asset/module.h"
namespace api {
using GenericPtr = ResourceSystem::GenericPtr;
using ResourceFileBlock = ResourceSystem::ResourceFileBlock;
class ResourceSystemImpl
{
public:
ResourceSystem* owner;
uint32_t mFileFlag;
array<GenericPtr, ResourceCount> mResourceTable;
table<Guid, FileBlock*> mResourceFile;
table<Name, IFileLoader*> mFileLoader;
table<Name, std::pair<std::string, uint32_t>> mFileFlags;
table<Name, ResourceFileBlock> mFileBlock;
vector<ResourceFileBlock*> mDirtyBlock;
public:
ResourceSystemImpl(ResourceSystem* owner);
void Initialize();
void Finalize();
public:
IFileLoader* GetLoader(Name extension);
ResourceFileBlock& GetFileBlock(PackagePath path);
FileBlock* GetResourceFile(const Guid& guid);
ResourceBundle& Load(PackagePath path, bool reload_resource = true, int deep = 0);
MetaBundle GetMeta(PackagePath path);
MetaBundle GetVisitMeta(const ResourceBundle& bundle);
void SaveMeta(PackagePath path, const MetaBundle& bundle);
void SaveDirtyFile();
void SaveFile(PackagePath path, const ResourceBundle& bundle);
void LoadFileFlags();
void SaveFileFlags();
void LoadResourceFile();
void SaveResourceFile();
uint32_t GetFileFlag(Name name);
void SetFileFlag(Name name, uint32_t flag);
};
MetaBundle ResourceSystemImpl::GetVisitMeta(const ResourceBundle& bundle)
{
MetaBundle new_meta = MetaBundle{};
return new_meta;
}
ResourceSystemImpl::ResourceSystemImpl(ResourceSystem* owner) : owner(owner)
{
mResourceTable = detail::ResourceHelper::GenResourceTables();
LoadFileFlags();
LoadResourceFile();
}
void ResourceSystemImpl::Initialize()
{
SaveFileFlags();
SaveDirtyFile();
}
void ResourceSystemImpl::Finalize()
{
SaveFileFlags();
SaveDirtyFile();
SaveResourceFile();
}
IFileLoader* ResourceSystemImpl::GetLoader(Name extension)
{
auto itr = mFileLoader.find(extension);
if (itr == mFileLoader.end())
return nullptr;
return itr->second;
}
ResourceBundle& ResourceSystemImpl::Load(PackagePath path, bool reload_resource, int deep)
{
Name name = path();
auto it = mFileBlock.find(name);
auto& res = mFileBlock[name];
if (deep > 5 || (!reload_resource && res && it != mFileBlock.end())) {
return res.bundle;
}
Name ext = path.GetExtension();
IFileLoader* loader = GetLoader(ext);
MetaBundle meta = GetMeta(path);
ResourceBundle bundle = loader->LoadFile(path, meta);
MetaBundle new_meta = GetVisitMeta(bundle);
bool is_dirty_meta = meta != new_meta;
for (auto& elem : bundle.GetAll()) {
std::visit([&](auto& handle) {
using T = std::decay_t<decltype(*handle)>;
owner->GetBlock<T>(handle)->file = &res;
mResourceFile[handle.guid] = FileManager::Ptr()->FindPathBlock(path);
}, elem);
}
if (is_dirty_meta || res.IsDirty()) {
mDirtyBlock.push_back(&res);
}
res.path = path.SafePath();
res.bundle = bundle;
res.Loaded(true).MetaDirty(is_dirty_meta);
res.bundle = bundle;
if (!new_meta.includes.empty()) {
for (auto include : new_meta.includes) {
Load(include, false, deep + 1);
}
}
return res.bundle;
}
MetaBundle ResourceSystemImpl::GetMeta(PackagePath path)
{
FileHandle handle(path + ".meta");
if (!handle.Open(FILE_OP::READ, mFileFlag & FileFlag::File_Binary)) {
return {};
}
meta::result<MetaBundle, SerializeError> res;
if (mFileFlag & FileFlag::File_Binary) {
}
else {
pmr::string text = handle.ReadAll<pmr::string>();
res = JsonDeserialize<MetaBundle>(text);
}
if (!res) {
return {};
}
return res.value();
}
void ResourceSystemImpl::SaveMeta(PackagePath path, const MetaBundle& bundle)
{
FileHandle handle(path + ".meta");
handle.Open(FILE_OP::WRITE, mFileFlag & FileFlag::File_Binary);
if (mFileFlag & FileFlag::File_Binary) {
}
else {
handle.Write(JsonSerialize(bundle));
}
}
void ResourceSystemImpl::SaveDirtyFile()
{
for (auto block : mDirtyBlock) {
if (block->IsMetaDirty()) {
block->MetaDirty(false);
MetaBundle new_meta = GetVisitMeta(block->bundle);
SaveMeta(block->path, new_meta);
}
if (block->IsDirty()) {
block->Dirty(false);
auto loader = GetLoader(block->path.GetExtension());
loader->SaveFile(block->path, block->bundle);
}
}
mDirtyBlock.clear();
}
void ResourceSystemImpl::SaveFile(PackagePath path, const ResourceBundle& bundle)
{
auto loader = GetLoader(path.GetExtension());
loader->SaveFile(path, bundle);
}
void ResourceSystemImpl::LoadFileFlags()
{
}
void ResourceSystemImpl::SaveFileFlags()
{
}
void ResourceSystemImpl::LoadResourceFile()
{
}
void ResourceSystemImpl::SaveResourceFile()
{
}
inline uint32_t ResourceSystemImpl::GetFileFlag(Name name)
{
auto it = mFileFlags.find(name);
if (it == mFileFlags.end()) {
return 0;
}
return it->second.second;
}
inline void ResourceSystemImpl::SetFileFlag(Name name, uint32_t flag)
{
auto it = mFileFlags.find(name);
if (it == mFileFlags.end()) {
mFileFlags.emplace(name, std::make_pair(std::string(name.ToStringView()), flag));
}
else {
it->second.second = flag;
}
}
inline ResourceSystem::ResourceFileBlock& ResourceSystemImpl::GetFileBlock(PackagePath path) {
return mFileBlock[Name(path())];
}
inline FileBlock* ResourceSystemImpl::GetResourceFile(const Guid& guid)
{
auto it = mResourceFile.find(guid);
if (it == mResourceFile.end())
return nullptr;
return it->second;
}
inline ResourceSystem::ResourceSystem()
{
impl = new(GlobalPool()) ResourceSystemImpl(this);
}
inline void api::ResourceSystem::Initialize()
{
impl->Initialize();
}
inline void ResourceSystem::Finalize()
{
constexpr static auto release_tables = detail::ResourceHelper::ReleaseTableResources();
for (auto& elem : release_tables)
elem(this);
impl->Finalize();
}
inline IFileLoader* ResourceSystem::GetLoader(Name extension)
{
return impl->GetLoader(extension);
}
inline void ResourceSystem::RegisterLoader(Name ext, IFileLoader* loader)
{
auto ptr = impl->mFileLoader[ext];
if (ptr) {
delete ptr;
}
impl->mFileLoader[ext] = loader;
}
inline ResourceFileBlock& ResourceSystem::GetFileBlock(PackagePath path)
{
return impl->GetFileBlock(path);
}
inline FileBlock* ResourceSystem::GetResourceFile(const Guid& guid)
{
return impl->GetResourceFile(guid);
}
inline ResourceBundle& ResourceSystem::Load(PackagePath path, bool reload_resource, int deep)
{
return impl->Load(path, reload_resource, deep);
}
inline MetaBundle ResourceSystem::GetMeta(PackagePath path)
{
return impl->GetMeta(path);
}
inline MetaBundle ResourceSystem::GetVisitMeta(const ResourceBundle& bundle)
{
return impl->GetVisitMeta(bundle);
}
inline void ResourceSystem::SaveMeta(PackagePath path, const MetaBundle& bundle)
{
impl->SaveMeta(path, bundle);
}
inline void ResourceSystem::SaveDirtyFile()
{
impl->SaveDirtyFile();
}
inline void ResourceSystem::SaveFile(PackagePath path, const ResourceBundle& bundle)
{
impl->SaveFile(path, bundle);
}
inline void* ResourceSystem::GetTable(size_t resourceid)
{
return impl->mResourceTable[resourceid].get();
}
inline uint32_t ResourceSystem::GetFileFlag(Name name)
{
return impl->GetFileFlag(name);
}
inline void ResourceSystem::SetFileFlag(Name name, uint32_t flag)
{
impl->SetFileFlag(name, flag);
}
IMPLEMENT_STATIC_MODULE(ASSET_API, AssetModule, asset)
}

View File

@ -1,11 +1,10 @@
#include "module/module_manager.h"
namespace api {
class AssetModule : public IStaticModule
class ASSET_API AssetModule : public IStaticModule
{
public:
void OnLoad(int argc, char** argv) override;
void OnUnload() override;
void InitMetaData(void) override {};
};
IMPLEMENT_STATIC_MODULE(AssetModule, asset)
}

View File

@ -10,7 +10,6 @@
namespace api {
using std::array;
using std::shared_ptr;
class IFileLoader;
enum class ResourceLoadError : char
{
ExtensionNotRegistered,
@ -33,9 +32,22 @@ namespace api {
return *this;
}
};
class IFileLoader
{
protected:
uint32_t mFileFlag = 0;
public:
void SetFileFlag(uint32_t flag) {
mFileFlag = flag;
}
virtual ResourceBundle LoadFile(PackagePath handle, const MetaBundle& meta) = 0;
virtual void SaveFile(PackagePath handle, const ResourceBundle& bundle) {};
virtual ~IFileLoader() = default;
};
template<typename Res>
using LoadResult = result<Res, ResourceLoadError>;
class ResourceSystem : public ISystem<ResourceSystem>
using LoadResult = result<Res, ResourceLoadError>;
class ResourceSystemImpl;
class ASSET_API ResourceSystem : public ISystem<ResourceSystem>
{
public:
struct ResourceFileBlock;
@ -45,57 +57,42 @@ namespace api {
using ResourceStorage = table<Guid, ResourceBlock<R>>;
using GenericPtr = shared_ptr<void>;
private:
uint32_t mFileFlag;
array<GenericPtr, ResourceCount> mResourceTable;
table<Guid, FileBlock*> mResourceFile;
table<Name, IFileLoader*> mFileLoader;
table<Name, std::pair<std::string, uint32_t>> mFileFlags;
table<Name, ResourceFileBlock> mFileBlock;
vector<ResourceFileBlock*> mDirtyBlock;
ResourceSystemImpl* impl;
public:
ResourceSystem();
void Initialize() override;
void Finalize() override;
public:
template<typename Res>
Res* Get(const RscHandle<Res>& handle,bool sync = true);
template<typename Res>
auto& GetTable() {
return *reinterpret_cast<ResourceStorage<Res>*> (mResourceTable[ResourceID<Res>].get());
}
template<typename Res>
ResourceBlock<Res>* GetBlock(const RscHandle<Res>& handle);
IFileLoader* GetLoader(Name extension);
void RegisterLoader(Name ext, IFileLoader* loader);
ResourceFileBlock& GetFileBlock(PackagePath path);
FileBlock* GetResourceFile(const Guid& guid);
template<typename Res>
[[nodiscard]] RscHandle<Res> LoadFromMeta(const Guid& ,const SerializedMeta& meta);
template<typename Res, typename ... Args>
[[nodiscard]] RscHandle<Res> LoadEmplaceResource(Args&& ... args) {
return LoadEmplaceResource<Res>(Guid::Make(), args...);
};
template<typename Res, typename ... Args>
[[nodiscard]] RscHandle<Res> LoadEmplaceResource(Guid, Args&& ... args);
IFileLoader* GetLoader(Name extension);
template<typename FLoader, typename ... Args>
FLoader& RegisterLoader(Name ext, Args&& ... args);
template<typename Res>
RscHandle<Res> Load(PackagePath path, bool reload_resource = true);
ResourceBundle& Load(PackagePath path, bool reload_resource = true, int deep = 0);
ResourceBundle& Load(PackagePath path, bool reload_resource = true, int deep = 0);
MetaBundle GetMeta(PackagePath path);
MetaBundle GetVisitMeta(const ResourceBundle& bundle);
void SaveMeta(PackagePath path, const MetaBundle& bundle);
void SaveDirtyFile();
void SaveFile(PackagePath path, const ResourceBundle& bundle);
void LoadFileFlags();
void SaveFileFlags();
void LoadResourceFile();
void SaveResourceFile();
void* GetTable(size_t resourceid);
uint32_t GetFileFlag(Name name);
void SetFileFlag(Name name, uint32_t flag);
template<typename Res>
Res* Get(const RscHandle<Res>& handle,bool sync = true);
template<typename Res>
auto& GetTable();
template<typename Res>
ResourceBlock<Res>* GetBlock(const RscHandle<Res>& handle);
template<typename Res>
[[nodiscard]] RscHandle<Res> LoadFromMeta(const Guid& ,const SerializedMeta& meta);
template<typename Res, typename ... Args>
[[nodiscard]] RscHandle<Res> LoadEmplaceResource(Args&& ... args) { return LoadEmplaceResource<Res>(Guid::Make(), args...);};
template<typename Res, typename ... Args>
[[nodiscard]] RscHandle<Res> LoadEmplaceResource(Guid, Args&& ... args);
template<typename FLoader, typename ... Args>
FLoader& RegisterLoader(Name ext, Args&& ... args);
template<typename Res>
RscHandle<Res> Load(PackagePath path, bool reload_resource = true);
};
struct ResourceSystem::ResourceFileBlock
{

View File

@ -1,18 +1,6 @@
#include "resource_system.h"
#pragma once
namespace api {
class IFileLoader
{
protected:
uint32_t mFileFlag = 0;
public:
void SetFileFlag(uint32_t flag) {
mFileFlag = flag;
}
virtual ResourceBundle LoadFile(PackagePath handle, const MetaBundle& meta) = 0;
virtual void SaveFile(PackagePath handle, const ResourceBundle& bundle) {};
virtual ~IFileLoader() = default;
};
namespace detail {
template<typename T> struct ResourceSystem_detail;
@ -74,12 +62,9 @@ namespace api {
template<typename FLoader, typename ...Args>
inline FLoader& ResourceSystem::RegisterLoader(Name ext, Args&& ...args)
{
auto& ptr = mFileLoader[ext];
if (ptr) {
delete ptr;
}
ptr = new FLoader(std::forward<Args>(args)...);
FLoader *ptr = new FLoader(std::forward<Args>(args)...);
ptr->SetFileFlag(GetFileFlag(ext));
RegisterLoader(ext, ptr);
return *(FLoader*)ptr;
}
template<typename Res>
@ -103,40 +88,20 @@ namespace api {
}
return itr->second.resource;
}
inline uint32_t ResourceSystem::GetFileFlag(Name name)
template<typename Res>
inline auto& ResourceSystem::GetTable()
{
auto it = mFileFlags.find(name);
if (it == mFileFlags.end()) {
return 0;
}
return it->second.second;
}
inline void ResourceSystem::SetFileFlag(Name name, uint32_t flag)
{
auto it = mFileFlags.find(name);
if (it == mFileFlags.end()) {
mFileFlags.emplace(name, std::make_pair(std::string(name.ToStringView()), flag));
}
else {
it->second.second = flag;
}
auto ptr = GetTable(ResourceID<Res>);
return *reinterpret_cast<ResourceStorage<Res>*>(ptr);
}
template<typename Res>
inline ResourceSystem::ResourceBlock<Res>* ResourceSystem::GetBlock(const RscHandle<Res>& handle)
{
auto& table = GetTable<Res>();
return &table[handle.guid];
}
inline ResourceSystem::ResourceFileBlock& ResourceSystem::GetFileBlock(PackagePath path) {
return mFileBlock[Name(path())];
}
inline FileBlock* ResourceSystem::GetResourceFile(const Guid& guid)
{
auto it = mResourceFile.find(guid);
if(it == mResourceFile.end())
return nullptr;
return it->second;
}
template<typename Res>
inline void RscHandle<Res>::Init()
{

View File

@ -5,9 +5,7 @@ namespace api {
void FindIncludes(MetaBundle& bundle, Asset* asset) {
}
MetaBundle ResourceSystem::GetVisitMeta(const ResourceBundle& bundle)
{
MetaBundle new_meta = MetaBundle{};
return new_meta;
}
}
}
#ifdef ASSET_API_VAL
#include "resource_system_impl.inl"
#endif

View File

@ -1,137 +0,0 @@
#include "resource_system.h"
#include "os/file_manager.h"
#include "os/file_handle.h"
#include "archive/json.h"
namespace api {
ResourceSystem::ResourceSystem()
{
mResourceTable = detail::ResourceHelper::GenResourceTables();
LoadFileFlags();
LoadResourceFile();
}
void ResourceSystem::Initialize()
{
SaveFileFlags();
SaveDirtyFile();
}
void ResourceSystem::Finalize()
{
constexpr static auto release_tables = detail::ResourceHelper::ReleaseTableResources();
for (auto& elem : release_tables)
elem(this);
SaveFileFlags();
SaveDirtyFile();
SaveResourceFile();
}
IFileLoader* ResourceSystem::GetLoader(Name extension)
{
auto itr = mFileLoader.find(extension);
if (itr == mFileLoader.end())
return nullptr;
return itr->second;
}
ResourceBundle& ResourceSystem::Load(PackagePath path, bool reload_resource, int deep)
{
Name name = path();
auto it = mFileBlock.find(name);
auto& res = mFileBlock[name];
if (deep > 5 || (!reload_resource && res && it != mFileBlock.end())) {
return res.bundle;
}
Name ext = path.GetExtension();
IFileLoader* loader = GetLoader(ext);
MetaBundle meta = GetMeta(path);
ResourceBundle bundle = loader->LoadFile(path, meta);
MetaBundle new_meta = GetVisitMeta(bundle);
bool is_dirty_meta = meta != new_meta;
for (auto& elem : bundle.GetAll()) {
std::visit([&](auto& handle) {
using T = std::decay_t<decltype(*handle)>;
GetBlock<T>(handle)->file = &res;
mResourceFile[handle.guid] = FileManager::Ptr()->FindPathBlock(path);
}, elem);
}
if (is_dirty_meta || res.IsDirty()) {
mDirtyBlock.push_back(&res);
}
res.path = path.SafePath();
res.bundle = bundle;
res.Loaded(true).MetaDirty(is_dirty_meta);
res.bundle = bundle;
if (!new_meta.includes.empty()) {
for (auto include : new_meta.includes) {
Load(include, false, deep + 1);
}
}
return res.bundle;
}
MetaBundle ResourceSystem::GetMeta(PackagePath path)
{
FileHandle handle(path + ".meta");
if (!handle.Open(FILE_OP::READ, mFileFlag & FileFlag::File_Binary)) {
return {};
}
meta::result<MetaBundle, SerializeError> res;
if (mFileFlag & FileFlag::File_Binary) {
}
else {
pmr::string text = handle.ReadAll<pmr::string>();
res = JsonDeserialize<MetaBundle>(text);
}
if (!res) {
return {};
}
return res.value();
}
void ResourceSystem::SaveMeta(PackagePath path, const MetaBundle& bundle)
{
FileHandle handle(path + ".meta");
handle.Open(FILE_OP::WRITE, mFileFlag & FileFlag::File_Binary);
if (mFileFlag & FileFlag::File_Binary) {
}
else {
handle.Write(JsonSerialize(bundle));
}
}
void ResourceSystem::SaveDirtyFile()
{
for (auto block : mDirtyBlock) {
if (block->IsMetaDirty()) {
block->MetaDirty(false);
MetaBundle new_meta = GetVisitMeta(block->bundle);
SaveMeta(block->path, new_meta);
}
if (block->IsDirty()) {
block->Dirty(false);
auto loader = GetLoader(block->path.GetExtension());
loader->SaveFile(block->path, block->bundle);
}
}
mDirtyBlock.clear();
}
void ResourceSystem::SaveFile(PackagePath path, const ResourceBundle& bundle)
{
auto loader = GetLoader(path.GetExtension());
loader->SaveFile(path, bundle);
}
void ResourceSystem::LoadFileFlags()
{
}
void ResourceSystem::SaveFileFlags()
{
}
void ResourceSystem::LoadResourceFile()
{
}
void ResourceSystem::SaveResourceFile()
{
}
}

View File

@ -2,7 +2,7 @@ static_component("asset","engine")
add_rules("c++.codegen",{
files = {"include/asset/res/*.h"}
})
add_includedirs("include/asset")
add_headerfiles("include/**.h","include/**.inl")
add_includedirs("include/asset", "impl", {public = true})
add_headerfiles("include/**.h","include/**.inl", "impl/*.inl")
add_files("src/**.cpp")
add_deps("core", "zlib")

View File

@ -0,0 +1,165 @@
#include "os/file_manager.h"
#include "os/file_system.h"
#include <fstream>
#include "zlog.h"
namespace api {
class FileManagerImpl
{
public:
FileManagerImpl();
~FileManagerImpl();
public:
void Mount(Name name, const std::string& path) {
MountMap.emplace(name, std::make_pair(name, path));
}
std::pair<std::string, std::string>* FindMount(Name id) {
auto it = MountMap.find(id);
if (it != MountMap.end()) {
return &it->second;
}
static std::pair<std::string, std::string> pair("", "");
return &pair;
}
string_view FindMountName(Name id) {
auto pair = FindMount(id);
return pair->first;
}
string_view FindMountPath(Name id) {
auto pair = FindMount(id);
return pair->second;
}
string_view FindPathView(Name name) {
auto it = FileMap.find(name);
if (it != FileMap.end()) {
return it->second.path;
}
return "";
}
string_view FindOrPathView(Name name) {
auto it = FileMap.find(name);
if (it != FileMap.end()) {
return it->second.path;
}
auto res = FileMap.emplace(name, FileBlock{ FileFlag::File_Default, name.ToString() });
return res.first->second.path;
}
uint32_t FindPathFlag(PackagePath pack_path) {
auto it = FileMap.find(pack_path());
if (it == FileMap.end()) {
return FileFlag::File_Not_Exist;
}
return it->second.flag;
}
FileBlock* FindPathBlock(PackagePath pack_path) {
auto it = FileMap.find(pack_path());
if (it == FileMap.end()) {
return nullptr;
}
return &it->second;
}
void SaveMountMap();
void LoadFileMap();
void SaveFileMap();
private:
pmr::table<Name, std::pair<std::string, std::string>> MountMap;
pmr::table<Name, FileBlock> FileMap;
public:
//外界不应该使用绝对路径
pmr::string RealPath(PackagePath pack_path);
};
FileManagerImpl::FileManagerImpl()
{
Mount("exe", fs::GetExecutablePath());
Mount("engine", fs::GetWorkPath());
LoadFileMap();
}
FileManagerImpl::~FileManagerImpl()
{
SaveMountMap();
SaveFileMap();
}
void FileManagerImpl::SaveMountMap()
{
}
void FileManagerImpl::LoadFileMap()
{
}
void FileManagerImpl::SaveFileMap()
{
}
pmr::string FileManagerImpl::RealPath(PackagePath pack_path)
{
string_view name = pack_path.ParsePackage();
string_view pre_path = FindMountPath(name);
if (name.empty() || pre_path.empty()) {
return pmr::string(pack_path());
}
pmr::string path{};
path.reserve(pre_path.size() + pack_path.size() - name.size() - 1);
path.append(pre_path);
path.append(pack_path().substr(name.size() + 1));
return path;
}
FileManager::FileManager()
{
impl = new(GlobalPool()) FileManagerImpl();
}
FileManager::~FileManager()
{
impl->~FileManagerImpl();
}
inline void FileManager::Mount(Name name, const std::string& path)
{
impl->Mount(name, path);
}
inline std::pair<std::string, std::string>* FileManager::FindMount(Name id)
{
return impl->FindMount(id);
}
inline string_view FileManager::FindMountName(Name id)
{
return impl->FindMountName(id);
}
inline string_view FileManager::FindMountPath(Name id)
{
return impl->FindMountPath(id);
}
inline string_view FileManager::FindPathView(Name name)
{
return impl->FindPathView(name);
}
inline string_view FileManager::FindOrPathView(Name name)
{
return impl->FindOrPathView(name);
}
inline uint32_t FileManager::FindPathFlag(PackagePath pack_path)
{
return impl->FindPathFlag(pack_path);
}
inline FileBlock* FileManager::FindPathBlock(PackagePath pack_path)
{
return impl->FindPathBlock(pack_path);
}
void FileManager::SaveMountMap() {
return impl->SaveMountMap();
}
inline void FileManager::LoadFileMap()
{
impl->LoadFileMap();
}
inline void FileManager::SaveFileMap()
{
impl->SaveFileMap();
}
inline pmr::string FileManager::RealPath(PackagePath pack_path)
{
return impl->RealPath(pack_path);
}
}

View File

@ -0,0 +1,238 @@
#include "module/module_manager.h"
#include "os/file_manager.h"
namespace api {
class ModuleManagerImpl
{
friend struct IModule;
public:
struct ModuleBlock {
bool isLoad;
bool isInit;
};
struct ExecuteInfo {
Name name;
int argc;
char** argv;
bool isActive;
};
ExecuteInfo mInfo;
SharedLibrary mProcessLib;
pmr::table<Name, ModuleBlock> mModuleBlocks;
pmr::table<Name, IModule*> mModuleTable;
pmr::table<Name, IModule::CreatePFN> mInitializeTable;
pmr::table<Name, pmr::vector<ISubSystem::CreatePFN>> mInitializeSubSystems;
public:
ModuleManagerImpl();
~ModuleManagerImpl();
IModule* GetModule(Name name);
void RegisterModule(Name name, IModule::CreatePFN fn);
void CreateModule(Name name, bool shared);
void DestroyModule(Name name);
void InitModule(Name name);
void ShutModule(Name name);
void MakeGraph(Name name, bool shared, int argc, char** argv);
void DestroyGraph();
public:
IModule* spawnDynamicModule(Name name, bool hotfix);
IModule* spawnStaticModule(Name name);
};
ModuleManagerImpl::ModuleManagerImpl()
{
mProcessLib.Load();
}
ModuleManagerImpl::~ModuleManagerImpl()
{
DestroyGraph();
}
void ModuleManagerImpl::CreateModule(Name name, bool shared)
{
bool hotfix = true;
IModule* module = shared ?
spawnDynamicModule(name, hotfix) :
spawnStaticModule(name);
if (!module) { return; }
mModuleBlocks[name] = ModuleBlock{false, false};
ModuleBlock& block = mModuleBlocks[name];
auto& moduleInfo = module->mInfo;
for (auto& dep : moduleInfo.dependencies) {
if(auto it = mModuleBlocks.find(dep.name); it == mModuleBlocks.end())
CreateModule(dep.name, dep.kind == pmr::FName("shared"));
}
module->OnLoad(mInfo.argc, mInfo.argv);
block.isLoad = true;
}
void ModuleManagerImpl::DestroyModule(Name name)
{
auto it = mModuleBlocks.find(name);
if (it == mModuleBlocks.end() || !it->second.isLoad) {
return;
}
IModule* module = mModuleTable[name];
auto& moduleInfo = module->mInfo;
for (auto& dep : moduleInfo.dependencies) {
DestroyModule(dep.name);
}
module->OnUnload();
it->second.isLoad = false;
}
void ModuleManagerImpl::InitModule(Name name)
{
auto it = mModuleBlocks.find(name);
if (it == mModuleBlocks.end() || it->second.isInit) {
return;
}
IModule* module = mModuleTable[name];
auto& moduleInfo = module->mInfo;
for (auto& dep : moduleInfo.dependencies) {
InitModule(dep.name);
}
module->Initialize();
it->second.isInit = true;
}
void ModuleManagerImpl::ShutModule(Name name)
{
auto it = mModuleBlocks.find(name);
if (it == mModuleBlocks.end() || !it->second.isInit) {
return;
}
IModule* module = mModuleTable[name];
auto& moduleInfo = module->mInfo;
for (auto& dep : moduleInfo.dependencies) {
ShutModule(dep.name);
}
module->Finalize();
it->second.isInit = false;
}
void ModuleManagerImpl::MakeGraph(Name name, bool shared, int argc, char** argv)
{
mInfo = { name, argc, argv , true};
CreateModule(name, shared);
InitModule(name);
}
void ModuleManagerImpl::DestroyGraph()
{
if(mInfo.isActive){
ShutModule(mInfo.name);
DestroyModule(mInfo.name);
}
}
IModule* ModuleManagerImpl::spawnDynamicModule(Name name, bool hotfix)
{
if (auto it = mModuleTable.find(name); it != mModuleTable.end()) {
return it->second;
}
SharedLibrary sharedLib;
string_view name_view = name.ToStringView();
pmr::string newFuncName("__newDynamicModule__");
newFuncName.append(name_view);
void* newFuncAddr = mProcessLib.GetSymbol(newFuncName.data());
if (!newFuncAddr) {
pmr::string libPath("/exe/");
libPath.reserve(10 + name_view.size());
libPath.append(name_view);
libPath.append(SharedLibrary::GetExtensionName());
if (sharedLib.Load(libPath)) {
newFuncAddr = sharedLib.GetSymbol(newFuncName.data());
}
}
IDynamicModule* module = newFuncAddr ? (IDynamicModule*)((IModule::CreatePFN)newFuncAddr)() : new(GlobalPool()) DefaultDynamicModule(name);
mModuleTable[name] = module;
module->mSharedLib = sharedLib;
module->InitMetaData();
return module;
}
IModule* ModuleManagerImpl::spawnStaticModule(Name name)
{
if (auto it = mModuleTable.find(name); it != mModuleTable.end()) {
return it->second;
}
auto it = mInitializeTable.find(name);
if (it == mInitializeTable.end()) {
return nullptr;
}
IModule* module = it->second();
module->InitMetaData();
mModuleTable[name] = module;
return module;
}
IModule* ModuleManagerImpl::GetModule(Name name)
{
auto it = mModuleTable.find(name);
if (it == mModuleTable.end()) {
return nullptr;
}
return it->second;
}
void ModuleManagerImpl::RegisterModule(Name name, IModule::CreatePFN fn)
{
mInitializeTable[name] = fn;
}
ModuleManager* ModuleManager::Ptr()
{
static ModuleManager* ptr = new(GlobalPool()) ModuleManager();
return ptr;
}
inline ModuleManager::ModuleManager()
{
new(GlobalPool()) FileManager();
impl = new(GlobalPool()) ModuleManagerImpl();
}
inline ModuleManager::~ModuleManager()
{
impl->~ModuleManagerImpl();
FileManager::Ptr()->~FileManager();
}
inline IModule* ModuleManager::GetModule(Name name)
{
return impl->GetModule(name);
}
inline void ModuleManager::RegisterModule(Name name, IModule::CreatePFN fn)
{
impl->RegisterModule(name, fn);
}
inline void ModuleManager::CreateModule(Name name, bool shared)
{
impl->CreateModule(name, shared);
}
inline void ModuleManager::DestroyModule(Name name)
{
impl->DestroyModule(name);
}
inline void ModuleManager::InitModule(Name name)
{
impl->InitModule(name);
}
inline void ModuleManager::ShutModule(Name name)
{
impl->ShutModule(name);
}
inline void ModuleManager::MakeGraph(Name name, bool shared, int argc, char** argv)
{
impl->MakeGraph(name, shared, argc, argv);
}
inline void ModuleManager::DestroyGraph()
{
impl->DestroyGraph();
}
inline IModule* ModuleManager::spawnDynamicModule(Name name, bool hotfix)
{
return impl->spawnDynamicModule(name, hotfix);
}
inline IModule* ModuleManager::spawnStaticModule(Name name)
{
return impl->spawnStaticModule(name);
}
IMPLEMENT_STATIC_MODULE(CORE_API, CoreModule, core)
}

View File

@ -20,7 +20,10 @@ namespace zlog {
m_logger->flush();
}
};
CORE_API extern zloger zlog;
#ifdef CORE_API_VAL
CORE_API inline zloger zlog;
#endif
template <typename... Args>
void info(format_with_location fmt, Args &&...args) {
zlog.log(level_enum::info, fmt, std::forward<Args>(args)...);

View File

@ -29,7 +29,7 @@ namespace api {
if (text.empty()) {
return SerializeError::SERDE_EMPTY;
}
T* obj = new(FramePool)T(std::forward<Args>(args)...);
T* obj = new(FramePool())T(std::forward<Args>(args)...);
bool bsuccess = JsonDeserialize<T>(text, obj);
using ResultType = result<T, SerializeError>;
return bsuccess ? ResultType{ *obj } : ResultType{ SerializeError::SERDE_ERROR };

View File

@ -4,7 +4,7 @@
namespace api {
using refl::Any;
using refl::UClass;
using refl::TypeInfo;
using refl::type_info;
using pmr::string_hash;
struct JsonVTable {
using Read = bool(*)(yyjson_val*, const void*);

View File

@ -2,7 +2,7 @@
#include "serde.h"
namespace api {
// 定义 yyjson_alc 适配器类
inline yyjson_alc JsonAllocatorAdapter(std::pmr::memory_resource* mr = FramePool) {
inline yyjson_alc JsonAllocatorAdapter(std::pmr::memory_resource* mr = FramePool()) {
// 初始化 yyjson_alc 结构体
yyjson_alc alc;
alc.malloc = [](void* ctx, size_t size) -> void* {
@ -43,7 +43,7 @@ namespace api {
template<typename T>
inline void JsonArchive::Register()
{
auto uclass = &TypeInfo<T>::StaticClass;
auto uclass = type_info<T>();
auto [bfind, it] = uclass->vtable.FindLast(VJsonSerdeRead());
if (!bfind && it) {
it = it->Insert(VJsonSerdeRead(), (void*) &gen::JsonSerde<T>::Read);

View File

@ -58,7 +58,7 @@ namespace api {
};
struct IModule {
public:
friend class ModuleManager;
friend class ModuleManagerImpl;
using CreatePFN = IModule * (*)();
IModule() = default;
IModule(const IModule& rhs) = delete;
@ -71,7 +71,7 @@ namespace api {
virtual void Finalize();
template<typename T, typename ... Args>
T* AddSystem(Args&&... args) {
T* ptr = new (GlobalPool) T(std::forward<Args>(args)...);
T* ptr = new (GlobalPool()) T(std::forward<Args>(args)...);
mSystems.push_back(ptr);
return ptr;
}

View File

@ -35,13 +35,20 @@ namespace api {
virtual void OnBeginLoad() = 0;
virtual void OnEndLoad() = 0;
};
class CORE_API CoreModule : public IStaticModule
{
public:
void OnLoad(int argc, char** argv) override;
void OnUnload() override;
void InitMetaData(void) override;
};
}
#define IMPLEMENT_STATIC_MODULE(ModuleImplClass, ModuleName) \
inline static const api::ModuleRegistrantImpl<ModuleImplClass> __RegisterModule__##ModuleName(#ModuleName);
#define IMPLEMENT_STATIC_MODULE(DLL_APL, ModuleImplClass, ModuleName) \
DLL_APL inline const api::ModuleRegistrantImpl<ModuleImplClass> __RegisterModule__##ModuleName(#ModuleName);
#define IMPLEMENT_DYNAMIC_MODULE(DLL_APL, ModuleImplClass, ModuleName) \
using __##ModuleName##__module = ModuleImplClass; \
extern "C" DLL_APL api::IModule* __newDynamicModule__##ModuleName() \
{ \
return new(GlobalPool) ModuleImplClass(); \
return new(GlobalPool()) ModuleImplClass(); \
}

View File

@ -1,26 +1,10 @@
#pragma once
#include "module.h"
namespace api {
struct ModuleManagerImpl;
class CORE_API ModuleManager
{
friend struct IModule;
private:
struct ModuleBlock {
bool isLoad;
bool isInit;
};
struct ExecuteInfo {
Name name;
int argc;
char** argv;
bool isActive;
};
ExecuteInfo mInfo;
SharedLibrary mProcessLib;
pmr::table<Name, ModuleBlock> mModuleBlocks;
pmr::table<Name, IModule*> mModuleTable;
pmr::table<Name, IModule::CreatePFN> mInitializeTable;
pmr::table<Name, pmr::vector<ISubSystem::CreatePFN>> mInitializeSubSystems;;
ModuleManagerImpl* impl;
public:
static ModuleManager* Ptr();
public:
@ -47,12 +31,4 @@ namespace api {
});
}
};
class CoreModule : public IStaticModule
{
public:
void OnLoad(int argc, char** argv) override;
void OnUnload() override;
void InitMetaData(void) override;
};
IMPLEMENT_STATIC_MODULE(CoreModule, core)
}

View File

@ -20,7 +20,7 @@ namespace api {
std::variant<std::ifstream, std::ofstream, nullptr_t> vfile{nullptr};
public:
using PackagePath::PackagePath;
FileHandle(PackagePath path, pmr::memory_resource* pool = FramePool) : PackagePath(path) , pool(pool) {}
FileHandle(PackagePath path, pmr::memory_resource* pool = FramePool()) : PackagePath(path) , pool(pool) {}
uint32_t Flag() {
return flag;
}

View File

@ -3,68 +3,25 @@
#include "package_path.h"
namespace api
{
class FileManager : public Singleton<FileManager>
class FileManagerImpl;
class CORE_API FileManager : public Singleton<FileManager>
{
FileManagerImpl* impl;
public:
FileManager();
~FileManager();
public:
void Mount(Name name, const std::string& path) {
MountMap.emplace(name, std::make_pair(name, path));
}
std::pair<std::string, std::string>* FindMount(Name id) {
auto it = MountMap.find(id);
if (it != MountMap.end()) {
return &it->second;
}
static std::pair<std::string, std::string> pair("", "");
return &pair;
}
string_view FindMountName(Name id) {
auto pair = FindMount(id);
return pair->first;
}
string_view FindMountPath(Name id) {
auto pair = FindMount(id);
return pair->second;
}
string_view FindPathView(Name name) {
auto it = FileMap.find(name);
if (it != FileMap.end()) {
return it->second.path;
}
return "";
}
string_view FindOrPathView(Name name) {
auto it = FileMap.find(name);
if (it != FileMap.end()) {
return it->second.path;
}
auto res = FileMap.emplace(name, FileBlock{ FileFlag::File_Default, name.ToString()});
return res.first->second.path;
}
uint32_t FindPathFlag(PackagePath pack_path) {
auto it = FileMap.find(pack_path());
if (it == FileMap.end()) {
return FileFlag::File_Not_Exist;
}
return it->second.flag;
}
FileBlock* FindPathBlock(PackagePath pack_path) {
auto it = FileMap.find(pack_path());
if (it == FileMap.end()) {
return nullptr;
}
return &it->second;
}
void Mount(Name name, const std::string& path);
std::pair<std::string, std::string>* FindMount(Name id);
string_view FindMountName(Name id);
string_view FindMountPath(Name id);
string_view FindPathView(Name name);
string_view FindOrPathView(Name name);
uint32_t FindPathFlag(PackagePath pack_path);
FileBlock* FindPathBlock(PackagePath pack_path);
void SaveMountMap();
void LoadFileMap();
void SaveFileMap();
private:
pmr::table<Name, std::pair<std::string, std::string>> MountMap;
pmr::table<Name, FileBlock> FileMap;
public:
//外界不应该使用绝对路径
pmr::string RealPath(PackagePath pack_path);
};
}

View File

@ -0,0 +1,4 @@
#ifdef CORE_API_VAL
#include "module_manager_impl.inl"
#include "file_manager_impl.inl"
#endif

View File

@ -1,29 +1,5 @@
#include "module/module_manager.h"
#include "os/file_manager.h"
struct MemDetail {
int count{ 0 };
int new_count{ 0 };
int del_count{ 0 };
};
thread_local pmr::unsynchronized_pool_resource MemPool;
thread_local MemDetail detail;
void* operator new(std::size_t size) {
std::size_t alignment = alignof(std::max_align_t);
detail.count++;
detail.new_count++;
return MemPool.allocate(size, alignment);
}
// 默认对齐方式 delete
void operator delete(void* ptr) noexcept {
detail.count--;
detail.del_count++;
MemPool.deallocate(ptr, 0);
}
// 自定义对齐 align
void* operator new(std::size_t size, std::align_val_t align) {
std::size_t alignment = static_cast<std::size_t>(align);
return MemPool.allocate(size, alignment);
}
namespace api {
void CoreModule::OnLoad(int argc, char** argv)
{

View File

@ -1,146 +0,0 @@
#include "module/module_manager.h"
#include "os/file_manager.h"
namespace api {
ModuleManager* ModuleManager::Ptr()
{
static ModuleManager ptr;
return &ptr;
}
ModuleManager::ModuleManager()
{
GetGlobalPool();
GetFramePool();
mProcessLib.Load();
new FileManager();
}
ModuleManager::~ModuleManager()
{
DestroyGraph();
delete FileManager::Ptr();
delete FramePool;
delete GlobalPool;
}
void ModuleManager::CreateModule(Name name, bool shared)
{
bool hotfix = true;
IModule* module = shared ?
spawnDynamicModule(name, hotfix) :
spawnStaticModule(name);
if (!module) { return; }
mModuleBlocks[name] = ModuleBlock{false, false};
ModuleBlock& block = mModuleBlocks[name];
auto& moduleInfo = module->mInfo;
for (auto& dep : moduleInfo.dependencies) {
if(auto it = mModuleBlocks.find(name); it != mModuleBlocks.end())
CreateModule(dep.name, dep.kind == pmr::FName("shared"));
}
module->OnLoad(mInfo.argc, mInfo.argv);
block.isLoad = true;
}
void ModuleManager::DestroyModule(Name name)
{
auto it = mModuleBlocks.find(name);
if (it == mModuleBlocks.end() || !it->second.isLoad) {
return;
}
IModule* module = mModuleTable[name];
auto& moduleInfo = module->mInfo;
for (auto& dep : moduleInfo.dependencies) {
DestroyModule(dep.name);
}
module->OnUnload();
it->second.isLoad = false;
}
void ModuleManager::InitModule(Name name)
{
auto it = mModuleBlocks.find(name);
if (it == mModuleBlocks.end() || it->second.isInit) {
return;
}
IModule* module = mModuleTable[name];
auto& moduleInfo = module->mInfo;
for (auto& dep : moduleInfo.dependencies) {
InitModule(dep.name);
}
module->Initialize();
it->second.isInit = true;
}
void ModuleManager::ShutModule(Name name)
{
auto it = mModuleBlocks.find(name);
if (it == mModuleBlocks.end() || !it->second.isInit) {
return;
}
IModule* module = mModuleTable[name];
auto& moduleInfo = module->mInfo;
for (auto& dep : moduleInfo.dependencies) {
ShutModule(dep.name);
}
module->Finalize();
it->second.isInit = false;
}
void ModuleManager::MakeGraph(Name name, bool shared, int argc, char** argv)
{
mInfo = { name, argc, argv , true};
CreateModule(name, shared);
InitModule(name);
}
void ModuleManager::DestroyGraph()
{
if(mInfo.isActive){
ShutModule(mInfo.name);
DestroyModule(mInfo.name);
}
}
IModule* ModuleManager::spawnDynamicModule(Name name, bool hotfix)
{
if (auto it = mModuleTable.find(name); it != mModuleTable.end()) {
return it->second;
}
SharedLibrary sharedLib;
string_view name_view = name.ToStringView();
pmr::string newFuncName("__newDynamicModule__");
newFuncName.append(name_view);
void* newFuncAddr = mProcessLib.GetSymbol(newFuncName.data());
if (!newFuncAddr) {
pmr::string libPath("/exe/");
libPath.reserve(10 + name_view.size());
libPath.append(name_view);
libPath.append(SharedLibrary::GetExtensionName());
if (sharedLib.Load(libPath)) {
newFuncAddr = sharedLib.GetSymbol(newFuncName.data());
}
}
IDynamicModule* module = newFuncAddr ? (IDynamicModule*)((IModule::CreatePFN)newFuncAddr)() : new(GlobalPool) DefaultDynamicModule(name);
mModuleTable[name] = module;
module->mSharedLib = sharedLib;
module->InitMetaData();
return module;
}
IModule* ModuleManager::spawnStaticModule(Name name)
{
if (auto it = mModuleTable.find(name); it != mModuleTable.end()) {
return it->second;
}
auto it = mInitializeTable.find(name);
if (it == mInitializeTable.end()) {
return nullptr;
}
IModule* module = it->second();
module->InitMetaData();
mModuleTable[name] = module;
return module;
}
IModule* ModuleManager::GetModule(Name name)
{
auto it = mModuleTable.find(name);
if (it == mModuleTable.end()) {
return nullptr;
}
return it->second;
}
void ModuleManager::RegisterModule(Name name, IModule::CreatePFN fn)
{
mInitializeTable[name] = fn;
}
}

View File

@ -1,43 +0,0 @@
#include "os/file_manager.h"
#include "os/file_system.h"
#include <fstream>
#include "zlog.h"
namespace api {
FileManager::FileManager()
{
Mount("exe", fs::GetExecutablePath());
Mount("engine", fs::GetWorkPath());
LoadFileMap();
}
FileManager::~FileManager()
{
SaveMountMap();
SaveFileMap();
}
void FileManager::SaveMountMap()
{
}
void FileManager::LoadFileMap()
{
}
void FileManager::SaveFileMap()
{
}
pmr::string FileManager::RealPath(PackagePath pack_path)
{
string_view name = pack_path.ParsePackage();
string_view pre_path = FindMountPath(name);
if (name.empty() || pre_path.empty()) {
return pmr::string(pack_path());
}
pmr::string path{};
path.reserve(pre_path.size() + pack_path.size() - name.size() - 1);
path.append(pre_path);
path.append(pack_path().substr(name.size() + 1));
return path;
}
}

View File

@ -2,8 +2,8 @@ static_component("core","engine")
add_rules("c++.codegen",{
files = {"include/module/module.h"}
})
add_includedirs("include", "include/3rdparty", {public = true})
add_headerfiles("include/**.h","include/**.inl")
add_includedirs("include/3rdparty", "impl", {public = true})
add_headerfiles("include/**.h","include/**.inl", "impl/*.inl")
add_files("src/**.cpp")
add_deps("zlib")
add_packages("spdlog", {public = true})

View File

@ -42,25 +42,10 @@ namespace pmr {
vector<FrameAllocator> allocators{};
};
};
// 自定义的new操作符
//自定义的new操作符 内存只分配不单独释放不能调用delete
inline void* operator new(size_t size, pmr::FrameAllocatorPool* pool, size_t alignment = alignof(std::max_align_t)) {
size = (size + alignment - 1) & ~(alignment - 1);
return pool->allocate(size, alignment);
}
#include "frame_allocator.inl"
//全局生命周期,不回收内存
ZLIB_API inline pmr::FrameAllocatorPool* GlobalPool;
//局部生命周期,每帧回收内存
ZLIB_API inline pmr::FrameAllocatorPool* FramePool;
inline pmr::FrameAllocatorPool* GetGlobalPool() {
if (!GlobalPool) {
GlobalPool = new pmr::FrameAllocatorPool();
}
return GlobalPool;
}
inline pmr::FrameAllocatorPool* GetFramePool() {
if (!FramePool) {
FramePool = new(GetGlobalPool()) pmr::FrameAllocatorPool();
}
return FramePool;
}
#include "memory.inl"

View File

@ -0,0 +1,43 @@
#pragma once
//全局生命周期,不回收内存
ZLIB_API extern pmr::FrameAllocatorPool* GlobalPool();
//局部生命周期,每帧回收内存
ZLIB_API extern pmr::FrameAllocatorPool* FramePool();
extern void* operator new(std::size_t size);
extern void operator delete(void* ptr) noexcept;
extern void* operator new(std::size_t size, std::align_val_t align);
#ifdef ZLIB_API_VAL
ZLIB_API inline pmr::FrameAllocatorPool* GlobalPool() {
static pmr::FrameAllocatorPool globalPool;
return &globalPool;
}
ZLIB_API inline pmr::FrameAllocatorPool* FramePool() {
static pmr::FrameAllocatorPool framePool;
return &framePool;
}
struct MemDetail {
int count{ 0 };
int new_count{ 0 };
int del_count{ 0 };
};
thread_local pmr::unsynchronized_pool_resource MemPool;
thread_local MemDetail detail;
void* operator new(std::size_t size) {
std::size_t alignment = alignof(std::max_align_t);
detail.count++;
detail.new_count++;
return MemPool.allocate(size, alignment);
}
// 默认对齐方式 delete
void operator delete(void* ptr) noexcept {
detail.count--;
detail.del_count++;
MemPool.deallocate(ptr, 0);
}
// 自定义对齐 align
void* operator new(std::size_t size, std::align_val_t align) {
std::size_t alignment = static_cast<std::size_t>(align);
return MemPool.allocate(size, alignment);
}
#endif //

View File

@ -1,13 +1,17 @@
namespace pmr {
using NameTable_t = table<size_t,const string>;
struct ZLIB_API NameTable {
ZLIB_API extern NameTable_t& TableRef();
#ifdef ZLIB_API_VAL
ZLIB_API inline NameTable_t& TableRef() {
static NameTable_t Table;
return Table;
}
#endif // ZLIB_API_VAL
struct NameTable {
static const string& Find(size_t id);
template<typename T>
static std::string_view MakePair(size_t id, T&& str);
static NameTable_t& TableRef() {
static NameTable_t Table{GetGlobalPool()};
return Table;
}
};
template<typename T>
inline std::string_view NameTable::MakePair(size_t id, T&& str)

View File

@ -13,9 +13,9 @@ namespace refl {
constexpr Any() noexcept: ptr(nullptr), cls(nullptr) {}
constexpr Any(const void* ptr, const UClass* cls) noexcept : ptr(ptr), cls(cls) {}
template<is_not_any_v T>
constexpr Any(T&& v) noexcept : ptr(&v), cls(&TypeInfo<args_type_t<T>>::StaticClass) {}
constexpr Any(T&& v) noexcept : ptr(&v), cls(type_info<T>()) {}
template<is_not_any_v T>
constexpr Any(T* v) noexcept : ptr(v), cls(&TypeInfo<args_type_t<T>>::StaticClass) {}
constexpr Any(T* v) noexcept : ptr(v), cls(type_info<T>()) {}
template<typename T>//参数 T* => T*
constexpr inline T CastTo() const {
if constexpr (std::is_pointer_v<T>) {

View File

@ -7,6 +7,7 @@ namespace refl {
using pmr::CName;
using pmr::FName;
using pmr::string_hash;
using pmr::table;
using std::span;
using Offset = uint32_t;
using Method = void*;

View File

@ -110,9 +110,7 @@ namespace refl {
using parent_t = typename Meta<T>::Parent;
//类型接口
template<typename T>
struct TypeInfoImpl;
template<typename T>
using TypeInfo = TypeInfoImpl<real_type_t<T>>;
struct UClass;
template<typename Type>
const UClass* type_info();
}

View File

@ -113,7 +113,7 @@ namespace refl {
}
template<typename T>
bool IsChildOf(bool bthis = false) const {
return IsChildOf(&TypeInfo<T>::StaticClass, bthis);
return IsChildOf(type_info<T>(), bthis);
}
public:
template<typename T>

View File

@ -1,7 +1,7 @@
#include "uclass.h"
#include "name.h"
#include "type.h"
namespace refl{
namespace refl {
template <class T>
concept is_metas_v = requires(const Name & name) { Meta<T>::GetMeta(name); };
template<typename T>
@ -12,7 +12,7 @@ namespace refl{
using RT = std::remove_pointer_t<T>;
flag |= CLASS_POINTER_FLAG;
if constexpr (!std::is_same_v<RT, void>) {
parent = &TypeInfo<RT>::StaticClass;
parent = type_info<RT>();
}
}
else if constexpr (is_array_v<T>) {
@ -21,11 +21,11 @@ namespace refl{
if constexpr (std::is_pointer_v<RT>) {
flag |= CLASS_POINTER_FLAG;
}
parent = &TypeInfo<RT>::StaticClass;
parent = type_info<RT>();
}
else {
vtable.Add(string_hash("Construct"), (void*) &UClass::Construct<T>);
vtable.Add(string_hash("Destruct"), (void*) &UClass::Destruct<T>);
vtable.Add(string_hash("Construct"), (void*)&UClass::Construct<T>);
vtable.Add(string_hash("Destruct"), (void*)&UClass::Destruct<T>);
}
}
};
@ -35,23 +35,40 @@ namespace refl{
FieldsType Fields{ MetaImpl::MakeFields() };
UClass_Meta() : UClass(type_name<T>().View(), sizeof(T)) {
if constexpr (has_parent_v<T>) {
parent = &TypeInfo<parent_t<T>>::StaticClass;
parent = type_info<parent_t<T>>();
}
}
};
template<typename T>
struct TypeInfoImpl {
using MyUClass = UClass_Auto<T>;
const inline static MyUClass StaticClass{};
};
template<>
struct TypeInfoImpl<void> {
const inline static UClass StaticClass{ type_name<void>().View(), 0 };
};
template<is_meta_v T>
struct TypeInfoImpl<T> {
using MyUClass = UClass_Meta<T, meta_t<T>>;
const inline static MyUClass StaticClass{};
};
ZLIB_API extern table<Name, const UClass*> ClassTable;
#ifdef ZLIB_API_VAL
ZLIB_API inline table<Name, const UClass*> ClassTable;
#endif // ZLIB_API_VAL
inline const UClass* find_info(Name name) {
if (auto it = ClassTable.find(name); it != ClassTable.end()) {
return it->second;
}
return nullptr;
}
template<typename Type>
inline const UClass* type_info()
{
using T = real_type_t<Type>;
constexpr auto name = type_name<T>();
if (auto cls = find_info(name.View())) {
return cls;
}
UClass* cls;
if constexpr (is_meta_v<T>){
cls = new(GlobalPool()) UClass_Meta<T, meta_t<T>>{};
}
else if constexpr (std::is_same_v<T, void>) {
cls = new(GlobalPool()) UClass{ name.View(), 0 };
}
else {
cls = new(GlobalPool()) UClass_Auto<T>{};
}
ClassTable[name.View()] = cls;
return cls;
}
}

View File

@ -26,8 +26,6 @@
#define USING_OVERLOAD_FUNC(R, ...) using USING_FUNC_NAME = R(*)(__VA_ARGS__);
#define USING_OVERLOAD_CLASS_FUNC(R, Class, ...) using USING_FUNC_NAME = R(Class::*)(__VA_ARGS__);
#define REGISTER_META_TABLE(Class) refl::UClass::MetaTable.emplace(type_name<Class>().View(), &refl::TypeInfo<Class>::StaticClass);
#define GENERATED_BODY() template <typename T, size_t hash>\
friend class gen::MetaImpl;
/*

View File

@ -1,5 +1,5 @@
#include "module.h"
#include "pmr/frame_allocator.h"
void VulkanModule::OnLoad(int argc, char** argv)
{

View File

@ -13,7 +13,7 @@ function static_component(name, owner, opt)
add_deps(name)
target_end()
target(name)
set_kind("moduleonly")
set_kind("static")
set_group("Engine/"..owner.."__comp")
add_rules("engine.api")
add_includedirs("include", {public = true})

View File

@ -1,6 +1,4 @@
#include "api.h"
#include "pmr/frame_allocator.h"
#include "pmr/name.h"
class ENGINE_API EngineModule : public api::IDynamicModule
{
public:

View File

@ -0,0 +1,4 @@
#ifndef ASSET_API_VAL
#define ASSET_API_VAL 1
#include "resource_system_impl.inl"
#endif // !ASSET_API_VAL

View File

@ -0,0 +1,6 @@
#ifndef CORE_API_VAL
#define CORE_API_VAL 1
#include "zlog.h"
#include "module_manager_impl.inl"
#include "file_manager_impl.inl"
#endif // !CORE_API_VAL

View File

@ -0,0 +1,9 @@
#ifndef ZLIB_API_VAL
#define ZLIB_API_VAL 1
#include "pmr/frame_allocator.h"
#include "pmr/name.h"
#include "refl/detail/uclass.inl"
#endif // !ZLIB_API_VAL

View File

@ -12,7 +12,7 @@ std::string_view readFile(const char* file_path) {
}
size_t size = file.tellg();
file.seekg(0);
char* ptr = new(FramePool)char[size];
char* ptr = new(FramePool())char[size];
file.read(ptr, size);
return std::string_view(ptr, size);
}

View File

@ -2,10 +2,10 @@ import("core.project.project")
function add_define(target, name, is_static)
local api = string.upper(name) .. "_API"
if is_static then
target:add("defines", api .. "=", api .. "_VAL", {public = false})
target:add("defines", api .. "=", {public = false})
else
target:add("defines", api.."=__declspec(dllimport)", {interface=true})
target:add("defines", api.."=__declspec(dllexport)", api .. "_VAL", {public=false})
target:add("defines", api.."=__declspec(dllexport)", {public=false})
end
end
function is_static_f(kind)

View File

@ -2,11 +2,15 @@
#include <array>
#include <charconv>
#include "engine/api.h"
#include "asset/resource_system.h"
#include "os/file_manager.h"
void test(std::string_view str = "") {
std::cout << "test " << str << std::endl;
}
int main(int argc, char** argv) {
api::ModuleManager::Ptr()->MakeGraph("zworld", true, argc, argv);
auto ptr = api::ResourceSystem::Ptr();
auto ptr2 = api::FileManager::Ptr();
test("sss");
using namespace refl;
constexpr TStr str1{ "Hello" };
@ -14,7 +18,7 @@ int main(int argc, char** argv) {
constexpr TStr str3 = detail::concat(str1, str2);
constexpr auto r1 = value_name<8 * sizeof(int)>();
constexpr int v = 12;
auto cls = &refl::TypeInfo<int>::StaticClass;
auto cls = refl::type_info<int>();
//auto str4 = concat(r1, str2);
auto t1 = refl::type_name<int>();
auto v1 = refl::type_name<int>().View();

View File

@ -1,5 +1,6 @@
#pragma once
#include "module/module.h"
#include "module/module_manager.h"
class ZWORLD_API ZWorldModule : public api::IDynamicModule
{
public:

1366
vulkan.map Normal file

File diff suppressed because it is too large Load Diff

767
zworld-editor.map Normal file
View File

@ -0,0 +1,767 @@
zworld-editor
Timestamp is 66b17b17 (Tue Aug 6 09:23:35 2024)
Preferred load address is 0000000140000000
Start Length Name Class
0001:00000000 00004b80H .text CODE
0001:00004b80 00000f70H .text$mn CODE
0001:00005af0 00000036H .text$mn$00 CODE
0001:00005b26 00000036H .text$x CODE
0002:00000000 000002b0H .idata$5 DATA
0002:000002b0 00000038H .00cfg DATA
0002:000002e8 00000008H .CRT$XCA DATA
0002:000002f0 00000008H .CRT$XCAA DATA
0002:000002f8 00000008H .CRT$XCZ DATA
0002:00000300 00000008H .CRT$XDA DATA
0002:00000308 00000008H .CRT$XDU DATA
0002:00000310 00000008H .CRT$XDZ DATA
0002:00000318 00000008H .CRT$XIA DATA
0002:00000320 00000008H .CRT$XIAA DATA
0002:00000328 00000008H .CRT$XIAC DATA
0002:00000330 00000008H .CRT$XIZ DATA
0002:00000338 00000008H .CRT$XLA DATA
0002:00000340 00000008H .CRT$XLC DATA
0002:00000348 00000008H .CRT$XLD DATA
0002:00000350 00000008H .CRT$XLZ DATA
0002:00000358 00000008H .CRT$XPA DATA
0002:00000360 00000008H .CRT$XPZ DATA
0002:00000368 00000008H .CRT$XTA DATA
0002:00000370 00000010H .CRT$XTZ DATA
0002:00000378 00000000H .gehcont$y DATA
0002:00000378 00000000H .gfids$y DATA
0002:00000380 00000700H .rdata DATA
0002:00000a80 00000000H .rdata$CastGuardVftablesA DATA
0002:00000a80 00000000H .rdata$CastGuardVftablesC DATA
0002:00000a80 00000028H .rdata$T DATA
0002:00000aa8 00000074H .rdata$r DATA
0002:00000b1c 00000050H .rdata$voltmd DATA
0002:00000b6c 0000036cH .rdata$zzzdbg DATA
0002:00000ed8 00000008H .rtc$IAA DATA
0002:00000ee0 00000008H .rtc$IZZ DATA
0002:00000ee8 00000008H .rtc$TAA DATA
0002:00000ef0 00000010H .rtc$TZZ DATA
0002:00000f00 00000010H .tls DATA
0002:00000f10 00000170H .tls$ DATA
0002:00001080 00000010H .tls$ZZZ DATA
0002:00001090 000018fcH .xdata DATA
0002:0000298c 00000000H .edata DATA
0002:0000298c 000000f0H .idata$2 DATA
0002:00002a7c 00000014H .idata$3 DATA
0002:00002a90 000002b0H .idata$4 DATA
0002:00002d40 00000a60H .idata$6 DATA
0003:00000000 00000250H .data DATA
0003:00000250 00000020H .data$rs DATA
0003:00000270 000000c0H .bss DATA
0004:00000000 00000744H .pdata DATA
Address Publics by Value Rva+Base Lib:Object
0000:00000000 __AbsoluteZero 0000000000000000 <absolute>
0000:00000000 ___safe_se_handler_count 0000000000000000 <absolute>
0000:00000000 ___safe_se_handler_table 0000000000000000 <absolute>
0000:00000000 __arm64x_extra_rfe_table 0000000000000000 <absolute>
0000:00000000 __arm64x_extra_rfe_table_size 0000000000000000 <absolute>
0000:00000000 __arm64x_native_entrypoint 0000000000000000 <absolute>
0000:00000000 __arm64x_redirection_metadata 0000000000000000 <absolute>
0000:00000000 __arm64x_redirection_metadata_count 0000000000000000 <absolute>
0000:00000000 __dynamic_value_reloc_table 0000000000000000 <absolute>
0000:00000000 __enclave_config 0000000000000000 <absolute>
0000:00000000 __guard_check_icall_a64n_fptr 0000000000000000 <absolute>
0000:00000000 __guard_eh_cont_count 0000000000000000 <absolute>
0000:00000000 __guard_eh_cont_table 0000000000000000 <absolute>
0000:00000000 __guard_fids_count 0000000000000000 <absolute>
0000:00000000 __guard_fids_table 0000000000000000 <absolute>
0000:00000000 __guard_iat_count 0000000000000000 <absolute>
0000:00000000 __guard_iat_table 0000000000000000 <absolute>
0000:00000000 __guard_longjmp_count 0000000000000000 <absolute>
0000:00000000 __guard_longjmp_table 0000000000000000 <absolute>
0000:00000000 __hybrid_auxiliary_delayload_iat 0000000000000000 <absolute>
0000:00000000 __hybrid_auxiliary_delayload_iat_copy 0000000000000000 <absolute>
0000:00000000 __hybrid_auxiliary_iat 0000000000000000 <absolute>
0000:00000000 __hybrid_auxiliary_iat_copy 0000000000000000 <absolute>
0000:00000000 __hybrid_code_map 0000000000000000 <absolute>
0000:00000000 __hybrid_code_map_count 0000000000000000 <absolute>
0000:00000000 __hybrid_image_info_bitfield 0000000000000000 <absolute>
0000:00000000 __x64_code_ranges_to_entry_points 0000000000000000 <absolute>
0000:00000000 __x64_code_ranges_to_entry_points_count 0000000000000000 <absolute>
0000:00000100 __guard_flags 0000000000000100 <absolute>
0000:00000000 __ImageBase 0000000140000000 <linker-defined>
0001:00000000 ?test@@YAXV?$basic_string_view@DU?$char_traits@D@std@@@std@@@Z 0000000140001000 f main.cpp.obj
0001:00000060 main 0000000140001060 f main.cpp.obj
0001:00000bc0 ??$?6U?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@PEBD@Z 0000000140001bc0 f i main.cpp.obj
0001:00000ed0 ??$type_info@H@refl@@YAPEBVUClass@0@XZ 0000000140001ed0 f i main.cpp.obj
0001:00001200 ??1?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@XZ 0000000140002200 f i main.cpp.obj
0001:000012a0 ??1FrameAllocatorPool@pmr@@UEAA@XZ 00000001400022a0 f i main.cpp.obj
0001:00001350 ??_GFrameAllocatorPool@pmr@@UEAAPEAXI@Z 0000000140002350 f i main.cpp.obj
0001:00001410 ?do_allocate@FrameAllocatorPool@pmr@@UEAAPEAX_K0@Z 0000000140002410 f i main.cpp.obj
0001:00001520 ??$Destruct@H@UClass@refl@@SAXPEAX@Z 0000000140002520 f i main.cpp.obj
0001:00001520 ?do_deallocate@FrameAllocator@pmr@@MEAAXPEAX_K1@Z 0000000140002520 f i main.cpp.obj
0001:00001520 ?do_deallocate@FrameAllocatorPool@pmr@@UEAAXPEAX_K1@Z 0000000140002520 f i main.cpp.obj
0001:00001530 ?do_is_equal@FrameAllocator@pmr@@MEBA_NAEBVmemory_resource@2std@@@Z 0000000140002530 f i main.cpp.obj
0001:00001530 ?do_is_equal@FrameAllocatorPool@pmr@@UEBA_NAEBVmemory_resource@2std@@@Z 0000000140002530 f i main.cpp.obj
0001:00001530 ?do_is_equal@_Identity_equal_resource@pmr@std@@MEBA_NAEBVmemory_resource@23@@Z 0000000140002530 f i core:module.cpp.obj
0001:00001540 ??$_Emplace_reallocate@AEA_K@?$vector@VFrameAllocator@pmr@@V?$polymorphic_allocator@VFrameAllocator@pmr@@@2std@@@std@@AEAAPEAVFrameAllocator@pmr@@QEAV23@AEA_K@Z 0000000140002540 f i main.cpp.obj
0001:000017a0 ??_GFrameAllocator@pmr@@UEAAPEAXI@Z 00000001400027a0 f i main.cpp.obj
0001:000017e0 ?do_allocate@FrameAllocator@pmr@@MEAAPEAX_K0@Z 00000001400027e0 f i main.cpp.obj
0001:00001870 ??0bad_alloc@std@@QEAA@AEBV01@@Z 0000000140002870 f i main.cpp.obj
0001:000018e0 ??0exception@std@@QEAA@AEBV01@@Z 00000001400028e0 f i main.cpp.obj
0001:00001950 ??_Gbad_alloc@std@@UEAAPEAXI@Z 0000000140002950 f i main.cpp.obj
0001:00001950 ??_Gbad_array_new_length@std@@UEAAPEAXI@Z 0000000140002950 f i main.cpp.obj
0001:00001950 ??_Gexception@std@@UEAAPEAXI@Z 0000000140002950 f i main.cpp.obj
0001:000019c0 ?what@exception@std@@UEBAPEBDXZ 00000001400029c0 f i main.cpp.obj
0001:000019e0 ?_Throw_bad_array_new_length@std@@YAXXZ 00000001400029e0 f i main.cpp.obj
0001:00001a20 ??0bad_array_new_length@std@@QEAA@AEBV01@@Z 0000000140002a20 f i main.cpp.obj
0001:00001a90 ??1exception@std@@UEAA@XZ 0000000140002a90 f i main.cpp.obj
0001:00001ae0 ??$MakePair@AEAPEBD@NameTable@pmr@@SA?AV?$basic_string_view@DU?$char_traits@D@std@@@std@@_KAEAPEBD@Z 0000000140002ae0 f i main.cpp.obj
0001:00001ea0 ??$emplace@U?$pair@_KV?$basic_string@DU?$char_traits@D@std@@V?$polymorphic_allocator@D@pmr@2@@std@@@std@@@?$_Hash@V?$_Umap_traits@_K$$CBV?$basic_string@DU?$char_traits@D@std@@V?$polymorphic_allocator@D@pmr@2@@std@@V?$_Uhash_compare@_KU?$hash@_K@std@@U?$equal_to@_K@2@@2@V?$polymorphic_allocator@U?$pair@$$CB_K$$CBV?$basic_string@DU?$char_traits@D@std@@V?$polymorphic_allocator@D@pmr@2@@std@@@std@@@pmr@2@$0A@@std@@@std@@QEAA?AU?$pair@V?$_List_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CB_K$$CBV?$basic_string@DU?$char_traits@D@std@@V?$polymorphic_allocator@D@pmr@2@@std@@@std@@@std@@@std@@@std@@_N@1@$$QEAU?$pair@_KV?$basic_string@DU?$char_traits@D@std@@V?$polymorphic_allocator@D@pmr@2@@std@@@1@@Z 0000000140002ea0 f i main.cpp.obj
0001:00002240 ??$?0V?$polymorphic_allocator@D@pmr@std@@$0A@@?$basic_string@DU?$char_traits@D@std@@V?$polymorphic_allocator@D@pmr@2@@std@@QEAA@QEBDAEBV?$polymorphic_allocator@D@pmr@1@@Z 0000000140003240 f i main.cpp.obj
0001:000022f0 ??1?$pair@_KV?$basic_string@DU?$char_traits@D@std@@V?$polymorphic_allocator@D@pmr@2@@std@@@std@@QEAA@XZ 00000001400032f0 f i main.cpp.obj
0001:00002370 ??1?$basic_string@DU?$char_traits@D@std@@V?$polymorphic_allocator@D@pmr@2@@std@@QEAA@XZ 0000000140003370 f i main.cpp.obj
0001:000023f0 ??$?0U?$pair@_KV?$basic_string@DU?$char_traits@D@std@@V?$polymorphic_allocator@D@pmr@2@@std@@@std@@@?$_List_node_emplace_op2@V?$polymorphic_allocator@U?$_List_node@U?$pair@$$CB_K$$CBV?$basic_string@DU?$char_traits@D@std@@V?$polymorphic_allocator@D@pmr@2@@std@@@std@@PEAX@std@@@pmr@std@@@std@@QEAA@AEAV?$polymorphic_allocator@U?$_List_node@U?$pair@$$CB_K$$CBV?$basic_string@DU?$char_traits@D@std@@V?$polymorphic_allocator@D@pmr@2@@std@@@std@@PEAX@std@@@pmr@1@$$QEAU?$pair@_KV?$basic_string@DU?$char_traits@D@std@@V?$polymorphic_allocator@D@pmr@2@@std@@@1@@Z 00000001400033f0 f i main.cpp.obj
0001:00002560 ??1?$_List_node_emplace_op2@V?$polymorphic_allocator@U?$_List_node@U?$pair@$$CB_K$$CBV?$basic_string@DU?$char_traits@D@std@@V?$polymorphic_allocator@D@pmr@2@@std@@@std@@PEAX@std@@@pmr@std@@@std@@QEAA@XZ 0000000140003560 f i main.cpp.obj
0001:00002630 ??1?$_Alloc_construct_ptr@V?$polymorphic_allocator@U?$_List_node@U?$pair@$$CB_K$$CBV?$basic_string@DU?$char_traits@D@std@@V?$polymorphic_allocator@D@pmr@2@@std@@@std@@PEAX@std@@@pmr@std@@@std@@QEAA@XZ 0000000140003630 f i main.cpp.obj
0001:00002690 ?_Xlen_string@std@@YAXXZ 0000000140003690 f i main.cpp.obj
0001:000026b0 ?_Forced_rehash@?$_Hash@V?$_Umap_traits@_K$$CBV?$basic_string@DU?$char_traits@D@std@@V?$polymorphic_allocator@D@pmr@2@@std@@V?$_Uhash_compare@_KU?$hash@_K@std@@U?$equal_to@_K@2@@2@V?$polymorphic_allocator@U?$pair@$$CB_K$$CBV?$basic_string@DU?$char_traits@D@std@@V?$polymorphic_allocator@D@pmr@2@@std@@@std@@@pmr@2@$0A@@std@@@std@@IEAAX_K@Z 00000001400036b0 f i main.cpp.obj
0001:00002a20 ?Find@NameTable@pmr@@SAAEBV?$basic_string@DU?$char_traits@D@std@@V?$polymorphic_allocator@D@pmr@2@@std@@_K@Z 0000000140003a20 f i main.cpp.obj
0001:00002c30 ??1sentry@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA@XZ 0000000140003c30 f i main.cpp.obj
0001:00002ca0 ??1_Sentry_base@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA@XZ 0000000140003ca0 f i main.cpp.obj
0001:00002d00 ??$_Insert_string@DU?$char_traits@D@std@@_K@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@QEBD_K@Z 0000000140003d00 f i main.cpp.obj
0001:00003000 ??$MakePair@AEAV?$basic_string_view@DU?$char_traits@D@std@@@std@@@NameTable@pmr@@SA?AV?$basic_string_view@DU?$char_traits@D@std@@@std@@_KAEAV23@@Z 0000000140004000 f i main.cpp.obj
0001:000033c0 ??$Construct@H@UClass@refl@@SA_NPEAXPEBV01@V?$span@UAny@refl@@$0?0@std@@@Z 00000001400043c0 f i main.cpp.obj
0001:00003430 ??$_Try_emplace@UName@pmr@@$$V@?$_Hash@V?$_Umap_traits@UName@pmr@@PEBVUClass@refl@@V?$_Uhash_compare@UName@pmr@@U?$hash@UName@pmr@@@std@@U?$equal_to@UName@pmr@@@4@@std@@V?$polymorphic_allocator@U?$pair@$$CBUName@pmr@@PEBVUClass@refl@@@std@@@26@$0A@@std@@@std@@IEAA?AU?$pair@PEAU?$_List_node@U?$pair@$$CBUName@pmr@@PEBVUClass@refl@@@std@@PEAX@std@@_N@1@$$QEAUName@pmr@@@Z 0000000140004430 f i main.cpp.obj
0001:00003740 ??1?$_Alloc_construct_ptr@V?$polymorphic_allocator@U?$_List_node@U?$pair@$$CBUName@pmr@@PEBVUClass@refl@@@std@@PEAX@std@@@pmr@std@@@std@@QEAA@XZ 0000000140004740 f i main.cpp.obj
0001:00003740 ??1?$_List_node_emplace_op2@V?$polymorphic_allocator@U?$_List_node@U?$pair@$$CBUName@pmr@@PEBVUClass@refl@@@std@@PEAX@std@@@pmr@std@@@std@@QEAA@XZ 0000000140004740 f i main.cpp.obj
0001:000037a0 ?_Forced_rehash@?$_Hash@V?$_Umap_traits@UName@pmr@@PEBVUClass@refl@@V?$_Uhash_compare@UName@pmr@@U?$hash@UName@pmr@@@std@@U?$equal_to@UName@pmr@@@4@@std@@V?$polymorphic_allocator@U?$pair@$$CBUName@pmr@@PEBVUClass@refl@@@std@@@26@$0A@@std@@@std@@IEAAX_K@Z 00000001400047a0 f i main.cpp.obj
0001:00003b70 ??2@YAPEAX_K@Z 0000000140004b70 f core:module.cpp.obj
0001:00003bf0 ??3@YAXPEAX@Z 0000000140004bf0 f core:module.cpp.obj
0001:00003c90 ??2@YAPEAX_KW4align_val_t@std@@@Z 0000000140004c90 f core:module.cpp.obj
0001:00003d00 ?OnLoad@CoreModule@api@@UEAAXHPEAPEAD@Z 0000000140004d00 f core:module.cpp.obj
0001:00003d10 ?OnUnload@CoreModule@api@@UEAAXXZ 0000000140004d10 f core:module.cpp.obj
0001:00003d20 ?InitMetaData@CoreModule@api@@UEAAXXZ 0000000140004d20 f core:module.cpp.obj
0001:00003d30 ??1IModule@api@@UEAA@XZ 0000000140004d30 f core:module.cpp.obj
0001:00003e50 ?Initialize@IModule@api@@UEAAXXZ 0000000140004e50 f core:module.cpp.obj
0001:00003e90 ?Finalize@IModule@api@@UEAAXXZ 0000000140004e90 f core:module.cpp.obj
0001:00004000 ??_GIModule@api@@UEAAPEAXI@Z 0000000140005000 f i core:module.cpp.obj
0001:00004010 ??_Gunsynchronized_pool_resource@pmr@std@@UEAAPEAXI@Z 0000000140005010 f i core:module.cpp.obj
0001:00004120 ?do_allocate@unsynchronized_pool_resource@pmr@std@@MEAAPEAX_K_K@Z 0000000140005120 f i core:module.cpp.obj
0001:00004260 ?do_deallocate@unsynchronized_pool_resource@pmr@std@@MEAAXQEAX_K1@Z 0000000140005260 f i core:module.cpp.obj
0001:00004450 ??$emplace@AEAE@?$vector@U_Pool@unsynchronized_pool_resource@pmr@std@@V?$polymorphic_allocator@U_Pool@unsynchronized_pool_resource@pmr@std@@@34@@std@@QEAA?AV?$_Vector_iterator@V?$_Vector_val@U?$_Simple_types@U_Pool@unsynchronized_pool_resource@pmr@std@@@std@@@std@@@1@V?$_Vector_const_iterator@V?$_Vector_val@U?$_Simple_types@U_Pool@unsynchronized_pool_resource@pmr@std@@@std@@@std@@@1@AEAE@Z 0000000140005450 f i core:module.cpp.obj
0001:00004590 ?_Allocate@_Pool@unsynchronized_pool_resource@pmr@std@@QEAAPEAXAEAU234@@Z 0000000140005590 f i core:module.cpp.obj
0001:00004710 ??$_Emplace_reallocate@AEAE@?$vector@U_Pool@unsynchronized_pool_resource@pmr@std@@V?$polymorphic_allocator@U_Pool@unsynchronized_pool_resource@pmr@std@@@34@@std@@AEAAPEAU_Pool@unsynchronized_pool_resource@pmr@1@QEAU2341@AEAE@Z 0000000140005710 f i core:module.cpp.obj
0001:000049f0 ?release@unsynchronized_pool_resource@pmr@std@@QEAAXXZ 00000001400059f0 f i core:module.cpp.obj
0001:00004b80 ??_U@YAPEAX_K@Z 0000000140005b80 f msvcrt:new_array.obj
0001:00004b88 ??3@YAXPEAX_K@Z 0000000140005b88 f msvcrt:delete_scalar_size.obj
0001:00004b88 ??_V@YAXPEAX@Z 0000000140005b88 f msvcrt:delete_array.obj
0001:00004b90 _Init_thread_abort 0000000140005b90 f msvcrt:thread_safe_statics.obj
0001:00004bcc _Init_thread_footer 0000000140005bcc f msvcrt:thread_safe_statics.obj
0001:00004c38 _Init_thread_header 0000000140005c38 f msvcrt:thread_safe_statics.obj
0001:00004cb0 __scrt_acquire_startup_lock 0000000140005cb0 f msvcrt:utility.obj
0001:00004cec __scrt_initialize_crt 0000000140005cec f msvcrt:utility.obj
0001:00004d28 __scrt_initialize_onexit_tables 0000000140005d28 f msvcrt:utility.obj
0001:00004db4 __scrt_is_nonwritable_in_current_image 0000000140005db4 f msvcrt:utility.obj
0001:00004e4c __scrt_release_startup_lock 0000000140005e4c f msvcrt:utility.obj
0001:00004e70 __scrt_uninitialize_crt 0000000140005e70 f msvcrt:utility.obj
0001:00004e9c _onexit 0000000140005e9c f msvcrt:utility.obj
0001:00004ed8 atexit 0000000140005ed8 f msvcrt:utility.obj
0001:00004ef0 ??_Etype_info@@UEAAPEAXI@Z 0000000140005ef0 f i msvcrt:std_type_info_static.obj
0001:00004ef0 ??_Gtype_info@@UEAAPEAXI@Z 0000000140005ef0 f i msvcrt:std_type_info_static.obj
0001:0000517c mainCRTStartup 000000014000617c f msvcrt:exe_main.obj
0001:00005190 __dyn_tls_init 0000000140006190 f msvcrt:tlsdyn.obj
0001:000051f8 __dyn_tls_on_demand_init 00000001400061f8 f msvcrt:tlsdyn.obj
0001:00005208 __dyn_tls_dtor 0000000140006208 f msvcrt:tlsdtor.obj
0001:000052b0 __tlregdtor 00000001400062b0 f msvcrt:tlsdtor.obj
0001:0000534c __isa_available_init 000000014000634c f msvcrt:cpu_disp.obj
0001:00005618 _get_startup_argv_mode 0000000140006618 f msvcrt:argv_mode.obj
0001:00005620 __scrt_is_ucrt_dll_in_use 0000000140006620 f msvcrt:ucrt_detection.obj
0001:0000562c __crt_debugger_hook 000000014000662c f msvcrt:utility_desktop.obj
0001:00005634 __scrt_fastfail 0000000140006634 f msvcrt:utility_desktop.obj
0001:0000577c __scrt_initialize_mta 000000014000677c f msvcrt:utility_desktop.obj
0001:00005784 __scrt_exe_initialize_mta 0000000140006784 f msvcrt:utility_desktop.obj
0001:00005784 __scrt_initialize_winrt 0000000140006784 f msvcrt:utility_desktop.obj
0001:00005784 __scrt_stub_for_initialize_mta 0000000140006784 f msvcrt:utility_desktop.obj
0001:00005784 _get_startup_commit_mode 0000000140006784 f msvcrt:commit_mode.obj
0001:00005784 _get_startup_new_mode 0000000140006784 f msvcrt:new_mode.obj
0001:00005784 _get_startup_thread_locale_mode 0000000140006784 f msvcrt:thread_locale.obj
0001:00005784 _matherr 0000000140006784 f msvcrt:matherr.obj
0001:00005788 __scrt_is_managed_app 0000000140006788 f msvcrt:utility_desktop.obj
0001:000057dc __scrt_set_unhandled_exception_filter 00000001400067dc f msvcrt:utility_desktop.obj
0001:000057ec __scrt_unhandled_exception_filter 00000001400067ec f msvcrt:utility_desktop.obj
0001:00005848 _guard_check_icall_nop 0000000140006848 f i msvcrt:guard_support.obj
0001:00005848 _initialize_denormal_control 0000000140006848 f i msvcrt:denormal_control.obj
0001:00005848 _initialize_invalid_parameter_handler 0000000140006848 f i msvcrt:invalid_parameter_handler.obj
0001:0000584c __security_init_cookie 000000014000684c f msvcrt:gs_support.obj
0001:000058f8 _get_startup_file_mode 00000001400068f8 f msvcrt:file_mode.obj
0001:00005900 ?__scrt_initialize_type_info@@YAXXZ 0000000140006900 f msvcrt:tncleanup.obj
0001:00005910 __acrt_initialize 0000000140006910 f msvcrt:ucrt_stubs.obj
0001:00005910 __acrt_uninitialize 0000000140006910 f msvcrt:ucrt_stubs.obj
0001:00005910 __scrt_stub_for_acrt_initialize 0000000140006910 f msvcrt:ucrt_stubs.obj
0001:00005910 __scrt_stub_for_acrt_uninitialize 0000000140006910 f msvcrt:ucrt_stubs.obj
0001:00005910 __vcrt_initialize 0000000140006910 f msvcrt:ucrt_stubs.obj
0001:00005910 __vcrt_uninitialize 0000000140006910 f msvcrt:ucrt_stubs.obj
0001:00005910 _should_initialize_environment 0000000140006910 f msvcrt:env_mode.obj
0001:00005914 __local_stdio_printf_options 0000000140006914 f i msvcrt:default_local_stdio_options.obj
0001:0000591c __local_stdio_scanf_options 000000014000691c f i msvcrt:default_local_stdio_options.obj
0001:00005924 __scrt_initialize_default_local_stdio_options 0000000140006924 f msvcrt:default_local_stdio_options.obj
0001:00005940 __scrt_is_user_matherr_present 0000000140006940 f msvcrt:matherr_detection.obj
0001:0000594c __scrt_get_dyn_tls_init_callback 000000014000694c f msvcrt:dyn_tls_init.obj
0001:00005954 __scrt_get_dyn_tls_dtor_callback 0000000140006954 f msvcrt:dyn_tls_dtor.obj
0001:0000595c _RTC_Initialize 000000014000695c f msvcrt:initsect.obj
0001:00005998 _RTC_Terminate 0000000140006998 f msvcrt:initsect.obj
0001:000059e0 ?uncaught_exceptions@std@@YAHXZ 00000001400069e0 f msvcprt:MSVCP140.dll
0001:000059e6 _Aligned_get_default_resource 00000001400069e6 f msvcprt:MSVCP140_1.dll
0001:000059ec ?_Xlength_error@std@@YAXPEBD@Z 00000001400069ec f msvcprt:MSVCP140.dll
0001:000059f2 ?_Xbad_alloc@std@@YAXXZ 00000001400069f2 f msvcprt:MSVCP140.dll
0001:000059f8 __CxxFrameHandler3 00000001400069f8 f vcruntime:VCRUNTIME140.dll
0001:000059fe __std_terminate 00000001400069fe f vcruntime:VCRUNTIME140.dll
0001:00005a04 memcpy 0000000140006a04 f vcruntime:VCRUNTIME140.dll
0001:00005a0a memcmp 0000000140006a0a f vcruntime:VCRUNTIME140.dll
0001:00005a10 _CxxThrowException 0000000140006a10 f vcruntime:VCRUNTIME140.dll
0001:00005a16 __std_exception_copy 0000000140006a16 f vcruntime:VCRUNTIME140.dll
0001:00005a1c __std_exception_destroy 0000000140006a1c f vcruntime:VCRUNTIME140.dll
0001:00005a22 _purecall 0000000140006a22 f vcruntime:VCRUNTIME140.dll
0001:00005a28 __C_specific_handler 0000000140006a28 f vcruntime:VCRUNTIME140.dll
0001:00005a2e __CxxFrameHandler4 0000000140006a2e f vcruntime:VCRUNTIME140_1.dll
0001:00005a34 __current_exception 0000000140006a34 f vcruntime:VCRUNTIME140.dll
0001:00005a3a __current_exception_context 0000000140006a3a f vcruntime:VCRUNTIME140.dll
0001:00005a40 memset 0000000140006a40 f vcruntime:VCRUNTIME140.dll
0001:00005a46 strlen 0000000140006a46 f ucrt:api-ms-win-crt-string-l1-1-0.dll
0001:00005a4c ceilf 0000000140006a4c f ucrt:api-ms-win-crt-math-l1-1-0.dll
0001:00005a52 _configure_narrow_argv 0000000140006a52 f ucrt:api-ms-win-crt-runtime-l1-1-0.dll
0001:00005a58 _initialize_narrow_environment 0000000140006a58 f ucrt:api-ms-win-crt-runtime-l1-1-0.dll
0001:00005a5e _initialize_onexit_table 0000000140006a5e f ucrt:api-ms-win-crt-runtime-l1-1-0.dll
0001:00005a64 _register_onexit_function 0000000140006a64 f ucrt:api-ms-win-crt-runtime-l1-1-0.dll
0001:00005a6a _crt_atexit 0000000140006a6a f ucrt:api-ms-win-crt-runtime-l1-1-0.dll
0001:00005a70 _cexit 0000000140006a70 f ucrt:api-ms-win-crt-runtime-l1-1-0.dll
0001:00005a76 _seh_filter_exe 0000000140006a76 f ucrt:api-ms-win-crt-runtime-l1-1-0.dll
0001:00005a7c _set_app_type 0000000140006a7c f ucrt:api-ms-win-crt-runtime-l1-1-0.dll
0001:00005a82 __setusermatherr 0000000140006a82 f ucrt:api-ms-win-crt-math-l1-1-0.dll
0001:00005a88 _get_initial_narrow_environment 0000000140006a88 f ucrt:api-ms-win-crt-runtime-l1-1-0.dll
0001:00005a8e _initterm 0000000140006a8e f ucrt:api-ms-win-crt-runtime-l1-1-0.dll
0001:00005a94 _initterm_e 0000000140006a94 f ucrt:api-ms-win-crt-runtime-l1-1-0.dll
0001:00005a9a exit 0000000140006a9a f ucrt:api-ms-win-crt-runtime-l1-1-0.dll
0001:00005aa0 _exit 0000000140006aa0 f ucrt:api-ms-win-crt-runtime-l1-1-0.dll
0001:00005aa6 _set_fmode 0000000140006aa6 f ucrt:api-ms-win-crt-stdio-l1-1-0.dll
0001:00005aac __p___argc 0000000140006aac f ucrt:api-ms-win-crt-runtime-l1-1-0.dll
0001:00005ab2 __p___argv 0000000140006ab2 f ucrt:api-ms-win-crt-runtime-l1-1-0.dll
0001:00005ab8 _c_exit 0000000140006ab8 f ucrt:api-ms-win-crt-runtime-l1-1-0.dll
0001:00005abe _register_thread_local_exe_atexit_callback 0000000140006abe f ucrt:api-ms-win-crt-runtime-l1-1-0.dll
0001:00005ac4 _configthreadlocale 0000000140006ac4 f ucrt:api-ms-win-crt-locale-l1-1-0.dll
0001:00005aca _set_new_mode 0000000140006aca f ucrt:api-ms-win-crt-heap-l1-1-0.dll
0001:00005ad0 __p__commode 0000000140006ad0 f ucrt:api-ms-win-crt-stdio-l1-1-0.dll
0001:00005ad6 free 0000000140006ad6 f ucrt:api-ms-win-crt-heap-l1-1-0.dll
0001:00005adc malloc 0000000140006adc f ucrt:api-ms-win-crt-heap-l1-1-0.dll
0001:00005ae2 terminate 0000000140006ae2 f ucrt:api-ms-win-crt-runtime-l1-1-0.dll
0001:00005b00 _guard_dispatch_icall_nop 0000000140006b00 f msvcrt:guard_dispatch.obj
0001:00005b20 _guard_xfg_dispatch_icall_nop 0000000140006b20 f msvcrt:guard_xfg_dispatch.obj
0002:00000000 __imp_IsDebuggerPresent 0000000140007000 kernel32:KERNEL32.dll
0002:00000008 __imp_InitializeSListHead 0000000140007008 kernel32:KERNEL32.dll
0002:00000010 __imp_GetSystemTimeAsFileTime 0000000140007010 kernel32:KERNEL32.dll
0002:00000018 __imp_GetCurrentThreadId 0000000140007018 kernel32:KERNEL32.dll
0002:00000020 __imp_GetCurrentProcessId 0000000140007020 kernel32:KERNEL32.dll
0002:00000028 __imp_QueryPerformanceCounter 0000000140007028 kernel32:KERNEL32.dll
0002:00000030 __imp_GetModuleHandleW 0000000140007030 kernel32:KERNEL32.dll
0002:00000038 __imp_IsProcessorFeaturePresent 0000000140007038 kernel32:KERNEL32.dll
0002:00000040 __imp_SetUnhandledExceptionFilter 0000000140007040 kernel32:KERNEL32.dll
0002:00000048 __imp_UnhandledExceptionFilter 0000000140007048 kernel32:KERNEL32.dll
0002:00000050 __imp_RtlVirtualUnwind 0000000140007050 kernel32:KERNEL32.dll
0002:00000058 __imp_RtlLookupFunctionEntry 0000000140007058 kernel32:KERNEL32.dll
0002:00000060 __imp_RtlCaptureContext 0000000140007060 kernel32:KERNEL32.dll
0002:00000068 __imp_SleepConditionVariableSRW 0000000140007068 kernel32:KERNEL32.dll
0002:00000070 __imp_WakeAllConditionVariable 0000000140007070 kernel32:KERNEL32.dll
0002:00000078 __imp_AcquireSRWLockExclusive 0000000140007078 kernel32:KERNEL32.dll
0002:00000080 __imp_ReleaseSRWLockExclusive 0000000140007080 kernel32:KERNEL32.dll
0002:00000088 \177KERNEL32_NULL_THUNK_DATA 0000000140007088 kernel32:KERNEL32.dll
0002:00000090 __imp_?cout@std@@3V?$basic_ostream@DU?$char_traits@D@std@@@1@A 0000000140007090 msvcprt:MSVCP140.dll
0002:00000098 __imp_?_Xbad_alloc@std@@YAXXZ 0000000140007098 msvcprt:MSVCP140.dll
0002:000000a0 __imp_?_Xlength_error@std@@YAXPEBD@Z 00000001400070a0 msvcprt:MSVCP140.dll
0002:000000a8 __imp_?widen@?$basic_ios@DU?$char_traits@D@std@@@std@@QEBADD@Z 00000001400070a8 msvcprt:MSVCP140.dll
0002:000000b0 __imp_?_Osfx@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAXXZ 00000001400070b0 msvcprt:MSVCP140.dll
0002:000000b8 __imp_?uncaught_exceptions@std@@YAHXZ 00000001400070b8 msvcprt:MSVCP140.dll
0002:000000c0 __imp_?clear@?$basic_ios@DU?$char_traits@D@std@@@std@@QEAAXH_N@Z 00000001400070c0 msvcprt:MSVCP140.dll
0002:000000c8 __imp_?put@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@D@Z 00000001400070c8 msvcprt:MSVCP140.dll
0002:000000d0 __imp_?sputc@?$basic_streambuf@DU?$char_traits@D@std@@@std@@QEAAHD@Z 00000001400070d0 msvcprt:MSVCP140.dll
0002:000000d8 __imp_?good@ios_base@std@@QEBA_NXZ 00000001400070d8 msvcprt:MSVCP140.dll
0002:000000e0 __imp_?flush@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAAAEAV12@XZ 00000001400070e0 msvcprt:MSVCP140.dll
0002:000000e8 \177MSVCP140_NULL_THUNK_DATA 00000001400070e8 msvcprt:MSVCP140.dll
0002:000000f0 __imp__Aligned_get_default_resource 00000001400070f0 msvcprt:MSVCP140_1.dll
0002:000000f8 \177MSVCP140_1_NULL_THUNK_DATA 00000001400070f8 msvcprt:MSVCP140_1.dll
0002:00000100 __imp___current_exception_context 0000000140007100 vcruntime:VCRUNTIME140.dll
0002:00000108 __imp_memset 0000000140007108 vcruntime:VCRUNTIME140.dll
0002:00000110 __imp___current_exception 0000000140007110 vcruntime:VCRUNTIME140.dll
0002:00000118 __imp__purecall 0000000140007118 vcruntime:VCRUNTIME140.dll
0002:00000120 __imp___CxxFrameHandler3 0000000140007120 vcruntime:VCRUNTIME140.dll
0002:00000128 __imp___std_terminate 0000000140007128 vcruntime:VCRUNTIME140.dll
0002:00000130 __imp_memcpy 0000000140007130 vcruntime:VCRUNTIME140.dll
0002:00000138 __imp_memcmp 0000000140007138 vcruntime:VCRUNTIME140.dll
0002:00000140 __imp__CxxThrowException 0000000140007140 vcruntime:VCRUNTIME140.dll
0002:00000148 __imp___std_exception_copy 0000000140007148 vcruntime:VCRUNTIME140.dll
0002:00000150 __imp___std_exception_destroy 0000000140007150 vcruntime:VCRUNTIME140.dll
0002:00000158 __imp___C_specific_handler 0000000140007158 vcruntime:VCRUNTIME140.dll
0002:00000160 \177VCRUNTIME140_NULL_THUNK_DATA 0000000140007160 vcruntime:VCRUNTIME140.dll
0002:00000168 __imp___CxxFrameHandler4 0000000140007168 vcruntime:VCRUNTIME140_1.dll
0002:00000170 \177VCRUNTIME140_1_NULL_THUNK_DATA 0000000140007170 vcruntime:VCRUNTIME140_1.dll
0002:00000178 __imp_free 0000000140007178 ucrt:api-ms-win-crt-heap-l1-1-0.dll
0002:00000180 __imp_malloc 0000000140007180 ucrt:api-ms-win-crt-heap-l1-1-0.dll
0002:00000188 __imp__set_new_mode 0000000140007188 ucrt:api-ms-win-crt-heap-l1-1-0.dll
0002:00000190 \177api-ms-win-crt-heap-l1-1-0_NULL_THUNK_DATA 0000000140007190 ucrt:api-ms-win-crt-heap-l1-1-0.dll
0002:00000198 __imp__configthreadlocale 0000000140007198 ucrt:api-ms-win-crt-locale-l1-1-0.dll
0002:000001a0 \177api-ms-win-crt-locale-l1-1-0_NULL_THUNK_DATA 00000001400071a0 ucrt:api-ms-win-crt-locale-l1-1-0.dll
0002:000001a8 __imp_ceilf 00000001400071a8 ucrt:api-ms-win-crt-math-l1-1-0.dll
0002:000001b0 __imp___setusermatherr 00000001400071b0 ucrt:api-ms-win-crt-math-l1-1-0.dll
0002:000001b8 \177api-ms-win-crt-math-l1-1-0_NULL_THUNK_DATA 00000001400071b8 ucrt:api-ms-win-crt-math-l1-1-0.dll
0002:000001c0 __imp__initialize_narrow_environment 00000001400071c0 ucrt:api-ms-win-crt-runtime-l1-1-0.dll
0002:000001c8 __imp__register_onexit_function 00000001400071c8 ucrt:api-ms-win-crt-runtime-l1-1-0.dll
0002:000001d0 __imp__crt_atexit 00000001400071d0 ucrt:api-ms-win-crt-runtime-l1-1-0.dll
0002:000001d8 __imp__initialize_onexit_table 00000001400071d8 ucrt:api-ms-win-crt-runtime-l1-1-0.dll
0002:000001e0 __imp__configure_narrow_argv 00000001400071e0 ucrt:api-ms-win-crt-runtime-l1-1-0.dll
0002:000001e8 __imp__cexit 00000001400071e8 ucrt:api-ms-win-crt-runtime-l1-1-0.dll
0002:000001f0 __imp__seh_filter_exe 00000001400071f0 ucrt:api-ms-win-crt-runtime-l1-1-0.dll
0002:000001f8 __imp__set_app_type 00000001400071f8 ucrt:api-ms-win-crt-runtime-l1-1-0.dll
0002:00000200 __imp__invalid_parameter_noinfo_noreturn 0000000140007200 ucrt:api-ms-win-crt-runtime-l1-1-0.dll
0002:00000208 __imp__get_initial_narrow_environment 0000000140007208 ucrt:api-ms-win-crt-runtime-l1-1-0.dll
0002:00000210 __imp__initterm 0000000140007210 ucrt:api-ms-win-crt-runtime-l1-1-0.dll
0002:00000218 __imp__initterm_e 0000000140007218 ucrt:api-ms-win-crt-runtime-l1-1-0.dll
0002:00000220 __imp_terminate 0000000140007220 ucrt:api-ms-win-crt-runtime-l1-1-0.dll
0002:00000228 __imp__exit 0000000140007228 ucrt:api-ms-win-crt-runtime-l1-1-0.dll
0002:00000230 __imp___p___argc 0000000140007230 ucrt:api-ms-win-crt-runtime-l1-1-0.dll
0002:00000238 __imp___p___argv 0000000140007238 ucrt:api-ms-win-crt-runtime-l1-1-0.dll
0002:00000240 __imp__c_exit 0000000140007240 ucrt:api-ms-win-crt-runtime-l1-1-0.dll
0002:00000248 __imp__register_thread_local_exe_atexit_callback 0000000140007248 ucrt:api-ms-win-crt-runtime-l1-1-0.dll
0002:00000250 __imp_exit 0000000140007250 ucrt:api-ms-win-crt-runtime-l1-1-0.dll
0002:00000258 \177api-ms-win-crt-runtime-l1-1-0_NULL_THUNK_DATA 0000000140007258 ucrt:api-ms-win-crt-runtime-l1-1-0.dll
0002:00000260 __imp___p__commode 0000000140007260 ucrt:api-ms-win-crt-stdio-l1-1-0.dll
0002:00000268 __imp__set_fmode 0000000140007268 ucrt:api-ms-win-crt-stdio-l1-1-0.dll
0002:00000270 \177api-ms-win-crt-stdio-l1-1-0_NULL_THUNK_DATA 0000000140007270 ucrt:api-ms-win-crt-stdio-l1-1-0.dll
0002:00000278 __imp_strlen 0000000140007278 ucrt:api-ms-win-crt-string-l1-1-0.dll
0002:00000280 \177api-ms-win-crt-string-l1-1-0_NULL_THUNK_DATA 0000000140007280 ucrt:api-ms-win-crt-string-l1-1-0.dll
0002:00000288 __imp_?TableRef@pmr@@YAAEAV?$unordered_map@_K$$CBV?$basic_string@DU?$char_traits@D@std@@V?$polymorphic_allocator@D@pmr@2@@std@@U?$hash@_K@2@U?$equal_to@_K@2@V?$polymorphic_allocator@U?$pair@$$CB_K$$CBV?$basic_string@DU?$char_traits@D@std@@V?$polymorphic_allocator@D@pmr@2@@std@@@std@@@pmr@2@@std@@XZ 0000000140007288 engine:engine.dll
0002:00000290 __imp_?GlobalPool@@YAPEAVFrameAllocatorPool@pmr@@XZ 0000000140007290 engine:engine.dll
0002:00000298 __imp_?Ptr@ModuleManager@api@@SAPEAV12@XZ 0000000140007298 engine:engine.dll
0002:000002a0 __imp_?ClassTable@refl@@3V?$unordered_map@UName@pmr@@PEBVUClass@refl@@U?$hash@UName@pmr@@@std@@U?$equal_to@UName@pmr@@@6@V?$polymorphic_allocator@U?$pair@$$CBUName@pmr@@PEBVUClass@refl@@@std@@@26@@std@@A 00000001400072a0 engine:engine.dll
0002:000002a8 \177engine_NULL_THUNK_DATA 00000001400072a8 engine:engine.dll
0002:000002b0 __guard_check_icall_fptr 00000001400072b0 msvcrt:guard_support.obj
0002:000002b8 __guard_xfg_check_icall_fptr 00000001400072b8 msvcrt:guard_support.obj
0002:000002c0 __guard_dispatch_icall_fptr 00000001400072c0 msvcrt:guard_support.obj
0002:000002c8 __guard_xfg_dispatch_icall_fptr 00000001400072c8 msvcrt:guard_support.obj
0002:000002d0 __guard_xfg_table_dispatch_icall_fptr 00000001400072d0 msvcrt:guard_support.obj
0002:000002d8 __castguard_check_failure_os_handled_fptr 00000001400072d8 msvcrt:guard_support.obj
0002:000002e0 __guard_memcpy_fptr 00000001400072e0 vcruntime:softmemtag.obj
0002:000002e8 __xc_a 00000001400072e8 msvcrt:initializers.obj
0002:000002f8 __xc_z 00000001400072f8 msvcrt:initializers.obj
0002:00000318 __xi_a 0000000140007318 msvcrt:initializers.obj
0002:00000330 __xi_z 0000000140007330 msvcrt:initializers.obj
0002:00000338 __xl_a 0000000140007338 msvcrt:tlssup.obj
0002:00000350 __xl_z 0000000140007350 msvcrt:tlssup.obj
0002:00000358 __xp_a 0000000140007358 msvcrt:initializers.obj
0002:00000360 __xp_z 0000000140007360 msvcrt:initializers.obj
0002:00000368 __xt_a 0000000140007368 msvcrt:initializers.obj
0002:00000370 __xt_z 0000000140007370 msvcrt:initializers.obj
0002:00000380 __real@5f000000 0000000140007380 main.cpp.obj
0002:00000384 ??_C@_05DAKKACOK@test?5?$AA@ 0000000140007384 main.cpp.obj
0002:0000038a ??_C@_03PFJENDKN@sss?$AA@ 000000014000738a main.cpp.obj
0002:0000038e ??_C@_0CG@MMGBKCGK@hello?5enginehello?5enginehello?5en@ 000000014000738e main.cpp.obj
0002:000003b4 ??_C@_0CJ@PFLHNLIG@hello?5enginehello?5enginehello?5en@ 00000001400073b4 main.cpp.obj
0002:000003dd ??_C@_0O@PKMMFEIK@hello?5engine?6?$AA@ 00000001400073dd main.cpp.obj
0002:000003f8 ??_7FrameAllocatorPool@pmr@@6B@ 00000001400073f8 main.cpp.obj
0002:00000420 ??_R4FrameAllocatorPool@pmr@@6B@ 0000000140007420 main.cpp.obj
0002:00000438 ??_R3FrameAllocatorPool@pmr@@8 0000000140007438 main.cpp.obj
0002:00000448 ??_R2FrameAllocatorPool@pmr@@8 0000000140007448 main.cpp.obj
0002:00000460 ??_R1A@?0A@EA@FrameAllocatorPool@pmr@@8 0000000140007460 main.cpp.obj
0002:00000480 ??_R1A@?0A@EA@memory_resource@pmr@std@@8 0000000140007480 main.cpp.obj
0002:000004a0 ??_R3memory_resource@pmr@std@@8 00000001400074a0 main.cpp.obj
0002:000004b0 ??_R2memory_resource@pmr@std@@8 00000001400074b0 main.cpp.obj
0002:000004c8 ??_7FrameAllocator@pmr@@6B@ 00000001400074c8 main.cpp.obj
0002:000004f0 ??_R4FrameAllocator@pmr@@6B@ 00000001400074f0 main.cpp.obj
0002:00000508 ??_R3FrameAllocator@pmr@@8 0000000140007508 main.cpp.obj
0002:00000518 ??_R2FrameAllocator@pmr@@8 0000000140007518 main.cpp.obj
0002:00000530 ??_R1A@?0A@EA@FrameAllocator@pmr@@8 0000000140007530 main.cpp.obj
0002:0000054c ??_C@_0P@GHFPNOJB@bad?5allocation?$AA@ 000000014000754c main.cpp.obj
0002:00000568 ??_7bad_alloc@std@@6B@ 0000000140007568 main.cpp.obj
0002:00000580 ??_R4bad_alloc@std@@6B@ 0000000140007580 main.cpp.obj
0002:00000598 ??_R3bad_alloc@std@@8 0000000140007598 main.cpp.obj
0002:000005a8 ??_R2bad_alloc@std@@8 00000001400075a8 main.cpp.obj
0002:000005c0 ??_R1A@?0A@EA@bad_alloc@std@@8 00000001400075c0 main.cpp.obj
0002:000005e0 ??_R1A@?0A@EA@exception@std@@8 00000001400075e0 main.cpp.obj
0002:00000600 ??_R3exception@std@@8 0000000140007600 main.cpp.obj
0002:00000610 ??_R2exception@std@@8 0000000140007610 main.cpp.obj
0002:00000628 ??_7exception@std@@6B@ 0000000140007628 main.cpp.obj
0002:00000640 ??_R4exception@std@@6B@ 0000000140007640 main.cpp.obj
0002:00000658 ??_C@_0BC@EOODALEL@Unknown?5exception?$AA@ 0000000140007658 main.cpp.obj
0002:0000066a ??_C@_0BF@KINCDENJ@bad?5array?5new?5length?$AA@ 000000014000766a main.cpp.obj
0002:00000688 ??_7bad_array_new_length@std@@6B@ 0000000140007688 main.cpp.obj
0002:000006a0 ??_R4bad_array_new_length@std@@6B@ 00000001400076a0 main.cpp.obj
0002:000006b8 ??_R3bad_array_new_length@std@@8 00000001400076b8 main.cpp.obj
0002:000006c8 ??_R2bad_array_new_length@std@@8 00000001400076c8 main.cpp.obj
0002:000006e0 ??_R1A@?0A@EA@bad_array_new_length@std@@8 00000001400076e0 main.cpp.obj
0002:000006fc ??_C@_0BL@GOIGLPKN@unordered_map?1set?5too?5long?$AA@ 00000001400076fc main.cpp.obj
0002:00000717 ??_C@_0BA@JFNIOLAK@string?5too?5long?$AA@ 0000000140007717 main.cpp.obj
0002:00000727 ??_C@_0BK@OGNNAFAB@invalid?5hash?5bucket?5count?$AA@ 0000000140007727 main.cpp.obj
0002:00000741 ??_C@_00CNPNBAHC@?$AA@ 0000000140007741 main.cpp.obj
0002:00000758 ??_7IModule@api@@6B@ 0000000140007758 core:module.cpp.obj
0002:00000790 ??_R4IModule@api@@6B@ 0000000140007790 core:module.cpp.obj
0002:000007a8 ??_R3IModule@api@@8 00000001400077a8 core:module.cpp.obj
0002:000007b8 ??_R2IModule@api@@8 00000001400077b8 core:module.cpp.obj
0002:000007c0 ??_R1A@?0A@EA@IModule@api@@8 00000001400077c0 core:module.cpp.obj
0002:000007e8 ??_7unsynchronized_pool_resource@pmr@std@@6B@ 00000001400077e8 core:module.cpp.obj
0002:00000810 ??_R4unsynchronized_pool_resource@pmr@std@@6B@ 0000000140007810 core:module.cpp.obj
0002:00000828 ??_R3unsynchronized_pool_resource@pmr@std@@8 0000000140007828 core:module.cpp.obj
0002:00000838 ??_R2unsynchronized_pool_resource@pmr@std@@8 0000000140007838 core:module.cpp.obj
0002:00000850 ??_R1A@?0A@EA@unsynchronized_pool_resource@pmr@std@@8 0000000140007850 core:module.cpp.obj
0002:00000870 ??_R1A@?0A@EA@_Identity_equal_resource@pmr@std@@8 0000000140007870 core:module.cpp.obj
0002:00000890 ??_R3_Identity_equal_resource@pmr@std@@8 0000000140007890 core:module.cpp.obj
0002:000008a0 ??_R2_Identity_equal_resource@pmr@std@@8 00000001400078a0 core:module.cpp.obj
0002:000008b0 __xmm@ffffffffffffffffffffffffffffffff 00000001400078b0 msvcrt:utility.obj
0002:000008c8 ??_7type_info@@6B@ 00000001400078c8 msvcrt:std_type_info_static.obj
0002:000008d0 __dyn_tls_init_callback 00000001400078d0 msvcrt:tlsdyn.obj
0002:000008d8 __dyn_tls_dtor_callback 00000001400078d8 msvcrt:tlsdtor.obj
0002:000008e0 _load_config_used 00000001400078e0 msvcrt:loadcfg.obj
0002:00000a80 _tls_used 0000000140007a80 msvcrt:tlssup.obj
0002:00000aa8 ??_R4type_info@@6B@ 0000000140007aa8 msvcrt:std_type_info_static.obj
0002:00000ad0 ??_R3type_info@@8 0000000140007ad0 msvcrt:std_type_info_static.obj
0002:00000ae8 ??_R2type_info@@8 0000000140007ae8 msvcrt:std_type_info_static.obj
0002:00000af8 ??_R1A@?0A@EA@type_info@@8 0000000140007af8 msvcrt:std_type_info_static.obj
0002:00000b1c __volatile_metadata 0000000140007b1c <linker-defined>
0002:00000ed8 __rtc_iaa 0000000140007ed8 msvcrt:initsect.obj
0002:00000ee0 __rtc_izz 0000000140007ee0 msvcrt:initsect.obj
0002:00000ee8 __rtc_taa 0000000140007ee8 msvcrt:initsect.obj
0002:00000ef0 __rtc_tzz 0000000140007ef0 msvcrt:initsect.obj
0002:00000f00 _tls_start 0000000140007f00 msvcrt:tlssup.obj
0002:00000f10 ?MemPool@@3Uunsynchronized_pool_resource@pmr@std@@A 0000000140007f10 core:module.cpp.obj
0002:00000f58 ?detail@@3UMemDetail@@A 0000000140007f58 core:module.cpp.obj
0002:00000f64 _Init_thread_epoch 0000000140007f64 msvcrt:thread_safe_statics.obj
0002:00000f68 __tls_guard 0000000140007f68 msvcrt:tlsdyn.obj
0002:00001080 _tls_end 0000000140008080 msvcrt:tlssup.obj
0002:00001400 _CT??_R0?AVbad_alloc@std@@@8??0bad_alloc@std@@QEAA@AEBV01@@Z24 0000000140008400 main.cpp.obj
0002:00001420 _CT??_R0?AVexception@std@@@8??0exception@std@@QEAA@AEBV01@@Z24 0000000140008420 main.cpp.obj
0002:00001440 _CTA2?AVbad_alloc@std@@ 0000000140008440 main.cpp.obj
0002:00001450 _TI2?AVbad_alloc@std@@ 0000000140008450 main.cpp.obj
0002:00001460 _CT??_R0?AVbad_array_new_length@std@@@8??0bad_array_new_length@std@@QEAA@AEBV01@@Z24 0000000140008460 main.cpp.obj
0002:00001480 _CTA3?AVbad_array_new_length@std@@ 0000000140008480 main.cpp.obj
0002:00001490 _TI3?AVbad_array_new_length@std@@ 0000000140008490 main.cpp.obj
0002:0000298c __IMPORT_DESCRIPTOR_engine 000000014000998c engine:engine.dll
0002:000029a0 __IMPORT_DESCRIPTOR_MSVCP140 00000001400099a0 msvcprt:MSVCP140.dll
0002:000029b4 __IMPORT_DESCRIPTOR_MSVCP140_1 00000001400099b4 msvcprt:MSVCP140_1.dll
0002:000029c8 __IMPORT_DESCRIPTOR_KERNEL32 00000001400099c8 kernel32:KERNEL32.dll
0002:000029dc __IMPORT_DESCRIPTOR_VCRUNTIME140 00000001400099dc vcruntime:VCRUNTIME140.dll
0002:000029f0 __IMPORT_DESCRIPTOR_VCRUNTIME140_1 00000001400099f0 vcruntime:VCRUNTIME140_1.dll
0002:00002a04 __IMPORT_DESCRIPTOR_api-ms-win-crt-string-l1-1-0 0000000140009a04 ucrt:api-ms-win-crt-string-l1-1-0.dll
0002:00002a18 __IMPORT_DESCRIPTOR_api-ms-win-crt-runtime-l1-1-0 0000000140009a18 ucrt:api-ms-win-crt-runtime-l1-1-0.dll
0002:00002a2c __IMPORT_DESCRIPTOR_api-ms-win-crt-math-l1-1-0 0000000140009a2c ucrt:api-ms-win-crt-math-l1-1-0.dll
0002:00002a40 __IMPORT_DESCRIPTOR_api-ms-win-crt-stdio-l1-1-0 0000000140009a40 ucrt:api-ms-win-crt-stdio-l1-1-0.dll
0002:00002a54 __IMPORT_DESCRIPTOR_api-ms-win-crt-locale-l1-1-0 0000000140009a54 ucrt:api-ms-win-crt-locale-l1-1-0.dll
0002:00002a68 __IMPORT_DESCRIPTOR_api-ms-win-crt-heap-l1-1-0 0000000140009a68 ucrt:api-ms-win-crt-heap-l1-1-0.dll
0002:00002a7c __NULL_IMPORT_DESCRIPTOR 0000000140009a7c engine:engine.dll
0003:00000000 ??_R0?AVFrameAllocatorPool@pmr@@@8 000000014000b000 main.cpp.obj
0003:00000030 ??_R0?AVmemory_resource@pmr@std@@@8 000000014000b030 main.cpp.obj
0003:00000060 ??_R0?AVFrameAllocator@pmr@@@8 000000014000b060 main.cpp.obj
0003:00000090 ??_R0?AVbad_alloc@std@@@8 000000014000b090 main.cpp.obj
0003:000000c0 ??_R0?AVexception@std@@@8 000000014000b0c0 main.cpp.obj
0003:000000f0 ??_R0?AVbad_array_new_length@std@@@8 000000014000b0f0 main.cpp.obj
0003:00000120 ??_R0?AUIModule@api@@@8 000000014000b120 core:module.cpp.obj
0003:00000150 ??_R0?AUunsynchronized_pool_resource@pmr@std@@@8 000000014000b150 core:module.cpp.obj
0003:00000190 ??_R0?AV_Identity_equal_resource@pmr@std@@@8 000000014000b190 core:module.cpp.obj
0003:000001c8 _Init_global_epoch 000000014000b1c8 msvcrt:thread_safe_statics.obj
0003:000001cc __scrt_native_dllmain_reason 000000014000b1cc msvcrt:utility.obj
0003:000001d0 _fltused 000000014000b1d0 msvcrt:fltused.obj
0003:000001d8 __isa_inverted 000000014000b1d8 msvcrt:cpu_disp.obj
0003:000001e0 __isa_available 000000014000b1e0 msvcrt:cpu_disp.obj
0003:000001e4 __isa_enabled 000000014000b1e4 msvcrt:cpu_disp.obj
0003:000001e8 __memset_fast_string_threshold 000000014000b1e8 msvcrt:cpu_disp.obj
0003:000001f0 __memset_nt_threshold 000000014000b1f0 msvcrt:cpu_disp.obj
0003:000001f8 __scrt_default_matherr 000000014000b1f8 msvcrt:matherr.obj
0003:00000200 __security_cookie 000000014000b200 msvcrt:gs_cookie.obj
0003:00000240 __security_cookie_complement 000000014000b240 msvcrt:gs_cookie.obj
0003:00000248 __scrt_ucrt_dll_is_in_use 000000014000b248 msvcrt:ucrt_stubs.obj
0003:00000250 ??_R0?AVtype_info@@@8 000000014000b250 msvcrt:std_type_info_static.obj
0003:00000270 ?empty@?4??Find@NameTable@pmr@@SAAEBV?$basic_string@DU?$char_traits@D@std@@V?$polymorphic_allocator@D@pmr@2@@std@@_K@Z@4V45@A 000000014000b270 main.cpp.obj
0003:00000298 ?$TSS0@?4??Find@NameTable@pmr@@SAAEBV?$basic_string@DU?$char_traits@D@std@@V?$polymorphic_allocator@D@pmr@2@@std@@_K@Z@4HA 000000014000b298 main.cpp.obj
0003:0000029c _tls_index 000000014000b29c msvcrt:tlssup.obj
0003:000002b0 __scrt_current_native_startup_state 000000014000b2b0 msvcrt:utility.obj
0003:000002b8 __scrt_native_startup_lock 000000014000b2b8 msvcrt:utility.obj
0003:000002f8 __avx10_version 000000014000b2f8 msvcrt:cpu_disp.obj
0003:000002fc __favor 000000014000b2fc msvcrt:cpu_disp.obj
0003:00000300 __scrt_debugger_hook_flag 000000014000b300 msvcrt:utility_desktop.obj
0003:00000310 ?__type_info_root_node@@3U__type_info_node@@A 000000014000b310 msvcrt:tncleanup.obj
0003:00000320 ?_OptionsStorage@?1??__local_stdio_printf_options@@9@4_KA 000000014000b320 msvcrt:default_local_stdio_options.obj
0003:00000328 ?_OptionsStorage@?1??__local_stdio_scanf_options@@9@4_KA 000000014000b328 msvcrt:default_local_stdio_options.obj
entry point at 0001:0000517c
Static symbols
0001:00000870 ?dtor$77@?0?main@4HA 0000000140001870 f main.cpp.obj
0001:000008a0 ?dtor$85@?0?main@4HA 00000001400018a0 f main.cpp.obj
0001:000008d0 ?dtor$97@?0?main@4HA 00000001400018d0 f main.cpp.obj
0001:00000910 ?dtor$98@?0?main@4HA 0000000140001910 f main.cpp.obj
0001:00000950 ?dtor$99@?0?main@4HA 0000000140001950 f main.cpp.obj
0001:00000980 ?dtor$134@?0?main@4HA 0000000140001980 f main.cpp.obj
0001:000009c0 ?dtor$135@?0?main@4HA 00000001400019c0 f main.cpp.obj
0001:000009f0 ?dtor$136@?0?main@4HA 00000001400019f0 f main.cpp.obj
0001:00000a20 ?dtor$137@?0?main@4HA 0000000140001a20 f main.cpp.obj
0001:00000a50 ?dtor$138@?0?main@4HA 0000000140001a50 f main.cpp.obj
0001:00000a80 ?dtor$139@?0?main@4HA 0000000140001a80 f main.cpp.obj
0001:00000ab0 ?dtor$140@?0?main@4HA 0000000140001ab0 f main.cpp.obj
0001:00000ae0 ?dtor$141@?0?main@4HA 0000000140001ae0 f main.cpp.obj
0001:00000b10 ?dtor$142@?0?main@4HA 0000000140001b10 f main.cpp.obj
0001:00000b40 ??__Fempty@?4??Find@NameTable@pmr@@SAAEBV?$basic_string@DU?$char_traits@D@std@@V?$polymorphic_allocator@D@pmr@2@@std@@_K@Z@YAXXZ 0000000140001b40 f main.cpp.obj
0001:00000ba0 ?dtor$3@?0???__Fempty@?4??Find@NameTable@pmr@@SAAEBV?$basic_string@DU?$char_traits@D@std@@V?$polymorphic_allocator@D@pmr@2@@std@@_K@Z@YAXXZ@4HA 0000000140001ba0 f main.cpp.obj
0001:00000de9 $ehgcr_1_29 0000000140001de9 main.cpp.obj
0001:00000e00 ?dtor$7@?0???$?6U?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@PEBD@Z@4HA 0000000140001e00 f i main.cpp.obj
0001:00000e30 ?catch$27@?0???$?6U?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@PEBD@Z@4HA 0000000140001e30 f i main.cpp.obj
0001:00000e80 ?dtor$36@?0???$?6U?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@PEBD@Z@4HA 0000000140001e80 f i main.cpp.obj
0001:00000eb0 ?dtor$37@?0???$?6U?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@PEBD@Z@4HA 0000000140001eb0 f i main.cpp.obj
0001:00001180 ?dtor$26@?0???$type_info@H@refl@@YAPEBVUClass@0@XZ@4HA 0000000140002180 f i main.cpp.obj
0001:000011a0 ?dtor$27@?0???$type_info@H@refl@@YAPEBVUClass@0@XZ@4HA 00000001400021a0 f i main.cpp.obj
0001:000011c0 ?dtor$28@?0???$type_info@H@refl@@YAPEBVUClass@0@XZ@4HA 00000001400021c0 f i main.cpp.obj
0001:000011e0 ?dtor$29@?0???$type_info@H@refl@@YAPEBVUClass@0@XZ@4HA 00000001400021e0 f i main.cpp.obj
0001:00001280 ?dtor$5@?0???1?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@XZ@4HA 0000000140002280 f i main.cpp.obj
0001:00001330 ?dtor$7@?0???1FrameAllocatorPool@pmr@@UEAA@XZ@4HA 0000000140002330 f i main.cpp.obj
0001:000013f0 ?dtor$9@?0???_GFrameAllocatorPool@pmr@@UEAAPEAXI@Z@4HA 00000001400023f0 f i main.cpp.obj
0001:00001500 ?dtor$11@?0??do_allocate@FrameAllocatorPool@pmr@@UEAAPEAX_K0@Z@4HA 0000000140002500 f i main.cpp.obj
0001:00001760 ?dtor$21@?0???$_Emplace_reallocate@AEA_K@?$vector@VFrameAllocator@pmr@@V?$polymorphic_allocator@VFrameAllocator@pmr@@@2std@@@std@@AEAAPEAVFrameAllocator@pmr@@QEAV23@AEA_K@Z@4HA 0000000140002760 f i main.cpp.obj
0001:00001780 ?dtor$22@?0???$_Emplace_reallocate@AEA_K@?$vector@VFrameAllocator@pmr@@V?$polymorphic_allocator@VFrameAllocator@pmr@@@2std@@@std@@AEAAPEAVFrameAllocator@pmr@@QEAV23@AEA_K@Z@4HA 0000000140002780 f i main.cpp.obj
0001:000018c0 ?dtor$2@?0???0bad_alloc@std@@QEAA@AEBV01@@Z@4HA 00000001400028c0 f i main.cpp.obj
0001:00001930 ?dtor$2@?0???0exception@std@@QEAA@AEBV01@@Z@4HA 0000000140002930 f i main.cpp.obj
0001:000019a0 ?dtor$4@?0???_Gbad_alloc@std@@UEAAPEAXI@Z@4HA 00000001400029a0 f i main.cpp.obj
0001:000019a0 ?dtor$4@?0???_Gbad_array_new_length@std@@UEAAPEAXI@Z@4HA 00000001400029a0 f i main.cpp.obj
0001:000019a0 ?dtor$4@?0???_Gexception@std@@UEAAPEAXI@Z@4HA 00000001400029a0 f i main.cpp.obj
0001:00001a70 ?dtor$2@?0???0bad_array_new_length@std@@QEAA@AEBV01@@Z@4HA 0000000140002a70 f i main.cpp.obj
0001:00001ac0 ?dtor$2@?0???1exception@std@@UEAA@XZ@4HA 0000000140002ac0 f i main.cpp.obj
0001:00001e30 ?dtor$18@?0???$MakePair@AEAPEBD@NameTable@pmr@@SA?AV?$basic_string_view@DU?$char_traits@D@std@@@std@@_KAEAPEBD@Z@4HA 0000000140002e30 f i main.cpp.obj
0001:00001e70 ?dtor$27@?0???$MakePair@AEAPEBD@NameTable@pmr@@SA?AV?$basic_string_view@DU?$char_traits@D@std@@@std@@_KAEAPEBD@Z@4HA 0000000140002e70 f i main.cpp.obj
0001:000021d0 ?dtor$35@?0???$emplace@U?$pair@_KV?$basic_string@DU?$char_traits@D@std@@V?$polymorphic_allocator@D@pmr@2@@std@@@std@@@?$_Hash@V?$_Umap_traits@_K$$CBV?$basic_string@DU?$char_traits@D@std@@V?$polymorphic_allocator@D@pmr@2@@std@@V?$_Uhash_compare@_KU?$hash@_K@std@@U?$equal_to@_K@2@@2@V?$polymorphic_allocator@U?$pair@$$CB_K$$CBV?$basic_string@DU?$char_traits@D@std@@V?$polymorphic_allocator@D@pmr@2@@std@@@std@@@pmr@2@$0A@@std@@@std@@QEAA?AU?$pair@V?$_List_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CB_K$$CBV?$basic_string@DU?$char_traits@D@std@@V?$polymorphic_allocator@D@pmr@2@@std@@@std@@@std@@@std@@@std@@_N@1@$$QEAU?$pair@_KV?$basic_string@DU?$char_traits@D@std@@V?$polymorphic_allocator@D@pmr@2@@std@@@1@@Z@4HA 00000001400031d0 f i main.cpp.obj
0001:000021f0 ?dtor$40@?0???$emplace@U?$pair@_KV?$basic_string@DU?$char_traits@D@std@@V?$polymorphic_allocator@D@pmr@2@@std@@@std@@@?$_Hash@V?$_Umap_traits@_K$$CBV?$basic_string@DU?$char_traits@D@std@@V?$polymorphic_allocator@D@pmr@2@@std@@V?$_Uhash_compare@_KU?$hash@_K@std@@U?$equal_to@_K@2@@2@V?$polymorphic_allocator@U?$pair@$$CB_K$$CBV?$basic_string@DU?$char_traits@D@std@@V?$polymorphic_allocator@D@pmr@2@@std@@@std@@@pmr@2@$0A@@std@@@std@@QEAA?AU?$pair@V?$_List_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CB_K$$CBV?$basic_string@DU?$char_traits@D@std@@V?$polymorphic_allocator@D@pmr@2@@std@@@std@@@std@@@std@@@std@@_N@1@$$QEAU?$pair@_KV?$basic_string@DU?$char_traits@D@std@@V?$polymorphic_allocator@D@pmr@2@@std@@@1@@Z@4HA 00000001400031f0 f i main.cpp.obj
0001:00002210 ?dtor$41@?0???$emplace@U?$pair@_KV?$basic_string@DU?$char_traits@D@std@@V?$polymorphic_allocator@D@pmr@2@@std@@@std@@@?$_Hash@V?$_Umap_traits@_K$$CBV?$basic_string@DU?$char_traits@D@std@@V?$polymorphic_allocator@D@pmr@2@@std@@V?$_Uhash_compare@_KU?$hash@_K@std@@U?$equal_to@_K@2@@2@V?$polymorphic_allocator@U?$pair@$$CB_K$$CBV?$basic_string@DU?$char_traits@D@std@@V?$polymorphic_allocator@D@pmr@2@@std@@@std@@@pmr@2@$0A@@std@@@std@@QEAA?AU?$pair@V?$_List_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CB_K$$CBV?$basic_string@DU?$char_traits@D@std@@V?$polymorphic_allocator@D@pmr@2@@std@@@std@@@std@@@std@@@std@@_N@1@$$QEAU?$pair@_KV?$basic_string@DU?$char_traits@D@std@@V?$polymorphic_allocator@D@pmr@2@@std@@@1@@Z@4HA 0000000140003210 f i main.cpp.obj
0001:00002350 ?dtor$3@?0???1?$pair@_KV?$basic_string@DU?$char_traits@D@std@@V?$polymorphic_allocator@D@pmr@2@@std@@@std@@QEAA@XZ@4HA 0000000140003350 f i main.cpp.obj
0001:000023d0 ?dtor$3@?0???1?$basic_string@DU?$char_traits@D@std@@V?$polymorphic_allocator@D@pmr@2@@std@@QEAA@XZ@4HA 00000001400033d0 f i main.cpp.obj
0001:00002530 ?dtor$15@?0???$?0U?$pair@_KV?$basic_string@DU?$char_traits@D@std@@V?$polymorphic_allocator@D@pmr@2@@std@@@std@@@?$_List_node_emplace_op2@V?$polymorphic_allocator@U?$_List_node@U?$pair@$$CB_K$$CBV?$basic_string@DU?$char_traits@D@std@@V?$polymorphic_allocator@D@pmr@2@@std@@@std@@PEAX@std@@@pmr@std@@@std@@QEAA@AEAV?$polymorphic_allocator@U?$_List_node@U?$pair@$$CB_K$$CBV?$basic_string@DU?$char_traits@D@std@@V?$polymorphic_allocator@D@pmr@2@@std@@@std@@PEAX@std@@@pmr@1@$$QEAU?$pair@_KV?$basic_string@DU?$char_traits@D@std@@V?$polymorphic_allocator@D@pmr@2@@std@@@1@@Z@4HA 0000000140003530 f i main.cpp.obj
0001:000025f0 ?dtor$6@?0???1?$_List_node_emplace_op2@V?$polymorphic_allocator@U?$_List_node@U?$pair@$$CB_K$$CBV?$basic_string@DU?$char_traits@D@std@@V?$polymorphic_allocator@D@pmr@2@@std@@@std@@PEAX@std@@@pmr@std@@@std@@QEAA@XZ@4HA 00000001400035f0 f i main.cpp.obj
0001:00002610 ?dtor$7@?0???1?$_List_node_emplace_op2@V?$polymorphic_allocator@U?$_List_node@U?$pair@$$CB_K$$CBV?$basic_string@DU?$char_traits@D@std@@V?$polymorphic_allocator@D@pmr@2@@std@@@std@@PEAX@std@@@pmr@std@@@std@@QEAA@XZ@4HA 0000000140003610 f i main.cpp.obj
0001:00002670 ?dtor$3@?0???1?$_Alloc_construct_ptr@V?$polymorphic_allocator@U?$_List_node@U?$pair@$$CB_K$$CBV?$basic_string@DU?$char_traits@D@std@@V?$polymorphic_allocator@D@pmr@2@@std@@@std@@PEAX@std@@@pmr@std@@@std@@QEAA@XZ@4HA 0000000140003670 f i main.cpp.obj
0001:00002a00 ?dtor$35@?0??_Forced_rehash@?$_Hash@V?$_Umap_traits@_K$$CBV?$basic_string@DU?$char_traits@D@std@@V?$polymorphic_allocator@D@pmr@2@@std@@V?$_Uhash_compare@_KU?$hash@_K@std@@U?$equal_to@_K@2@@2@V?$polymorphic_allocator@U?$pair@$$CB_K$$CBV?$basic_string@DU?$char_traits@D@std@@V?$polymorphic_allocator@D@pmr@2@@std@@@std@@@pmr@2@$0A@@std@@@std@@IEAAX_K@Z@4HA 0000000140003a00 f i main.cpp.obj
0001:00002bf0 ?dtor$10@?0??Find@NameTable@pmr@@SAAEBV?$basic_string@DU?$char_traits@D@std@@V?$polymorphic_allocator@D@pmr@2@@std@@_K@Z@4HA 0000000140003bf0 f i main.cpp.obj
0001:00002c80 ?dtor$5@?0???1sentry@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA@XZ@4HA 0000000140003c80 f i main.cpp.obj
0001:00002ce0 ?dtor$3@?0???1_Sentry_base@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA@XZ@4HA 0000000140003ce0 f i main.cpp.obj
0001:00002f19 $ehgcr_38_25 0000000140003f19 main.cpp.obj
0001:00002f30 ?dtor$7@?0???$_Insert_string@DU?$char_traits@D@std@@_K@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@QEBD_K@Z@4HA 0000000140003f30 f i main.cpp.obj
0001:00002f60 ?catch$23@?0???$_Insert_string@DU?$char_traits@D@std@@_K@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@QEBD_K@Z@4HA 0000000140003f60 f i main.cpp.obj
0001:00002fb0 ?dtor$36@?0???$_Insert_string@DU?$char_traits@D@std@@_K@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@QEBD_K@Z@4HA 0000000140003fb0 f i main.cpp.obj
0001:00002fe0 ?dtor$37@?0???$_Insert_string@DU?$char_traits@D@std@@_K@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@QEBD_K@Z@4HA 0000000140003fe0 f i main.cpp.obj
0001:00003350 ?dtor$18@?0???$MakePair@AEAV?$basic_string_view@DU?$char_traits@D@std@@@std@@@NameTable@pmr@@SA?AV?$basic_string_view@DU?$char_traits@D@std@@@std@@_KAEAV23@@Z@4HA 0000000140004350 f i main.cpp.obj
0001:00003390 ?dtor$27@?0???$MakePair@AEAV?$basic_string_view@DU?$char_traits@D@std@@@std@@@NameTable@pmr@@SA?AV?$basic_string_view@DU?$char_traits@D@std@@@std@@_KAEAV23@@Z@4HA 0000000140004390 f i main.cpp.obj
0001:000036c0 ?dtor$9@?0???$_Try_emplace@UName@pmr@@$$V@?$_Hash@V?$_Umap_traits@UName@pmr@@PEBVUClass@refl@@V?$_Uhash_compare@UName@pmr@@U?$hash@UName@pmr@@@std@@U?$equal_to@UName@pmr@@@4@@std@@V?$polymorphic_allocator@U?$pair@$$CBUName@pmr@@PEBVUClass@refl@@@std@@@26@$0A@@std@@@std@@IEAA?AU?$pair@PEAU?$_List_node@U?$pair@$$CBUName@pmr@@PEBVUClass@refl@@@std@@PEAX@std@@_N@1@$$QEAUName@pmr@@@Z@4HA 00000001400046c0 f i main.cpp.obj
0001:000036f0 ?dtor$37@?0???$_Try_emplace@UName@pmr@@$$V@?$_Hash@V?$_Umap_traits@UName@pmr@@PEBVUClass@refl@@V?$_Uhash_compare@UName@pmr@@U?$hash@UName@pmr@@@std@@U?$equal_to@UName@pmr@@@4@@std@@V?$polymorphic_allocator@U?$pair@$$CBUName@pmr@@PEBVUClass@refl@@@std@@@26@$0A@@std@@@std@@IEAA?AU?$pair@PEAU?$_List_node@U?$pair@$$CBUName@pmr@@PEBVUClass@refl@@@std@@PEAX@std@@_N@1@$$QEAUName@pmr@@@Z@4HA 00000001400046f0 f i main.cpp.obj
0001:00003710 ?dtor$38@?0???$_Try_emplace@UName@pmr@@$$V@?$_Hash@V?$_Umap_traits@UName@pmr@@PEBVUClass@refl@@V?$_Uhash_compare@UName@pmr@@U?$hash@UName@pmr@@@std@@U?$equal_to@UName@pmr@@@4@@std@@V?$polymorphic_allocator@U?$pair@$$CBUName@pmr@@PEBVUClass@refl@@@std@@@26@$0A@@std@@@std@@IEAA?AU?$pair@PEAU?$_List_node@U?$pair@$$CBUName@pmr@@PEBVUClass@refl@@@std@@PEAX@std@@_N@1@$$QEAUName@pmr@@@Z@4HA 0000000140004710 f i main.cpp.obj
0001:00003780 ?dtor$3@?0???1?$_Alloc_construct_ptr@V?$polymorphic_allocator@U?$_List_node@U?$pair@$$CBUName@pmr@@PEBVUClass@refl@@@std@@PEAX@std@@@pmr@std@@@std@@QEAA@XZ@4HA 0000000140004780 f i main.cpp.obj
0001:00003780 ?dtor$3@?0???1?$_List_node_emplace_op2@V?$polymorphic_allocator@U?$_List_node@U?$pair@$$CBUName@pmr@@PEBVUClass@refl@@@std@@PEAX@std@@@pmr@std@@@std@@QEAA@XZ@4HA 0000000140004780 f i main.cpp.obj
0001:00003a80 ?dtor$33@?0??_Forced_rehash@?$_Hash@V?$_Umap_traits@UName@pmr@@PEBVUClass@refl@@V?$_Uhash_compare@UName@pmr@@U?$hash@UName@pmr@@@std@@U?$equal_to@UName@pmr@@@4@@std@@V?$polymorphic_allocator@U?$pair@$$CBUName@pmr@@PEBVUClass@refl@@@std@@@26@$0A@@std@@@std@@IEAAX_K@Z@4HA 0000000140004a80 f i main.cpp.obj
0001:00003aa0 ??__FMemPool@@YAXXZ 0000000140004aa0 f core:module.cpp.obj
0001:00003b50 ?dtor$4@?0???__FMemPool@@YAXXZ@4HA 0000000140004b50 f core:module.cpp.obj
0001:00003c70 ?dtor$4@?0???3@YAXPEAX@Z@4HA 0000000140004c70 f core:module.cpp.obj
0001:00003e10 ?dtor$12@?0???1IModule@api@@UEAA@XZ@4HA 0000000140004e10 f core:module.cpp.obj
0001:00003e30 ?dtor$13@?0???1IModule@api@@UEAA@XZ@4HA 0000000140004e30 f core:module.cpp.obj
0001:00003ed0 __tls_init 0000000140004ed0 f core:module.cpp.obj
0001:000040e0 ?dtor$8@?0???_Gunsynchronized_pool_resource@pmr@std@@UEAAPEAXI@Z@4HA 00000001400050e0 f i core:module.cpp.obj
0001:00004100 ?dtor$9@?0???_Gunsynchronized_pool_resource@pmr@std@@UEAAPEAXI@Z@4HA 0000000140005100 f i core:module.cpp.obj
0001:00004410 ?dtor$23@?0??do_deallocate@unsynchronized_pool_resource@pmr@std@@MEAAXQEAX_K1@Z@4HA 0000000140005410 f i core:module.cpp.obj
0001:00004430 ?dtor$24@?0??do_deallocate@unsynchronized_pool_resource@pmr@std@@MEAAXQEAX_K1@Z@4HA 0000000140005430 f i core:module.cpp.obj
0001:000049d0 ?dtor$17@?0???$_Emplace_reallocate@AEAE@?$vector@U_Pool@unsynchronized_pool_resource@pmr@std@@V?$polymorphic_allocator@U_Pool@unsynchronized_pool_resource@pmr@std@@@34@@std@@AEAAPEAU_Pool@unsynchronized_pool_resource@pmr@1@QEAU2341@AEAE@Z@4HA 00000001400059d0 f i core:module.cpp.obj
0001:00004b20 ?dtor$14@?0??release@unsynchronized_pool_resource@pmr@std@@QEAAXXZ@4HA 0000000140005b20 f i core:module.cpp.obj
0001:00004b40 ?dtor$16@?0??release@unsynchronized_pool_resource@pmr@std@@QEAAXXZ@4HA 0000000140005b40 f i core:module.cpp.obj
0001:00004b60 ?dtor$17@?0??release@unsynchronized_pool_resource@pmr@std@@QEAAXXZ@4HA 0000000140005b60 f i core:module.cpp.obj
0001:00004f1c ?pre_c_initialization@@YAHXZ 0000000140005f1c f msvcrt:exe_main.obj
0001:00004fd4 ?post_pgo_initialization@@YAHXZ 0000000140005fd4 f msvcrt:exe_main.obj
0001:00004fe4 ?pre_cpp_initialization@@YAXXZ 0000000140005fe4 f msvcrt:exe_main.obj
0001:00005000 ?__scrt_common_main_seh@@YAHXZ 0000000140006000 f msvcrt:exe_main.obj
0001:00005af0 $$000000 0000000140006af0 msvcrt:guard_dispatch.obj
0001:00005b10 $$000000 0000000140006b10 msvcrt:guard_xfg_dispatch.obj
0001:00005b26 __scrt_is_nonwritable_in_current_image$filt$0 0000000140006b26 f msvcrt:utility.obj
0001:00005b3e ?filt$0@?0??__scrt_common_main_seh@@YAHXZ@4HA 0000000140006b3e f msvcrt:exe_main.obj
0002:000002f0 ?pre_cpp_initializer@@3P6AXXZEA 00000001400072f0 msvcrt:exe_main.obj
0002:00000300 __xd_a 0000000140007300 msvcrt:tlsdyn.obj
0002:00000308 __tls_init$initializer$ 0000000140007308 core:module.cpp.obj
0002:00000310 __xd_z 0000000140007310 msvcrt:tlsdyn.obj
0002:00000320 ?pre_c_initializer@@3P6AHXZEA 0000000140007320 msvcrt:exe_main.obj
0002:00000328 ?post_pgo_initializer@@3P6AHXZEA 0000000140007328 msvcrt:exe_main.obj
0002:00000340 __xl_c 0000000140007340 msvcrt:tlsdyn.obj
0002:00000348 __xl_d 0000000140007348 msvcrt:tlsdtor.obj
0002:00000f70 dtor_list 0000000140007f70 msvcrt:tlsdtor.obj
0002:00000f80 dtor_list_head 0000000140007f80 msvcrt:tlsdtor.obj
0002:0000120c $cppxdata$main 000000014000820c main.cpp.obj
0002:00001234 $stateUnwindMap$main 0000000140008234 main.cpp.obj
0002:000012a4 $ip2state$main 00000001400082a4 main.cpp.obj
0002:000013b8 $cppxdata$??__Fempty@?4??Find@NameTable@pmr@@SAAEBV?$basic_string@DU?$char_traits@D@std@@V?$polymorphic_allocator@D@pmr@2@@std@@_K@Z@YAXXZ 00000001400083b8 main.cpp.obj
0002:000013e0 $stateUnwindMap$??__Fempty@?4??Find@NameTable@pmr@@SAAEBV?$basic_string@DU?$char_traits@D@std@@V?$polymorphic_allocator@D@pmr@2@@std@@_K@Z@YAXXZ 00000001400083e0 main.cpp.obj
0002:000013e8 $ip2state$??__Fempty@?4??Find@NameTable@pmr@@SAAEBV?$basic_string@DU?$char_traits@D@std@@V?$polymorphic_allocator@D@pmr@2@@std@@_K@Z@YAXXZ 00000001400083e8 main.cpp.obj
0002:00001518 $cppxdata$??$?6U?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@PEBD@Z 0000000140008518 main.cpp.obj
0002:00001540 $stateUnwindMap$??$?6U?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@PEBD@Z 0000000140008540 main.cpp.obj
0002:00001568 $tryMap$??$?6U?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@PEBD@Z 0000000140008568 main.cpp.obj
0002:0000157c $handlerMap$0$??$?6U?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@PEBD@Z 000000014000857c main.cpp.obj
0002:00001590 $ip2state$??$?6U?$char_traits@D@std@@@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@PEBD@Z 0000000140008590 main.cpp.obj
0002:00001638 $cppxdata$??$type_info@H@refl@@YAPEBVUClass@0@XZ 0000000140008638 main.cpp.obj
0002:00001660 $stateUnwindMap$??$type_info@H@refl@@YAPEBVUClass@0@XZ 0000000140008660 main.cpp.obj
0002:00001680 $ip2state$??$type_info@H@refl@@YAPEBVUClass@0@XZ 0000000140008680 main.cpp.obj
0002:000016e8 $cppxdata$??1?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@XZ 00000001400086e8 main.cpp.obj
0002:00001710 $stateUnwindMap$??1?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@XZ 0000000140008710 main.cpp.obj
0002:00001718 $ip2state$??1?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QEAA@XZ 0000000140008718 main.cpp.obj
0002:0000175c $cppxdata$??1FrameAllocatorPool@pmr@@UEAA@XZ 000000014000875c main.cpp.obj
0002:00001784 $stateUnwindMap$??1FrameAllocatorPool@pmr@@UEAA@XZ 0000000140008784 main.cpp.obj
0002:0000178c $ip2state$??1FrameAllocatorPool@pmr@@UEAA@XZ 000000014000878c main.cpp.obj
0002:000017d4 $cppxdata$??_GFrameAllocatorPool@pmr@@UEAAPEAXI@Z 00000001400087d4 main.cpp.obj
0002:000017fc $stateUnwindMap$??_GFrameAllocatorPool@pmr@@UEAAPEAXI@Z 00000001400087fc main.cpp.obj
0002:00001804 $ip2state$??_GFrameAllocatorPool@pmr@@UEAAPEAXI@Z 0000000140008804 main.cpp.obj
0002:0000184c $cppxdata$?do_allocate@FrameAllocatorPool@pmr@@UEAAPEAX_K0@Z 000000014000884c main.cpp.obj
0002:00001874 $stateUnwindMap$?do_allocate@FrameAllocatorPool@pmr@@UEAAPEAX_K0@Z 0000000140008874 main.cpp.obj
0002:0000187c $ip2state$?do_allocate@FrameAllocatorPool@pmr@@UEAAPEAX_K0@Z 000000014000887c main.cpp.obj
0002:000018e4 $cppxdata$??$_Emplace_reallocate@AEA_K@?$vector@VFrameAllocator@pmr@@V?$polymorphic_allocator@VFrameAllocator@pmr@@@2std@@@std@@AEAAPEAVFrameAllocator@pmr@@QEAV23@AEA_K@Z 00000001400088e4 main.cpp.obj
0002:0000190c $stateUnwindMap$??$_Emplace_reallocate@AEA_K@?$vector@VFrameAllocator@pmr@@V?$polymorphic_allocator@VFrameAllocator@pmr@@@2std@@@std@@AEAAPEAVFrameAllocator@pmr@@QEAV23@AEA_K@Z 000000014000890c main.cpp.obj
0002:0000191c $ip2state$??$_Emplace_reallocate@AEA_K@?$vector@VFrameAllocator@pmr@@V?$polymorphic_allocator@VFrameAllocator@pmr@@@2std@@@std@@AEAAPEAVFrameAllocator@pmr@@QEAV23@AEA_K@Z 000000014000891c main.cpp.obj
0002:00001978 $cppxdata$??0bad_alloc@std@@QEAA@AEBV01@@Z 0000000140008978 main.cpp.obj
0002:000019a0 $stateUnwindMap$??0bad_alloc@std@@QEAA@AEBV01@@Z 00000001400089a0 main.cpp.obj
0002:000019a8 $ip2state$??0bad_alloc@std@@QEAA@AEBV01@@Z 00000001400089a8 main.cpp.obj
0002:000019e0 $cppxdata$??0exception@std@@QEAA@AEBV01@@Z 00000001400089e0 main.cpp.obj
0002:00001a08 $stateUnwindMap$??0exception@std@@QEAA@AEBV01@@Z 0000000140008a08 main.cpp.obj
0002:00001a10 $ip2state$??0exception@std@@QEAA@AEBV01@@Z 0000000140008a10 main.cpp.obj
0002:00001a4c $cppxdata$??_Gbad_alloc@std@@UEAAPEAXI@Z 0000000140008a4c main.cpp.obj
0002:00001a4c $cppxdata$??_Gbad_array_new_length@std@@UEAAPEAXI@Z 0000000140008a4c main.cpp.obj
0002:00001a4c $cppxdata$??_Gexception@std@@UEAAPEAXI@Z 0000000140008a4c main.cpp.obj
0002:00001a74 $stateUnwindMap$??_Gbad_alloc@std@@UEAAPEAXI@Z 0000000140008a74 main.cpp.obj
0002:00001a74 $stateUnwindMap$??_Gbad_array_new_length@std@@UEAAPEAXI@Z 0000000140008a74 main.cpp.obj
0002:00001a74 $stateUnwindMap$??_Gexception@std@@UEAAPEAXI@Z 0000000140008a74 main.cpp.obj
0002:00001a7c $ip2state$??_Gbad_alloc@std@@UEAAPEAXI@Z 0000000140008a7c main.cpp.obj
0002:00001a7c $ip2state$??_Gbad_array_new_length@std@@UEAAPEAXI@Z 0000000140008a7c main.cpp.obj
0002:00001a7c $ip2state$??_Gexception@std@@UEAAPEAXI@Z 0000000140008a7c main.cpp.obj
0002:00001abc $cppxdata$??0bad_array_new_length@std@@QEAA@AEBV01@@Z 0000000140008abc main.cpp.obj
0002:00001ae4 $stateUnwindMap$??0bad_array_new_length@std@@QEAA@AEBV01@@Z 0000000140008ae4 main.cpp.obj
0002:00001aec $ip2state$??0bad_array_new_length@std@@QEAA@AEBV01@@Z 0000000140008aec main.cpp.obj
0002:00001b20 $cppxdata$??1exception@std@@UEAA@XZ 0000000140008b20 main.cpp.obj
0002:00001b48 $stateUnwindMap$??1exception@std@@UEAA@XZ 0000000140008b48 main.cpp.obj
0002:00001b50 $ip2state$??1exception@std@@UEAA@XZ 0000000140008b50 main.cpp.obj
0002:00001bbc $cppxdata$??$MakePair@AEAPEBD@NameTable@pmr@@SA?AV?$basic_string_view@DU?$char_traits@D@std@@@std@@_KAEAPEBD@Z 0000000140008bbc main.cpp.obj
0002:00001be4 $stateUnwindMap$??$MakePair@AEAPEBD@NameTable@pmr@@SA?AV?$basic_string_view@DU?$char_traits@D@std@@@std@@_KAEAPEBD@Z 0000000140008be4 main.cpp.obj
0002:00001bf4 $ip2state$??$MakePair@AEAPEBD@NameTable@pmr@@SA?AV?$basic_string_view@DU?$char_traits@D@std@@@std@@_KAEAPEBD@Z 0000000140008bf4 main.cpp.obj
0002:00001c6c $cppxdata$??$emplace@U?$pair@_KV?$basic_string@DU?$char_traits@D@std@@V?$polymorphic_allocator@D@pmr@2@@std@@@std@@@?$_Hash@V?$_Umap_traits@_K$$CBV?$basic_string@DU?$char_traits@D@std@@V?$polymorphic_allocator@D@pmr@2@@std@@V?$_Uhash_compare@_KU?$hash@_K@std@@U?$equal_to@_K@2@@2@V?$polymorphic_allocator@U?$pair@$$CB_K$$CBV?$basic_string@DU?$char_traits@D@std@@V?$polymorphic_allocator@D@pmr@2@@std@@@std@@@pmr@2@$0A@@std@@@std@@QEAA?AU?$pair@V?$_List_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CB_K$$CBV?$basic_string@DU?$char_traits@D@std@@V?$polymorphic_allocator@D@pmr@2@@std@@@std@@@std@@@std@@@std@@_N@1@$$QEAU?$pair@_KV?$basic_string@DU?$char_traits@D@std@@V?$polymorphic_allocator@D@pmr@2@@std@@@1@@Z 0000000140008c6c main.cpp.obj
0002:00001c94 $stateUnwindMap$??$emplace@U?$pair@_KV?$basic_string@DU?$char_traits@D@std@@V?$polymorphic_allocator@D@pmr@2@@std@@@std@@@?$_Hash@V?$_Umap_traits@_K$$CBV?$basic_string@DU?$char_traits@D@std@@V?$polymorphic_allocator@D@pmr@2@@std@@V?$_Uhash_compare@_KU?$hash@_K@std@@U?$equal_to@_K@2@@2@V?$polymorphic_allocator@U?$pair@$$CB_K$$CBV?$basic_string@DU?$char_traits@D@std@@V?$polymorphic_allocator@D@pmr@2@@std@@@std@@@pmr@2@$0A@@std@@@std@@QEAA?AU?$pair@V?$_List_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CB_K$$CBV?$basic_string@DU?$char_traits@D@std@@V?$polymorphic_allocator@D@pmr@2@@std@@@std@@@std@@@std@@@std@@_N@1@$$QEAU?$pair@_KV?$basic_string@DU?$char_traits@D@std@@V?$polymorphic_allocator@D@pmr@2@@std@@@1@@Z 0000000140008c94 main.cpp.obj
0002:00001cac $ip2state$??$emplace@U?$pair@_KV?$basic_string@DU?$char_traits@D@std@@V?$polymorphic_allocator@D@pmr@2@@std@@@std@@@?$_Hash@V?$_Umap_traits@_K$$CBV?$basic_string@DU?$char_traits@D@std@@V?$polymorphic_allocator@D@pmr@2@@std@@V?$_Uhash_compare@_KU?$hash@_K@std@@U?$equal_to@_K@2@@2@V?$polymorphic_allocator@U?$pair@$$CB_K$$CBV?$basic_string@DU?$char_traits@D@std@@V?$polymorphic_allocator@D@pmr@2@@std@@@std@@@pmr@2@$0A@@std@@@std@@QEAA?AU?$pair@V?$_List_iterator@V?$_List_val@U?$_List_simple_types@U?$pair@$$CB_K$$CBV?$basic_string@DU?$char_traits@D@std@@V?$polymorphic_allocator@D@pmr@2@@std@@@std@@@std@@@std@@@std@@_N@1@$$QEAU?$pair@_KV?$basic_string@DU?$char_traits@D@std@@V?$polymorphic_allocator@D@pmr@2@@std@@@1@@Z 0000000140008cac main.cpp.obj
0002:00001d04 $cppxdata$??1?$pair@_KV?$basic_string@DU?$char_traits@D@std@@V?$polymorphic_allocator@D@pmr@2@@std@@@std@@QEAA@XZ 0000000140008d04 main.cpp.obj
0002:00001d2c $stateUnwindMap$??1?$pair@_KV?$basic_string@DU?$char_traits@D@std@@V?$polymorphic_allocator@D@pmr@2@@std@@@std@@QEAA@XZ 0000000140008d2c main.cpp.obj
0002:00001d34 $ip2state$??1?$pair@_KV?$basic_string@DU?$char_traits@D@std@@V?$polymorphic_allocator@D@pmr@2@@std@@@std@@QEAA@XZ 0000000140008d34 main.cpp.obj
0002:00001d6c $cppxdata$??1?$basic_string@DU?$char_traits@D@std@@V?$polymorphic_allocator@D@pmr@2@@std@@QEAA@XZ 0000000140008d6c main.cpp.obj
0002:00001d94 $stateUnwindMap$??1?$basic_string@DU?$char_traits@D@std@@V?$polymorphic_allocator@D@pmr@2@@std@@QEAA@XZ 0000000140008d94 main.cpp.obj
0002:00001d9c $ip2state$??1?$basic_string@DU?$char_traits@D@std@@V?$polymorphic_allocator@D@pmr@2@@std@@QEAA@XZ 0000000140008d9c main.cpp.obj
0002:00001de4 $cppxdata$??$?0U?$pair@_KV?$basic_string@DU?$char_traits@D@std@@V?$polymorphic_allocator@D@pmr@2@@std@@@std@@@?$_List_node_emplace_op2@V?$polymorphic_allocator@U?$_List_node@U?$pair@$$CB_K$$CBV?$basic_string@DU?$char_traits@D@std@@V?$polymorphic_allocator@D@pmr@2@@std@@@std@@PEAX@std@@@pmr@std@@@std@@QEAA@AEAV?$polymorphic_allocator@U?$_List_node@U?$pair@$$CB_K$$CBV?$basic_string@DU?$char_traits@D@std@@V?$polymorphic_allocator@D@pmr@2@@std@@@std@@PEAX@std@@@pmr@1@$$QEAU?$pair@_KV?$basic_string@DU?$char_traits@D@std@@V?$polymorphic_allocator@D@pmr@2@@std@@@1@@Z 0000000140008de4 main.cpp.obj
0002:00001e0c $stateUnwindMap$??$?0U?$pair@_KV?$basic_string@DU?$char_traits@D@std@@V?$polymorphic_allocator@D@pmr@2@@std@@@std@@@?$_List_node_emplace_op2@V?$polymorphic_allocator@U?$_List_node@U?$pair@$$CB_K$$CBV?$basic_string@DU?$char_traits@D@std@@V?$polymorphic_allocator@D@pmr@2@@std@@@std@@PEAX@std@@@pmr@std@@@std@@QEAA@AEAV?$polymorphic_allocator@U?$_List_node@U?$pair@$$CB_K$$CBV?$basic_string@DU?$char_traits@D@std@@V?$polymorphic_allocator@D@pmr@2@@std@@@std@@PEAX@std@@@pmr@1@$$QEAU?$pair@_KV?$basic_string@DU?$char_traits@D@std@@V?$polymorphic_allocator@D@pmr@2@@std@@@1@@Z 0000000140008e0c main.cpp.obj
0002:00001e14 $ip2state$??$?0U?$pair@_KV?$basic_string@DU?$char_traits@D@std@@V?$polymorphic_allocator@D@pmr@2@@std@@@std@@@?$_List_node_emplace_op2@V?$polymorphic_allocator@U?$_List_node@U?$pair@$$CB_K$$CBV?$basic_string@DU?$char_traits@D@std@@V?$polymorphic_allocator@D@pmr@2@@std@@@std@@PEAX@std@@@pmr@std@@@std@@QEAA@AEAV?$polymorphic_allocator@U?$_List_node@U?$pair@$$CB_K$$CBV?$basic_string@DU?$char_traits@D@std@@V?$polymorphic_allocator@D@pmr@2@@std@@@std@@PEAX@std@@@pmr@1@$$QEAU?$pair@_KV?$basic_string@DU?$char_traits@D@std@@V?$polymorphic_allocator@D@pmr@2@@std@@@1@@Z 0000000140008e14 main.cpp.obj
0002:00001e7c $cppxdata$??1?$_List_node_emplace_op2@V?$polymorphic_allocator@U?$_List_node@U?$pair@$$CB_K$$CBV?$basic_string@DU?$char_traits@D@std@@V?$polymorphic_allocator@D@pmr@2@@std@@@std@@PEAX@std@@@pmr@std@@@std@@QEAA@XZ 0000000140008e7c main.cpp.obj
0002:00001ea4 $stateUnwindMap$??1?$_List_node_emplace_op2@V?$polymorphic_allocator@U?$_List_node@U?$pair@$$CB_K$$CBV?$basic_string@DU?$char_traits@D@std@@V?$polymorphic_allocator@D@pmr@2@@std@@@std@@PEAX@std@@@pmr@std@@@std@@QEAA@XZ 0000000140008ea4 main.cpp.obj
0002:00001eb4 $ip2state$??1?$_List_node_emplace_op2@V?$polymorphic_allocator@U?$_List_node@U?$pair@$$CB_K$$CBV?$basic_string@DU?$char_traits@D@std@@V?$polymorphic_allocator@D@pmr@2@@std@@@std@@PEAX@std@@@pmr@std@@@std@@QEAA@XZ 0000000140008eb4 main.cpp.obj
0002:00001ef0 $cppxdata$??1?$_Alloc_construct_ptr@V?$polymorphic_allocator@U?$_List_node@U?$pair@$$CB_K$$CBV?$basic_string@DU?$char_traits@D@std@@V?$polymorphic_allocator@D@pmr@2@@std@@@std@@PEAX@std@@@pmr@std@@@std@@QEAA@XZ 0000000140008ef0 main.cpp.obj
0002:00001f18 $stateUnwindMap$??1?$_Alloc_construct_ptr@V?$polymorphic_allocator@U?$_List_node@U?$pair@$$CB_K$$CBV?$basic_string@DU?$char_traits@D@std@@V?$polymorphic_allocator@D@pmr@2@@std@@@std@@PEAX@std@@@pmr@std@@@std@@QEAA@XZ 0000000140008f18 main.cpp.obj
0002:00001f20 $ip2state$??1?$_Alloc_construct_ptr@V?$polymorphic_allocator@U?$_List_node@U?$pair@$$CB_K$$CBV?$basic_string@DU?$char_traits@D@std@@V?$polymorphic_allocator@D@pmr@2@@std@@@std@@PEAX@std@@@pmr@std@@@std@@QEAA@XZ 0000000140008f20 main.cpp.obj
0002:00001f38 $unwind$__scrt_initialize_default_local_stdio_options 0000000140008f38 msvcrt:default_local_stdio_options.obj
0002:00001f38 $unwind$?post_pgo_initialization@@YAHXZ 0000000140008f38 msvcrt:exe_main.obj
0002:00001f38 $unwind$?pre_cpp_initialization@@YAXXZ 0000000140008f38 msvcrt:exe_main.obj
0002:00001f38 $unwind$mainCRTStartup 0000000140008f38 msvcrt:exe_main.obj
0002:00001f38 $unwind$__scrt_acquire_startup_lock 0000000140008f38 msvcrt:utility.obj
0002:00001f38 $unwind$__scrt_initialize_crt 0000000140008f38 msvcrt:utility.obj
0002:00001f38 $unwind$atexit 0000000140008f38 msvcrt:utility.obj
0002:00001f38 $unwind$__scrt_is_managed_app 0000000140008f38 msvcrt:utility_desktop.obj
0002:00001f78 $cppxdata$?_Forced_rehash@?$_Hash@V?$_Umap_traits@_K$$CBV?$basic_string@DU?$char_traits@D@std@@V?$polymorphic_allocator@D@pmr@2@@std@@V?$_Uhash_compare@_KU?$hash@_K@std@@U?$equal_to@_K@2@@2@V?$polymorphic_allocator@U?$pair@$$CB_K$$CBV?$basic_string@DU?$char_traits@D@std@@V?$polymorphic_allocator@D@pmr@2@@std@@@std@@@pmr@2@$0A@@std@@@std@@IEAAX_K@Z 0000000140008f78 main.cpp.obj
0002:00001fa0 $stateUnwindMap$?_Forced_rehash@?$_Hash@V?$_Umap_traits@_K$$CBV?$basic_string@DU?$char_traits@D@std@@V?$polymorphic_allocator@D@pmr@2@@std@@V?$_Uhash_compare@_KU?$hash@_K@std@@U?$equal_to@_K@2@@2@V?$polymorphic_allocator@U?$pair@$$CB_K$$CBV?$basic_string@DU?$char_traits@D@std@@V?$polymorphic_allocator@D@pmr@2@@std@@@std@@@pmr@2@$0A@@std@@@std@@IEAAX_K@Z 0000000140008fa0 main.cpp.obj
0002:00001fa8 $ip2state$?_Forced_rehash@?$_Hash@V?$_Umap_traits@_K$$CBV?$basic_string@DU?$char_traits@D@std@@V?$polymorphic_allocator@D@pmr@2@@std@@V?$_Uhash_compare@_KU?$hash@_K@std@@U?$equal_to@_K@2@@2@V?$polymorphic_allocator@U?$pair@$$CB_K$$CBV?$basic_string@DU?$char_traits@D@std@@V?$polymorphic_allocator@D@pmr@2@@std@@@std@@@pmr@2@$0A@@std@@@std@@IEAAX_K@Z 0000000140008fa8 main.cpp.obj
0002:00001ff8 $cppxdata$?Find@NameTable@pmr@@SAAEBV?$basic_string@DU?$char_traits@D@std@@V?$polymorphic_allocator@D@pmr@2@@std@@_K@Z 0000000140008ff8 main.cpp.obj
0002:00002020 $stateUnwindMap$?Find@NameTable@pmr@@SAAEBV?$basic_string@DU?$char_traits@D@std@@V?$polymorphic_allocator@D@pmr@2@@std@@_K@Z 0000000140009020 main.cpp.obj
0002:00002028 $ip2state$?Find@NameTable@pmr@@SAAEBV?$basic_string@DU?$char_traits@D@std@@V?$polymorphic_allocator@D@pmr@2@@std@@_K@Z 0000000140009028 main.cpp.obj
0002:00002060 $cppxdata$??1sentry@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA@XZ 0000000140009060 main.cpp.obj
0002:00002088 $stateUnwindMap$??1sentry@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA@XZ 0000000140009088 main.cpp.obj
0002:00002090 $ip2state$??1sentry@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA@XZ 0000000140009090 main.cpp.obj
0002:000020c4 $cppxdata$??1_Sentry_base@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA@XZ 00000001400090c4 main.cpp.obj
0002:000020ec $stateUnwindMap$??1_Sentry_base@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA@XZ 00000001400090ec main.cpp.obj
0002:000020f4 $ip2state$??1_Sentry_base@?$basic_ostream@DU?$char_traits@D@std@@@std@@QEAA@XZ 00000001400090f4 main.cpp.obj
0002:00002180 $cppxdata$??$_Insert_string@DU?$char_traits@D@std@@_K@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@QEBD_K@Z 0000000140009180 main.cpp.obj
0002:000021a8 $stateUnwindMap$??$_Insert_string@DU?$char_traits@D@std@@_K@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@QEBD_K@Z 00000001400091a8 main.cpp.obj
0002:000021d0 $tryMap$??$_Insert_string@DU?$char_traits@D@std@@_K@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@QEBD_K@Z 00000001400091d0 main.cpp.obj
0002:000021e4 $handlerMap$0$??$_Insert_string@DU?$char_traits@D@std@@_K@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@QEBD_K@Z 00000001400091e4 main.cpp.obj
0002:000021f8 $ip2state$??$_Insert_string@DU?$char_traits@D@std@@_K@std@@YAAEAV?$basic_ostream@DU?$char_traits@D@std@@@0@AEAV10@QEBD_K@Z 00000001400091f8 main.cpp.obj
0002:00002284 $cppxdata$??$MakePair@AEAV?$basic_string_view@DU?$char_traits@D@std@@@std@@@NameTable@pmr@@SA?AV?$basic_string_view@DU?$char_traits@D@std@@@std@@_KAEAV23@@Z 0000000140009284 main.cpp.obj
0002:000022ac $stateUnwindMap$??$MakePair@AEAV?$basic_string_view@DU?$char_traits@D@std@@@std@@@NameTable@pmr@@SA?AV?$basic_string_view@DU?$char_traits@D@std@@@std@@_KAEAV23@@Z 00000001400092ac main.cpp.obj
0002:000022bc $ip2state$??$MakePair@AEAV?$basic_string_view@DU?$char_traits@D@std@@@std@@@NameTable@pmr@@SA?AV?$basic_string_view@DU?$char_traits@D@std@@@std@@_KAEAV23@@Z 00000001400092bc main.cpp.obj
0002:00002334 $cppxdata$??$_Try_emplace@UName@pmr@@$$V@?$_Hash@V?$_Umap_traits@UName@pmr@@PEBVUClass@refl@@V?$_Uhash_compare@UName@pmr@@U?$hash@UName@pmr@@@std@@U?$equal_to@UName@pmr@@@4@@std@@V?$polymorphic_allocator@U?$pair@$$CBUName@pmr@@PEBVUClass@refl@@@std@@@26@$0A@@std@@@std@@IEAA?AU?$pair@PEAU?$_List_node@U?$pair@$$CBUName@pmr@@PEBVUClass@refl@@@std@@PEAX@std@@_N@1@$$QEAUName@pmr@@@Z 0000000140009334 main.cpp.obj
0002:0000235c $stateUnwindMap$??$_Try_emplace@UName@pmr@@$$V@?$_Hash@V?$_Umap_traits@UName@pmr@@PEBVUClass@refl@@V?$_Uhash_compare@UName@pmr@@U?$hash@UName@pmr@@@std@@U?$equal_to@UName@pmr@@@4@@std@@V?$polymorphic_allocator@U?$pair@$$CBUName@pmr@@PEBVUClass@refl@@@std@@@26@$0A@@std@@@std@@IEAA?AU?$pair@PEAU?$_List_node@U?$pair@$$CBUName@pmr@@PEBVUClass@refl@@@std@@PEAX@std@@_N@1@$$QEAUName@pmr@@@Z 000000014000935c main.cpp.obj
0002:00002374 $ip2state$??$_Try_emplace@UName@pmr@@$$V@?$_Hash@V?$_Umap_traits@UName@pmr@@PEBVUClass@refl@@V?$_Uhash_compare@UName@pmr@@U?$hash@UName@pmr@@@std@@U?$equal_to@UName@pmr@@@4@@std@@V?$polymorphic_allocator@U?$pair@$$CBUName@pmr@@PEBVUClass@refl@@@std@@@26@$0A@@std@@@std@@IEAA?AU?$pair@PEAU?$_List_node@U?$pair@$$CBUName@pmr@@PEBVUClass@refl@@@std@@PEAX@std@@_N@1@$$QEAUName@pmr@@@Z 0000000140009374 main.cpp.obj
0002:000023c0 $cppxdata$??1?$_Alloc_construct_ptr@V?$polymorphic_allocator@U?$_List_node@U?$pair@$$CBUName@pmr@@PEBVUClass@refl@@@std@@PEAX@std@@@pmr@std@@@std@@QEAA@XZ 00000001400093c0 main.cpp.obj
0002:000023c0 $cppxdata$??1?$_List_node_emplace_op2@V?$polymorphic_allocator@U?$_List_node@U?$pair@$$CBUName@pmr@@PEBVUClass@refl@@@std@@PEAX@std@@@pmr@std@@@std@@QEAA@XZ 00000001400093c0 main.cpp.obj
0002:000023e8 $stateUnwindMap$??1?$_Alloc_construct_ptr@V?$polymorphic_allocator@U?$_List_node@U?$pair@$$CBUName@pmr@@PEBVUClass@refl@@@std@@PEAX@std@@@pmr@std@@@std@@QEAA@XZ 00000001400093e8 main.cpp.obj
0002:000023e8 $stateUnwindMap$??1?$_List_node_emplace_op2@V?$polymorphic_allocator@U?$_List_node@U?$pair@$$CBUName@pmr@@PEBVUClass@refl@@@std@@PEAX@std@@@pmr@std@@@std@@QEAA@XZ 00000001400093e8 main.cpp.obj
0002:000023f0 $ip2state$??1?$_Alloc_construct_ptr@V?$polymorphic_allocator@U?$_List_node@U?$pair@$$CBUName@pmr@@PEBVUClass@refl@@@std@@PEAX@std@@@pmr@std@@@std@@QEAA@XZ 00000001400093f0 main.cpp.obj
0002:000023f0 $ip2state$??1?$_List_node_emplace_op2@V?$polymorphic_allocator@U?$_List_node@U?$pair@$$CBUName@pmr@@PEBVUClass@refl@@@std@@PEAX@std@@@pmr@std@@@std@@QEAA@XZ 00000001400093f0 main.cpp.obj
0002:00002440 $cppxdata$?_Forced_rehash@?$_Hash@V?$_Umap_traits@UName@pmr@@PEBVUClass@refl@@V?$_Uhash_compare@UName@pmr@@U?$hash@UName@pmr@@@std@@U?$equal_to@UName@pmr@@@4@@std@@V?$polymorphic_allocator@U?$pair@$$CBUName@pmr@@PEBVUClass@refl@@@std@@@26@$0A@@std@@@std@@IEAAX_K@Z 0000000140009440 main.cpp.obj
0002:00002468 $stateUnwindMap$?_Forced_rehash@?$_Hash@V?$_Umap_traits@UName@pmr@@PEBVUClass@refl@@V?$_Uhash_compare@UName@pmr@@U?$hash@UName@pmr@@@std@@U?$equal_to@UName@pmr@@@4@@std@@V?$polymorphic_allocator@U?$pair@$$CBUName@pmr@@PEBVUClass@refl@@@std@@@26@$0A@@std@@@std@@IEAAX_K@Z 0000000140009468 main.cpp.obj
0002:00002470 $ip2state$?_Forced_rehash@?$_Hash@V?$_Umap_traits@UName@pmr@@PEBVUClass@refl@@V?$_Uhash_compare@UName@pmr@@U?$hash@UName@pmr@@@std@@U?$equal_to@UName@pmr@@@4@@std@@V?$polymorphic_allocator@U?$pair@$$CBUName@pmr@@PEBVUClass@refl@@@std@@@26@$0A@@std@@@std@@IEAAX_K@Z 0000000140009470 main.cpp.obj
0002:000024a8 $cppxdata$??__FMemPool@@YAXXZ 00000001400094a8 core:module.cpp.obj
0002:000024d0 $stateUnwindMap$??__FMemPool@@YAXXZ 00000001400094d0 core:module.cpp.obj
0002:000024d8 $ip2state$??__FMemPool@@YAXXZ 00000001400094d8 core:module.cpp.obj
0002:00002518 $cppxdata$??3@YAXPEAX@Z 0000000140009518 core:module.cpp.obj
0002:00002540 $stateUnwindMap$??3@YAXPEAX@Z 0000000140009540 core:module.cpp.obj
0002:00002548 $ip2state$??3@YAXPEAX@Z 0000000140009548 core:module.cpp.obj
0002:000025a8 $cppxdata$??1IModule@api@@UEAA@XZ 00000001400095a8 core:module.cpp.obj
0002:000025d0 $stateUnwindMap$??1IModule@api@@UEAA@XZ 00000001400095d0 core:module.cpp.obj
0002:000025e0 $ip2state$??1IModule@api@@UEAA@XZ 00000001400095e0 core:module.cpp.obj
0002:00002654 $cppxdata$??_Gunsynchronized_pool_resource@pmr@std@@UEAAPEAXI@Z 0000000140009654 core:module.cpp.obj
0002:0000267c $stateUnwindMap$??_Gunsynchronized_pool_resource@pmr@std@@UEAAPEAXI@Z 000000014000967c core:module.cpp.obj
0002:0000268c $ip2state$??_Gunsynchronized_pool_resource@pmr@std@@UEAAPEAXI@Z 000000014000968c core:module.cpp.obj
0002:000026e4 $cppxdata$?do_deallocate@unsynchronized_pool_resource@pmr@std@@MEAAXQEAX_K1@Z 00000001400096e4 core:module.cpp.obj
0002:0000270c $stateUnwindMap$?do_deallocate@unsynchronized_pool_resource@pmr@std@@MEAAXQEAX_K1@Z 000000014000970c core:module.cpp.obj
0002:0000271c $ip2state$?do_deallocate@unsynchronized_pool_resource@pmr@std@@MEAAXQEAX_K1@Z 000000014000971c core:module.cpp.obj
0002:00002784 $cppxdata$??$_Emplace_reallocate@AEAE@?$vector@U_Pool@unsynchronized_pool_resource@pmr@std@@V?$polymorphic_allocator@U_Pool@unsynchronized_pool_resource@pmr@std@@@34@@std@@AEAAPEAU_Pool@unsynchronized_pool_resource@pmr@1@QEAU2341@AEAE@Z 0000000140009784 core:module.cpp.obj
0002:000027ac $stateUnwindMap$??$_Emplace_reallocate@AEAE@?$vector@U_Pool@unsynchronized_pool_resource@pmr@std@@V?$polymorphic_allocator@U_Pool@unsynchronized_pool_resource@pmr@std@@@34@@std@@AEAAPEAU_Pool@unsynchronized_pool_resource@pmr@1@QEAU2341@AEAE@Z 00000001400097ac core:module.cpp.obj
0002:000027b4 $ip2state$??$_Emplace_reallocate@AEAE@?$vector@U_Pool@unsynchronized_pool_resource@pmr@std@@V?$polymorphic_allocator@U_Pool@unsynchronized_pool_resource@pmr@std@@@34@@std@@AEAAPEAU_Pool@unsynchronized_pool_resource@pmr@1@QEAU2341@AEAE@Z 00000001400097b4 core:module.cpp.obj
0002:00002824 $cppxdata$?release@unsynchronized_pool_resource@pmr@std@@QEAAXXZ 0000000140009824 core:module.cpp.obj
0002:0000284c $stateUnwindMap$?release@unsynchronized_pool_resource@pmr@std@@QEAAXXZ 000000014000984c core:module.cpp.obj
0002:00002864 $ip2state$?release@unsynchronized_pool_resource@pmr@std@@QEAAXXZ 0000000140009864 core:module.cpp.obj
0002:0000288c $unwind$?pre_c_initialization@@YAHXZ 000000014000988c msvcrt:exe_main.obj
0002:0000288c $unwind$??_Gtype_info@@UEAAPEAXI@Z 000000014000988c msvcrt:std_type_info_static.obj
0002:0000288c $unwind$_Init_thread_abort 000000014000988c msvcrt:thread_safe_statics.obj
0002:0000288c $unwind$_Init_thread_footer 000000014000988c msvcrt:thread_safe_statics.obj
0002:0000288c $unwind$_Init_thread_header 000000014000988c msvcrt:thread_safe_statics.obj
0002:0000288c $unwind$__scrt_initialize_onexit_tables 000000014000988c msvcrt:utility.obj
0002:0000288c $unwind$__scrt_release_startup_lock 000000014000988c msvcrt:utility.obj
0002:0000288c $unwind$__scrt_uninitialize_crt 000000014000988c msvcrt:utility.obj
0002:0000288c $unwind$_onexit 000000014000988c msvcrt:utility.obj
0002:00002894 $unwind$__scrt_is_nonwritable_in_current_image 0000000140009894 msvcrt:utility.obj
0002:000028b4 $unwind$__scrt_is_nonwritable_in_current_image$filt$0 00000001400098b4 msvcrt:utility.obj
0002:000028bc $unwind$?__scrt_common_main_seh@@YAHXZ 00000001400098bc msvcrt:exe_main.obj
0002:000028f4 $unwind$?filt$0@?0??__scrt_common_main_seh@@YAHXZ@4HA 00000001400098f4 msvcrt:exe_main.obj
0002:000028fc $unwind$__dyn_tls_init 00000001400098fc msvcrt:tlsdyn.obj
0002:00002910 $cppxdata$__dyn_tls_init 0000000140009910 msvcrt:tlsdyn.obj
0002:00002915 $ip2state$__dyn_tls_init 0000000140009915 msvcrt:tlsdyn.obj
0002:00002918 $unwind$__tlregdtor 0000000140009918 msvcrt:tlsdtor.obj
0002:0000292c $unwind$__dyn_tls_dtor 000000014000992c msvcrt:tlsdtor.obj
0002:00002944 $unwind$__isa_available_init 0000000140009944 msvcrt:cpu_disp.obj
0002:00002958 $unwind$__scrt_fastfail 0000000140009958 msvcrt:utility_desktop.obj
0002:00002968 $unwind$_RTC_Initialize 0000000140009968 msvcrt:initsect.obj
0002:00002968 $unwind$_RTC_Terminate 0000000140009968 msvcrt:initsect.obj
0002:00002968 $unwind$__scrt_unhandled_exception_filter 0000000140009968 msvcrt:utility_desktop.obj
0002:00002974 $unwind$__security_init_cookie 0000000140009974 msvcrt:gs_support.obj
0002:00002980 $xdatasym 0000000140009980 msvcrt:guard_dispatch.obj
0002:00002988 $xdatasym 0000000140009988 msvcrt:guard_xfg_dispatch.obj
0002:00002f86 .idata$6 0000000140009f86 engine:engine.dll
0002:000031ee .idata$6 000000014000a1ee msvcprt:MSVCP140.dll
0002:000031fc .idata$6 000000014000a1fc msvcprt:MSVCP140_1.dll
0002:000033ae .idata$6 000000014000a3ae kernel32:KERNEL32.dll
0002:000034b8 .idata$6 000000014000a4b8 vcruntime:VCRUNTIME140.dll
0002:000034ca .idata$6 000000014000a4ca vcruntime:VCRUNTIME140_1.dll
0002:000036da .idata$6 000000014000a6da ucrt:api-ms-win-crt-string-l1-1-0.dll
0002:000036fc .idata$6 000000014000a6fc ucrt:api-ms-win-crt-runtime-l1-1-0.dll
0002:0000371e .idata$6 000000014000a71e ucrt:api-ms-win-crt-math-l1-1-0.dll
0002:0000373e .idata$6 000000014000a73e ucrt:api-ms-win-crt-stdio-l1-1-0.dll
0002:0000375e .idata$6 000000014000a75e ucrt:api-ms-win-crt-locale-l1-1-0.dll
0002:00003780 .idata$6 000000014000a780 ucrt:api-ms-win-crt-heap-l1-1-0.dll
0003:000002a0 ?g_tss_cv@@3U_RTL_CONDITION_VARIABLE@@A 000000014000b2a0 msvcrt:thread_safe_statics.obj
0003:000002a8 ?g_tss_srw@@3U_RTL_SRWLOCK@@A 000000014000b2a8 msvcrt:thread_safe_statics.obj
0003:000002c0 ?is_initialized_as_dll@@3_NA 000000014000b2c0 msvcrt:utility.obj
0003:000002c1 ?module_local_atexit_table_initialized@@3_NA 000000014000b2c1 msvcrt:utility.obj
0003:000002c8 ?module_local_atexit_table@@3U_onexit_table_t@@A 000000014000b2c8 msvcrt:utility.obj
0003:000002e0 ?module_local_at_quick_exit_table@@3U_onexit_table_t@@A 000000014000b2e0 msvcrt:utility.obj