Skip to content

Commit c8863dd

Browse files
authored
Low Budget Hash Map (#432)
* hash map???? * because format is my worst enemy * removing size from array initialization because i dont see the point of it * adding some string to hashmap test because why not * added initializer list and some tests for arrayview * some changes * make lists?? * clang format hates me * remove silly comments
1 parent 6a1b6f4 commit c8863dd

33 files changed

+920
-129
lines changed

.gitmodules

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,3 +64,6 @@
6464
[submodule "__externals/CLI11"]
6565
path = __externals/CLI11
6666
url = https://github.com/CLIUtils/CLI11
67+
[submodule "__externals/rapidhash/src"]
68+
path = __externals/rapidhash/src
69+
url = https://github.com/Nicoshev/rapidhash

CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ if (NOT LAUNCHER_ONLY)
5858
add_subdirectory (${EXTERNAL_DIR}/gtest)
5959
add_subdirectory (${EXTERNAL_DIR}/VulkanMemoryAllocator)
6060
add_subdirectory (${EXTERNAL_DIR}/tlsf)
61+
add_subdirectory (${EXTERNAL_DIR}/rapidhash)
6162
add_subdirectory (${EXTERNAL_DIR}/CLI11)
6263

6364
set (CMAKE_PREFIX_PATH

Tetragrama/Components/UIComponent.h

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#pragma once
22
#include <ImguiLayer.h>
3-
#include <ZEngine/Core/Container/Array.h>
3+
#include <ZEngine/Core/Containers/Array.h>
44
#include <ZEngine/Core/IRenderable.h>
55
#include <ZEngine/Core/IUpdatable.h>
66

@@ -24,11 +24,11 @@ namespace Tetragrama::Components
2424
CanBeClosed = closed;
2525
}
2626

27-
bool IsVisible = true;
28-
bool CanBeClosed = false;
29-
const char* Name = "";
30-
uint32_t ChildrenCount = 0;
31-
Tetragrama::Layers::ImguiLayer* ParentLayer = nullptr;
32-
ZEngine::Core::Container::Array<ZRawPtr(UIComponent)> Children = {};
27+
bool IsVisible = true;
28+
bool CanBeClosed = false;
29+
const char* Name = "";
30+
uint32_t ChildrenCount = 0;
31+
Tetragrama::Layers::ImguiLayer* ParentLayer = nullptr;
32+
ZEngine::Core::Containers::Array<ZRawPtr(UIComponent)> Children = {};
3333
};
3434
} // namespace Tetragrama::Components

Tetragrama/Editor.cpp

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
#include <nlohmann/json.hpp>
77

88
using namespace ZEngine;
9-
using namespace ZEngine::Core::Container;
9+
using namespace ZEngine::Core::Containers;
1010
using namespace ZEngine::Core::Memory;
1111
using namespace ZEngine::Helpers;
1212
using namespace Tetragrama::Layers;
@@ -49,8 +49,8 @@ namespace Tetragrama
4949
std::string title = fmt::format("{0} - Active Scene : {1}", Context->ConfigurationPtr->ProjectName, Context->CurrentScenePtr->Name);
5050
Windows::WindowConfiguration window_conf = {.EnableVsync = true};
5151
window_conf.Title.init(&(Context->Arena), title.c_str());
52-
window_conf.RenderingLayerCollection.init(&(Context->Arena), 1, 0);
53-
window_conf.OverlayLayerCollection.init(&(Context->Arena), 1, 0);
52+
window_conf.RenderingLayerCollection.init(&(Context->Arena), 1);
53+
window_conf.OverlayLayerCollection.init(&(Context->Arena), 1);
5454

5555
window_conf.RenderingLayerCollection.push(CanvasLayer);
5656
window_conf.OverlayLayerCollection.push(UILayer);
@@ -74,10 +74,10 @@ namespace Tetragrama
7474
RenderScene = ZPushStructCtor(arena, ZEngine::Rendering::Scenes::GraphicScene);
7575
RenderScene->IsDrawDataDirty = true;
7676

77-
MeshFiles.init(arena, 1, 0);
78-
ModelFiles.init(arena, 1, 0);
79-
MaterialFiles.init(arena, 1, 0);
80-
Hashes.init(arena, 1, 0);
77+
MeshFiles.init(arena, 1);
78+
ModelFiles.init(arena, 1);
79+
MaterialFiles.init(arena, 1);
80+
Hashes.init(arena, 1);
8181
}
8282

8383
void EditorScene::Push(ZEngine::Core::Memory::ArenaAllocator* arena, const char* mesh, const char* model, const char* material)

