29 lines
615 B
C++
29 lines
615 B
C++
#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() {
|
|
|
|
}
|
|
};
|