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

RNBO: src/RNBO_DataRefEvent.h Source File

1 //
2 // RNBO_DataRefEvent.h
3 //
4 //
5 
6 #ifndef _RNBO_DataRefEvent_H_
7 #define _RNBO_DataRefEvent_H_
8 
9 #include "RNBO_PatcherInterface.h"
10 
11 namespace RNBO {
12 
16  class DataRefEvent {
17 
18  public:
19 
20  enum
21  {
22  InvalidDataRefIndex = -1
23  };
24 
25  enum DataRefAction {
26  NoAction,
27  UpdateDataRef
28  };
29 
30  DataRefEvent()
31  : _dataRefIndex(InvalidDataRefIndex)
32  , _eventTime(0)
33  , _action(NoAction)
34  , _eventTarget(nullptr)
35  {
36  }
37 
38  DataRefEvent(const DataRefEvent& other) = default;
39  DataRefEvent& operator = (const DataRefEvent& other) = default;
40 
41  DataRefEvent(DataRefIndex dataRefIndex, MillisecondTime eventTime, DataRefAction action, PatcherEventTarget* eventTarget = nullptr)
42  : _dataRefIndex(dataRefIndex)
43  , _eventTime(eventTime)
44  , _action(action)
45  , _eventTarget(eventTarget)
46  {
47  }
48 
49  bool operator==(const DataRefEvent& rhs) const
50  {
51  return rhs.getDataRefIndex() == getDataRefIndex()
52  && rhs.getTime() == getTime()
53  && getAction() == rhs.getAction()
54  && rhs._eventTarget == _eventTarget;
55  }
56 
57  DataRefIndex getDataRefIndex() const { return _dataRefIndex; }
58  DataRefAction getAction() const { return _action; }
59 
60  MillisecondTime getTime() const { return _eventTime; }
61  PatcherEventTarget* getEventTarget() const { return _eventTarget; }
62 
63  // debugging
64  void dumpEvent() const
65  {
66  // disabling for now to avoid requiring fprintf support in generated code
67  // fprintf(stdout, "DataRefEvent: DataRefIndex=%d time=%.3f action=%.4f\n", _dataRefIndex, _eventTime, _action);
68  }
69 
70  private:
71 
72  DataRefIndex _dataRefIndex;
73  MillisecondTime _eventTime;
74  DataRefAction _action;
75 
76  friend class EventVariant;
77 
78  PatcherEventTarget* _eventTarget;
79  void setTime(MillisecondTime eventTime) { _eventTime = eventTime; }
80 
81  };
82 
83 } // namespace RNBO
84 
85 #endif // #ifndef _RNBO_DataRefEvent_H_