Arcane  v3.14.10.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
utils/Observer.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/* Observer.h (C) 2000-2021 */
9/* */
10/* Observateur. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_UTILS_OBSERVER_H
13#define ARCANE_UTILS_OBSERVER_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include "arcane/utils/IObserver.h"
18#include "arcane/utils/IObservable.h"
19
20/*---------------------------------------------------------------------------*/
21/*---------------------------------------------------------------------------*/
22
23namespace Arcane
24{
25
26/*---------------------------------------------------------------------------*/
27/*---------------------------------------------------------------------------*/
32class ARCANE_UTILS_EXPORT AbstractObserver
33: public IObserver
34{
35 public:
36
37 AbstractObserver() : m_observable(nullptr) {}
38 virtual ~AbstractObserver();
39
40 public:
41
43 void attachToObservable(IObservable* obs) override;
44
46 void detach() override;
47
48 private:
49
50 IObservable* m_observable;
51};
52
53/*---------------------------------------------------------------------------*/
54/*---------------------------------------------------------------------------*/
59template<class T>
61: public AbstractObserver
62{
63 public:
64
65 typedef void (T::*Func0Ptr)();
66 typedef void (T::*Func1Ptr)(const IObservable&);
67
68 public:
69
73 ObserverT(T* object,Func0Ptr funcptr)
75
76 public:
77
78
79 public:
80
83 {
84 if (m_function1)
86 if (m_function0)
88 }
89
90 private:
91
95};
96
97/*---------------------------------------------------------------------------*/
98/*---------------------------------------------------------------------------*/
99
100} // End namespace Arcane
101
102/*---------------------------------------------------------------------------*/
103/*---------------------------------------------------------------------------*/
104
105#endif
106
Classe de base d'un observateur.
Interface d'un observable.
Interface d'un observateur.
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Definition Lima.cc:120
Observateur pour un type T.
void(T::* Func0Ptr)()
Type du pointeur sur la méthode.
void observerUpdate(IObservable *iob) override
Exécute la méthode associé
Func1Ptr m_function1
Pointeur vers la méthode associée.
Func0Ptr m_function0
Pointeur vers la méthode associée.
void(T::* Func1Ptr)(const IObservable &)
Type du pointeur sur la méthode.
T * m_object
Objet associé.
ObserverT(T *object, Func1Ptr funcptr)
Constructeur.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-