23 #ifndef MCR_EXTRAS_REFERENCES_TRIGGER_BUILDER_H_ 24 #define MCR_EXTRAS_REFERENCES_TRIGGER_BUILDER_H_ 81 return _trigPt ? _trigPt->itrigger :
nullptr;
85 return _trigPt ? _trigPt->interface :
nullptr;
93 virtual inline size_t id()
const 95 return itriggerBuilder().id();
97 virtual void setId(
size_t val)
99 setITrigger(itriggerBuilder().build(val).itrigger());
101 virtual inline const char *name()
const 103 return itriggerBuilder().name();
105 virtual void setName(
const char *val)
107 setITrigger(itriggerBuilder().build(val).itrigger());
117 return _trigPt ? &_trigPt->instance :
nullptr;
121 return _trigPt ? &_trigPt->instance.data_member :
nullptr;
123 virtual inline void setTrigger(
mcr_Trigger *trigPt)
129 setTrigger(copytron.trigger());
132 inline bool empty()
const 134 return !data<void>();
147 virtual inline mcr_Trigger_receive_fnc triggerDispatch()
const 149 return _trigPt ? _trigPt->trigger :
nullptr;
151 virtual inline void setTriggerDispatch(mcr_Trigger_receive_fnc val)
154 _trigPt->trigger = val;
156 virtual inline void *actor()
const 158 return _trigPt ? _trigPt->actor :
nullptr;
160 virtual inline void setActor(
void *val)
163 _trigPt->actor = val;
167 template <
typename T>
168 inline const T *data()
const 170 return data<T>(_trigPt);
172 template <
typename T>
175 return data<T>(_trigPt);
177 template <
typename T>
178 static inline const T *data(
const mcr_Trigger *trigPt)
180 return trigPt ?
reinterpret_cast<T *
>(trigPt->instance.
data_member.
data) :
nullptr;
182 template <
typename T>
185 return trigPt ?
reinterpret_cast<T *
>(trigPt->instance.
data_member.
data) :
nullptr;
189 if (trigger() && itrigger() && empty()) {
191 throw mcr_read_err();
193 throw mcr_read_err();
201 copy(copytron.trigger());
203 virtual inline int compare(
const mcr_Trigger *rhs)
const
MCR_API int mcr_Instance_reset(struct mcr_Instance *instancePt)
MCR_API void mcr_Trigger_deinit(struct mcr_Trigger *trigPt)
mcr_Trigger * ptr() const
Libmacro, by Jonathan Pelletier, New Paradigm Software. Alpha version.
MCR_API int mcr_Trigger_compare(const struct mcr_Trigger *lhsTriggerPt, const struct mcr_Trigger *rhsTriggerPt)
struct mcr_DataMember data_member
TriggerBuilder & build(mcr_Trigger *trigPt)