12#ifndef ARCANE_CASEOPTIONSIMPLE_H
13#define ARCANE_CASEOPTIONSIMPLE_H
17#include "arcane/core/ICaseOptions.h"
18#include "arcane/core/CaseOptionBase.h"
34#define ARCANE_CASEOPTION_CHECK_IS_INITIALIZED _checkIsInitialized()
36#define ARCANE_CASEOPTION_CHECK_IS_INITIALIZED
42template<
typename Type>
46 using ContainerType = Type;
47 using ReferenceType = Type&;
48 using ConstReferenceType =
const Type&;
62template<
typename Type>
79class ARCANE_CORE_EXPORT CaseOptionSimple
80:
public CaseOptionBase
91 bool isPresent()
const {
return !m_element.null(); }
100 XmlNode element()
const {
return m_element; }
124 bool hasChangedSinceLastIteration()
const;
126 String xpathFullName()
const;
131 String defaultPhysicalUnit()
const;
133 String physicalUnit()
const;
161 void _search(
bool is_phase1)
override;
162 virtual bool _allowPhysicalUnit() =0;
163 void _setChangedSinceLastIteration(
bool has_changed);
164 void _searchFunction(
XmlNode& velem);
165 void _setPhysicalUnit(
const String& value);
166 void _setHasValidValue(
bool v) { m_has_valid_value = v; }
167 XmlNode _element()
const {
return m_element; }
169 static String _convertFunctionRealToString(ICaseFunction* func,Real t);
170 static String _convertFunctionIntegerToString(ICaseFunction* func,Integer t);
175 ICaseFunction* m_function =
nullptr;
176 IStandardFunction* m_standard_function =
nullptr;
178 IPhysicalUnitConverter* m_unit_converter =
nullptr;
179 bool m_changed_since_last_iteration =
false;
180 bool m_is_optional =
false;
181 bool m_has_valid_value =
false;
182 String m_default_physical_unit;
183 String m_physical_unit;
205class CaseOptionSimpleT
206:
public CaseOptionSimple
210 typedef CaseOptionSimpleT<T> ThatClass;
212 typedef typename CaseOptionTraitsT<T>::ContainerType
Type;
223 ARCANE_CORE_EXPORT
virtual void print(
const String& lang,std::ostream& o)
const;
228 ARCANE_CASEOPTION_CHECK_IS_INITIALIZED;
246 operator ThatClass*() {
return this; }
247 operator const ThatClass*()
const {
return this; }
248 const ThatClass* operator->()
const {
return this; }
249 static Real castTo__Arcane_Real(
const ThatClass& v)
280 ARCANE_CASEOPTION_CHECK_IS_INITIALIZED;
281 return isPresent() ? m_value : arg_value;
286 ARCANE_CORE_EXPORT
virtual void _search(
bool is_phase1);
287 ARCANE_CORE_EXPORT
virtual bool _allowPhysicalUnit();
298class ARCANE_CORE_EXPORT CaseOptionMultiSimple
299:
public CaseOptionBase
303 : CaseOptionBase(cob){}
318class CaseOptionMultiSimpleT
319:
public CaseOptionMultiSimple
320#ifdef ARCANE_HAS_PRIVATE_CASEOPTIONSMULTISIMPLE_BASE_CLASS
329 using Type =
typename CaseOptionTraitsT<T>::ContainerType;
330 using ReferenceType =
typename CaseOptionTraitsT<T>::ReferenceType;
331 using ConstReferenceType =
typename CaseOptionTraitsT<T>::ConstReferenceType;
341 ARCANE_CORE_EXPORT ~CaseOptionMultiSimpleT();
345 ARCCORE_DEPRECATED_2021(
"Use view() instead")
350 ARCCORE_DEPRECATED_2021(
"Use view() instead")
357 ARCCORE_DEPRECATED_2021(
"Use view() instead")
361 ARCCORE_DEPRECATED_2021(
"Use view() instead")
376 ReferenceType operator[](
Integer i) {
return m_view[i]; }
380 ARCANE_CORE_EXPORT
void print(
const String& lang,std::ostream& o)
const override;
385 const T& value(
Integer index)
const {
return this->operator[](index); }
387 ARCANE_CORE_EXPORT
void visit(ICaseDocumentVisitor* visitor)
const override;
388 bool isPresent()
const {
return !m_view.empty(); }
392 void _search(
bool is_phase1)
override;
393 virtual bool _allowPhysicalUnit();
Vue modifiable d'un tableau d'un type T.
constexpr ArrayView() noexcept
Construit une vue vide.
constexpr Integer size() const noexcept
Retourne la taille du tableau.
Classe de base des vecteurs 1D de données.
typename CaseOptionTraitsT< T >::ConstArrayViewType ConstArrayViewType
Type de la vue constante sur les valeurs de l'option.
ConstArrayViewType view() const
Vue constante sur les éléments de l'option.
typename CaseOptionTraitsT< T >::ContainerType Type
Type de la valeur de l'option.
typename CaseOptionTraitsT< T >::ArrayViewType ArrayViewType
Type de la vue sur les valeurs de l'option.
void updateFromFunction(Real, Integer) override
Met à jour la valeur de l'option à partir d'une fonction.
void print(const String &lang, std::ostream &o) const override
Imprime la valeur de l'option dans le langage lang,sur le flot o.
ICaseFunction * function() const override
Retourne la fonction liée à cette option ou nullptr s'il n'y en a pas.
void visit(ICaseDocumentVisitor *visitor) const override
Applique le visiteur sur cette option.
void _search(bool is_phase1) override
Cherche la valeur de l'option dans le jeu de donnée.
ArrayViewType view()
Vue sur les éléments de l'option.
Option du jeu de données de type simple (réel, entier, booléen, ...)
const Type & valueIfPresentOrArgument(const Type &arg_value)
Retourne la valeur de l'option si isPresent()==true ou sinon arg_value.
virtual void _search(bool is_phase1)
Cherche la valeur de l'option dans le jeu de données.
ARCANE_DEPRECATED Type operator()(Real t) const
Retourne la valeur de l'option pour le paramètre réel t.
Type valueAtParameter(Real t) const
Retourne la valeur de l'option pour le paramètre réel t.
CaseOptionTraitsT< T >::ContainerType Type
Type de l'option.
virtual void print(const String &lang, std::ostream &o) const
Imprime la valeur de l'option dans le langage lang,sur le flot o.
Type valueAtParameter(Integer t) const
Retourne la valeur de l'option pour le paramètre entier t.
const Type & value() const
Retourne la valeur de l'option.
const Type & operator()() const
Retourne la valeur de l'option.
ARCANE_DEPRECATED Type operator()(Integer t) const
Retourne la valeur de l'option pour le paramètre entier t.
virtual void updateFromFunction(Real current_time, Integer current_iteration)
void setDefaultValue(const Type &def_value)
Positionne la valeur par défaut de l'option.
bool hasValidValue() const
Indique si l'option a une valeur invalide.
ICaseFunction * function() const override
Fonction associée à cette option (0 si aucune).
bool isOptional() const
Indique si l'option est facultative.
virtual IStandardFunction * standardFunction() const
Fonction standard associée à cette option (0 si aucune).
ARCANE_DEPRECATED_LONG_TERM("Y2022: Do not access XML item from option") XmlNode element() const
Retourne l'élément de l'option.
IPhysicalUnitConverter * physicalUnitConverter() const
Convertisseur d'unité physique.
bool isPresent() const
Retourne true si l'option est présente.
Vue constante d'un tableau de type T.
Interface du visiteur pour une option du jeu de données.
Interface gérant une fonction standard.
Chaîne de caractères unicode.
Vecteur 1D de données avec sémantique par valeur (style STL).
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
Int32 Integer
Type représentant un entier.
double Real
Type représentant un réel.