Tetragrama/Editor.h

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22
#include <EditorCameraController.h>
33
#include <Layers/ImguiLayer.h>
44
#include <Layers/RenderLayer.h>
5-
#include <ZEngine/Core/Container/Array.h>
6-
#include <ZEngine/Core/Container/Strings.h>
5+
#include <ZEngine/Core/Containers/Array.h>
6+
#include <ZEngine/Core/Containers/Strings.h>
77
#include <ZEngine/Core/Memory/Allocator.h>
88
#include <ZEngine/Engine.h>
99
#include <ZEngine/Helpers/IntrusivePtr.h>
@@ -23,19 +23,19 @@ namespace Tetragrama
2323

2424
EditorScene() = default;
2525

26-
void Initialize(ZEngine::Core::Memory::ArenaAllocator* arena, const char* scene_name = "");
27-
void Push(ZEngine::Core::Memory::ArenaAllocator* arena, const char* mesh, const char* model, const char* material);
28-
bool HasPendingChange() const;
26+
void Initialize(ZEngine::Core::Memory::ArenaAllocator* arena, const char* scene_name = "");
27+
void Push(ZEngine::Core::Memory::ArenaAllocator* arena, const char* mesh, const char* model, const char* material);
28+
bool HasPendingChange() const;
2929

30-
const char* Name = "";
31-
ZEngine::Core::Container::Array<ZEngine::Core::Container::String> MeshFiles = {};
32-
ZEngine::Core::Container::Array<ZEngine::Core::Container::String> ModelFiles = {};
33-
ZEngine::Core::Container::Array<ZEngine::Core::Container::String> MaterialFiles = {};
30+
const char* Name = "";
31+
ZEngine::Core::Containers::Array<ZEngine::Core::Containers::String> MeshFiles = {};
32+
ZEngine::Core::Containers::Array<ZEngine::Core::Containers::String> ModelFiles = {};
33+
ZEngine::Core::Containers::Array<ZEngine::Core::Containers::String> MaterialFiles = {};
3434

35-
ZEngine::Core::Container::Array<ZEngine::Core::Container::String> Hashes = {};
36-
std::map<const char*, Model> Data = {};
35+
ZEngine::Core::Containers::Array<ZEngine::Core::Containers::String> Hashes = {};
36+
std::map<const char*, Model> Data = {};
3737

38-
ZRawPtr(ZEngine::Rendering::Scenes::GraphicScene) RenderScene = nullptr;
38+
ZRawPtr(ZEngine::Rendering::Scenes::GraphicScene) RenderScene = nullptr;
3939

4040
private:
4141
std::atomic_bool m_has_pending_change;

Tetragrama/EditorWindow.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ namespace Tetragrama
3838
return m_property.Width;
3939
}
4040

41-
ZEngine::Core::Container::StringView EditorWindow::GetTitle() const
41+
ZEngine::Core::Containers::StringView EditorWindow::GetTitle() const
4242
{
4343
return m_property.Title;
4444
}
@@ -48,7 +48,7 @@ namespace Tetragrama
4848
return m_property.IsMinimized;
4949
}
5050

