12#ifndef ARCANE_BLOCKINDEXLIST_H
13#define ARCANE_BLOCKINDEXLIST_H
17#include "arcane/utils/TraceAccessor.h"
18#include "arcane/utils/UniqueArray.h"
20#include "arcane/ArcaneTypes.h"
35class ARCANE_CORE_EXPORT BlockIndex
37 friend class BlockIndexList;
41 static constexpr Int16 MAX_BLOCK_SIZE = 512;
47 , m_value_offset(value_offset)
56 ARCANE_CHECK_AT(i, m_size);
57 return m_block_start[i] + m_value_offset;
68 const Int32* m_block_start =
nullptr;
69 Int32 m_value_offset = 0;
82 friend class BlockIndexListBuilder;
88 Int32 nbBlock()
const {
return m_nb_block; }
89 Real memoryRatio()
const;
93 Int32 index = m_blocks_index_and_offset[i * 2];
94 Int32 offset = m_blocks_index_and_offset[(i * 2) + 1];
95 Int16 size = ((i + 1) != m_nb_block) ? m_block_size : m_last_block_size;
96 return BlockIndex(m_indexes.span().ptrAt(index), offset, size);
107 Int32 m_original_size = 0;
109 Int32 m_nb_block = 0;
111 Int16 m_block_size = 0;
113 Int16 m_last_block_size = 0;
118 void _setNbBlock(
Int32 nb_block);
119 Int32 _currentIndexPosition()
const;
120 void _addBlockInfo(
const Int32* data,
Int16 size);
121 Int32 _computeNbContigusBlock()
const;
131class ARCANE_CORE_EXPORT BlockIndexListBuilder
140 void setVerbose(
bool v) { m_is_verbose = v; }
157 bool m_is_verbose =
false;
158 Int16 m_block_size = 32;
162 void _throwInvalidBlockSize [[noreturn]] (
Int32 block_size);
Classe de base des vecteurs 1D de données.
void setBlockSizeAsPowerOfTwo(Int32 v)
Positionne la taille de bloc sous la forme d'une puissance de 2.
Int32 valueOffset() const
Offset des valeurs du bloc.
Int16 size() const
Taille du bloc.
Int32 operator[](Int32 i) const
i-ème valeur du bloc
Interface du gestionnaire de traces.
Vue d'un tableau d'éléments de type T.
Chaîne de caractères unicode.
TraceAccessor(ITraceMng *m)
Construit un accesseur via le gestionnaire de trace m.
Vecteur 1D de données avec sémantique par valeur (style STL).
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
std::int16_t Int16
Type entier signé sur 16 bits.
double Real
Type représentant un réel.
std::int32_t Int32
Type entier signé sur 32 bits.