12#ifndef ARCANE_CASEOPTIONSERVICE_H
13#define ARCANE_CASEOPTIONSERVICE_H
17#include "arcane/utils/ITraceMng.h"
18#include "arcane/utils/Functor.h"
20#include "arcane/CaseOptions.h"
21#include "arcane/IServiceMng.h"
22#include "arcane/ISubDomain.h"
23#include "arcane/ServiceUtils.h"
24#include "arcane/ArcaneException.h"
25#include "arcane/IFactoryService.h"
26#include "arcane/IServiceFactory.h"
27#include "arcane/StringDictionary.h"
28#include "arcane/CaseOptionServiceImpl.h"
40class CaseOptionBuildInfo;
41template<
typename T>
class CaseOptionServiceT;
48template<
typename InterfaceType>
63 InterfaceType* s =
sr.get();
64 m_services_reference[index] =
sr;
65 m_services[index] = s;
66 return (s !=
nullptr);
84 m_services_reference.resize(
asize);
90 return m_services.
size();
93 InterfaceType* child(Integer i)
const
98 Ref<InterfaceType> childRef(Integer i)
const
100 return m_services_reference[i];
107 m_services_reference.clear();
113 UniqueArray<InterfaceType*> m_services;
114 UniqueArray<Ref<InterfaceType>> m_services_reference;
146 ARCANE_DEPRECATED_REASON(
"Y2022: Use toICaseOptions() instead")
149 ARCANE_DEPRECATED_REASON(
"Y2022: Use toICaseOptions() instead")
150 operator const CaseOptions& ()
const {
return *_impl(); }
154 const ICaseOptions* toICaseOptions() {
return _impl(); }
158 String rootTagName()
const {
return m_impl->rootTagName(); }
159 String name()
const {
return m_impl->name(); }
160 String serviceName()
const {
return m_impl->serviceName(); }
161 bool isOptional()
const {
return m_impl->isOptional(); }
162 bool isPresent()
const {
return m_impl->isPresent(); }
165 m_impl->addAlternativeNodeName(
lang,name);
169 m_impl->getAvailableNames(
names);
189 m_impl->addDefaultValue(
category,value);
213 const CaseOptionServiceImpl* _impl()
const {
return m_impl.get(); }
217 ReferenceCounter<CaseOptionServiceImpl> m_impl;
223template<
class InterfaceType>
235 InterfaceType* operator()()
const {
return _instance(); }
236 InterfaceType* instance()
const {
return _instance(); }
241 InterfaceType* _instance()
const
243 if (m_container.nbElem()==1)
244 return m_container.child(0);
249 if (m_container.nbElem()==1)
250 return m_container.childRef(0);
272 XmlNode rootElement()
const {
return m_impl->toCaseOptions()->configList()->rootElement(); }
273 String rootTagName()
const {
return m_impl->rootTagName(); }
274 String name()
const {
return m_impl->name(); }
278 m_impl->getAvailableNames(
names);
283 return m_impl->serviceName(index);
287 m_impl->addAlternativeNodeName(
lang,name);
294 void setMeshName(
const String& mesh_name);
301 String meshName()
const;
305 CaseOptionMultiServiceImpl* _impl() {
return m_impl.get(); }
306 const CaseOptionMultiServiceImpl* _impl()
const {
return m_impl.get(); }
310 ReferenceCounter<CaseOptionMultiServiceImpl> m_impl;
319template<
typename InterfaceType>
328 , m_notify_functor(
this,&ThatClass::_notify)
331 _impl()->_setNotifyAllocateFunctor(&m_notify_functor);
346 this->setArray(m_container.view());
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.
void setContainer(ICaseOptionServiceContainer *container)
Positionne le conteneur d'instances.
Option du jeu de données de type liste de services.
Classe de base d'une option service pouvant être présente plusieurs fois.
void getAvailableNames(StringArray &names) const
Retourne dans names les noms d'implémentations valides pour ce service.
String serviceName(Integer index) const
Nom du n-ième service.
Implémentation du conteneur pour un service de type InterfaceType.
void allocate(Integer asize) override
Alloue un tableau pour size éléments.
Integer nbElem() const override
Retourne le nombre d'éléments du tableau.
void removeInstances()
Supprime les instances des services.
Classe de base de l'implémentation des options utilisant des services.
void setContainer(ICaseOptionServiceContainer *container)
Positionne le conteneur d'instances.
Classe de base des options utilisant des services.
void addDefaultValue(const String &category, const String &value)
Ajoute la valeur par défaut value à la catégorie category.
void setDefaultValue(const String &def_value)
Positionne la valeur par défaut du nom du service.
Classe de base d'une liste d'options du jeu de données.
Interface d'un conteneur d'instances de service.
Interface d'une liste d'options du jeu de données.
Fabrique pour un service implémentant l'interface InterfaceType.
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Informations pour créer un service.
Integer size() const
Nombre d'éléments du vecteur.
Vue modifiable d'un tableau d'un type T.
void resize(Int64 s)
Change le nombre d'éléments du tableau à s.
void clear()
Supprime les éléments du tableau.
Chaîne de caractères unicode.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-