12#ifndef ARCANE_UTILS_STACKARRAY_H
13#define ARCANE_UTILS_STACKARRAY_H
17#include "arcane/utils/Array.h"
18#include "arcane/utils/MemoryAllocator.h"
38class ARCANE_UTILS_EXPORT StackMemoryAllocator final
39:
public IMemoryAllocator3
43 StackMemoryAllocator(
void* buf,
size_t size)
44 : m_preallocated_buffer(buf)
45 , m_preallocated_size(size)
59 void* m_preallocated_buffer =
nullptr;
60 Int64 m_preallocated_size = 0;
86template <
typename T, Int32 NbElement = 32>
91 static constexpr Int32 SizeOfType =
static_cast<Int32>(
sizeof(T));
92 static constexpr Int32 nb_element_in_buf = NbElement;
96 using typename BaseClassType::ConstReferenceType;
97 static constexpr Int32 MemorySize = NbElement * SizeOfType;
103 : m_stack_allocator(m_stack_buffer, MemorySize)
112 this->_resize(req_size, value);
119 this->_resize(asize);
162 this->_initFromInitializerList(alist);
208 this->_internalDeallocate();
219 char m_stack_buffer[MemorySize];
Classe abstraite de base d'un vecteur.
void _initFromSpan(const Span< const T > &view)
Initialise le tableau avec la vue view.
void _initFromAllocator(IMemoryAllocator *a, Int64 acapacity)
Construit un tableau avec un allocateur spécifique a.
void _reset()
Réinitialise le tableau à un tableau vide.
Informations sur une zone mémoire allouée.
Vue modifiable d'un tableau d'un type T.
void copy(Span< const T > rhs)
Copie les valeurs de rhs dans l'instance.
Span< const T > constSpan() const
Vue constante sur ce tableau.
Vue constante d'un tableau de type T.
Classe contenant des informations pour spécialiser les allocations.
Tableau 1D de données avec buffer pré-alloué sur la pile.
SmallArray(Int64 asize)
Créé un tableau de asize éléments contenant la valeur par défaut du type T()
void operator=(const Span< const T > &rhs)
Copie les valeurs de la vue rhs dans cette instance.
SmallArray(Int32 asize)
Créé un tableau de asize éléments contenant la valeur par défaut du type T()
void operator=(const Span< T > &rhs)
Copie les valeurs de la vue rhs dans cette instance.
void operator=(const Array< T > &rhs)
Copie les valeurs de rhs dans cette instance.
void operator=(const ConstArrayView< T > &rhs)
Copie les valeurs de la vue rhs dans cette instance.
SmallArray()
Créé un tableau vide.
SmallArray(size_t asize)
Créé un tableau de asize éléments contenant la valeur par défaut du type T()
SmallArray(const Span< T > &aview)
Créé un tableau en recopiant les valeurs de la value aview.
SmallArray(const ArrayView< T > &aview)
Créé un tableau en recopiant les valeurs de la value aview.
void operator=(const ArrayView< T > &rhs)
Copie les valeurs de la vue rhs dans cette instance.
SmallArray(const Array< T > &rhs)
Créé un tableau en recopiant les valeurs rhs.
SmallArray(Int64 req_size, ConstReferenceType value)
Créé un tableau de size éléments contenant la valeur value.
~SmallArray() override
Détruit l'instance.
SmallArray(const Span< const T > &aview)
Créé un tableau en recopiant les valeurs de la value aview.
SmallArray(const ConstArrayView< T > &aview)
Créé un tableau en recopiant les valeurs de la value aview.
Vue d'un tableau d'éléments de type T.
Int64 adjustedCapacity(MemoryAllocationArgs, Int64 wanted_capacity, Int64) const final
Ajuste la capacité suivant la taille d'élément.
bool hasRealloc(MemoryAllocationArgs) const final
Indique si l'allocateur supporte la sémantique de realloc.
size_t guaranteedAlignment(MemoryAllocationArgs) const final
Valeur de l'alignement garanti par l'allocateur.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
std::int64_t Int64
Type entier signé sur 64 bits.
std::int32_t Int32
Type entier signé sur 32 bits.