VR-Forces 4.8 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
DtSubjectObserver.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2018 MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 
9 
10 #pragma once
11 
14 
15 #include <vrvUtil/templateUtil.h>
17 
18 #include <boost/signal.hpp>
19 #include <boost/bind.hpp>
20 
21 namespace makVrv
22 {
23 
28  template<class T>
29  class DtSubjectObserver : public virtual DtSubjectBinder
30  {
31 
32  public:
33 
39 
40  virtual ~DtSubjectObserver();
41 
42  virtual void slot_activate(T* subject) = 0;
43 
44  virtual void slot_deactivate(T* subject) = 0;
45 
46  protected:
47 
48  virtual void connect(DtDe& de);
49 
51 
52  };
53 
54  template<class T>
56  {
59 
60  myBindFunctionList.push_back(functor);
61  }
62 
63  template<class T>
65  {
66 
67  }
68 
69  template<class T>
71  {
76 
77  if(announcer)
78  {
80  mySignalConnectionManager += announcer->signal_activate.connect(
82 
84  // w/ each activated subject instance.
85  typename std::list<T*>::iterator curIter = announcer->activatedList().begin();
86  typename std::list<T*>::iterator endIter = announcer->activatedList().end();
87  for(;curIter != endIter; ++curIter)
88  {
89  this->slot_activate(*curIter);
90  }
91  }
92  }
93 
97 }
virtual void connect(DtDe &de)
Definition: DtSubjectObserver.h:70
virtual std::list< T * > & activatedList()
Return the list of activated subjects.
Definition: DtSubjectAnnouncer.h:151
DtSubjectObserver()
brief Create a DtSubjectObserver and add the connect() method as a functor to the DtSubjectBinder&#39;s l...
Definition: DtSubjectObserver.h:55
Contains utility macros and methods for templates.
boost::function< void(DtDe &)> BindFunction
Definition: DtSubjectBinder.h:44
static DtSubjectAnnouncer * findInstance(DtDe &de)
Get the instance of this object. This object is &#39;lazily created&#39;.
Definition: DtSubjectAnnouncer.h:102
Component which owns how the application is displayed.
Definition: DtDisplay.h:30
virtual void slot_activate(T *subject)=0
Base class for DtSubjectObservers that allow &quot;delayed virtual construction via functors&quot;.
Definition: DtSubjectBinder.h:32
Contains makVrv::DtSubjectBinder class.
binderNoArgs< _Fn > bind(const _Fn &_Func, const _Ty &_Left)
Definition: DtSTLUtilities.h:76
Contains makVrv::DtSubjectAnnouncer class.
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:24
DtSignalConnectionManager mySignalConnectionManager
Definition: DtSubjectObserver.h:50
The class responsible for managing communication between multiple DtDe instances typically running in...
Definition: DtDeCommunicator.h:31
virtual ~DtSubjectObserver()
Definition: DtSubjectObserver.h:64
boost::signal< void(T *)> signal_activate
Signal with a T argument and a void return value.
Definition: DtSubjectAnnouncer.h:49
virtual void slot_deactivate(T *subject)=0
Base class to provide boost signal/slot management.
A DtSubjectAnnouncer tells DtSubjectObservers that the subject T is activated or deactivated.
Definition: DtSubjectAnnouncer.h:32
The DtDe is the core component of any VR-Vantage application.
Definition: DtDe.h:69
A DtSubjectObserver is told by a DtSubjectAnnouncer when the subject is activated/ deactivated...
Definition: DtSubjectObserver.h:29
#define EXPORT_TEMPLATE_TYPEDEF(C, TD)
Definition: templateUtil.h:139

Document ID: Generated on Thu Aug 27 10:56:05 EDT 2020 from SVN revision 217100
Copyright © 2005-2020 MAK Technologies. All Rights Reserved (www.mak.com)