Arcane  v3.14.10.0
Documentation utilisateur
Chargement...
Recherche...
Aucune correspondance
ISimpleTableOutput.h
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2022 CEA (www.cea.fr) IFPEN (www.ifpenergiesnouvelles.com)
4// See the top-level COPYRIGHT file for details.
5// SPDX-License-Identifier: Apache-2.0
6//-----------------------------------------------------------------------------
7/*---------------------------------------------------------------------------*/
8/* ISimpleTableOutput.hh (C) 2000-2022 */
9/* */
10/* Interface pour simples services de sortie de tableaux de valeurs. */
11/*---------------------------------------------------------------------------*/
12/*---------------------------------------------------------------------------*/
13
14#ifndef ARCANE_ISIMPLETABLEOUTPUT_H
15#define ARCANE_ISIMPLETABLEOUTPUT_H
16
17/*---------------------------------------------------------------------------*/
18/*---------------------------------------------------------------------------*/
19
20#include "arcane/ISimpleTableInternalMng.h"
21#include "arcane/ISimpleTableWriterHelper.h"
22
23/*---------------------------------------------------------------------------*/
24/*---------------------------------------------------------------------------*/
25
26namespace Arcane
27{
28
29/*---------------------------------------------------------------------------*/
30/*---------------------------------------------------------------------------*/
31
32/**
33 * @ingroup StandardService
34 * @brief Interface représentant une sortie de tableau simple.
35 */
36class ARCANE_CORE_EXPORT ISimpleTableOutput
37{
38 public:
39 virtual ~ISimpleTableOutput() = default;
40
41 public:
42 /**
43 * @brief Méthode permettant d'initialiser le tableau.
44 */
45 virtual bool init() = 0;
46 /**
47 * @brief Méthode permettant d'initialiser le tableau.
48 *
49 * @param table_name Le nom du tableau (et du fichier de sortie).
50 */
51 virtual bool init(const String& table_name) = 0;
52 /**
53 * @brief Méthode permettant d'initialiser le tableau.
54 *
55 * @param table_name Le nom du tableau (et du fichier de sortie).
56 * @param directory_name Le nom du dossier dans lequel enregistrer les tableaux.
57 */
58 virtual bool init(const String& table_name, const String& directory_name) = 0;
59
60 /*---------------------------------------------------------------------------*/
61 /*---------------------------------------------------------------------------*/
62
63 /**
64 * @brief Méthode permettant de remettre à zéro les tableaux
65 */
66 virtual void clear() = 0;
67
68 /*---------------------------------------------------------------------------*/
69 /*---------------------------------------------------------------------------*/
70
71 /**
72 * @brief Méthode permettant d'ajouter une ligne.
73 *
74 * @param row_name Le nom de la ligne.
75 * @return Integer La position de la ligne dans le tableau.
76 */
77 virtual Integer addRow(const String& row_name) = 0;
78 /**
79 * @brief Méthode permettant d'ajouter une ligne.
80 *
81 * Si le nombre d'élements dans 'elements' est plus grand que le
82 * nombre de colonnes, l'ajout s'effectue quand même (mais les
83 * éléments en trop ne seront pas ajoutés).
84 *
85 * @param row_name Le nom de la ligne.
86 * @param elements Les éléments à insérer sur la ligne.
87 * @return Integer La position de la ligne dans le tableau.
88 */
89 virtual Integer addRow(const String& row_name, ConstArrayView<Real> elements) = 0;
90 /**
91 * @brief Méthode permettant d'ajouter plusieurs lignes.
92 *
93 * @param rows_names Les noms des lignes.
94 * @return true Si toutes les lignes ont été créées.
95 * @return false Si toutes les lignes n'ont pas été créées.
96 */
97 virtual bool addRows(StringConstArrayView rows_names) = 0;
98
99 /*---------------------------------------------------------------------------*/
100 /*---------------------------------------------------------------------------*/
101
102 /**
103 * @brief Méthode permettant d'ajouter une colonne.
104 *
105 * @param column_name Le nom de la colonne.
106 * @return Integer La position de la colonne dans le tableau.
107 */
108 virtual Integer addColumn(const String& column_name) = 0;
109 /**
110 * @brief Méthode permettant d'ajouter une colonne.
111 *
112 * Si le nombre d'élements dans 'elements' est plus grand que le
113 * nombre de lignes, l'ajout s'effectue quand même (mais les
114 * éléments en trop ne seront pas ajoutés).
115 *
116 * @param column_name Le nom de la colonne.
117 * @param elements Les éléments à ajouter sur la colonne.
118 * @return Integer La position de la colonne dans le tableau.
119 */
120 virtual Integer addColumn(const String& column_name, ConstArrayView<Real> elements) = 0;
121 /**
122 * @brief Méthode permettant d'ajouter plusieurs colonnes.
123 *
124 * @param rows_names Les noms des colonnes.
125 * @return true Si toutes les colonnes ont été créées.
126 * @return false Si toutes les colonnes n'ont pas été créées.
127 */
128 virtual bool addColumns(StringConstArrayView columns_names) = 0;
129
130 /*---------------------------------------------------------------------------*/
131 /*---------------------------------------------------------------------------*/
132
133 /**
134 * @brief Méthode permettant d'ajouter un élément à une ligne.
135 *
136 * @param position La position de la ligne.
137 * @param element L'élément à ajouter.
138 * @return true Si l'élément a pu être ajouté.
139 * @return false Si l'élément n'a pas pu être ajouté.
140 */
141 virtual bool addElementInRow(Integer position, Real element) = 0;
142 /**
143 * @brief Méthode permettant l'ajouter un élément sur une ligne.
144 *
145 * @param row_name Le nom de la ligne.
146 * @param element L'élément à ajouter.
147 * @param create_if_not_exist Pour savoir si l'on doit créer la
148 * ligne si elle n'existe pas encore.
149 * @return true Si l'élément a pu être ajouté.
150 * @return false Si l'élément n'a pas pu être ajouté.
151 */
152 virtual bool addElementInRow(const String& row_name, Real element, bool create_if_not_exist = true) = 0;
153 /**
154 * @brief Méthode permettant d'ajouter un élément sur la ligne
155 * dernièrement manipulée.
156 *
157 * Cette méthode diffère de 'editElementRight()' car ici, on ajoute
158 * un élément à la fin de la ligne, pas forcement après le
159 * dernier élement ajouté.
160 *
161 * @param element L'élément à ajouter.
162 * @return true Si l'élément a été ajouté.
163 * @return false Si l'élément n'a pas pu être ajouté.
164 */
165 virtual bool addElementInSameRow(Real element) = 0;
166
167 /*---------------------------------------------------------------------------*/
168 /*---------------------------------------------------------------------------*/
169
170 /**
171 * @brief Méthode permettant d'ajouter plusieurs éléments sur une ligne.
172 *
173 * Si le nombre d'élements dans 'elements' est plus grand que le
174 * nombre de colonnes disponibles, l'ajout s'effectue quand même (mais les
175 * éléments en trop ne seront pas ajoutés) et on aura un return false.
176 *
177 * @param position La position de la ligne.
178 * @param elements Le tableau d'élement à ajouter.
179 * @return true Si tous les éléments ont été ajoutés.
180 * @return false Si [0;len(elements)[ éléments ont été ajoutés.
181 */
182 virtual bool addElementsInRow(Integer position, ConstArrayView<Real> elements) = 0;
183 /**
184 * @brief Méthode permettant d'ajouter plusieurs éléments sur une ligne.
185 *
186 * Si le nombre d'élements dans 'elements' est plus grand que le
187 * nombre de colonnes disponibles, l'ajout s'effectue quand même (mais les
188 * éléments en trop ne seront pas ajoutés) et on aura un return false.
189 *
190 * @param row_name Le nom de la ligne.
191 * @param elements Le tableau d'élement à ajouter.
192 * @param create_if_not_exist Pour savoir si l'on doit créer la ligne
193 * si elle n'existe pas encore.
194 * @return true Si tous les éléments ont été ajoutés.
195 * @return false Si [0;len(elements)[ éléments ont été ajoutés.
196 */
197 virtual bool addElementsInRow(const String& row_name, ConstArrayView<Real> elements, bool create_if_not_exist = true) = 0;
198 /**
199 * @brief Méthode permettant d'ajouter plusieurs éléments sur la
200 * ligne dernièrement manipulée.
201 *
202 * Si le nombre d'élements dans 'elements' est plus grand que le
203 * nombre de colonnes disponibles, l'ajout s'effectue quand même (mais les
204 * éléments en trop ne seront pas ajoutés) et on aura un return false.
205 *
206 * Mis à part le fait qu'ici, on manipule un tableau, cette méthode diffère
207 * de 'editElementRight()' car ici, on ajoute des éléments à la fin de la ligne,
208 * pas forcement après le dernier élement ajouté.
209 *
210 * @param elements Le tableau d'élement à ajouter.
211 * @return true Si tous les éléments ont été ajoutés.
212 * @return false Si [0;len(elements)[ éléments ont été ajoutés.
213 */
214 virtual bool addElementsInSameRow(ConstArrayView<Real> elements) = 0;
215
216 /*---------------------------------------------------------------------------*/
217 /*---------------------------------------------------------------------------*/
218
219 /**
220 * @brief Méthode permettant d'ajouter un élément à une colonne.
221 *
222 * @param position La position de la colonne.
223 * @param element L'élément à ajouter.
224 * @return true Si l'élément a pu être ajouté.
225 * @return false Si l'élément n'a pas pu être ajouté.
226 */
227 virtual bool addElementInColumn(Integer position, Real element) = 0;
228 /**
229 * @brief Méthode permettant l'ajouter un élément sur une colonne.
230 *
231 * @param column_name Le nom de la colonne.
232 * @param element L'élément à ajouter.
233 * @param create_if_not_exist Pour savoir si l'on doit créer la colonne
234 * si elle n'existe pas encore.
235 * @return true Si l'élément a pu être ajouté.
236 * @return false Si l'élément n'a pas pu être ajouté.
237 */
238 virtual bool addElementInColumn(const String& column_name, Real element, bool create_if_not_exist = true) = 0;
239 /**
240 * @brief Méthode permettant d'ajouter un élément sur la colonne
241 * dernièrement manipulée.
242 *
243 * Cette méthode diffère de 'editElementDown()' car ici, on ajoute un élément
244 * à la fin de la colonne, pas forcement après le dernier élement ajouté.
245 *
246 * @param element L'élément à ajouter.
247 * @return true Si l'élément a été ajouté.
248 * @return false Si l'élément n'a pas pu être ajouté.
249 */
250 virtual bool addElementInSameColumn(Real element) = 0;
251
252 /*---------------------------------------------------------------------------*/
253 /*---------------------------------------------------------------------------*/
254
255 /**
256 * @brief Méthode permettant d'ajouter plusieurs éléments sur une colonne.
257 *
258 * Si le nombre d'élements dans 'elements' est plus grand que le
259 * nombre de lignes disponibles, l'ajout s'effectue quand même (mais les
260 * éléments en trop ne seront pas ajoutés) et on aura un return false.
261 *
262 * @param position La position de la colonne.
263 * @param elements Le tableau d'élement à ajouter.
264 * @return true Si tous les éléments ont été ajoutés.
265 * @return false Si [0;len(elements)[ éléments ont été ajoutés.
266 */
267 virtual bool addElementsInColumn(Integer position, ConstArrayView<Real> elements) = 0;
268 /**
269 * @brief Méthode permettant d'ajouter plusieurs éléments sur une colonne.
270 *
271 * Si le nombre d'élements dans 'elements' est plus grand que le
272 * nombre de lignes disponibles, l'ajout s'effectue quand même (mais les
273 * éléments en trop ne seront pas ajoutés) et on aura un return false.
274 *
275 * @param column_name Le nom de la colonne.
276 * @param elements Le tableau d'élement à ajouter.
277 * @param create_if_not_exist Pour savoir si l'on doit créer la colonne si
278 * elle n'existe pas encore.
279 * @return true Si tous les éléments ont été ajoutés.
280 * @return false Si [0;len(elements)[ éléments ont été ajoutés.
281 */
282 virtual bool addElementsInColumn(const String& column_name, ConstArrayView<Real> elements, bool create_if_not_exist = true) = 0;
283 /**
284 * @brief Méthode permettant d'ajouter plusieurs éléments sur la
285 * colonne dernièrement manipulée.
286 *
287 * Si le nombre d'élements dans 'elements' est plus grand que le
288 * nombre de lignes disponibles, l'ajout s'effectue quand même (mais les
289 * éléments en trop ne seront pas ajoutés) et on aura un return false.
290 *
291 * Mis à part le fait qu'ici, on manipule un tableau, cette méthode diffère
292 * de 'editElementDown()' car ici, on ajoute des éléments à la fin de la colonne,
293 * pas forcement après le dernier élement ajouté.
294 *
295 * @param elements Le tableau d'élement à ajouter.
296 * @return true Si tous les éléments ont été ajoutés.
297 * @return false Si [0;len(elements)[ éléments ont été ajoutés.
298 */
300
301 /*---------------------------------------------------------------------------*/
302 /*---------------------------------------------------------------------------*/
303
304 /**
305 * @brief Méthode permettant d'éditer un élément au-dessus du dernier
306 * élement dernièrement manipulé (ligne du dessus/même colonne).
307 *
308 * L'élement que l'on modifie devient donc le dernier élement modifié
309 * à la fin de cette méthode (si update_last_position = true).
310 *
311 * @param element L'élement à modifier.
312 * @param update_last_position Doit-on déplacer le curseur "dernier élement modifié" ?
313 * @return true Si l'élément a été modifié.
314 * @return false Si l'élément n'a pas pu être modifié.
315 */
316 virtual bool editElementUp(Real element, bool update_last_position = true) = 0;
317 /**
318 * @brief Méthode permettant d'éditer un élément en-dessous du dernier
319 * élement dernièrement manipulé (ligne du dessous/même colonne).
320 *
321 * L'élement que l'on modifie devient donc le dernier élement modifié
322 * à la fin de cette méthode (si update_last_position = true).
323 *
324 * Cette méthode diffère de 'addElementInSameColumn()' car ici, on ajoute
325 * (ou modifie) un élement sous le dernier élement manipulé, qui n'est
326 * pas forcement à la fin de la colonne.
327 *
328 * @param element L'élement à modifier.
329 * @param update_last_position Doit-on déplacer le curseur "dernier élement modifié" ?
330 * @return true Si l'élément a été modifié.
331 * @return false Si l'élément n'a pas pu être modifié.
332 */
333 virtual bool editElementDown(Real element, bool update_last_position = true) = 0;
334 /**
335 * @brief Méthode permettant d'éditer un élément à gauche du dernier
336 * élement dernièrement manipulé (même ligne/colonne à gauche).
337 *
338 * L'élement que l'on modifie devient donc le dernier élement modifié
339 * à la fin de cette méthode (si update_last_position = true).
340 *
341 * @param element L'élement à modifier.
342 * @param update_last_position Doit-on déplacer le curseur "dernier élement modifié" ?
343 * @return true Si l'élément a été modifié.
344 * @return false Si l'élément n'a pas pu être modifié.
345 */
346 virtual bool editElementLeft(Real element, bool update_last_position = true) = 0;
347 /**
348 * @brief Méthode permettant d'éditer un élément à droite du dernier
349 * élement dernièrement manipulé (même ligne/colonne à droite).
350 *
351 * L'élement que l'on modifie devient donc le dernier élement modifié
352 * à la fin de cette méthode (si update_last_position = true).
353 *
354 * Cette méthode diffère de 'addElementInSameRow()' car ici, on ajoute
355 * (ou modifie) un élement à la droite du dernier élement manipulé,
356 * qui n'est pas forcement à la fin de la colonne.
357 *
358 * @param element L'élement à modifier.
359 * @param update_last_position Doit-on déplacer le curseur "dernier élement modifié" ?
360 * @return true Si l'élément a été modifié.
361 * @return false Si l'élément n'a pas pu être modifié.
362 */
363 virtual bool editElementRight(Real element, bool update_last_position = true) = 0;
364
365 /*---------------------------------------------------------------------------*/
366 /*---------------------------------------------------------------------------*/
367
368 /**
369 * @brief Méthode permettant de récupérer un élément au-dessus du dernier
370 * élement dernièrement manipulé (ligne du dessus/même colonne).
371 *
372 * L'élement que l'on récupère devient donc le dernier élement "modifié"
373 * à la fin de cette méthode (si update_last_position = true).
374 *
375 * @param update_last_position Doit-on déplacer le curseur "dernier élement modifié" ?
376 * @return Real L'élement trouvé (0 si non trouvé).
377 */
378 virtual Real elementUp(bool update_last_position = false) = 0;
379 /**
380 * @brief Méthode permettant de récupérer un élément en-dessous du dernier
381 * élement dernièrement manipulé (ligne du dessous/même colonne).
382 *
383 * L'élement que l'on récupère devient donc le dernier élement "modifié"
384 * à la fin de cette méthode (si update_last_position = true).
385 *
386 * @param update_last_position Doit-on déplacer le curseur "dernier élement modifié" ?
387 * @return Real L'élement trouvé (0 si non trouvé).
388 */
389 virtual Real elementDown(bool update_last_position = false) = 0;
390 /**
391 * @brief Méthode permettant de récupérer un élément à gauche du dernier
392 * élement dernièrement manipulé (même ligne/colonne à gauche).
393 *
394 * L'élement que l'on récupère devient donc le dernier élement "modifié"
395 * à la fin de cette méthode (si update_last_position = true).
396 *
397 * @param update_last_position Doit-on déplacer le curseur "dernier élement modifié" ?
398 * @return Real L'élement trouvé (0 si non trouvé).
399 */
400 virtual Real elementLeft(bool update_last_position = false) = 0;
401 /**
402 * @brief Méthode permettant de récupérer un élément à droite du dernier
403 * élement dernièrement manipulé (même ligne/colonne à droite).
404 *
405 * L'élement que l'on récupère devient donc le dernier élement "modifié"
406 * à la fin de cette méthode (si update_last_position = true).
407 *
408 * @param update_last_position Doit-on déplacer le curseur "dernier élement modifié" ?
409 * @return Real L'élement trouvé (0 si non trouvé).
410 */
411 virtual Real elementRight(bool update_last_position = false) = 0;
412
413 /*---------------------------------------------------------------------------*/
414 /*---------------------------------------------------------------------------*/
415
416 /**
417 * @brief Méthode permettant de modifier un élement dans le tableau.
418 *
419 * Les positions x et y correspondent à l'emplacement du dernier
420 * élement manipulé.
421 *
422 * Cette méthode a de l'intéret après l'utilisation de
423 * 'elemUDLR(true)' par exemple.
424 *
425 * @param element L'élement remplaçant.
426 * @return true Si l'élement a bien été remplacé.
427 * @return false Si l'élement n'a pas été remplacé.
428 */
429 virtual bool editElement(Real element) = 0;
430 /**
431 * @brief Méthode permettant de modifier un élement dans le tableau.
432 *
433 * @param position_x La position de la colonne à modifier.
434 * @param position_y La position de la ligne à modifier.
435 * @param element L'élement remplaçant.
436 * @return true Si l'élement a bien été remplacé.
437 * @return false Si l'élement n'a pas été remplacé.
438 */
439 virtual bool editElement(Integer position_x, Integer position_y, Real element) = 0;
440 /**
441 * @brief Méthode permettant de modifier un élement dans le tableau.
442 *
443 * @param column_name Le nom de la colonne où se trouve l'élement.
444 * @param row_name Le nom de la ligne où se trouve l'élement.
445 * @param element L'élement remplaçant.
446 * @return true Si l'élement a bien été remplacé.
447 * @return false Si l'élement n'a pas pu être remplacé.
448 */
449 virtual bool editElement(const String& column_name, const String& row_name, Real element) = 0;
450
451 /*---------------------------------------------------------------------------*/
452 /*---------------------------------------------------------------------------*/
453
454 /**
455 * @brief Méthode permettant d'obtenir une copie d'un élement.
456 *
457 * Les positions x et y correspondent à l'emplacement du dernier élement manipulé.
458 *
459 * @return Real L'élement trouvé (0 si non trouvé).
460 */
461 virtual Real element() = 0;
462 /**
463 * @brief Méthode permettant d'obtenir une copie d'un élement.
464 *
465 * @param position_x La position de la colonne où se trouve l'élement.
466 * @param position_y La position de la ligne où se trouve l'élement.
467 * @param update_last_position Doit-on déplacer le curseur "dernier élement modifié" ?
468 * @return Real L'élement trouvé (0 si non trouvé).
469 */
470 virtual Real element(Integer position_x, Integer position_y, bool update_last_position = false) = 0;
471 /**
472 * @brief Méthode permettant d'obtenir une copie d'un élement.
473 *
474 * @param column_name Le nom de la colonne où se trouve l'élement.
475 * @param row_name Le nom de la ligne où se trouve l'élement.
476 * @param update_last_position Doit-on déplacer le curseur "dernier élement modifié" ?
477 * @return Real L'élement trouvé (0 si non trouvé).
478 */
479 virtual Real element(const String& column_name, const String& row_name, bool update_last_position = false) = 0;
480
481 /*---------------------------------------------------------------------------*/
482 /*---------------------------------------------------------------------------*/
483
484 /**
485 * @brief Méthode permettant d'obtenir une copie d'une ligne.
486 *
487 * @param position La position de la ligne.
488 * @return RealUniqueArray La copie de la ligne (tableau vide si non trouvée).
489 */
490 virtual RealUniqueArray row(Integer position) = 0;
491 /**
492 * @brief Méthode permettant d'obtenir une copie d'une ligne.
493 *
494 * @param row_name Le nom de la ligne.
495 * @return RealUniqueArray La copie de la ligne (tableau vide si non trouvée).
496 */
497 virtual RealUniqueArray row(const String& row_name) = 0;
498
499 /**
500 * @brief Méthode permettant d'obtenir une copie d'une colonne.
501 *
502 * @param position La position de la colonne.
503 * @return RealUniqueArray La copie de la colonne (tableau vide si non trouvée).
504 */
505 virtual RealUniqueArray column(Integer position) = 0;
506 /**
507 * @brief Méthode permettant d'obtenir une copie d'une colonne.
508 *
509 * @param column_name Le nom de la colonne.
510 * @return RealUniqueArray La copie de la colonne (tableau vide si non trouvée).
511 */
512 virtual RealUniqueArray column(const String& column_name) = 0;
513
514 /*---------------------------------------------------------------------------*/
515 /*---------------------------------------------------------------------------*/
516
517 /**
518 * @brief Méthode permettant d'obtenir la taille d'une ligne.
519 * Incluant les hypothétiques 'trous' dans la ligne.
520 *
521 * @param position La position de la ligne.
522 * @return Integer La taille de la ligne (0 si non trouvée).
523 */
524 virtual Integer rowSize(Integer position) = 0;
525 /**
526 * @brief Méthode permettant d'obtenir la taille d'une ligne.
527 * Incluant les hypotétiques 'trous' dans la ligne.
528 *
529 * @param position Le nom de la ligne.
530 * @return Integer La taille de la ligne (0 si non trouvée).
531 */
532 virtual Integer rowSize(const String& row_name) = 0;
533
534 /**
535 * @brief Méthode permettant d'obtenir la taille d'une colonne.
536 * Incluant les hypotétiques 'trous' dans la colonne.
537 *
538 * @param position La position de la colonne.
539 * @return Integer La taille de la colonne (0 si non trouvée).
540 */
541 virtual Integer columnSize(Integer position) = 0;
542 /**
543 * @brief Méthode permettant d'obtenir la taille d'une colonne.
544 * Incluant les hypotétiques 'trous' dans la colonne.
545 *
546 * @param position Le nom de la colonne.
547 * @return Integer La taille de la colonne (0 si non trouvée).
548 */
549 virtual Integer columnSize(const String& column_name) = 0;
550
551 /*---------------------------------------------------------------------------*/
552 /*---------------------------------------------------------------------------*/
553
554 /**
555 * @brief Méthode permettant de récupérer la position d'une ligne.
556 *
557 * @param row_name Le nom de la ligne.
558 * @return Integer La position de la ligne (-1 si non trouvée).
559 */
560 virtual Integer rowPosition(const String& row_name) = 0;
561 /**
562 * @brief Méthode permettant de récupérer la position d'une colonne.
563 *
564 * @param row_name Le nom de la colonne.
565 * @return Integer La position de la colonne (-1 si non trouvée).
566 */
567 virtual Integer columnPosition(const String& column_name) = 0;
568
569 /*---------------------------------------------------------------------------*/
570 /*---------------------------------------------------------------------------*/
571
572 /**
573 * @brief Méthode permettant de récupérer le nombre de lignes dans le tableau.
574 * C'est, en quelque sorte, le nombre max d'élements que peut contenir une colonne.
575 *
576 * @return Integer Le nombre de lignes du tableau.
577 */
578 virtual Integer numberOfRows() = 0;
579 /**
580 * @brief Méthode permettant de récupérer le nombre de colonnes dans le tableau.
581 * C'est, en quelque sorte, le nombre max d'élements que peut contenir une ligne.
582 *
583 * @return Integer Le nombre de colonnes du tableau.
584 */
585 virtual Integer numberOfColumns() = 0;
586
587 /*---------------------------------------------------------------------------*/
588 /*---------------------------------------------------------------------------*/
589
590 virtual String rowName(Integer position) = 0;
591 virtual String columnName(Integer position) = 0;
592
593 /*---------------------------------------------------------------------------*/
594 /*---------------------------------------------------------------------------*/
595
596 /**
597 * @brief Méthode permettant de changer le nom d'une ligne.
598 *
599 * @param position La position de la ligne.
600 * @param new_name Le nouveau nom de la ligne.
601 * @return true Si le changement a eu lieu.
602 * @return false Si le changement n'a pas eu lieu.
603 */
604 virtual bool editRowName(Integer position, const String& new_name) = 0;
605 /**
606 * @brief Méthode permettant de changer le nom d'une ligne.
607 *
608 * @param row_name Le nom actuel de la ligne.
609 * @param new_name Le nouveau nom de la ligne.
610 * @return true Si le changement a eu lieu.
611 * @return false Si le changement n'a pas eu lieu.
612 */
613 virtual bool editRowName(const String& row_name, const String& new_name) = 0;
614
615 /**
616 * @brief Méthode permettant de changer le nom d'une colonne.
617 *
618 * @param position La position de la colonne.
619 * @param new_name Le nouveau nom de la colonne.
620 * @return true Si le changement a eu lieu.
621 * @return false Si le changement n'a pas eu lieu.
622 */
623 virtual bool editColumnName(Integer position, const String& new_name) = 0;
624 /**
625 * @brief Méthode permettant de changer le nom d'une colonne.
626 *
627 * @param column_name Le nom actuel de la colonne.
628 * @param new_name Le nouveau nom de la colonne.
629 * @return true Si le changement a eu lieu.
630 * @return false Si le changement n'a pas eu lieu.
631 */
632 virtual bool editColumnName(const String& column_name, const String& new_name) = 0;
633
634 /**
635 * @brief Méthode permettant de créer une colonne contenant la moyenne des
636 * éléments de chaque ligne.
637 *
638 * @param column_name Le nom de la nouvelle colonne.
639 * @return Integer La position de la colonne.
640 */
641 virtual Integer addAverageColumn(const String& column_name) = 0;
642
643 /*---------------------------------------------------------------------------*/
644 /*---------------------------------------------------------------------------*/
645 /**
646 * @brief Méthode permettant d'afficher le tableau.
647 * Méthode effectuant des opérations collectives.
648 *
649 * @param rank L'id du processus devant afficher le tableau (-1 pour
650 * signifier "tous les processus").
651 */
652 virtual void print(Integer rank = 0) = 0;
653
654 virtual bool writeFile(const Directory& root_directory, Integer rank) = 0;
655
656 /**
657 * @brief Méthode permettant d'écrire le tableau dans un fichier.
658 * Méthode effectuant des opérations collectives.
659 * Si rank != -1, les processus autres que P0 retournent true.
660 *
661 * @param rank L'id du processus devant écrire dans un fichier
662 * le tableau (-1 pour signifier "tous les processus").
663 * @return true Si le fichier a été correctement écrit.
664 * @return false Si le fichier n'a pas été correctement écrit.
665 */
666 virtual bool writeFile(Integer rank = -1) = 0;
667 /**
668 * @brief Méthode permettant d'écrire le tableau dans un fichier.
669 * Méthode effectuant des opérations collectives.
670 * Si rank != -1, les processus autres que P0 retournent true.
671 *
672 * @param directory Le répertoire où sera écrit le fichier
673 * . Le chemin final sera "./[output_dir]/csv/[directory]/"
674 * @param rank L'id du processus devant écrire dans un fichier
675 * le tableau (-1 pour signifier "tous les processus").
676 * @return true Si le fichier a été correctement écrit.
677 * @return false Si le fichier n'a pas été correctement écrit.
678 *
679 * @deprecated Utiliser setOutputDirectory() puis writeFile() à la place.
680 */
681 virtual bool writeFile(const String& directory, Integer rank = -1) = 0;
682
683 /*---------------------------------------------------------------------------*/
684 /*---------------------------------------------------------------------------*/
685
686 /**
687 * @brief Méthode permettant de récupérer la précision actuellement
688 * utilisée pour l'écriture des valeurs.
689 *
690 * @return Integer La précision.
691 */
692 virtual Integer precision() = 0;
693 /**
694 * @brief Méthode permettant de modifier la précision du print.
695 *
696 * Aussi bien pour la méthode 'print()' que les méthodes 'writeFile()'.
697 *
698 * @warning Le flag "std::fixed" modifie le comportement de "setPrecision()",
699 * si le flag "std::fixed" est désactivé, la précision définira le
700 * nombre de chiffres total (avant et après la virgule) ;
701 * si le flag "std::fixed" est activé, la précision définira le
702 * nombre de chiffres après la virgule. Attention donc lors de
703 * l'utilisation de "std::numeric_limits<Real>::max_digits10"
704 * (pour l'écriture) ou de "std::numeric_limits<Real>::digits10"
705 * (pour la lecture) qui sont à utiliser sans le flag "std::fixed".
706 *
707 * @param precision La nouvelle précision.
708 */
709 virtual void setPrecision(Integer precision) = 0;
710
711 /**
712 * @brief Méthode permettant de savoir si le frag 'std::fixed' est
713 * actif ou non pour l'écriture des valeurs.
714 *
715 * @return true Si oui.
716 * @return false Si non.
717 */
718 virtual bool isFixed() = 0;
719 /**
720 * @brief Méthode permettant de définir le flag 'std::fixed' ou non.
721 *
722 * Aussi bien pour la méthode 'print()' que la méthode 'writetable()'.
723 *
724 * Ce flag permet de 'forcer' le nombre de chiffre après la virgule à
725 * la précision voulu. Par exemple, si l'on a appelé 'setPrecision(4)',
726 * et que l'on appelle 'setFixed(true)', le print de '6.1' donnera '6.1000'.
727 *
728 * @warning Le flag "std::fixed" modifie le comportement de "setPrecision()",
729 * si le flag "std::fixed" est désactivé, la précision définira le
730 * nombre de chiffres total (avant et après la virgule) ;
731 * si le flag "std::fixed" est activé, la précision définira le
732 * nombre de chiffres après la virgule. Attention donc lors de
733 * l'utilisation de "std::numeric_limits<Real>::max_digits10"
734 * (pour l'écriture) ou de "std::numeric_limits<Real>::digits10"
735 * (pour la lecture) qui sont à utiliser sans le flag "std::fixed".
736 *
737 * @param fixed Si le flag 'std::fixed' doit être défini ou non.
738 */
739 virtual void setFixed(bool fixed) = 0;
740
741 /**
742 * @brief Méthode permettant de savoir si le frag 'std::scientific' est
743 * actif ou non pour l'écriture des valeurs.
744 *
745 * @return true Si oui.
746 * @return false Si non.
747 */
749 /**
750 * @brief Méthode permettant de définir le flag 'std::scientific' ou non.
751 *
752 * Aussi bien pour la méthode 'print()' que la méthode 'writetable()'.
753 *
754 * Ce flag permet de 'forcer' l'affichage des valeurs en écriture
755 * scientifique.
756 *
757 * @param use_scientific Si le flag 'std::scientific' doit être défini ou non.
758 */
759 virtual void setForcedToUseScientificNotation(bool use_scientific) = 0;
760
761 /**
762 * @brief Accesseur permettant de récupérer le nom du répertoire où sera
763 * placé les tableaux.
764 *
765 * Peut-être différent pour chaque processus (dépendant de l'implémentation).
766 *
767 * @return String Le répertoire.
768 */
769 virtual String outputDirectory() = 0;
770 /**
771 * @brief Accesseur permettant de définir le répertoire
772 * dans lequel enregistrer les tableaux.
773 *
774 * Peut-être différent pour chaque processus (dépendant de l'implémentation).
775 *
776 * @param directory Le répertoire.
777 */
778 virtual void setOutputDirectory(const String& directory) = 0;
779
780 /**
781 * @brief Accesseur permettant de récupérer le nom des tableaux.
782 *
783 * Peut-être différent pour chaque processus (dépendant de l'implémentation).
784 *
785 * @return String Le nom.
786 */
787 virtual String tableName() = 0;
788 /**
789 * @brief Accesseur permettant de définir le nom du tableau.
790 *
791 * Peut-être différent pour chaque processus (dépendant de l'implémentation).
792 *
793 * @param name Le nom.
794 */
795 virtual void setTableName(const String& name) = 0;
796
797 /**
798 * @brief Accesseur permettant de récupérer le nom des fichiers.
799 *
800 * Peut-être différent pour chaque processus (dépendant de l'implémentation).
801 *
802 * @return String Le nom.
803 */
804 virtual String fileName() = 0;
805
806 /**
807 * @brief Accesseur permettant de récupérer le chemin où sera
808 * enregistrés les tableaux.
809 *
810 * En comparaison avec rootPathOutput(), le retour peut être
811 * different selon le "directory" et le "name".
812 *
813 * @return String Le chemin.
814 */
815 virtual Directory outputPath() = 0;
816
817 /**
818 * @brief Accesseur permettant de récupérer le chemin où l'implémentation
819 * enregistre ces tableaux.
820 *
821 * En comparaison avec pathOutput(), le retour ne dépend pas de "directory" ou de "name".
822 *
823 * @return String Le chemin.
824 */
825 virtual Directory rootPath() = 0;
826
827 /**
828 * @brief Méthode permettant de savoir si les paramètres actuellement en possession
829 * de l'implémentation lui permet d'écrire un fichier par processus.
830 *
831 * @return true Si oui, l'implémentation peut écrire un fichier par processus.
832 * @return false Sinon, il n'y a qu'un seul fichier qui peut être écrit.
833 */
834 virtual bool isOneFileByRanksPermited() = 0;
835
836 /**
837 * @brief Méthode permettant de connaitre le type de fichier du service.
838 *
839 * @return String Le type de fichier.
840 */
841 virtual String fileType() = 0;
842
843 /**
844 * @brief Méthode permettant de récupérer une référence vers l'objet
845 * SimpleTableInternal utilisé.
846 *
847 * @return Ref<SimpleTableInternal> Une copie de la référence.
848 */
849 virtual Ref<SimpleTableInternal> internal() = 0;
850
851 /**
852 * @brief Méthode permettant de récupérer une référence vers l'objet
853 * ISimpleTableReaderWriter utilisé.
854 *
855 * @return Ref<ISimpleTableReaderWriter> Une copie de la référence.
856 */
857 virtual Ref<ISimpleTableReaderWriter> readerWriter() = 0;
858};
859
860/*---------------------------------------------------------------------------*/
861/*---------------------------------------------------------------------------*/
862
863} // End namespace Arcane
864
865/*---------------------------------------------------------------------------*/
866/*---------------------------------------------------------------------------*/
867
868#endif
869
870/*---------------------------------------------------------------------------*/
871/*---------------------------------------------------------------------------*/
Classe gérant un répertoire.
Definition Directory.h:33
Interface représentant une sortie de tableau simple.
virtual bool addElementsInColumn(Integer position, ConstArrayView< Real > elements)=0
Méthode permettant d'ajouter plusieurs éléments sur une colonne.
virtual bool addElementsInRow(Integer position, ConstArrayView< Real > elements)=0
Méthode permettant d'ajouter plusieurs éléments sur une ligne.
virtual void setTableName(const String &name)=0
Accesseur permettant de définir le nom du tableau.
virtual Real elementDown(bool update_last_position=false)=0
Méthode permettant de récupérer un élément en-dessous du dernier élement dernièrement manipulé (ligne...
virtual bool init(const String &table_name)=0
Méthode permettant d'initialiser le tableau.
virtual bool editElementDown(Real element, bool update_last_position=true)=0
Méthode permettant d'éditer un élément en-dessous du dernier élement dernièrement manipulé (ligne du ...
virtual void setPrecision(Integer precision)=0
Méthode permettant de modifier la précision du print.
virtual bool addElementInRow(Integer position, Real element)=0
Méthode permettant d'ajouter un élément à une ligne.
virtual Ref< SimpleTableInternal > internal()=0
Méthode permettant de récupérer une référence vers l'objet SimpleTableInternal utilisé.
virtual String fileType()=0
Méthode permettant de connaitre le type de fichier du service.
virtual bool init(const String &table_name, const String &directory_name)=0
Méthode permettant d'initialiser le tableau.
virtual Integer rowSize(Integer position)=0
Méthode permettant d'obtenir la taille d'une ligne. Incluant les hypothétiques 'trous' dans la ligne.
virtual String fileName()=0
Accesseur permettant de récupérer le nom des fichiers.
virtual bool addElementInColumn(const String &column_name, Real element, bool create_if_not_exist=true)=0
Méthode permettant l'ajouter un élément sur une colonne.
virtual Integer columnSize(const String &column_name)=0
Méthode permettant d'obtenir la taille d'une colonne. Incluant les hypotétiques 'trous' dans la colon...
virtual Integer numberOfRows()=0
Méthode permettant de récupérer le nombre de lignes dans le tableau. C'est, en quelque sorte,...
virtual bool editColumnName(Integer position, const String &new_name)=0
Méthode permettant de changer le nom d'une colonne.
virtual bool addElementInColumn(Integer position, Real element)=0
Méthode permettant d'ajouter un élément à une colonne.
virtual bool editElementRight(Real element, bool update_last_position=true)=0
Méthode permettant d'éditer un élément à droite du dernier élement dernièrement manipulé (même ligne/...
virtual bool writeFile(Integer rank=-1)=0
Méthode permettant d'écrire le tableau dans un fichier. Méthode effectuant des opérations collectives...
virtual void setOutputDirectory(const String &directory)=0
Accesseur permettant de définir le répertoire dans lequel enregistrer les tableaux.
virtual bool editElementUp(Real element, bool update_last_position=true)=0
Méthode permettant d'éditer un élément au-dessus du dernier élement dernièrement manipulé (ligne du d...
virtual RealUniqueArray column(Integer position)=0
Méthode permettant d'obtenir une copie d'une colonne.
virtual Integer rowPosition(const String &row_name)=0
Méthode permettant de récupérer la position d'une ligne.
virtual bool addElementsInRow(const String &row_name, ConstArrayView< Real > elements, bool create_if_not_exist=true)=0
Méthode permettant d'ajouter plusieurs éléments sur une ligne.
virtual String outputDirectory()=0
Accesseur permettant de récupérer le nom du répertoire où sera placé les tableaux.
virtual bool addElementInSameRow(Real element)=0
Méthode permettant d'ajouter un élément sur la ligne dernièrement manipulée.
virtual Real elementRight(bool update_last_position=false)=0
Méthode permettant de récupérer un élément à droite du dernier élement dernièrement manipulé (même li...
virtual Integer addRow(const String &row_name)=0
Méthode permettant d'ajouter une ligne.
virtual Integer addColumn(const String &column_name)=0
Méthode permettant d'ajouter une colonne.
virtual bool editColumnName(const String &column_name, const String &new_name)=0
Méthode permettant de changer le nom d'une colonne.
virtual bool editElement(Integer position_x, Integer position_y, Real element)=0
Méthode permettant de modifier un élement dans le tableau.
virtual Real elementLeft(bool update_last_position=false)=0
Méthode permettant de récupérer un élément à gauche du dernier élement dernièrement manipulé (même li...
virtual bool addColumns(StringConstArrayView columns_names)=0
Méthode permettant d'ajouter plusieurs colonnes.
virtual bool editRowName(const String &row_name, const String &new_name)=0
Méthode permettant de changer le nom d'une ligne.
virtual RealUniqueArray row(const String &row_name)=0
Méthode permettant d'obtenir une copie d'une ligne.
virtual bool addElementInSameColumn(Real element)=0
Méthode permettant d'ajouter un élément sur la colonne dernièrement manipulée.
virtual Integer addRow(const String &row_name, ConstArrayView< Real > elements)=0
Méthode permettant d'ajouter une ligne.
virtual Ref< ISimpleTableReaderWriter > readerWriter()=0
Méthode permettant de récupérer une référence vers l'objet ISimpleTableReaderWriter utilisé.
virtual RealUniqueArray row(Integer position)=0
Méthode permettant d'obtenir une copie d'une ligne.
virtual Integer columnPosition(const String &column_name)=0
Méthode permettant de récupérer la position d'une colonne.
virtual Integer precision()=0
Méthode permettant de récupérer la précision actuellement utilisée pour l'écriture des valeurs.
virtual String tableName()=0
Accesseur permettant de récupérer le nom des tableaux.
virtual void print(Integer rank=0)=0
Méthode permettant d'afficher le tableau. Méthode effectuant des opérations collectives.
virtual Integer numberOfColumns()=0
Méthode permettant de récupérer le nombre de colonnes dans le tableau. C'est, en quelque sorte,...
virtual bool addElementsInSameRow(ConstArrayView< Real > elements)=0
Méthode permettant d'ajouter plusieurs éléments sur la ligne dernièrement manipulée.
virtual RealUniqueArray column(const String &column_name)=0
Méthode permettant d'obtenir une copie d'une colonne.
virtual Integer addAverageColumn(const String &column_name)=0
Méthode permettant de créer une colonne contenant la moyenne des éléments de chaque ligne.
virtual Real elementUp(bool update_last_position=false)=0
Méthode permettant de récupérer un élément au-dessus du dernier élement dernièrement manipulé (ligne ...
virtual bool isForcedToUseScientificNotation()=0
Méthode permettant de savoir si le frag 'std::scientific' est actif ou non pour l'écriture des valeur...
virtual bool writeFile(const String &directory, Integer rank=-1)=0
Méthode permettant d'écrire le tableau dans un fichier. Méthode effectuant des opérations collectives...
virtual bool addElementsInColumn(const String &column_name, ConstArrayView< Real > elements, bool create_if_not_exist=true)=0
Méthode permettant d'ajouter plusieurs éléments sur une colonne.
virtual Real element(Integer position_x, Integer position_y, bool update_last_position=false)=0
Méthode permettant d'obtenir une copie d'un élement.
virtual Real element(const String &column_name, const String &row_name, bool update_last_position=false)=0
Méthode permettant d'obtenir une copie d'un élement.
virtual Real element()=0
Méthode permettant d'obtenir une copie d'un élement.
virtual bool init()=0
Méthode permettant d'initialiser le tableau.
virtual bool editElement(Real element)=0
Méthode permettant de modifier un élement dans le tableau.
virtual bool isFixed()=0
Méthode permettant de savoir si le frag 'std::fixed' est actif ou non pour l'écriture des valeurs.
virtual Integer rowSize(const String &row_name)=0
Méthode permettant d'obtenir la taille d'une ligne. Incluant les hypotétiques 'trous' dans la ligne.
virtual bool addElementInRow(const String &row_name, Real element, bool create_if_not_exist=true)=0
Méthode permettant l'ajouter un élément sur une ligne.
virtual void clear()=0
Méthode permettant de remettre à zéro les tableaux.
virtual void setFixed(bool fixed)=0
Méthode permettant de définir le flag 'std::fixed' ou non.
virtual bool addElementsInSameColumn(ConstArrayView< Real > elements)=0
Méthode permettant d'ajouter plusieurs éléments sur la colonne dernièrement manipulée.
virtual bool addRows(StringConstArrayView rows_names)=0
Méthode permettant d'ajouter plusieurs lignes.
virtual bool editRowName(Integer position, const String &new_name)=0
Méthode permettant de changer le nom d'une ligne.
virtual Directory rootPath()=0
Accesseur permettant de récupérer le chemin où l'implémentation enregistre ces tableaux.
virtual bool isOneFileByRanksPermited()=0
Méthode permettant de savoir si les paramètres actuellement en possession de l'implémentation lui per...
virtual Directory outputPath()=0
Accesseur permettant de récupérer le chemin où sera enregistrés les tableaux.
virtual bool editElement(const String &column_name, const String &row_name, Real element)=0
Méthode permettant de modifier un élement dans le tableau.
virtual Integer columnSize(Integer position)=0
Méthode permettant d'obtenir la taille d'une colonne. Incluant les hypotétiques 'trous' dans la colon...
virtual Integer addColumn(const String &column_name, ConstArrayView< Real > elements)=0
Méthode permettant d'ajouter une colonne.
virtual void setForcedToUseScientificNotation(bool use_scientific)=0
Méthode permettant de définir le flag 'std::scientific' ou non.
virtual bool editElementLeft(Real element, bool update_last_position=true)=0
Méthode permettant d'éditer un élément à gauche du dernier élement dernièrement manipulé (même ligne/...
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 -*-