19 inline static size_t Count(
size_t elementCount) {
21 ((elementCount & (
SIZE - 1)) ? 1 : 0);
23 inline static size_t Size(
size_t chunkIndex,
size_t elementCount) {
24 return (chunkIndex + 1 <
Count(elementCount)
26 : elementCount - chunkIndex *
SIZE);
28 inline static size_t Size(
size_t chunkIndex,
30 size_t elementCount) {
31 return (chunkIndex + 1 < chunkCount ?
SIZE
32 : elementCount - chunkIndex *
SIZE);
34 inline static size_t StartPos(
size_t chunkIndex) {
35 return chunkIndex *
SIZE;
38 inline static T*
Start(std::vector<T>& buffer,
size_t chunkIndex) {
39 return buffer.data() +
StartPos(chunkIndex);
42 inline static const T*
Start(
const std::vector<T>& buffer,
44 return buffer.data() +
StartPos(chunkIndex);
47 inline static size_t Count(
const std::vector<T>& buffer) {
48 return Count(buffer.size());
51 inline static size_t Size(
size_t chunkIndex,
const std::vector<T>& buffer) {
52 return Size(chunkIndex, buffer.size());
Fake chunked array management.
static size_t Count(size_t elementCount)
static T * Start(std::vector< T > &buffer, size_t chunkIndex)
static const T * Start(const std::vector< T > &buffer, size_t chunkIndex)
static size_t Size(size_t chunkIndex, const std::vector< T > &buffer)
static size_t Size(size_t chunkIndex, size_t elementCount)
static size_t Count(const std::vector< T > &buffer)
static const size_t SIZE_POWER
static size_t StartPos(size_t chunkIndex)
static size_t Size(size_t chunkIndex, size_t chunkCount, size_t elementCount)