C++ API Reference RNBO: src/RNBO_TransportEvent.h Source File

RNBO: src/RNBO_TransportEvent.h Source File

1 //
2 // RNBO_TransportEvent.h
3 //
4 //
5 
6 #ifndef _RNBO_TransportEvent_H_
7 #define _RNBO_TransportEvent_H_
8 
9 #include "RNBO_Types.h"
10 
11 namespace RNBO {
12 
13  class PatcherEventTarget;
14 
19 
20  public:
21 
23  : _eventTime(0)
24  , _state(STOPPED)
25  {
26  }
27 
29  {
30  }
31 
33  MillisecondTime eventTime,
34  TransportState state
35  )
36  : _eventTime(eventTime)
37  , _state(state)
38  {
39  }
40 
41  TransportEvent(const TransportEvent& other)
42  : _eventTime(other._eventTime)
43  {
44  _state = other._state;
45  }
46 
48  : _eventTime(other._eventTime)
49  {
50  _state = other._state;
51  }
52 
53  TransportEvent& operator = (const TransportEvent& other)
54  {
55  _eventTime = other._eventTime;
56  _state = other._state;
57 
58  return *this;
59  }
60 
61  bool operator==(const TransportEvent& rhs) const
62  {
63  return rhs.getTime() == getTime() && rhs.getState() == getState();
64  }
65 
66  MillisecondTime getTime() const { return _eventTime; }
67  TransportState getState() const { return _state; }
68 
69  // we will always use the default event target (the top level patcher)
70  PatcherEventTarget* getEventTarget() const { return nullptr; }
71 
72  // debugging
73  void dumpEvent() const {
74  // disabling for now to avoid requiring fprintf support in generated code
75 // fprintf(stdout, "TransportEvent: time=%.3f state=%d", _eventTime, _state);
76  }
77 
78  protected:
79 
80  MillisecondTime _eventTime;
81  TransportState _state;
82 
83  friend class EventVariant;
84 
85  void setTime(MillisecondTime eventTime) { _eventTime = eventTime; }
86  };
87 
88 } // namespace RNBO
89 
90 #endif // #ifndef _RNBO_TransportEvent_H_