Arcane  v3.14.10.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
ServiceRegisterer.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/* ServiceRegisterer.h (C) 2000-2018 */
9/* */
10/* Singleton permettant d'enregister un service. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_SERCVICEREGISTERER_H
13#define ARCANE_SERCVICEREGISTERER_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
18
19#include "arcane/ServiceProperty.h"
20#include "arcane/ModuleProperty.h"
21
22/*---------------------------------------------------------------------------*/
23/*---------------------------------------------------------------------------*/
24
25ARCANE_BEGIN_NAMESPACE
26
27/*---------------------------------------------------------------------------*/
28/*---------------------------------------------------------------------------*/
29
30class IServiceFactory;
31class IServiceInfo;
32class IModuleFactoryInfo;
33class ModuleProperty;
34
35/*---------------------------------------------------------------------------*/
36/*---------------------------------------------------------------------------*/
55class ARCANE_CORE_EXPORT ServiceRegisterer
56{
57 public:
58
59 typedef IModuleFactoryInfo* (*ModuleFactoryWithPropertyFunc)(const ModuleProperty& properties);
60 typedef IServiceInfo* (*ServiceInfoWithPropertyCreateFunc)(const ServiceProperty& properties);
61
62 public:
63
69 ServiceRegisterer(ServiceInfoWithPropertyCreateFunc func,const ServiceProperty& properties) ARCANE_NOEXCEPT;
70
76 ServiceRegisterer(ModuleFactoryWithPropertyFunc func,const ModuleProperty& properties) ARCANE_NOEXCEPT;
77
78 public:
79
86 ServiceInfoWithPropertyCreateFunc infoCreatorWithPropertyFunction() { return m_info_function_with_property; }
87
94 ModuleFactoryWithPropertyFunc moduleFactoryWithPropertyFunction() { return m_module_factory_with_property_functor; }
95
97 const char* name() { return m_name; }
98
99 /*
100 * \brief Propriétés du service.
101 *
102 * \deprecated Utiliser \a serviceProperty() à la place
103 */
104 ARCANE_DEPRECATED_260 const ServiceProperty& property() const { return m_service_property; }
105
107 const ServiceProperty& serviceProperty() const { return m_service_property; }
108
110 const ModuleProperty& moduleProperty() const { return m_module_property; }
111
113 ServiceRegisterer* previousService() const { return m_previous; }
114
116 ServiceRegisterer* nextService() const { return m_next; }
117
118 private:
119
121
122 void setPreviousService(ServiceRegisterer* s) { m_previous = s; }
123
125
126 void setNextService(ServiceRegisterer* s) { m_next = s; }
127
128 public:
129
131 static ServiceRegisterer* firstService();
132
134 static Integer nbService();
135
136 private:
137
139 ModuleFactoryWithPropertyFunc m_module_factory_with_property_functor;
141 ServiceInfoWithPropertyCreateFunc m_info_function_with_property;
143 const char* m_name;
152
153 private:
154
155 void _init();
156};
157
158/*---------------------------------------------------------------------------*/
159/*---------------------------------------------------------------------------*/
160
161ARCANE_END_NAMESPACE
162
163/*---------------------------------------------------------------------------*/
164/*---------------------------------------------------------------------------*/
165
166#endif
167
Fichier de configuration d'Arcane.
Informations sur la fabrique d'un module.
Interface des informations d'un service ou d'un module.
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Definition Lima.cc:120
Propriétés de création d'un module.
Propriétés de création d'un service.
Enregistreur de service et modules.
void setPreviousService(ServiceRegisterer *s)
Positionne le service précédent.
ModuleProperty m_module_property
Propriétés du module.
ServiceRegisterer * m_next
Service suivant.
ServiceRegisterer * m_previous
Service précédent.
ServiceRegisterer * previousService() const
Service précédent (0 si le premier)
ServiceRegisterer * nextService() const
Service suivant (0 si le dernier)
ServiceInfoWithPropertyCreateFunc m_info_function_with_property
Fonction de création du IServiceInfo.
void setNextService(ServiceRegisterer *s)
Positionne le service suivant.
const ServiceProperty & serviceProperty() const
Propriétés dans le cas d'un service.
const char * name()
Nom du service.
ModuleFactoryWithPropertyFunc moduleFactoryWithPropertyFunction()
Fonction de création de la factory si on est un module.
ServiceInfoWithPropertyCreateFunc infoCreatorWithPropertyFunction()
Fonction de création de l'instance 'ServiceInfo' si on est un service.
ModuleFactoryWithPropertyFunc m_module_factory_with_property_functor
Fonction de création du IModuleFactory.
const ModuleProperty & moduleProperty() const
Propriétés dans le cas d'un module.
const char * m_name
Nom du service.
ServiceProperty m_service_property
Propriétés du service.