6 #ifndef _RNBO_MessageEvent_H_
7 #define _RNBO_MessageEvent_H_
11 #include "RNBO_Debug.h"
13 #include "RNBO_List.h"
16 #define RNBO_NOMESSAGEEVENT // this is necessary until we have our own shared_ptr implementation
22 class PatcherEventTarget;
24 #ifdef RNBO_NOMESSAGEEVENT
31 bool operator==(
const MessageEvent& rhs)
const
36 PatcherEventTarget* getEventTarget()
const {
return nullptr; }
38 void dumpEvent()
const {}
41 friend class EventVariant;
43 PatcherEventTarget* _eventTarget;
45 void setTime(MillisecondTime eventTime) { }
70 , _eventTarget(
nullptr)
81 , _eventTime(eventTime)
82 , _type(MessageEvent::Number)
83 , _eventTarget(eventTarget)
91 , _eventTime(eventTime)
92 , _type(MessageEvent::List)
93 , _listValue(std::move(listValue))
94 , _eventTarget(eventTarget)
100 , _objectId(objectId)
101 , _eventTime(eventTime)
102 , _type(MessageEvent::Bang)
103 , _eventTarget(eventTarget)
109 , _objectId(other._objectId)
110 , _eventTime(other._eventTime)
111 , _eventTarget(other._eventTarget)
113 if (other._type == List) {
114 _listValue = other._listValue;
116 else if (other._type == Number){
117 _numValue = other._numValue;
124 : _tag(std::move(other._tag))
125 , _objectId(std::move(other._objectId))
126 , _eventTime(std::move(other._eventTime))
127 , _numValue(std::move(other._numValue))
128 , _listValue(std::move(other._listValue))
129 , _eventTarget(std::move(other._eventTarget))
132 other._type = Invalid;
139 _eventTime = other._eventTime;
140 _eventTarget = other._eventTarget;
141 _objectId = other._objectId;
143 if (other._type == List) {
144 _listValue = other._listValue;
146 else if (other._type == Number) {
147 _numValue = other._numValue;
157 _tag = std::move(other._tag);
158 _objectId = std::move(other._objectId);
159 _eventTime = std::move(other._eventTime);
160 _eventTarget = std::move(other._eventTarget);
161 _numValue = std::move(other._numValue);
162 _listValue = std::move(other._listValue);
165 other._type = Invalid;
172 return rhs.getTag() == getTag()
173 && rhs.getObjectId() == getObjectId()
174 && rhs.getTime() == getTime()
175 && rhs.getType() == getType()
176 && ((getType() == Bang
177 || getType() == List ? rhs.getListValue() == getListValue() : rhs.getNumValue() == getNumValue()))
178 && rhs._eventTarget == _eventTarget;
182 MessageTag getObjectId()
const {
return _objectId; }
183 MessageEvent::Type getType()
const {
return _type; }
186 PatcherEventTarget* getEventTarget()
const {
return _eventTarget; }
188 number getNumValue()
const {
189 RNBO_ASSERT(_type == Number);
193 std::shared_ptr<const list> getListValue()
const {
194 RNBO_ASSERT(_type == List);
199 void dumpEvent()
const {
212 MessageEvent::Type _type = Invalid;
215 std::shared_ptr<list> _listValue;
217 friend class EventVariant;
220 PatcherEventTarget* _eventTarget;
225 #endif // RNBO_NOMESSAGEEVENT
230 #endif // #ifndef _RNBO_MessageEvent_H_