6 #ifndef _RNBO_MessageEvent_H_
7 #define _RNBO_MessageEvent_H_
12 #include "RNBO_List.h"
13 #include "RNBO_PlatformInterface.h"
14 #include "RNBO_Logger.h"
15 #include "RNBO_Debug.h"
18 #define RNBO_NOMESSAGEEVENT // this is necessary until we have our own shared_ptr implementation
24 class PatcherEventTarget;
26 #ifdef RNBO_NOMESSAGEEVENT
33 bool operator==(
const MessageEvent& rhs)
const
38 PatcherEventTarget* getEventTarget()
const {
return nullptr; }
40 void dumpEvent()
const {}
43 friend class EventVariant;
45 PatcherEventTarget* _eventTarget;
47 void setTime(MillisecondTime eventTime) { }
72 , _eventTarget(
nullptr)
83 , _eventTime(eventTime)
84 , _type(MessageEvent::Number)
85 , _eventTarget(eventTarget)
93 , _eventTime(eventTime)
94 , _type(MessageEvent::List)
95 , _listValue(std::move(listValue))
96 , _eventTarget(eventTarget)
102 , _objectId(objectId)
103 , _eventTime(eventTime)
104 , _type(MessageEvent::Bang)
105 , _eventTarget(eventTarget)
111 , _objectId(other._objectId)
112 , _eventTime(other._eventTime)
113 , _eventTarget(other._eventTarget)
115 if (other._type == List) {
116 _listValue = other._listValue;
118 else if (other._type == Number){
119 _numValue = other._numValue;
126 : _tag(std::move(other._tag))
127 , _objectId(std::move(other._objectId))
128 , _eventTime(std::move(other._eventTime))
129 , _numValue(std::move(other._numValue))
130 , _listValue(std::move(other._listValue))
131 , _eventTarget(std::move(other._eventTarget))
134 other._type = Invalid;
141 _eventTime = other._eventTime;
142 _eventTarget = other._eventTarget;
143 _objectId = other._objectId;
145 if (other._type == List) {
146 _listValue = other._listValue;
148 else if (other._type == Number) {
149 _numValue = other._numValue;
159 _tag = std::move(other._tag);
160 _objectId = std::move(other._objectId);
161 _eventTime = std::move(other._eventTime);
162 _eventTarget = std::move(other._eventTarget);
163 _numValue = std::move(other._numValue);
164 _listValue = std::move(other._listValue);
167 other._type = Invalid;
174 return rhs.getTag() == getTag()
175 && rhs.getObjectId() == getObjectId()
176 && rhs.getTime() == getTime()
177 && rhs.getType() == getType()
178 && ((getType() == Bang
179 || getType() == List ? rhs.getListValue() == getListValue() : rhs.getNumValue() == getNumValue()))
180 && rhs._eventTarget == _eventTarget;
184 MessageTag getObjectId()
const {
return _objectId; }
185 MessageEvent::Type getType()
const {
return _type; }
188 PatcherEventTarget* getEventTarget()
const {
return _eventTarget; }
190 number getNumValue()
const {
191 RNBO_ASSERT(_type == Number);
195 std::shared_ptr<const list> getListValue()
const {
196 RNBO_ASSERT(_type == List);
201 void dumpEvent()
const {
214 MessageEvent::Type _type = Invalid;
217 std::shared_ptr<list> _listValue;
219 friend class EventVariant;
222 PatcherEventTarget* _eventTarget;
227 #endif // RNBO_NOMESSAGEEVENT
232 #endif // #ifndef _RNBO_MessageEvent_H_