14#include "arcane/utils/Observable.h"
15#include "arcane/utils/Observer.h"
30 if (!m_observers.empty())
31 cout <<
"** WARNING: Observable p=" <<
this
32 <<
" is destroyed but has n="
33 << m_observers.size() <<
" observer(s) attached\n";
44 if (m_observers.contains(obs))
60 for( Integer i=0, n=m_observers.size(); i<n; ++i ){
61 if (m_observers[i]==obs){
62 m_observers.remove(i);
74 if (m_observers.empty())
76 for( Integer i=0, n=m_observers.size(); i<n; ++i )
77 m_observers[i]->observerUpdate(
this);
86 return (!m_observers.empty());
95 return m_is_destroyed;
106 m_is_destroyed =
true;
119 for( Integer i=0, n=m_observers.size(); i<n; ++i ){
133 _detachAllObservers();
151AutoDetachObservable::
152~AutoDetachObservable()
154 _detachAllObservers();
Interface d'un observable.
virtual void detach()=0
Se détache de l'observable.
virtual void attachToObservable(IObservable *obs)=0
S'attache à l'observable obs.
Classe de base d'un observable.
void destroy() override
Détruit l'observable. Cet appel détruit l'instance (via delete this). Elle ne doit donc plus être uti...
void attachObserver(IObserver *obs) override
Attache l'observateur obs à cette observable.
void detachAllObservers() override
Détache tous les observeurs associés à cette instance.
bool isDestroyed() const override
Vrai si l'observable est détruit et ne doit plus être utilisé.
bool hasObservers() const override
Vrai si des observers sont attachées à cette observable.
void detachObserver(IObserver *obs) override
Détache l'observateur obs de cette observable.
void notifyAllObservers() override
Notifie tous les observateurs.
virtual ~Observable()
Libère les ressources.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
bool arcaneIsCheck()
Vrai si on est en mode vérification.