14#include "arcane/std/SimpleTableInternalMng.h"
30 m_simple_table_internal->clear();
41 Integer position = m_simple_table_internal->m_values.dim1Size();
42 m_simple_table_internal->m_values.resize(position + 1);
44 m_simple_table_internal->m_row_names.add(
row_name);
45 m_simple_table_internal->m_row_sizes.add(0);
47 m_simple_table_internal->m_last_row = position;
57 Integer position = m_simple_table_internal->m_values.dim1Size();
58 m_simple_table_internal->m_values.resize(position + 1);
60 m_simple_table_internal->m_row_names.add(
row_name);
61 m_simple_table_internal->m_row_sizes.add(0);
77 Integer position = m_simple_table_internal->m_values.dim1Size();
78 m_simple_table_internal->m_values.resize(position + size);
80 m_simple_table_internal->m_row_names.addRange(
rows_names);
83 m_simple_table_internal->m_last_row = position;
96 Integer position = m_simple_table_internal->m_values.dim2Size();
97 m_simple_table_internal->m_values.resize(m_simple_table_internal->m_values.dim1Size(), position + 1);
99 m_simple_table_internal->m_column_names.add(
column_name);
100 m_simple_table_internal->m_column_sizes.add(0);
102 m_simple_table_internal->m_last_column = position;
112 Integer position = m_simple_table_internal->m_values.dim2Size();
113 m_simple_table_internal->m_values.resize(m_simple_table_internal->m_values.dim1Size(), position + 1);
115 m_simple_table_internal->m_column_names.add(
column_name);
116 m_simple_table_internal->m_column_sizes.add(0);
132 Integer position = m_simple_table_internal->m_values.dim2Size();
133 m_simple_table_internal->m_values.resize(m_simple_table_internal->m_values.dim1Size(), position + size);
135 m_simple_table_internal->m_column_names.addRange(
columns_names);
138 m_simple_table_internal->m_last_column = position;
153 Integer
size_row = m_simple_table_internal->m_row_sizes[position];
155 if (m_simple_table_internal->m_values.dim2Size() <
size_row + 1)
160 m_simple_table_internal->m_last_row = position;
161 m_simple_table_internal->m_last_column =
size_row;
163 m_simple_table_internal->m_row_sizes[position]++;
171 m_simple_table_internal->m_column_sizes[
size_row] = std::max(position + 1, m_simple_table_internal->m_column_sizes[
size_row]);
179 std::optional<Integer> position = m_simple_table_internal->m_row_names.span().findFirst(
row_name);
192 if (m_simple_table_internal->m_last_row == -1 || m_simple_table_internal->m_last_column == -1)
207 Integer
size_row = m_simple_table_internal->m_row_sizes[position];
208 Integer
min_size = (elements.size() <= m_simple_table_internal->m_values.dim2Size() -
size_row
210 : m_simple_table_internal->m_values.dim2Size() -
size_row);
212 for (Integer i = 0; i <
min_size; i++) {
214 m_simple_table_internal->m_column_sizes[i +
size_row] = std::max(position + 1, m_simple_table_internal->m_column_sizes[i +
size_row]);
216 m_simple_table_internal->m_row_sizes[position] +=
min_size;
218 m_simple_table_internal->m_last_row = position;
219 m_simple_table_internal->m_last_column = m_simple_table_internal->m_row_sizes[position] - 1;
221 return elements.size() <= m_simple_table_internal->m_values.dim2Size() -
size_row;
227 std::optional<Integer> position = m_simple_table_internal->m_row_names.span().findFirst(
row_name);
241 if (m_simple_table_internal->m_last_row == -1 || m_simple_table_internal->m_last_column == -1)
255 Integer
size_column = m_simple_table_internal->m_column_sizes[position];
257 if (m_simple_table_internal->m_values.dim1Size() <
size_column + 1)
262 m_simple_table_internal->m_last_column = position;
265 m_simple_table_internal->m_column_sizes[position]++;
266 m_simple_table_internal->m_row_sizes[
size_column] = std::max(position + 1, m_simple_table_internal->m_row_sizes[
size_column]);
274 std::optional<Integer> position = m_simple_table_internal->m_column_names.span().findFirst(
column_name);
287 if (m_simple_table_internal->m_last_row == -1 || m_simple_table_internal->m_last_column == -1)
301 Integer
size_column = m_simple_table_internal->m_column_sizes[position];
302 Integer
min_size = (elements.size() <= m_simple_table_internal->m_values.dim1Size() -
size_column
304 : m_simple_table_internal->m_values.dim1Size() -
size_column);
306 for (Integer i = 0; i <
min_size; i++) {
307 m_simple_table_internal->m_values[i +
size_column][position] = elements[i];
308 m_simple_table_internal->m_row_sizes[i +
size_column] = std::max(position + 1, m_simple_table_internal->m_row_sizes[i +
size_column]);
310 m_simple_table_internal->m_column_sizes[position] +=
min_size;
312 m_simple_table_internal->m_last_column = position;
313 m_simple_table_internal->m_last_row = m_simple_table_internal->m_column_sizes[position] - 1;
315 return elements.size() <= m_simple_table_internal->m_values.dim1Size() -
size_column;
321 std::optional<Integer> position = m_simple_table_internal->m_column_names.span().findFirst(
column_name);
335 if (m_simple_table_internal->m_last_row == -1 || m_simple_table_internal->m_last_column == -1)
346 if (m_simple_table_internal->m_last_row == -1 || m_simple_table_internal->m_last_column == -1 || m_simple_table_internal->m_last_row - 1 < 0)
348 m_simple_table_internal->m_last_row--;
351 if (m_simple_table_internal->m_row_sizes[m_simple_table_internal->m_last_row] <= m_simple_table_internal->m_last_column)
352 m_simple_table_internal->m_row_sizes[m_simple_table_internal->m_last_row] = m_simple_table_internal->m_last_column + 1;
354 m_simple_table_internal->m_values[m_simple_table_internal->m_last_row][m_simple_table_internal->m_last_column] =
element;
356 m_simple_table_internal->m_last_row++;
363 if (m_simple_table_internal->m_last_row == -1 || m_simple_table_internal->m_last_column == -1 || m_simple_table_internal->m_last_row + 1 >= m_simple_table_internal->m_values.dim1Size())
365 m_simple_table_internal->m_last_row++;
367 if (m_simple_table_internal->m_row_sizes[m_simple_table_internal->m_last_row] <= m_simple_table_internal->m_last_column)
368 m_simple_table_internal->m_row_sizes[m_simple_table_internal->m_last_row] = m_simple_table_internal->m_last_column + 1;
369 if (m_simple_table_internal->m_column_sizes[m_simple_table_internal->m_last_column] <= m_simple_table_internal->m_last_row)
370 m_simple_table_internal->m_column_sizes[m_simple_table_internal->m_last_column] = m_simple_table_internal->m_last_row + 1;
372 m_simple_table_internal->m_values[m_simple_table_internal->m_last_row][m_simple_table_internal->m_last_column] =
element;
374 m_simple_table_internal->m_last_row--;
381 if (m_simple_table_internal->m_last_row == -1 || m_simple_table_internal->m_last_column == -1 || m_simple_table_internal->m_last_column - 1 < 0)
383 m_simple_table_internal->m_last_column--;
386 if (m_simple_table_internal->m_column_sizes[m_simple_table_internal->m_last_column] <= m_simple_table_internal->m_last_row)
387 m_simple_table_internal->m_column_sizes[m_simple_table_internal->m_last_column] = m_simple_table_internal->m_last_row + 1;
389 m_simple_table_internal->m_values[m_simple_table_internal->m_last_row][m_simple_table_internal->m_last_column] =
element;
391 m_simple_table_internal->m_last_column++;
398 if (m_simple_table_internal->m_last_row == -1 || m_simple_table_internal->m_last_column == -1 || m_simple_table_internal->m_last_column + 1 >= m_simple_table_internal->m_values.dim2Size())
400 m_simple_table_internal->m_last_column++;
402 if (m_simple_table_internal->m_row_sizes[m_simple_table_internal->m_last_row] <= m_simple_table_internal->m_last_column)
403 m_simple_table_internal->m_row_sizes[m_simple_table_internal->m_last_row] = m_simple_table_internal->m_last_column + 1;
404 if (m_simple_table_internal->m_column_sizes[m_simple_table_internal->m_last_column] <= m_simple_table_internal->m_last_row)
405 m_simple_table_internal->m_column_sizes[m_simple_table_internal->m_last_column] = m_simple_table_internal->m_last_row + 1;
407 m_simple_table_internal->m_values[m_simple_table_internal->m_last_row][m_simple_table_internal->m_last_column] =
element;
409 m_simple_table_internal->m_last_column--;
419 if (m_simple_table_internal->m_last_row == -1 || m_simple_table_internal->m_last_column == -1 || m_simple_table_internal->m_last_row - 1 < 0)
425 m_simple_table_internal->m_last_row--;
427 if (m_simple_table_internal->m_row_sizes[m_simple_table_internal->m_last_row] <= m_simple_table_internal->m_last_column)
428 m_simple_table_internal->m_row_sizes[m_simple_table_internal->m_last_row] = m_simple_table_internal->m_last_column + 1;
429 return m_simple_table_internal->m_values[m_simple_table_internal->m_last_row][m_simple_table_internal->m_last_column];
432 return m_simple_table_internal->m_values[m_simple_table_internal->m_last_row - 1][m_simple_table_internal->m_last_column];
438 if (m_simple_table_internal->m_last_row == -1 || m_simple_table_internal->m_last_column == -1 || m_simple_table_internal->m_last_row + 1 >= m_simple_table_internal->m_values.dim1Size())
444 m_simple_table_internal->m_last_row++;
446 if (m_simple_table_internal->m_row_sizes[m_simple_table_internal->m_last_row] <= m_simple_table_internal->m_last_column)
447 m_simple_table_internal->m_row_sizes[m_simple_table_internal->m_last_row] = m_simple_table_internal->m_last_column + 1;
448 if (m_simple_table_internal->m_column_sizes[m_simple_table_internal->m_last_column] <= m_simple_table_internal->m_last_row)
449 m_simple_table_internal->m_column_sizes[m_simple_table_internal->m_last_column] = m_simple_table_internal->m_last_row + 1;
450 return m_simple_table_internal->m_values[m_simple_table_internal->m_last_row][m_simple_table_internal->m_last_column];
452 return m_simple_table_internal->m_values[m_simple_table_internal->m_last_row + 1][m_simple_table_internal->m_last_column];
458 if (m_simple_table_internal->m_last_row == -1 || m_simple_table_internal->m_last_column == -1 || m_simple_table_internal->m_last_column - 1 < 0)
464 m_simple_table_internal->m_last_column--;
467 if (m_simple_table_internal->m_column_sizes[m_simple_table_internal->m_last_column] <= m_simple_table_internal->m_last_row)
468 m_simple_table_internal->m_column_sizes[m_simple_table_internal->m_last_column] = m_simple_table_internal->m_last_row + 1;
469 return m_simple_table_internal->m_values[m_simple_table_internal->m_last_row][m_simple_table_internal->m_last_column];
471 return m_simple_table_internal->m_values[m_simple_table_internal->m_last_row][m_simple_table_internal->m_last_column - 1];
477 if (m_simple_table_internal->m_last_row == -1 || m_simple_table_internal->m_last_column == -1 || m_simple_table_internal->m_last_column + 1 >= m_simple_table_internal->m_values.dim2Size())
483 m_simple_table_internal->m_last_column++;
485 if (m_simple_table_internal->m_row_sizes[m_simple_table_internal->m_last_row] <= m_simple_table_internal->m_last_column)
486 m_simple_table_internal->m_row_sizes[m_simple_table_internal->m_last_row] = m_simple_table_internal->m_last_column + 1;
487 if (m_simple_table_internal->m_column_sizes[m_simple_table_internal->m_last_column] <= m_simple_table_internal->m_last_row)
488 m_simple_table_internal->m_column_sizes[m_simple_table_internal->m_last_column] = m_simple_table_internal->m_last_row + 1;
489 return m_simple_table_internal->m_values[m_simple_table_internal->m_last_row][m_simple_table_internal->m_last_column];
491 return m_simple_table_internal->m_values[m_simple_table_internal->m_last_row][m_simple_table_internal->m_last_column + 1];
500 m_simple_table_internal->m_values[m_simple_table_internal->m_last_row][m_simple_table_internal->m_last_column] =
element;
517 m_simple_table_internal->m_last_row =
position_y;
518 m_simple_table_internal->m_last_column =
position_x;
526 std::optional<Integer>
position_x = m_simple_table_internal->m_column_names.span().findFirst(
column_name);
527 std::optional<Integer>
position_y = m_simple_table_internal->m_row_names.span().findFirst(
row_name);
540 return m_simple_table_internal->m_values[m_simple_table_internal->m_last_row][m_simple_table_internal->m_last_column];
550 m_simple_table_internal->m_last_column =
position_x;
551 m_simple_table_internal->m_last_row =
position_y;
560 std::optional<Integer>
position_x = m_simple_table_internal->m_column_names.span().findFirst(
column_name);
561 std::optional<Integer>
position_y = m_simple_table_internal->m_row_names.span().findFirst(
row_name);
574 Integer size =
rowSize(position);
576 for (Integer i = 0; i < size; i++) {
577 copie[i] = m_simple_table_internal->m_values[position][i];
585 std::optional<Integer>
position_y = m_simple_table_internal->m_row_names.span().findFirst(
row_name);
600 for (Integer i = 0; i < size; i++) {
601 copie[i] = m_simple_table_internal->m_values[i][position];
609 std::optional<Integer>
position_x = m_simple_table_internal->m_column_names.span().findFirst(
column_name);
623 return m_simple_table_internal->m_row_sizes[position];
629 std::optional<Integer>
position_y = m_simple_table_internal->m_row_names.span().findFirst(
row_name);
643 return m_simple_table_internal->m_column_sizes[position];
649 std::optional<Integer>
position_x = m_simple_table_internal->m_column_names.span().findFirst(
column_name);
661 std::optional<Integer>
position_y = m_simple_table_internal->m_row_names.span().findFirst(
row_name);
670 std::optional<Integer>
position_x = m_simple_table_internal->m_column_names.span().findFirst(
column_name);
682 return m_simple_table_internal->m_values.dim1Size();
688 return m_simple_table_internal->m_values.dim2Size();
700 return m_simple_table_internal->m_row_names[position];
709 return m_simple_table_internal->m_column_names[position];
720 m_simple_table_internal->m_row_names[position] =
new_name;
727 std::optional<Integer>
position_y = m_simple_table_internal->m_row_names.span().findFirst(
row_name);
738 m_simple_table_internal->m_column_names[position] =
new_name;
745 std::optional<Integer>
position_x = m_simple_table_internal->m_column_names.span().findFirst(
column_name);
760 for (Integer i = 0; i < m_simple_table_internal->m_values.dim1Size(); i++) {
763 for (Integer
j = 0;
j < view.size() - 1;
j++) {
766 avg /= view.size() - 1;
778 return m_simple_table_internal;
785 ARCANE_FATAL(
"La réference passée en paramètre est Null.");
#define ARCANE_FATAL(...)
Macro envoyant une exception FatalErrorException.
Lecteur des fichiers de maillage via la bibliothèque LIMA.
bool editElementLeft(Real element, bool update_last_position) override
Méthode permettant d'éditer un élément à gauche du dernier élement dernièrement manipulé (même ligne/...
bool addElementInRow(Integer position, Real element) override
Méthode permettant d'ajouter un élément à une ligne.
Ref< SimpleTableInternal > internal() override
Méthode permettant de récupérer une référence vers l'objet SimpleTableInternal utilisé.
Integer rowPosition(const String &row_name) override
Méthode permettant de récupérer la position d'une ligne.
bool addElementInColumn(Integer position, Real element) override
Méthode permettant d'ajouter un élément à une colonne.
String columnName(Integer position) override
Méthode permettant de récupérer le nom d'une colonne à partir de sa position.
bool addElementsInColumn(Integer position, ConstArrayView< Real > elements) override
Méthode permettant d'ajouter plusieurs éléments sur une colonne.
Integer numberOfRows() override
Méthode permettant de récupérer le nombre de lignes dans le tableau. C'est, en quelque sorte,...
RealUniqueArray column(Integer position) override
Méthode permettant d'obtenir une copie d'une colonne.
bool addElementsInSameColumn(ConstArrayView< Real > elements) override
Méthode permettant d'ajouter plusieurs éléments sur la colonne dernièrement manipulée.
bool addRows(StringConstArrayView rows_names) override
Méthode permettant d'ajouter plusieurs lignes.
bool addElementsInSameRow(ConstArrayView< Real > elements) override
Méthode permettant d'ajouter plusieurs éléments sur la ligne dernièrement manipulée.
Real elementDown(bool update_last_position) override
Méthode permettant de récupérer un élément en-dessous du dernier élement dernièrement manipulé (ligne...
void clearInternal() override
Méthode permettant d'effacer le contenu du SimpleTableInternal.
void setInternal(const Ref< SimpleTableInternal > &simple_table_internal) override
Méthode permettant de définir une référence vers un SimpleTableInternal.
Real element() override
Méthode permettant d'obtenir une copie d'un élement.
bool editElementDown(Real element, bool update_last_position) override
Méthode permettant d'éditer un élément en-dessous du dernier élement dernièrement manipulé (ligne du ...
Integer addAverageColumn(const String &column_name) override
Méthode permettant de créer une colonne contenant la moyenne des éléments de chaque ligne.
bool editColumnName(Integer position, const String &new_name) override
Méthode permettant de changer le nom d'une colonne.
bool editRowName(Integer position, const String &new_name) override
Méthode permettant de changer le nom d'une ligne.
bool addElementInSameColumn(Real element) override
Méthode permettant d'ajouter un élément sur la colonne dernièrement manipulée.
String rowName(Integer position) override
Méthode permettant de récupérer le nom d'une ligne à partir de sa position.
Integer addColumn(const String &column_name) override
Méthode permettant d'ajouter une colonne.
RealUniqueArray row(Integer position) override
Méthode permettant d'obtenir une copie d'une ligne.
Real elementUp(bool update_last_position) override
Méthode permettant de récupérer un élément au-dessus du dernier élement dernièrement manipulé (ligne ...
bool editElementRight(Real element, bool update_last_position) override
Méthode permettant d'éditer un élément à droite du dernier élement dernièrement manipulé (même ligne/...
bool addElementInSameRow(Real element) override
Méthode permettant d'ajouter un élément sur la ligne dernièrement manipulée.
bool addElementsInRow(Integer position, ConstArrayView< Real > elements) override
Méthode permettant d'ajouter plusieurs éléments sur une ligne.
Integer rowSize(Integer position) override
Méthode permettant d'obtenir la taille d'une ligne. Incluant les hypothétiques 'trous' dans la ligne.
Integer columnSize(Integer position) override
Méthode permettant d'obtenir la taille d'une colonne. Incluant les hypotétiques 'trous' dans la colon...
bool editElement(Real element) override
Méthode permettant de modifier un élement dans le tableau.
bool editElementUp(Real element, bool update_last_position) override
Méthode permettant d'éditer un élément au-dessus du dernier élement dernièrement manipulé (ligne du d...
Integer numberOfColumns() override
Méthode permettant de récupérer le nombre de colonnes dans le tableau. C'est, en quelque sorte,...
Integer columnPosition(const String &column_name) override
Méthode permettant de récupérer la position d'une colonne.
Real elementRight(bool update_last_position) override
Méthode permettant de récupérer un élément à droite du dernier élement dernièrement manipulé (même li...
Integer addRow(const String &row_name) override
Méthode permettant d'ajouter une ligne.
Real elementLeft(bool update_last_position) override
Méthode permettant de récupérer un élément à gauche du dernier élement dernièrement manipulé (même li...
bool addColumns(StringConstArrayView columns_names) override
Méthode permettant d'ajouter plusieurs colonnes.
Vue constante d'un tableau de type T.
Chaîne de caractères unicode.
Vecteur 1D de données avec sémantique par valeur (style STL).
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
UniqueArray< Real > RealUniqueArray
Tableau dynamique à une dimension de réels.
UniqueArray< Integer > IntegerUniqueArray
Tableau dynamique à une dimension d'entiers.