Arcane  4.1.12.0
Developer documentation
Loading...
Searching...
No Matches
SimpleCsvOutputService.h
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2026 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/* SimpleCsvOutputService.h (C) 2000-2022 */
9/* */
10/* Service for building and outputting a table in CSV format. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_STD_SIMPLECSVOUTPUTSERVICE_H
13#define ARCANE_STD_SIMPLECSVOUTPUTSERVICE_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include "arcane/core/ISimpleTableOutput.h"
18
19#include "arcane/std/SimpleCsvReaderWriter.h"
20#include "arcane/std/SimpleTableInternalMng.h"
21#include "arcane/std/SimpleTableWriterHelper.h"
22
23#include "arcane/core/Directory.h"
24#include "arcane/core/IMesh.h"
25
26#include "arcane/std/SimpleCsvOutput_axl.h"
27
28/*---------------------------------------------------------------------------*/
29/*---------------------------------------------------------------------------*/
30
31namespace Arcane
32{
33
34/*---------------------------------------------------------------------------*/
35/*---------------------------------------------------------------------------*/
36
37class SimpleCsvOutputService
39{
40 public:
41
42 explicit SimpleCsvOutputService(const ServiceBuildInfo& sbi)
44 , m_is_already_init(false)
45 , m_with_option(sbi.creationType() == ST_CaseOption)
46 {
47 }
48
49 public:
50
51 bool init() override;
52 bool init(const String& table_name) override;
53 bool init(const String& table_name, const String& directory_name) override;
54
55 void clear() override;
56
57 Integer addRow(const String& row_name) override
58 {
59 return m_simple_table_internal_mng.addRow(row_name);
60 }
61 Integer addRow(const String& row_name, ConstArrayView<Real> elements) override
62 {
63 return m_simple_table_internal_mng.addRow(row_name, elements);
64 }
65 bool addRows(StringConstArrayView rows_names) override
66 {
67 return m_simple_table_internal_mng.addRows(rows_names);
68 }
69 Integer addColumn(const String& column_name) override
70 {
71 return m_simple_table_internal_mng.addColumn(column_name);
72 }
73 Integer addColumn(const String& column_name, ConstArrayView<Real> elements) override
74 {
75 return m_simple_table_internal_mng.addColumn(column_name, elements);
76 }
77 bool addColumns(StringConstArrayView columns_names) override
78 {
79 return m_simple_table_internal_mng.addColumns(columns_names);
80 }
81 bool addElementInRow(Integer position, Real element) override
82 {
83 return m_simple_table_internal_mng.addElementInRow(position, element);
84 }
85 bool addElementInRow(const String& row_name, Real element, bool create_if_not_exist) override
86 {
87 return m_simple_table_internal_mng.addElementInRow(row_name, element, create_if_not_exist);
88 }
90 {
91 return m_simple_table_internal_mng.addElementInSameRow(element);
92 }
93 bool addElementsInRow(Integer position, ConstArrayView<Real> elements) override
94 {
95 return m_simple_table_internal_mng.addElementsInRow(position, elements);
96 }
97 bool addElementsInRow(const String& row_name, ConstArrayView<Real> elements, bool create_if_not_exist) override
98 {
99 return m_simple_table_internal_mng.addElementsInRow(row_name, elements, create_if_not_exist);
100 }
102 {
103 return m_simple_table_internal_mng.addElementsInSameRow(elements);
104 }
105 bool addElementInColumn(Integer position, Real element) override
106 {
107 return m_simple_table_internal_mng.addElementInColumn(position, element);
108 }
109 bool addElementInColumn(const String& column_name, Real element, bool create_if_not_exist) override
110 {
111 return m_simple_table_internal_mng.addElementInColumn(column_name, element, create_if_not_exist);
112 }
114 {
115 return m_simple_table_internal_mng.addElementInSameColumn(element);
116 }
117
118 bool addElementsInColumn(Integer position, ConstArrayView<Real> elements) override
119 {
120 return m_simple_table_internal_mng.addElementsInColumn(position, elements);
121 }
122 bool addElementsInColumn(const String& column_name, ConstArrayView<Real> elements, bool create_if_not_exist) override
123 {
124 return m_simple_table_internal_mng.addElementsInColumn(column_name, elements, create_if_not_exist);
125 }
127 {
128 return m_simple_table_internal_mng.addElementsInSameColumn(elements);
129 };
130
131 bool editElementUp(Real element, bool update_last_position) override
132 {
133 return m_simple_table_internal_mng.editElementUp(element, update_last_position);
134 };
135 bool editElementDown(Real element, bool update_last_position) override
136 {
137 return m_simple_table_internal_mng.editElementDown(element, update_last_position);
138 };
139 bool editElementLeft(Real element, bool update_last_position) override
140 {
141 return m_simple_table_internal_mng.editElementLeft(element, update_last_position);
142 };
143 bool editElementRight(Real element, bool update_last_position) override
144 {
145 return m_simple_table_internal_mng.editElementRight(element, update_last_position);
146 };
147
148 Real elementUp(bool update_last_position) override
149 {
150 return m_simple_table_internal_mng.elementUp(update_last_position);
151 }
152 Real elementDown(bool update_last_position) override
153 {
154 return m_simple_table_internal_mng.elementDown(update_last_position);
155 }
156 Real elementLeft(bool update_last_position) override
157 {
158 return m_simple_table_internal_mng.elementLeft(update_last_position);
159 }
160 Real elementRight(bool update_last_position) override
161 {
162 return m_simple_table_internal_mng.elementRight(update_last_position);
163 }
164
165 bool editElement(Real element) override
166 {
167 return m_simple_table_internal_mng.editElement(element);
168 }
169 bool editElement(Integer position_x, Integer position_y, Real element) override
170 {
171 return m_simple_table_internal_mng.editElement(position_x, position_y, element);
172 }
173 bool editElement(const String& column_name, const String& row_name, Real element) override
174 {
175 return m_simple_table_internal_mng.editElement(column_name, row_name, element);
176 }
177
178 Real element() override
179 {
180 return m_simple_table_internal_mng.element();
181 }
182 Real element(Integer position_x, Integer position_y, bool update_last_position) override
183 {
184 return m_simple_table_internal_mng.element(position_x, position_y, update_last_position);
185 }
186 Real element(const String& column_name, const String& row_name, bool update_last_position) override
187 {
188 return m_simple_table_internal_mng.element(column_name, row_name, update_last_position);
189 }
190
191 RealUniqueArray row(Integer position) override
192 {
193 return m_simple_table_internal_mng.row(position);
194 }
195 RealUniqueArray column(Integer position) override
196 {
197 return m_simple_table_internal_mng.column(position);
198 }
199
200 RealUniqueArray row(const String& row_name) override
201 {
202 return m_simple_table_internal_mng.row(row_name);
203 }
204 RealUniqueArray column(const String& column_name) override
205 {
206 return m_simple_table_internal_mng.column(column_name);
207 }
208
209 Integer rowSize(Integer position) override
210 {
211 return m_simple_table_internal_mng.rowSize(position);
212 }
213 Integer columnSize(Integer position) override
214 {
215 return m_simple_table_internal_mng.columnSize(position);
216 }
217
218 Integer rowSize(const String& row_name) override
219 {
220 return m_simple_table_internal_mng.rowSize(row_name);
221 }
222 Integer columnSize(const String& column_name) override
223 {
224 return m_simple_table_internal_mng.columnSize(column_name);
225 }
226
227 Integer rowPosition(const String& row_name) override
228 {
229 return m_simple_table_internal_mng.rowPosition(row_name);
230 }
231 Integer columnPosition(const String& column_name) override
232 {
233 return m_simple_table_internal_mng.columnPosition(column_name);
234 }
235
237 {
238 return m_simple_table_internal_mng.numberOfRows();
239 }
241 {
242 return m_simple_table_internal_mng.numberOfColumns();
243 }
244
245 String rowName(Integer position) override
246 {
247 return m_simple_table_internal_mng.rowName(position);
248 }
249 String columnName(Integer position) override
250 {
251 return m_simple_table_internal_mng.columnName(position);
252 }
253
254 bool editRowName(Integer position, const String& new_name) override
255 {
256 return m_simple_table_internal_mng.editRowName(position, new_name);
257 }
258 bool editRowName(const String& row_name, const String& new_name) override
259 {
260 return m_simple_table_internal_mng.editRowName(row_name, new_name);
261 }
262
263 bool editColumnName(Integer position, const String& new_name) override
264 {
265 return m_simple_table_internal_mng.editColumnName(position, new_name);
266 }
267 bool editColumnName(const String& column_name, const String& new_name) override
268 {
269 return m_simple_table_internal_mng.editColumnName(column_name, new_name);
270 }
271
272 Integer addAverageColumn(const String& column_name) override
273 {
274 return m_simple_table_internal_mng.addAverageColumn(column_name);
275 }
276
277 void print(Integer rank) override
278 {
279 return m_simple_table_output_mng.print(rank);
280 }
281 bool writeFile(Integer rank) override
282 {
283 return m_simple_table_output_mng.writeFile(rank);
284 }
285 bool writeFile(const Directory& root_directory, Integer rank) override
286 {
287 return m_simple_table_output_mng.writeFile(root_directory, rank);
288 }
289 bool writeFile(const String& directory, Integer rank) override;
290
291 Integer precision() override { return m_simple_table_output_mng.precision(); }
293 {
294 return m_simple_table_output_mng.setPrecision(precision);
295 }
296
297 bool isFixed() override { return m_simple_table_output_mng.isFixed(); }
298 void setFixed(bool fixed) override { return m_simple_table_output_mng.setFixed(fixed); };
299
301 {
302 return m_simple_table_output_mng.isForcedToUseScientificNotation();
303 }
304 void setForcedToUseScientificNotation(bool use_scientific) override
305 {
306 return m_simple_table_output_mng.setForcedToUseScientificNotation(use_scientific);
307 }
308
310 {
311 return m_simple_table_output_mng.outputDirectory();
312 }
313 void setOutputDirectory(const String& directory) override
314 {
315 return m_simple_table_output_mng.setOutputDirectory(directory);
316 }
317
318 String tableName() override
319 {
320 return m_simple_table_output_mng.tableName();
321 }
322 void setTableName(const String& name) override
323 {
324 return m_simple_table_output_mng.setTableName(name);
325 }
326 String fileName() override
327 {
328 return m_simple_table_output_mng.fileName();
329 }
330
332 {
333 return m_simple_table_output_mng.outputPath();
334 }
336 {
337 return m_simple_table_output_mng.rootPath();
338 }
339
340 String fileType() override
341 {
342 return m_simple_table_output_mng.fileType();
343 }
344
346 {
347 return m_simple_table_output_mng.isOneFileByRanksPermited();
348 }
349
350 Ref<SimpleTableInternal> internal() override { return m_internal; }
352 {
353 return m_simple_csv_reader_writer;
354 }
355
356 private:
357
358 SimpleTableInternalMng m_simple_table_internal_mng;
359 SimpleTableWriterHelper m_simple_table_output_mng;
360
361 Ref<SimpleTableInternal> m_internal;
362 Ref<SimpleCsvReaderWriter> m_simple_csv_reader_writer;
363
364 bool m_is_already_init;
365 bool m_with_option;
366};
367
368/*---------------------------------------------------------------------------*/
369/*---------------------------------------------------------------------------*/
370
371} // End namespace Arcane
372
373/*---------------------------------------------------------------------------*/
374/*---------------------------------------------------------------------------*/
375
376#endif
ArcaneSimpleCsvOutputObject(const Arcane::ServiceBuildInfo &sbi)
Constructeur.
Constant view of an array of type T.
Class managing a directory.
Definition Directory.h:36
Reference to an instance.
eServiceType creationType() const
Type of service that can be created by this instance.
Structure containing the information to create a service.
Integer precision() override
Method allowing retrieval of the precision currently used for writing values.
void setOutputDirectory(const String &directory) override
Accessor allowing definition of the directory in which the arrays will be saved.
String tableName() override
Accessor allowing retrieval of the name of the arrays.
bool editElementRight(Real element, bool update_last_position) override
Method to edit an element to the right of the last element manipulated (same row/column to the right)...
bool editColumnName(Integer position, const String &new_name) override
Method allowing changing the name of a column.
bool editRowName(Integer position, const String &new_name) override
Method allowing changing the name of a row.
Integer numberOfColumns() override
Method allowing retrieval of the number of columns in the array. This is, in a way,...
bool addElementsInRow(const String &row_name, ConstArrayView< Real > elements, bool create_if_not_exist) override
Method to add multiple elements to a row.
void clear() override
Method to clear the tables.
Directory rootPath() override
Accessor allowing retrieval of the path where the implementation saves these arrays.
RealUniqueArray column(Integer position) override
Method allowing retrieval of a copy of a column.
Real element(Integer position_x, Integer position_y, bool update_last_position) override
Method allowing retrieval of a copy of an element.
bool addElementInSameRow(Real element) override
Method to add an element to the last manipulated row.
bool editRowName(const String &row_name, const String &new_name) override
Method allowing changing the name of a row.
bool addElementInRow(const String &row_name, Real element, bool create_if_not_exist) override
Method to add an element to a row.
RealUniqueArray row(const String &row_name) override
Method allowing retrieval of a copy of a row.
bool isForcedToUseScientificNotation() override
Method allowing knowledge of whether the 'std::scientific' flag is active or not for writing values.
Real elementRight(bool update_last_position) override
Method to retrieve an element to the right of the last element manipulated (same row/column to the ri...
void print(Integer rank) override
Method allowing display of the array. Method performing collective operations.
bool isFixed() override
Method allowing knowledge of whether the 'std::fixed' flag is active or not for writing values.
void setFixed(bool fixed) override
Method allowing setting the 'std::fixed' flag or not.
bool addElementInColumn(const String &column_name, Real element, bool create_if_not_exist) override
Method to add an element to a column.
bool addElementsInSameRow(ConstArrayView< Real > elements) override
Method to add multiple elements to the last manipulated row.
Integer columnPosition(const String &column_name) override
Method allowing retrieval of the position of a column.
Integer addColumn(const String &column_name) override
Method to add a column.
bool addElementsInColumn(Integer position, ConstArrayView< Real > elements) override
Method to add multiple elements to a column.
Directory outputPath() override
Accessor allowing retrieval of the path where the arrays will be saved.
Real elementLeft(bool update_last_position) override
Method to retrieve an element to the left of the last element manipulated (same row/column to the lef...
void setForcedToUseScientificNotation(bool use_scientific) override
Method allowing setting the 'std::scientific' flag or not.
Integer rowSize(const String &row_name) override
Method allowing retrieval of the size of a row. Including hypothetical 'gaps' in the row.
bool addElementsInSameColumn(ConstArrayView< Real > elements) override
Method to add multiple elements to the last manipulated column.
bool editElement(const String &column_name, const String &row_name, Real element) override
Method allowing modification of an element in the array.
Real elementDown(bool update_last_position) override
Method to retrieve an element below the last element manipulated (row below/same column).
bool addRows(StringConstArrayView rows_names) override
Method to add multiple rows.
bool addElementsInRow(Integer position, ConstArrayView< Real > elements) override
Method to add multiple elements to a row.
Integer addRow(const String &row_name) override
Method to add a row.
Integer rowSize(Integer position) override
Method allowing retrieval of the size of a row. Including hypothetical 'gaps' in the row.
bool editColumnName(const String &column_name, const String &new_name) override
Method allowing changing the name of a column.
Real elementUp(bool update_last_position) override
Method to retrieve an element above the last element manipulated (row above/same column).
bool editElement(Integer position_x, Integer position_y, Real element) override
Method to modify an element in the table.
Real element() override
Method allowing retrieval of a copy of an element.
Integer columnSize(const String &column_name) override
Method allowing retrieval of the size of a column. Including hypothetical 'gaps' in the column.
RealUniqueArray column(const String &column_name) override
Method allowing retrieval of a copy of a column.
Integer addAverageColumn(const String &column_name) override
Method allowing creation of a column containing the average of the elements of each row.
String outputDirectory() override
Accessor allowing retrieval of the name of the directory where the arrays will be placed.
bool addElementInRow(Integer position, Real element) override
Method to add an element to a row.
Integer addRow(const String &row_name, ConstArrayView< Real > elements) override
Method to add a row.
bool editElement(Real element) override
Method to modify an element in the table.
bool editElementUp(Real element, bool update_last_position) override
Method to edit an element above the last element manipulated (row above/same column).
Integer addColumn(const String &column_name, ConstArrayView< Real > elements) override
Method to add a column.
bool writeFile(Integer rank) override
Method allowing writing the array to a file. Method performing collective operations....
bool editElementDown(Real element, bool update_last_position) override
Method to edit an element below the last element manipulated (row below/same column).
Integer columnSize(Integer position) override
Method allowing retrieval of the size of a column. Including hypothetical 'gaps' in the column.
RealUniqueArray row(Integer position) override
Method allowing retrieval of a copy of a row.
Real element(const String &column_name, const String &row_name, bool update_last_position) override
Method allowing retrieval of a copy of an element.
bool addElementInColumn(Integer position, Real element) override
Method to add an element to a column.
Ref< SimpleTableInternal > internal() override
Method allowing retrieval of a reference to the SimpleTableInternal object used.
Integer numberOfRows() override
Method allowing retrieval of the number of rows in the array. This is, in a way, the maximum number o...
bool addColumns(StringConstArrayView columns_names) override
Method to add multiple columns.
bool editElementLeft(Real element, bool update_last_position) override
Method to edit an element to the left of the last element manipulated (same row/column to the left).
String fileName() override
Accessor allowing retrieval of the file name.
bool init() override
Method to initialize the table.
String fileType() override
Method allowing knowledge of the service's file type.
bool isOneFileByRanksPermited() override
Method allowing knowledge of whether the parameters currently held by the implementation allow it to ...
void setTableName(const String &name) override
Accessor allowing definition of the array name.
Ref< ISimpleTableReaderWriter > readerWriter() override
Method allowing retrieval of a reference to the ISimpleTableReaderWriter object used.
Integer rowPosition(const String &row_name) override
Method allowing retrieval of the position of a row.
void setPrecision(Integer precision) override
Method allowing modification of the print precision.
bool addElementsInColumn(const String &column_name, ConstArrayView< Real > elements, bool create_if_not_exist) override
Method to add multiple elements to a column.
bool addElementInSameColumn(Real element) override
Method to add an element to the last manipulated column.
String columnName(Integer position) override
Method allowing retrieval of the name of a column from its position.
String rowName(Integer position) override
Method allowing retrieval of the name of a row from its position.
bool writeFile(Integer rank) override
-- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature --
ConstArrayView< String > StringConstArrayView
C equivalent of a 1D array of strings.
Definition UtilsTypes.h:492
Int32 Integer
Type representing an integer.
@ ST_CaseOption
The service is used at the dataset level.
UniqueArray< Real > RealUniqueArray
Dynamic 1D array of reals.
Definition UtilsTypes.h:349
double Real
Type representing a real number.