Enregistreur de service et modules. Plus de détails...
#include <arcane/core/ServiceRegisterer.h>
Types publics | |
typedef IModuleFactoryInfo *(* | ModuleFactoryWithPropertyFunc) (const ModuleProperty &properties) |
typedef IServiceInfo *(* | ServiceInfoWithPropertyCreateFunc) (const ServiceProperty &properties) |
Fonctions membres publiques | |
ServiceRegisterer (ServiceInfoWithPropertyCreateFunc func, const ServiceProperty &properties) ARCANE_NOEXCEPT | |
Crée en enregistreur pour le service name et la fonction func. | |
ServiceRegisterer (ModuleFactoryWithPropertyFunc func, const ModuleProperty &properties) ARCANE_NOEXCEPT | |
Crée en enregistreur pour le module name avec les propriétés properties. | |
ServiceInfoWithPropertyCreateFunc | infoCreatorWithPropertyFunction () |
Fonction de création de l'instance 'ServiceInfo' si on est un service. | |
ModuleFactoryWithPropertyFunc | moduleFactoryWithPropertyFunction () |
Fonction de création de la factory si on est un module. | |
const char * | name () |
Nom du service. | |
ARCANE_DEPRECATED_260 const ServiceProperty & | property () const |
const ServiceProperty & | serviceProperty () const |
Propriétés dans le cas d'un service. | |
const ModuleProperty & | moduleProperty () const |
Propriétés dans le cas d'un module. | |
ServiceRegisterer * | previousService () const |
Service précédent (0 si le premier) | |
ServiceRegisterer * | nextService () const |
Service suivant (0 si le dernier) | |
Fonctions membres publiques statiques | |
static ServiceRegisterer * | firstService () |
Accès au premier élément de la chaine d'enregistreur de service. | |
static Integer | nbService () |
Nombre d'enregisteur de service dans la chaine. | |
Enregistreur de service et modules.
Cette classe implémente le pattern Singleton pour un service donnée.
Elle permet de déclarer une variable globale qui enregistre automatiquement le IServiceFactory du service souhaité. Cette classe ne s'utilise pas directement mais par l'intermédiaire de la macro ARCANE_DEFINE_SERVICE(name).
Comme cette classe est utilisé avec des instances globales, elles sont construites avant que le code ne rentre dans le main(). Il faut donc faire très attention à n'utiliser aucun objet ni faire d'allocation( En particulier, le nom du service doit être un const char* standard). Pour cela, la liste des services enregistré est maintenu dans une liste chaînée et chaque instance contient le pointeur vers le membre suivant et précédent de la liste. Le premier élément de la liste est obtenu par l'appel à ServiceRegisterer::firstService().
Définition à la ligne 55 du fichier ServiceRegisterer.h.
typedef IModuleFactoryInfo *(* Arcane::ServiceRegisterer::ModuleFactoryWithPropertyFunc) (const ModuleProperty &properties) |
Définition à la ligne 59 du fichier ServiceRegisterer.h.
typedef IServiceInfo *(* Arcane::ServiceRegisterer::ServiceInfoWithPropertyCreateFunc) (const ServiceProperty &properties) |
Définition à la ligne 60 du fichier ServiceRegisterer.h.
Arcane::ServiceRegisterer::ServiceRegisterer | ( | ServiceInfoWithPropertyCreateFunc | func, |
const ServiceProperty & | properties | ||
) |
Crée en enregistreur pour le service name et la fonction func.
Ce constructeur est utilisé pour enregistrer un service.
Définition à la ligne 36 du fichier ServiceRegisterer.cc.
Arcane::ServiceRegisterer::ServiceRegisterer | ( | ModuleFactoryWithPropertyFunc | func, |
const ModuleProperty & | properties | ||
) |
Crée en enregistreur pour le module name avec les propriétés properties.
Ce constructeur est utilisé pour enregistrer un module.
Définition à la ligne 53 du fichier ServiceRegisterer.cc.
|
static |
Accès au premier élément de la chaine d'enregistreur de service.
Définition à la ligne 107 du fichier ServiceRegisterer.cc.
|
inline |
Fonction de création de l'instance 'ServiceInfo' si on est un service.
Ce pointeur peut-être nul si on n'est pas un service, auquel cas il faut utiliser infoCreatorFunction().
Définition à la ligne 86 du fichier ServiceRegisterer.h.
|
inline |
Fonction de création de la factory si on est un module.
Ce pointeur peut-être nul si on n'est pas un module, auquel cas il faut utiliser infoCreatorFunction().
Définition à la ligne 94 du fichier ServiceRegisterer.h.
|
inline |
Propriétés dans le cas d'un module.
Définition à la ligne 110 du fichier ServiceRegisterer.h.
|
inline |
Nom du service.
Définition à la ligne 97 du fichier ServiceRegisterer.h.
|
static |
Nombre d'enregisteur de service dans la chaine.
Définition à la ligne 116 du fichier ServiceRegisterer.cc.
|
inline |
Service suivant (0 si le dernier)
Définition à la ligne 116 du fichier ServiceRegisterer.h.
|
inline |
Service précédent (0 si le premier)
Définition à la ligne 113 du fichier ServiceRegisterer.h.
|
inline |
Définition à la ligne 104 du fichier ServiceRegisterer.h.
|
inline |
Propriétés dans le cas d'un service.
Définition à la ligne 107 du fichier ServiceRegisterer.h.