#ifndef TILE_BASE_OBJECT_POOL_MEMORY_NODE_SHARED_H
#define TILE_BASE_OBJECT_POOL_MEMORY_NODE_SHARED_H

#pragma once

#include "tile/base/object_pool/types.h"

namespace tile {
namespace object_pool {
namespace detail {
namespace memory_node_shared {
struct MemoryNodeSharedPoolDescriptor {};

template<typename T>
MemoryNodeSharedPoolDescriptor *
GetMemoryNodeSharedPool()
{
    static MemoryNodeSharedPoolDescriptor pool;
}

void *Get(const TypeDescriptor &desc, MemoryNodeSharedPoolDescriptor *pool);
void Put(const TypeDescriptor &desc, MemoryNodeSharedPoolDescriptor *pool, void *ptr);
}// namespace memory_node_shared
}// namespace detail
}// namespace object_pool
}// namespace tile

#endif// TILE_BASE_OBJECT_POOL_MEMORY_NODE_SHARED_H
