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;
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];
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);
Tableau d'items de types quelconques.
void setBlockSizeAsPowerOfTwo(Int32 v)
Positionne la taille de bloc sous la forme d'une puissance de 2.
Classe gérant un tableau sous la forme d'une liste de blocs.
Int16 m_block_size
Taille d'un bloc.
UniqueArray< Int32 > m_indexes
Liste des indexes.
Int32 m_original_size
Taille d'origine du tableau d'indices.
Int32 m_nb_block
Nombre de blocs (m_original_size/m_block_size arrondi au supérieur)
Int16 m_last_block_size
Taille du dernier bloc.
Bloc contenant une une liste d'indices avec un offset.
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.