Arcane  v3.16.0.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
SimpleTableInternalComparator.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/* SimpleTableInternalComparator.h (C) 2000-2022 */
9/* */
10/* Comparateur de SimpleTableInternal. */
11/*---------------------------------------------------------------------------*/
12/*---------------------------------------------------------------------------*/
13
14#ifndef ARCANE_STD_SIMPLETABLEINTERNALCOMPARATOR_H
15#define ARCANE_STD_SIMPLETABLEINTERNALCOMPARATOR_H
16
17/*---------------------------------------------------------------------------*/
18/*---------------------------------------------------------------------------*/
19
20#include "arcane/ISimpleTableInternalComparator.h"
21#include "arcane/ISimpleTableInternalMng.h"
22#include "arcane/ISimpleTableReaderWriter.h"
23
24#include "arcane/std/SimpleTableInternalMng.h"
25#include "arcane/utils/Array.h"
26#include "arcane/utils/FatalErrorException.h"
27
28#include <map>
29
30/*---------------------------------------------------------------------------*/
31/*---------------------------------------------------------------------------*/
32
33namespace Arcane
34{
35
36/*---------------------------------------------------------------------------*/
37/*---------------------------------------------------------------------------*/
38
39class SimpleTableInternalComparator
41{
42 public:
43 SimpleTableInternalComparator(const Ref<SimpleTableInternal>& sti_ref, const Ref<SimpleTableInternal>& sti_to_compare)
44 : m_simple_table_internal_reference(sti_ref)
45 , m_simple_table_internal_to_compare(sti_to_compare)
46 , m_simple_table_internal_mng_reference(m_simple_table_internal_reference)
47 , m_simple_table_internal_mng_to_compare(m_simple_table_internal_to_compare)
48 , m_regex_rows("")
49 , m_is_excluding_regex_rows(false)
50 , m_regex_columns("")
51 , m_is_excluding_regex_columns(false)
52 , m_is_excluding_array_rows(false)
53 , m_is_excluding_array_columns(false)
54 , m_epsilons_column()
55 , m_epsilons_row()
56 {
57 if (sti_ref.isNull() || sti_to_compare.isNull())
58 ARCANE_FATAL("La réference passée en paramètre est Null.");
59 }
60
61 SimpleTableInternalComparator()
62 : m_simple_table_internal_reference()
63 , m_simple_table_internal_to_compare()
64 , m_simple_table_internal_mng_reference()
65 , m_simple_table_internal_mng_to_compare()
66 , m_regex_rows("")
67 , m_is_excluding_regex_rows(false)
68 , m_regex_columns("")
69 , m_is_excluding_regex_columns(false)
70 , m_is_excluding_array_rows(false)
71 , m_is_excluding_array_columns(false)
72 , m_epsilons_column()
73 , m_epsilons_row()
74 {
75 }
76
77 virtual ~SimpleTableInternalComparator() = default;
78
79 public:
80 bool compare(bool compare_dimension_too) override;
81
82 bool compareElem(const String& column_name, const String& row_name) override;
83 bool compareElem(Real elem, const String& column_name, const String& row_name) override;
84
85 void clearComparator() override;
86
87 bool addColumnForComparing(const String& column_name) override;
88 bool addRowForComparing(const String& row_name) override;
89
90 void isAnArrayExclusiveColumns(bool is_exclusive) override;
91 void isAnArrayExclusiveRows(bool is_exclusive) override;
92
93 void editRegexColumns(const String& regex_column) override;
94 void editRegexRows(const String& regex_row) override;
95
96 void isARegexExclusiveColumns(bool is_exclusive) override;
97 void isARegexExclusiveRows(bool is_exclusive) override;
98
99 bool addEpsilonColumn(const String& column_name, Real epsilon) override;
100 bool addEpsilonRow(const String& row_name, Real epsilon) override;
101
102
104 void setInternalRef(const Ref<SimpleTableInternal>& simple_table_internal) override;
105
107 void setInternalToCompare(const Ref<SimpleTableInternal>& simple_table_internal) override;
108
109 protected:
110 bool _exploreColumn(const String& column_name);
111 bool _exploreRows(const String& row_name);
112
113 protected:
114 Ref<SimpleTableInternal> m_simple_table_internal_reference;
115 Ref<SimpleTableInternal> m_simple_table_internal_to_compare;
116
117 SimpleTableInternalMng m_simple_table_internal_mng_reference;
118 SimpleTableInternalMng m_simple_table_internal_mng_to_compare;
119
120 String m_regex_rows;
121 bool m_is_excluding_regex_rows;
122
123 String m_regex_columns;
124 bool m_is_excluding_regex_columns;
125
126 StringUniqueArray m_rows_to_compare;
127 bool m_is_excluding_array_rows;
128
129 StringUniqueArray m_columns_to_compare;
130 bool m_is_excluding_array_columns;
131
132 std::map<String, Real> m_epsilons_column;
133 std::map<String, Real> m_epsilons_row;
134};
135
136/*---------------------------------------------------------------------------*/
137/*---------------------------------------------------------------------------*/
138
139} // End namespace Arcane
140
141/*---------------------------------------------------------------------------*/
142/*---------------------------------------------------------------------------*/
143
144#endif
145
146/*---------------------------------------------------------------------------*/
147/*---------------------------------------------------------------------------*/
#define ARCANE_FATAL(...)
Macro envoyant une exception FatalErrorException.
Interface de classe représentant un comparateur de SimpleTableInternal (aka STI).
Référence à une instance.
bool isNull() const
Indique si le compteur référence une instance non nulle.
bool compare(bool compare_dimension_too) override
Méthode permettant de comparer les valeurs des deux STI.
Ref< SimpleTableInternal > internalRef() override
Méthode permettant de récupérer une référence vers l'objet SimpleTableInternal "de référence" utilisé...
bool _exploreColumn(const String &column_name)
Méthode permettant de savoir si la colonne avec le nom column_name doit être exploré ou non.
void setInternalToCompare(const Ref< SimpleTableInternal > &simple_table_internal) override
Méthode permettant de définir une référence vers SimpleTableInternal "à comparer".
void isAnArrayExclusiveRows(bool is_exclusive) override
Méthode permettant de définir si le tableau de lignes représente les lignes à inclure dans la compara...
void setInternalRef(const Ref< SimpleTableInternal > &simple_table_internal) override
Méthode permettant de définir une référence vers un SimpleTableInternal "de référence".
void isAnArrayExclusiveColumns(bool is_exclusive) override
Méthode permettant de définir si le tableau de colonnes représente les colonnes à inclure dans la com...
Ref< SimpleTableInternal > internalToCompare() override
Méthode permettant de récupérer une référence vers l'objet SimpleTableInternal "à comparer" utilisé.
bool addEpsilonRow(const String &row_name, Real epsilon) override
Méthode permettant de définir un epsilon pour une ligne donnée. Cet epsilon doit être positif pour êt...
bool addRowForComparing(const String &row_name) override
Méthode permettant d'ajouter une ligne dans la liste des lignes à comparer.
bool _exploreRows(const String &row_name)
Méthode permettant de savoir si la ligne avec le nom column_name doit être exploré ou non.
bool compareElem(const String &column_name, const String &row_name) override
Méthode permettant de comparer uniquement un élement. Les deux SimpleTableInternal sont représentés p...
void isARegexExclusiveRows(bool is_exclusive) override
Méthode permettant de demander à ce que l'expression régulière exclut des lignes au lieu d'en inclure...
bool addColumnForComparing(const String &column_name) override
Méthode permettant d'ajouter une colonne dans la liste des colonnes à comparer.
void editRegexColumns(const String &regex_column) override
Méthode permettant d'ajouter une expression régulière permettant de déterminer les colonnes à compare...
void editRegexRows(const String &regex_row) override
Méthode permettant d'ajouter une expression régulière permettant de déterminer les lignes à comparer.
void isARegexExclusiveColumns(bool is_exclusive) override
Méthode permettant de demander à ce que l'expression régulière exclut des colonnes au lieu d'en inclu...
void clearComparator() override
Méthode permettant de vider les tableaux de comparaison et les expressions régulières....
bool addEpsilonColumn(const String &column_name, Real epsilon) override
Méthode permettant de définir un epsilon pour une colonne donnée. Cet epsilon doit être positif pour ...
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.
UniqueArray< String > StringUniqueArray
Tableau dynamique à une dimension de chaînes de caractères.
Definition UtilsTypes.h:446