Arcane  v3.14.10.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
CaseOptionExtended.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/* CaseOptionExtended.h (C) 2000-2023 */
9/* */
10/* Option du jeu de données de type 'Extended'. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_CASEOPTIONEXTENDED_H
13#define ARCANE_CASEOPTIONEXTENDED_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include "arcane/utils/Array.h"
18
19#include "arcane/core/CaseOptionSimple.h"
20
21/*---------------------------------------------------------------------------*/
22/*---------------------------------------------------------------------------*/
23
24namespace Arcane
25{
26
27/*---------------------------------------------------------------------------*/
28/*---------------------------------------------------------------------------*/
33class ARCANE_CORE_EXPORT CaseOptionExtended
34: public CaseOptionSimple
35{
36 public:
37
39 : CaseOptionSimple(cob), m_type_name(type_name) {}
40
41 public:
42
43 void print(const String& lang,std::ostream& o) const override;
44 ICaseFunction* function() const override { return 0; }
45 void updateFromFunction(Real /*current_time*/,Integer /*current_iteration*/) override {}
46 void visit(ICaseDocumentVisitor* visitor) const override;
47
54 void setDefaultValue(const String& def_value);
55
56 protected:
57
58 virtual bool _tryToConvert(const String& s) =0;
59
60 void _search(bool is_phase1) override;
61 bool _allowPhysicalUnit() override { return false; }
62
63 String _typeName() const { return m_type_name; }
64
65 private:
66
69};
70
71/*---------------------------------------------------------------------------*/
72/*---------------------------------------------------------------------------*/
88#ifndef SWIG
89template<class T>
91: public CaseOptionExtended
92{
93 public:
94
97
98 public:
99
101 operator const T&() const { return value(); }
102
104 const T& value() const
105 {
106 ARCANE_CASEOPTION_CHECK_IS_INITIALIZED;
107 return m_value;
108 }
109
111 const T& operator()() const { return value(); }
112
115 {
116 ARCANE_CASEOPTION_CHECK_IS_INITIALIZED;
117 return isPresent() ? m_value : arg_value;
118 }
119
120 protected:
121
122 virtual bool _tryToConvert(const String& s)
123 {
124 // La fonction _caseOptionConvert() doit être déclarée avant
125 // l'instantiation de cette template. Normalement le générateur automatique
126 // de config effectue cette opération.
127 return _caseOptionConvert(*this,s,m_value);
128 }
129
130 private:
131
133};
134#endif
135
136/*---------------------------------------------------------------------------*/
137/*---------------------------------------------------------------------------*/
142class ARCANE_CORE_EXPORT CaseOptionMultiExtended
143: public CaseOptionBase
144{
145 public:
146
148 : CaseOptionBase(cob), m_type_name(type_name) {}
150
151 public:
152
153 void print(const String& lang,std::ostream& o) const override;
154 ICaseFunction* function() const override { return 0; }
155 void updateFromFunction(Real /*current_time*/,Integer /*current_iteration*/) override {}
156 void visit(ICaseDocumentVisitor* visitor) const override;
157
158 protected:
159
160 virtual bool _tryToConvert(const String& s,Integer pos) =0;
161 virtual void _allocate(Integer size) =0;
162 virtual bool _allowPhysicalUnit() { return false; }
163 virtual Integer _nbElem() const =0;
164 String _typeName() const { return m_type_name; }
165 void _search(bool is_phase1) override;
166
167 private:
168
171};
172
173/*---------------------------------------------------------------------------*/
174/*---------------------------------------------------------------------------*/
182#ifndef SWIG
183template<class T>
186, public ArrayView<T>
187{
188 public:
189
190 typedef T Type;
191
192 public:
193
196 virtual ~CaseOptionMultiExtendedT() {} // delete[] _ptr(); }
197
198 public:
199
200 protected:
201
202 bool _tryToConvert(const String& s,Integer pos) override
203 {
204 // La fonction _caseOptionConvert() doit être déclarée avant
205 // l'instantiation de cette template. Normalement le générateur automatique
206 // d'options (axl2cc) effectue cette opération.
207 T& value = this->operator[](pos);
208 return _caseOptionConvert(*this,s,value);
209 }
210 void _allocate(Integer size) override
211 {
212 m_values.resize(size);
213 ArrayView<T>* view = this;
214 *view = m_values.view();
215 }
216 //virtual const void* _elemPtr(Integer i) const { return this->begin()+i; }
217 virtual Integer _nbElem() const override { return m_values.size(); }
218
219 private:
220
221 UniqueArray<T> m_values;
222};
223#endif
224
225/*---------------------------------------------------------------------------*/
226/*---------------------------------------------------------------------------*/
227
228} // End namespace Arcane
229
230/*---------------------------------------------------------------------------*/
231/*---------------------------------------------------------------------------*/
232
233#endif
Classe de base d'une option du jeu de donnée.
Informations pour construire une option de jeu de données.
Option du jeu de donnée de type étendu.
const T & value() const
Valeur de l'option.
const T & valueIfPresentOrArgument(const T &arg_value)
Retourne la valeur de l'option si isPresent()==true ou sinon arg_value.
const T & operator()() const
Valeur de l'option.
Option du jeu de données de type étendu.
void updateFromFunction(Real, Integer) override
Met à jour la valeur de l'option à partir d'une fonction.
String m_type_name
Nom du type de l'option.
ICaseFunction * function() const override
Retourne la fonction liée à cette option ou nullptr s'il n'y en a pas.
String m_value
Valeur de l'option sous forme de chaîne unicode.
Option du jeu de donnée de type liste de types étendus.
Option du jeu de donnée de type liste de types étendus.
ICaseFunction * function() const override
Retourne la fonction liée à cette option ou nullptr s'il n'y en a pas.
String m_type_name
Nom du type de l'option.
void updateFromFunction(Real, Integer) override
Met à jour la valeur de l'option à partir d'une fonction.
UniqueArray< String > m_values
Valeurs sous forme de chaînes unicodes.
Classe de base des options simples (uniquement une valeur).
bool isPresent() const
Retourne true si l'option est présente.
Interface du visiteur pour une option du jeu de données.
Interface d'une fonction du jeu de données.
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Definition Lima.cc:120
Vue modifiable d'un tableau d'un type T.
constexpr Integer size() const noexcept
Retourne la taille du tableau.
constexpr reference operator[](Integer i)
i-ème élément du tableau.
Chaîne de caractères unicode.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
Int32 Integer
Type représentant un entier.