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