Arcane  v3.16.4.0
Documentation utilisateur
Chargement...
Recherche...
Aucune correspondance
AbstractService.h
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2025 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/* AbstractService.h (C) 2000-2025 */
9/* */
10/* Classe de base d'un service. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_CORE_ABSTRACTSERVICE_H
13#define ARCANE_CORE_ABSTRACTSERVICE_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include "arcane/utils/TraceAccessor.h"
18
20#include "arcane/core/IService.h"
21
22/*---------------------------------------------------------------------------*/
23/*---------------------------------------------------------------------------*/
24
25namespace Arcane
26{
27
28/*---------------------------------------------------------------------------*/
29/*---------------------------------------------------------------------------*/
30/*!
31 * \brief Classe de base d'un service.
32 *
33 * Cette classe est LA classe d'implémentation bas niveau de l'interface \a IService.
34 *
35 * \ingroup Service
36 */
37class ARCANE_CORE_EXPORT AbstractService
38: public TraceAccessor
39, public IService
40{
41 protected:
42
43 //! Constructeur à partir d'un \a ServiceBuildInfo
44 explicit AbstractService(const ServiceBuildInfo&);
45
46 public:
47
48 //! Destructeur
49 ~AbstractService() override;
50
51 public:
52
53 /*!
54 * \brief Construction de niveau \a build du service.
55 *
56 * Cette méthode est appelé juste après le constructeur.
57 */
58 virtual void build() {}
59
60 public:
61
62 //! Accès aux informations du service. Voir \a IServiceInfo pour les détails
63 IServiceInfo* serviceInfo() const override { return m_service_info; }
64
65 //! Accès à l'interface de base des principaux objets Arcane
66 IBase* serviceParent() const override { return m_parent; }
67
68 //! Retourne l'interface bas niveau \a IService du service
69 IService* serviceInterface() override { return this; }
70
71 private:
72
73 IServiceInfo* m_service_info = nullptr;
74 IBase* m_parent = nullptr;
75};
76
77/*---------------------------------------------------------------------------*/
78/*---------------------------------------------------------------------------*/
79
80} // namespace Arcane
81
82/*---------------------------------------------------------------------------*/
83/*---------------------------------------------------------------------------*/
84
85#endif
Déclarations des types généraux de Arcane.
IService * serviceInterface() override
Retourne l'interface bas niveau IService du service.
IServiceInfo * serviceInfo() const override
Accès aux informations du service. Voir IServiceInfo pour les détails.
AbstractService(const ServiceBuildInfo &)
Constructeur à partir d'un ServiceBuildInfo.
IBase * serviceParent() const override
Accès à l'interface de base des principaux objets Arcane.
virtual void build()
Construction de niveau build du service.
Interface de la classe de base des objets principaux arcane.
Definition IBase.h:31
Interface des informations d'un service ou d'un module.
IService()
Constructeur.
Definition IService.h:43
Structure contenant les informations pour créer un service.
TraceAccessor(ITraceMng *m)
Construit un accesseur via le gestionnaire de trace m.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-