Arcane  v3.16.8.0
Documentation utilisateur
Chargement...
Recherche...
Aucune correspondance
ISimpleTableInternalComparator.h
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2025 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/* ISimpleTableInternalComparator.h (C) 2000-2025 */
9/* */
10/* Interface représentant un comparateur de SimpleTableInternal. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_CORE_ISIMPLETABLEINTERNALCOMPARATOR_H
13#define ARCANE_CORE_ISIMPLETABLEINTERNALCOMPARATOR_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include "arcane/core/ISimpleTableInternalMng.h"
18
20
21/*---------------------------------------------------------------------------*/
22/*---------------------------------------------------------------------------*/
23
24namespace Arcane
25{
26
27/*---------------------------------------------------------------------------*/
28/*---------------------------------------------------------------------------*/
29
30/**
31 * @brief Interface de classe représentant un comparateur de
32 * SimpleTableInternal (aka STI).
33 *
34 * Le principe est de comparer les valeurs d'un STI avec
35 * les valeurs d'un STI de référence, en utilisant un epsilon
36 * représentant la marge d'erreur acceptable.
37 *
38 * Il existe deux types de manières de configurer ce comparateur :
39 * - deux tableaux de String (ligne/colonne),
40 * - deux expressions régulières (ligne/colonne).
41 *
42 * On peut ajouter des noms de lignes/colonnes dans ces tableaux,
43 * préciser si ce sont des lignes/colonnes à inclure dans la
44 * comparaison au, au contraire, si ces lignes/colonnes sont
45 * à exclure de la comparaison.
46 *
47 * Idem pour les expressions régulières, on ajoute une expression
48 * régulière lignes/colonnes et on précise si ce sont des
49 * expressions incluant ou excluant des lignes/colonnes.
50 *
51 *
52 * Si les deux types de manières sont définis, les tableaux
53 * priment sur les expressions régulières : d'abord on regarde
54 * la présence du nom de la ligne/colonne dans le tableau correspondant.
55 *
56 * Si le nom est présent, on inclut/exclut cette ligne/colonne de la
57 * comparaison.
58 * Si le nom est absent mais qu'il y a une expression régulière de
59 * défini, on recherche une correspondance dedans.
60 *
61 * Si aucun des types ne sont défini (tableau vide et expression
62 * régulière vide), on inclut toutes les lignes/colonnes dans
63 * la comparaison.
64 */
65class ARCANE_CORE_EXPORT ISimpleTableInternalComparator
66{
67 public:
68 virtual ~ISimpleTableInternalComparator() = default;
69
70 public:
71 /**
72 * @brief Méthode permettant de comparer les valeurs des deux STI.
73 *
74 * @param compare_dimension_too Si l'on doit comparer les dimensions des STI.
75 * @return true S'il n'y a pas de différences.
76 * @return false S'il y a au moins une différence.
77 */
78 virtual bool compare(bool compare_dimension_too = false) = 0;
79
80 /**
81 * @brief Méthode permettant de comparer uniquement un élement.
82 * Les deux SimpleTableInternal sont représentés par des Ref,
83 * donc toujours à jour.
84 * Cette méthode peut être utilisé pendant le calcul, permettant
85 * de comparer les valeurs au fur et à mesure de l'avancement du
86 * calcul, au lieu de faire une comparaison final à la fin (il est
87 * tout de même possible de faire les deux).
88 *
89 * @param column_name Le nom de la colonne où se trouve l'élément.
90 * @param row_name Le nom de la ligne où se trouve l'élément.
91 * @return true Si les deux valeurs sont égales.
92 * @return false Si les deux valeurs sont différentes.
93 */
94 virtual bool compareElem(const String& column_name, const String& row_name) = 0;
95
96 /**
97 * @brief Méthode permettant de comparer une valeur avec
98 * une valeur du tableau de référence.
99 * Cette méthode n'utilise pas l'internal 'toCompare'.
100 *
101 * @param elem La valeur à comparer.
102 * @param column_name Le nom de la colonne où se trouve l'élément de référence.
103 * @param row_name Le nom de la ligne où se trouve l'élément de référence.
104 * @return true Si les deux valeurs sont égales.
105 * @return false Si les deux valeurs sont différentes.
106 */
107 virtual bool compareElem(Real elem, const String& column_name, const String& row_name) = 0;
108
109 /**
110 * @brief Méthode permettant de vider les tableaux de comparaison
111 * et les expressions régulières. Ne touche pas aux STI.
112 *
113 */
114 virtual void clearComparator() = 0;
115
116 /**
117 * @brief Méthode permettant d'ajouter une colonne dans la liste des colonnes
118 * à comparer.
119 *
120 * @param column_name Le nom de la colonne à comparer.
121 * @return true Si le nom a bien été ajouté.
122 * @return false Sinon.
123 */
124 virtual bool addColumnForComparing(const String& column_name) = 0;
125 /**
126 * @brief Méthode permettant d'ajouter une ligne dans la liste des lignes
127 * à comparer.
128 *
129 * @param row_name Le nom de la ligne à comparer.
130 * @return true Si le nom a bien été ajouté.
131 * @return false Sinon.
132 */
133 virtual bool addRowForComparing(const String& row_name) = 0;
134
135 /**
136 * @brief Méthode permettant de définir si le tableau de
137 * colonnes représente les colonnes à inclure dans la
138 * comparaison (false/par défaut) ou représente les colonnes
139 * à exclure de la comparaison (true).
140 *
141 * @param is_exclusive true si les colonnes doivent être
142 * exclus.
143 */
144 virtual void isAnArrayExclusiveColumns(bool is_exclusive) = 0;
145
146 /**
147 * @brief Méthode permettant de définir si le tableau de
148 * lignes représente les lignes à inclure dans la
149 * comparaison (false/par défaut) ou représente les lignes
150 * à exclure de la comparaison (true).
151 *
152 * @param is_exclusive true si les lignes doivent être
153 * exclus.
154 */
155 virtual void isAnArrayExclusiveRows(bool is_exclusive) = 0;
156
157 /**
158 * @brief Méthode permettant d'ajouter une expression régulière
159 * permettant de déterminer les colonnes à comparer.
160 *
161 * @param regex_column L'expression régulière (format ECMAScript).
162 */
163 virtual void editRegexColumns(const String& regex_column) = 0;
164 /**
165 * @brief Méthode permettant d'ajouter une expression régulière
166 * permettant de déterminer les lignes à comparer.
167 *
168 * @param regex_row L'expression régulière (format ECMAScript).
169 */
170 virtual void editRegexRows(const String& regex_row) = 0;
171
172 /**
173 * @brief Méthode permettant de demander à ce que l'expression régulière
174 * exclut des colonnes au lieu d'en inclure.
175 *
176 * @param is_exclusive Si l'expression régulière est excluante.
177 */
178 virtual void isARegexExclusiveColumns(bool is_exclusive) = 0;
179 /**
180 * @brief Méthode permettant de demander à ce que l'expression régulière
181 * exclut des lignes au lieu d'en inclure.
182 *
183 * @param is_exclusive Si l'expression régulière est excluante.
184 */
185 virtual void isARegexExclusiveRows(bool is_exclusive) = 0;
186
187 /**
188 * @brief Méthode permettant de définir un epsilon pour une colonne donnée.
189 * Cet epsilon doit être positif pour être pris en compte.
190 * S'il y a confit avec un epsilon de ligne (défini avec addEpsilonRow()),
191 * c'est l'epsilon le plus grand qui est pris en compte.
192 * @note Si un epsilon a déjà été défini sur cette colonne, alors l'ancien
193 * epsilon sera remplacé.
194 *
195 * @param column_name Le nom de la colonne où l'epsilon sera pris en compte.
196 * @param epsilon La marge d'erreur epsilon.
197 * @return true Si l'epsilon a bien pu être défini.
198 * @return false Si l'epsilon n'a pas pu être défini.
199 */
200 virtual bool addEpsilonColumn(const String& column_name, Real epsilon) = 0;
201
202 /**
203 * @brief Méthode permettant de définir un epsilon pour une ligne donnée.
204 * Cet epsilon doit être positif pour être pris en compte.
205 * S'il y a confit avec un epsilon de colonne (défini avec addEpsilonColumn()),
206 * c'est l'epsilon le plus grand qui est pris en compte.
207 * @note Si un epsilon a déjà été défini sur cette ligne, alors l'ancien
208 * epsilon sera remplacé.
209 *
210 * @param column_name Le nom de la ligne où l'epsilon sera pris en compte.
211 * @param epsilon La marge d'erreur epsilon.
212 * @return true Si l'epsilon a bien pu être défini.
213 * @return false Si l'epsilon n'a pas pu être défini.
214 */
215 virtual bool addEpsilonRow(const String& row_name, Real epsilon) = 0;
216
217
218 /**
219 * @brief Méthode permettant de récupérer une référence vers l'objet
220 * SimpleTableInternal "de référence" utilisé.
221 *
222 * @return Ref<SimpleTableInternal> Une copie de la référence.
223 */
225
226 /**
227 * @brief Méthode permettant de définir une référence vers un
228 * SimpleTableInternal "de référence".
229 *
230 * @param simple_table_internal La référence vers un SimpleTableInternal.
231 */
232 virtual void setInternalRef(const Ref<SimpleTableInternal>& simple_table_internal) = 0;
233
234 /**
235 * @brief Méthode permettant de récupérer une référence vers l'objet
236 * SimpleTableInternal "à comparer" utilisé.
237 *
238 * @return Ref<SimpleTableInternal> Une copie de la référence.
239 */
241
242 /**
243 * @brief Méthode permettant de définir une référence vers
244 * SimpleTableInternal "à comparer".
245 *
246 * @param simple_table_internal La référence vers un SimpleTableInternal.
247 */
248 virtual void setInternalToCompare(const Ref<SimpleTableInternal>& simple_table_internal) = 0;
249};
250
251/*---------------------------------------------------------------------------*/
252/*---------------------------------------------------------------------------*/
253
254} // End namespace Arcane
255
256/*---------------------------------------------------------------------------*/
257/*---------------------------------------------------------------------------*/
258
259#endif
260
261/*---------------------------------------------------------------------------*/
262/*---------------------------------------------------------------------------*/
Déclarations de types sur les entités.
Interface de classe représentant un comparateur de SimpleTableInternal (aka STI).
virtual void setInternalRef(const Ref< SimpleTableInternal > &simple_table_internal)=0
Méthode permettant de définir une référence vers un SimpleTableInternal "de référence".
virtual bool addRowForComparing(const String &row_name)=0
Méthode permettant d'ajouter une ligne dans la liste des lignes à comparer.
virtual void isAnArrayExclusiveRows(bool is_exclusive)=0
Méthode permettant de définir si le tableau de lignes représente les lignes à inclure dans la compara...
virtual void setInternalToCompare(const Ref< SimpleTableInternal > &simple_table_internal)=0
Méthode permettant de définir une référence vers SimpleTableInternal "à comparer".
virtual void isARegexExclusiveRows(bool is_exclusive)=0
Méthode permettant de demander à ce que l'expression régulière exclut des lignes au lieu d'en inclure...
virtual Ref< SimpleTableInternal > internalRef()=0
Méthode permettant de récupérer une référence vers l'objet SimpleTableInternal "de référence" utilisé...
virtual Ref< SimpleTableInternal > internalToCompare()=0
Méthode permettant de récupérer une référence vers l'objet SimpleTableInternal "à comparer" utilisé.
virtual bool addEpsilonRow(const String &row_name, Real epsilon)=0
Méthode permettant de définir un epsilon pour une ligne donnée. Cet epsilon doit être positif pour êt...
virtual bool compare(bool compare_dimension_too=false)=0
Méthode permettant de comparer les valeurs des deux STI.
virtual void editRegexColumns(const String &regex_column)=0
Méthode permettant d'ajouter une expression régulière permettant de déterminer les colonnes à compare...
virtual void editRegexRows(const String &regex_row)=0
Méthode permettant d'ajouter une expression régulière permettant de déterminer les lignes à comparer.
virtual bool compareElem(const String &column_name, const String &row_name)=0
Méthode permettant de comparer uniquement un élement. Les deux SimpleTableInternal sont représentés p...
virtual bool addEpsilonColumn(const String &column_name, Real epsilon)=0
Méthode permettant de définir un epsilon pour une colonne donnée. Cet epsilon doit être positif pour ...
virtual void isARegexExclusiveColumns(bool is_exclusive)=0
Méthode permettant de demander à ce que l'expression régulière exclut des colonnes au lieu d'en inclu...
virtual bool addColumnForComparing(const String &column_name)=0
Méthode permettant d'ajouter une colonne dans la liste des colonnes à comparer.
virtual void clearComparator()=0
Méthode permettant de vider les tableaux de comparaison et les expressions régulières....
virtual void isAnArrayExclusiveColumns(bool is_exclusive)=0
Méthode permettant de définir si le tableau de colonnes représente les colonnes à inclure dans la com...
virtual bool compareElem(Real elem, const String &column_name, const String &row_name)=0
Méthode permettant de comparer une valeur avec une valeur du tableau de référence....
Référence à une instance.
Chaîne de caractères unicode.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
double Real
Type représentant un réel.