Arcane  v3.14.10.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
CaseOptionServiceImpl.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/* CaseOptionServiceImpl.h (C) 2000-2022 */
9/* */
10/* Implémentation d'une option du jeu de données utilisant un service. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_CASEOPTIONSERVICEIMPL_H
13#define ARCANE_CASEOPTIONSERVICEIMPL_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include "arcane/utils/Functor.h"
18
19#include "arcane/CaseOptions.h"
20#include "arcane/CaseOptionsMulti.h"
21
22/*---------------------------------------------------------------------------*/
23/*---------------------------------------------------------------------------*/
24
25namespace Arcane
26{
27
28/*---------------------------------------------------------------------------*/
29/*---------------------------------------------------------------------------*/
30
31class IService;
32class CaseOptionBuildInfo;
33
34/*---------------------------------------------------------------------------*/
35/*---------------------------------------------------------------------------*/
40class ARCANE_CORE_EXPORT ICaseOptionServiceContainer
41{
42 public:
43 virtual ~ICaseOptionServiceContainer() = default;
44 public:
45 virtual bool tryCreateService(Integer index,Internal::IServiceFactory2* factory,const ServiceBuildInfoBase& sbi) =0;
46 virtual bool hasInterfaceImplemented(Internal::IServiceFactory2*) const =0;
48 virtual void allocate(Integer size) =0;
50 virtual Integer nbElem() const =0;
51};
52
53/*---------------------------------------------------------------------------*/
54/*---------------------------------------------------------------------------*/
62class ARCANE_CORE_EXPORT CaseOptionServiceImpl
63: public CaseOptions
64{
65 public:
66
68
69 public:
70
71 void read(eCaseOptionReadPhase phase) override;
72 String serviceName() const { return m_service_name; }
73 bool isOptional() const { return m_is_optional; }
74
76 virtual void getAvailableNames(StringArray& names) const;
77 void visit(ICaseDocumentVisitor* visitor) const override;
78
79 void setDefaultValue(const String& def_value);
80 void addDefaultValue(const String& category,const String& value);
81
88 void setContainer(ICaseOptionServiceContainer* container);
89
90 void setMeshName(const String& mesh_name) { m_mesh_name = mesh_name; }
91 String meshName() const { return m_mesh_name; }
92
93 protected:
94
95 virtual void print(const String& lang,std::ostream& o) const;
96
97 protected:
98
99 String _defaultValue() const { return m_default_value; }
100
101 private:
102
103 String m_name;
104 String m_default_value;
105 String m_service_name;
106 String m_mesh_name;
108 bool m_allow_null;
109 bool m_is_optional;
110 bool m_is_override_default;
113 ICaseOptionServiceContainer* m_container;
114
115 private:
116
117 void _readPhase1();
118};
119
120/*---------------------------------------------------------------------------*/
121/*---------------------------------------------------------------------------*/
129class ARCANE_CORE_EXPORT CaseOptionMultiServiceImpl
130: public CaseOptionsMulti
131{
132 public:
133
136
137 public:
138
140 void getAvailableNames(StringArray& names) const;
142 String serviceName(Integer index) const
143 {
144 return m_services_name[index];
145 }
146
147 void multiAllocate(const XmlNodeList&) override;
148 void visit(ICaseDocumentVisitor* visitor) const override;
155 void setContainer(ICaseOptionServiceContainer* container);
156
157 void setMeshName(const String& mesh_name) { m_mesh_name = mesh_name; }
158 String meshName() const { return m_mesh_name; }
159
160 public:
161
162 void _setNotifyAllocateFunctor(IFunctor* f)
163 {
164 m_notify_functor = f;
165 }
166
167 protected:
168
169 String _defaultValue() const { return m_default_value; }
170
171 protected:
172
173 bool m_allow_null;
174 String m_default_value;
175 String m_mesh_name;
176 IFunctor* m_notify_functor;
177 ICaseOptionServiceContainer* m_container;
182};
183
184/*---------------------------------------------------------------------------*/
185/*---------------------------------------------------------------------------*/
186
187} // End namespace Arcane
188
189/*---------------------------------------------------------------------------*/
190/*---------------------------------------------------------------------------*/
191
192#endif
Tableau d'items de types quelconques.
Informations pour construire une option de jeu de données.
Classe de base d'une option service pouvant être présente plusieurs fois.
String serviceName(Integer index) const
Nom du n-ième service.
UniqueArray< String > m_services_name
Noms du service pour chaque occurence.
UniqueArray< ReferenceCounter< ICaseOptions > > m_allocated_options
Liste des options allouées qu'il faudra supprimer.
Classe de base de l'implémentation des options utilisant des services.
XmlNode m_element
Element de l'option.
StringDictionary m_default_values
Liste des valeurs par défaut par catégorie.
Classe de base d'un tableau d'options complexes du jeu de données.
Classe de base d'une liste d'options du jeu de données.
Definition CaseOptions.h:57
Interface du visiteur pour une option du jeu de données.
Interface d'un conteneur d'instances de service.
virtual void allocate(Integer size)=0
Alloue un tableau pour size éléments.
virtual Integer nbElem() const =0
Retourne le nombre d'éléments du tableau.
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Definition Lima.cc:120
Informations pour créer un service.
Dictionnaire de chaînes unicode.
Liste de noeuds d'un arbre DOM.
Definition XmlNodeList.h:33
Noeud d'un arbre DOM.
Definition XmlNode.h:51
Chaîne de caractères unicode.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
eCaseOptionReadPhase
Phases de la lecture.