5#include <alien/utils/Precomp.h>
6#include "alien/index_manager/IIndexManager.h"
7#include "BlockBuilder.h"
17BlockBuilder::SizeVector::
18SizeVector(
BlockBuilder& block_Builder, ConstArrayView<Integer> indexes)
19: m_block_Builder(block_Builder)
25void BlockBuilder::SizeVector::
26operator=(Integer size)
28 for (Integer i = 0; i < m_indexes.size(); ++i) {
29 if (m_block_Builder.isLocal(m_indexes[i]))
30 m_block_Builder[m_indexes[i]] = size;
36void BlockBuilder::SizeVector::
37operator+=(Integer size)
39 for (Integer i = 0; i < m_indexes.size(); ++i) {
40 if (m_block_Builder.isLocal(m_indexes[i]))
41 m_block_Builder[m_indexes[i]] += size;
49BlockBuilder(IIndexManager& index_mng)
50: m_index_mng(index_mng)
52 if (not index_mng.isPrepared())
55 Integer global_size, local_size;
56 index_mng.stats(global_size, m_offset, local_size);
57 m_next_offset = m_offset + local_size;
59 m_sizes.resize(local_size);
65BlockBuilder::SizeVector
67operator[](ConstArrayView<Integer> indexes)
69 return SizeVector(*
this, indexes);
76operator[](Integer index)
78 return m_sizes[index - m_offset];
83const BlockSizes::ValuePerBlock&
88 return m_block_sizes.sizes();
90 m_block_sizes.prepare(m_index_mng, m_sizes);
92 m_sizes_computed =
true;
94 return m_block_sizes.sizes();
-- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature --