#include "utils/HashMap.h" #include "utils/List.h" #include "utils/Types.h" typedef uint32 Entity; template class Components final { HashMap components; public: Components() { } template void add(Entity e, Args&&... args) { components.tryEmplace(e, std::forward(args)...); } void remove(Entity e) { components.remove(e); } T* search(Entity e) { return components.search(e); } const T* search(Entity e) const { return components.search(e); } auto begin() { return components.begin(); } const auto begin() const { return components.begin(); } auto end() { return components.end(); } const auto end() const { return components.end(); } };