1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- #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};
- };
- }
- }
|