51-
void EditorWindow::SetTitle(ZEngine::Core::Container::StringView title)
51+
void EditorWindow::SetTitle(ZEngine::Core::Containers::StringView title)
5252
{
5353
m_property.Title = title.data();
5454
glfwSetWindowTitle(m_native_window, m_property.Title);

Tetragrama/EditorWindow.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,9 @@ namespace Tetragrama
1717

1818
uint32_t GetHeight() const override;
1919
uint32_t GetWidth() const override;
20-
ZEngine::Core::Container::StringView GetTitle() const override;
20+
ZEngine::Core::Containers::StringView GetTitle() const override;
2121
bool IsMinimized() const override;
22-
void SetTitle(ZEngine::Core::Container::StringView title) override;
22+
void SetTitle(ZEngine::Core::Containers::StringView title) override;
2323
bool IsVSyncEnable() const override;
2424
void SetVSync(bool value) override;
2525
void SetCallbackFunction(const EventCallbackFn& callback) override;

Tetragrama/Helpers/SerializerCommonHelper.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,18 @@
22
#include <SerializerCommonHelper.h>
33
#include <ZEngine/Helpers/MemoryOperations.h>
44

5-
using namespace ZEngine::Core::Container;
5+
using namespace ZEngine::Core::Containers;
66

77
namespace Tetragrama::Helpers
88
{
9-
void SerializeStringData(std::ostream& os, ZEngine::Core::Container::StringView str)
9+
void SerializeStringData(std::ostream& os, ZEngine::Core::Containers::StringView str)
1010
{
1111
size_t f_count = str.size();
1212
os.write(reinterpret_cast<const char*>(&f_count), sizeof(size_t));
1313
os.write(str.data(), f_count + 1);
1414
}
1515

16-
void DeserializeStringData(ZEngine::Core::Memory::ArenaAllocator* Arena, std::istream& in, ZEngine::Core::Container::String& d)
16+
void DeserializeStringData(ZEngine::Core::Memory::ArenaAllocator* Arena, std::istream& in, ZEngine::Core::Containers::String& d)
1717
{
1818
size_t v_count;
1919
in.read(reinterpret_cast<char*>(&v_count), sizeof(size_t));
@@ -22,7 +22,7 @@ namespace Tetragrama::Helpers
2222
in.read(d.data(), v_count + 1);
2323
}
2424

25-
void SerializeStringArrayData(std::ostream& os, ZEngine::Core::Container::ArrayView<ZEngine::Core::Container::String> str_view)
25+
void SerializeStringArrayData(std::ostream& os, ZEngine::Core::Containers::ArrayView<ZEngine::Core::Containers::String> str_view)
2626
{
2727
size_t count = str_view.size();
2828
os.write(reinterpret_cast<const char*>(&count), sizeof(size_t));
@@ -49,7 +49,7 @@ namespace Tetragrama::Helpers
4949
os.write(reinterpret_cast<const char*>(flat_data.data()), sizeof(uint32_t) * flat_data.size());
5050
}
5151

52-
void DeserializeStringArrayData(ZEngine::Core::Memory::ArenaAllocator* Arena, std::istream& in, ZEngine::Core::Container::Array<ZEngine::Core::Container::String>& data)
52+
void DeserializeStringArrayData(ZEngine::Core::Memory::ArenaAllocator* Arena, std::istream& in, ZEngine::Core::Containers::Array<ZEngine::Core::Containers::String>& data)
5353
{
5454
size_t data_count;
5555
in.read(reinterpret_cast<char*>(&data_count), sizeof(size_t));
Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
11
#pragma once
2-
#include <ZEngine/Core/Container/Array.h>
3-
#include <ZEngine/Core/Container/Strings.h>
2+
#include <ZEngine/Core/Containers/Array.h>
3+
#include <ZEngine/Core/Containers/Strings.h>
44
#include <ZEngine/Core/Memory/Allocator.h>
55
#include <iostream>
66
#include <unordered_map>
77

88
namespace Tetragrama::Helpers
99
{
10-
void SerializeStringData(std::ostream&, ZEngine::Core::Container::StringView);
11-
void SerializeStringArrayData(std::ostream&, ZEngine::Core::Container::ArrayView<ZEngine::Core::Container::String>);
10+
void SerializeStringData(std::ostream&, ZEngine::Core::Containers::StringView);
11+
void SerializeStringArrayData(std::ostream&, ZEngine::Core::Containers::ArrayView<ZEngine::Core::Containers::String>);
1212
void SerializeMapData(std::ostream&, const std::unordered_map<uint32_t, uint32_t>&);
1313

14-
void DeserializeStringData(ZEngine::Core::Memory::ArenaAllocator*, std::istream& in, ZEngine::Core::Container::String& data);
15-
void DeserializeStringArrayData(ZEngine::Core::Memory::ArenaAllocator*, std::istream&, ZEngine::Core::Container::Array<ZEngine::Core::Container::String>&);
14+
void DeserializeStringData(ZEngine::Core::Memory::ArenaAllocator*, std::istream& in, ZEngine::Core::Containers::String& data);
15+
void DeserializeStringArrayData(ZEngine::Core::Memory::ArenaAllocator*, std::istream&, ZEngine::Core::Containers::Array<ZEngine::Core::Containers::String>&);
1616
void DeserializeMapData(ZEngine::Core::Memory::ArenaAllocator*, std::istream&, std::unordered_map<uint32_t, uint32_t>&);
1717
} // namespace Tetragrama::Helpers

Tetragrama/Importers/AssimpImporter.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ using namespace ZEngine::Helpers;
1111
using namespace Tetragrama::Helpers;
1212
using namespace ZEngine::Rendering::Meshes;
1313
using namespace ZEngine::Rendering::Scenes;
14-
using namespace ZEngine::Core::Container;
14+
using namespace ZEngine::Core::Containers;
1515

1616
namespace fs = std::filesystem;
1717

0 commit comments

Comments
 (0)