23 #ifndef MCR_EXTRAS_REFERENCES_SIGNAL_BUILDER_H_ 24 #define MCR_EXTRAS_REFERENCES_SIGNAL_BUILDER_H_ 87 return _sigPt ? _sigPt->isignal :
nullptr;
91 return _sigPt ? _sigPt->interface :
nullptr;
99 virtual inline size_t id()
const 101 return isignalBuilder().id();
103 virtual inline void setId(
size_t val)
105 setISignal(isignalBuilder().build(val).isignal());
107 virtual inline const char *name()
const 109 return isignalBuilder().name();
111 virtual inline void setName(
const char *val)
113 setISignal(isignalBuilder().build(val).isignal());
123 return _sigPt ? &_sigPt->instance :
nullptr;
127 return _sigPt ? &_sigPt->instance.data_member :
nullptr;
129 virtual inline void setSignal(
mcr_Signal *sigPt)
135 setSignal(copytron.signal());
138 virtual inline bool empty()
const 140 return !data<void>();
153 virtual inline bool dispatch()
const 155 return _sigPt ? _sigPt->dispatch_flag :
false;
157 virtual inline void setDispatch(
bool val)
160 _sigPt->dispatch_flag = val;
164 template <
typename T>
165 inline const T *data()
const 167 return data<T>(_sigPt);
169 template <
typename T>
172 return data<T>(_sigPt);
174 template <
typename T>
175 static inline const T *data(
const mcr_Signal *signalPt)
177 return signalPt ?
reinterpret_cast<T *
>(signalPt->instance.
data_member.
data) :
nullptr;
179 template <
typename T>
182 return signalPt ?
reinterpret_cast<T *
>(signalPt->instance.
data_member.
data) :
nullptr;
187 if (signal() && isignal() && empty()) {
189 throw mcr_read_err();
191 throw mcr_read_err();
196 virtual bool dispatch();
198 virtual void copy(
const mcr_Signal *copytron);
201 copy(copytron.signal());
203 virtual inline int compare(
const mcr_Signal *rhs)
const
MCR_API int mcr_Instance_reset(struct mcr_Instance *instancePt)
MCR_API void mcr_Signal_deinit(struct mcr_Signal *signalPt)
Libmacro, by Jonathan Pelletier, New Paradigm Software. Alpha version.
struct mcr_DataMember data_member
SignalBuilder & build(mcr_Signal *sigPt)
MCR_API int mcr_Signal_compare(const struct mcr_Signal *lhsSignalPt, const struct mcr_Signal *rhsSignalPt)