WsComponentPool/ECSMemoryPool/ecs_memorypool.h

29 lines
615 B
C
Raw Normal View History

2025-09-11 10:36:49 +00:00
#pragma once
#include "ecsmemorypool_global.h"
#include <QJsonObject>
#include <QList>
#include <QHash>
#include <memory_pages.h>
template<typename T>
concept CompenentType = requires(T t, const QJsonObject &in, QJsonObject out){
{ T::typeCode() } -> std::same_as<uint64_t>;
{ T::typeSize() } -> std::same_as<uint32_t>;
{ t.loadFrom(in) } -> std::same_as<void>;
{ t.saveTo(out) } -> std::same_as<void>;
};
class ECSMEMORYPOOL_EXPORT ECSMemoryPool{
private:
QList<std::shared_ptr<MemoryPage>> _storage_pages;
public:
ECSMemoryPool();
template<CompenentType T> void registerComponent() {
}
};