14#include "arcane/utils/ArcanePrecomp.h"
16#include "arcane/utils/Iostream.h"
18#include "arcane/ServiceRegisterer.h"
30static ServiceRegisterer* global_arcane_first_service =
nullptr;
31static Integer global_arcane_nb_service = 0;
37ServiceRegisterer(ServiceInfoWithPropertyCreateFunc func,
39: m_module_factory_with_property_functor(
nullptr)
40, m_info_function_with_property(func)
41, m_name(properties.name())
42, m_service_property(properties)
43, m_module_property(properties.name())
54ServiceRegisterer(ModuleFactoryWithPropertyFunc func,
56: m_module_factory_with_property_functor(func)
57, m_info_function_with_property(
nullptr)
58, m_name(properties.name())
60, m_module_property(properties)
70void ServiceRegisterer::
73 if (global_arcane_first_service==
nullptr){
74 global_arcane_first_service =
this;
75 setPreviousService(
nullptr);
76 setNextService(
nullptr);
79 ServiceRegisterer* next = global_arcane_first_service->
nextService();
80 setNextService(global_arcane_first_service);
81 global_arcane_first_service =
this;
83 next->setPreviousService(
this);
85 ++global_arcane_nb_service;
88 ServiceRegisterer * p = global_arcane_first_service;
89 Integer count = global_arcane_nb_service;
90 while (p && count > 0) {
95 cout <<
"Arcane Fatal Error: Service '" << m_name <<
"' conflict in service registration" << std::endl;
97 }
else if (count > 0) {
98 cout <<
"Arcane Fatal Error: Service '" << m_name <<
"' breaks service registration (inconsistent shortcut)" << std::endl;
110 return global_arcane_first_service;
116Integer ServiceRegisterer::
119 return global_arcane_nb_service;
Propriétés de création d'un module.
Propriétés de création d'un service.
Enregistreur de service et modules.
ServiceRegisterer * nextService() const
Service suivant (0 si le dernier)
Int32 Integer
Type représentant un entier.