Alien  1.3.0
Developer documentation
Loading...
Searching...
No Matches
BlockBuilder.h
1// -*- C++ -*-
2#pragma once
3
4#include <alien/utils/Precomp.h>
5#include "alien/handlers/block/BlockSizes.h"
6
7/*---------------------------------------------------------------------------*/
8/*---------------------------------------------------------------------------*/
9
10namespace Alien
11{
12
13/*---------------------------------------------------------------------------*/
14/*---------------------------------------------------------------------------*/
15
16class IIndexManager;
17
18/*---------------------------------------------------------------------------*/
19/*---------------------------------------------------------------------------*/
20
21class ALIEN_EXPORT BlockBuilder
22{
23 public:
24 class SizeVector
25 {
26 public:
27 SizeVector(BlockBuilder& block_Builder, ConstArrayView<Integer> indexes);
28
29 void operator=(Integer size);
30 void operator+=(Integer size);
31
32 private:
33 BlockBuilder& m_block_Builder;
34 ConstArrayView<Integer> m_indexes;
35 };
36
37 BlockBuilder(IIndexManager& index_mng);
38
39 ~BlockBuilder() {}
40
41 public:
42 SizeVector operator[](ConstArrayView<Integer> indexes);
43
44 Integer& operator[](Integer index);
45
46 const BlockSizes::ValuePerBlock& sizes() const;
47
48 bool isLocal(Integer index) const
49 {
50 return (index >= m_offset) && (index < m_next_offset);
51 }
52
53 private:
54 SharedArray<Integer> m_sizes;
55
56 Integer m_offset = 0;
57 Integer m_next_offset = 0;
58
59 const IIndexManager& m_index_mng;
60 mutable bool m_sizes_computed = false;
61 mutable BlockSizes m_block_sizes;
62};
63
64/*---------------------------------------------------------------------------*/
65/*---------------------------------------------------------------------------*/
66
67} // namespace Alien
-- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature --
Definition BackEnd.h:17