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

RNBO: src/RNBO_BBUEvent.h Source File

1 //
2 // RNBO_BBUEvent.h
3 //
4 //
5 
6 #ifndef _RNBO_BBUEvent_H_
7 #define _RNBO_BBUEvent_H_
8 
9 #include "RNBO_Types.h"
10 
11 namespace RNBO {
12 
13  class PatcherEventTarget;
14 
18  class BBUEvent {
19 
20  public:
21 
22  BBUEvent()
23  : _eventTime(0)
24  {
25  }
26 
27  ~BBUEvent()
28  {
29  }
30 
31  BBUEvent(
32  MillisecondTime eventTime,
33  number bars,
34  number beats,
35  number units
36  )
37  : _eventTime(eventTime)
38  , _bars(bars)
39  , _beats(beats)
40  , _units(units)
41  {
42  }
43 
44  BBUEvent(const BBUEvent& other)
45  : _eventTime(other._eventTime)
46  {
47  _bars = other._bars;
48  _beats = other._beats;
49  _units = other._units;
50  }
51 
52  BBUEvent(BBUEvent&& other)
53  : _eventTime(other._eventTime)
54  {
55  _bars = other._bars;
56  _beats = other._beats;
57  _units = other._units;
58  }
59 
60  BBUEvent& operator = (const BBUEvent& other)
61  {
62  _eventTime = other._eventTime;
63  _bars = other._bars;
64  _beats = other._beats;
65  _units = other._units;
66 
67  return *this;
68  }
69 
70  bool operator==(const BBUEvent& rhs) const
71  {
72  return rhs.getTime() == getTime()
73  && rhs.getBars() == getBars()
74  && rhs.getBeats() == getBeats()
75  && rhs.getUnits() == getUnits();
76  }
77 
78  MillisecondTime getTime() const { return _eventTime; }
79  number getBars() const { return _bars; }
80  number getBeats() const { return _beats; }
81  number getUnits() const { return _units; }
82 
83  // we will always use the default event target (the top level patcher)
84  PatcherEventTarget* getEventTarget() const { return nullptr; }
85 
86  // debugging
87  void dumpEvent() const {
88  // disabling for now to avoid requiring fprintf support in generated code
89 // fprintf(stdout, "BBUEvent: time=%.3f state=%d", _eventTime, _state);
90  }
91 
92  protected:
93 
94  MillisecondTime _eventTime;
95 
96  number _bars = 0;
97  number _beats = 0;
98  number _units = 0;
99 
100  friend class EventVariant;
101 
102  void setTime(MillisecondTime eventTime) { _eventTime = eventTime; }
103  };
104 
105 } // namespace RNBO
106 
107 #endif // #ifndef _RNBO_BBUEvent_H_