#pragma once #include "shm_config.h" #include "shm_helper.h" namespace bg { namespace detail { class SizeMap { public: bool Init(); static size_t CalcAlignment(size_t bytes); size_t GetIndexByBytes(size_t bytes) { if(bytes <= BYTES_COMP_VALUE) { return m_index_to_class[SMALL_BYTES_TO_INDEX(bytes)]; } return BIG_BYTES_TO_INDEX(bytes); } size_t ClassToSize(size_t index) { if(index >= CLASS_MAX_COUNT) { __SHM_DO_ASSERT(index < CLASS_MAX_COUNT); return 0; } return m_class_to_size[index]; } size_t ClassToPages(size_t index) { if(index >= CLASS_MAX_COUNT) { __SHM_DO_ASSERT(index < CLASS_MAX_COUNT); return 0; } return m_class_to_pages[index]; } char m_index_to_class[2176]{0}; size_t m_class_to_size[CLASS_MAX_COUNT]{0}; size_t m_class_to_pages[CLASS_MAX_COUNT]{0}; }; } }