24 #pragma message "C++ support is required for extras module" 28 #ifndef MCR_EXTRAS_EXTRAS_H_ 29 #define MCR_EXTRAS_EXTRAS_H_ 49 class LibmacroPrivate;
51 class LibmacroPlatform;
54 friend class LibmacroPrivate;
112 return contextIfNotNull ? contextIfNotNull : instance();
116 inline mcr_context &operator *()
120 inline const mcr_context &operator *()
const 126 return mcr::offset<Libmacro>(originPt);
130 return mcr::offset<Libmacro>(originPt);
133 template<
typename ISignalMemberT>
137 size_t count = inst.addNameCount();
138 const char **addN = count ?
new const char *[count] :
nullptr;
140 inst.addNames(addN, count);
145 throw mcr_read_err();
148 template<
typename ITriggerMemberT>
151 ITriggerMemberT inst;
152 size_t count = inst.addNameCount();
153 const char *
const*addN = count ?
new const char *[count] :
nullptr;
155 inst.addNames(addN, count);
160 throw mcr_read_err();
175 void setEnabled(
bool val);
178 size_t characterCount()
const;
179 size_t characterCount(
int c)
const;
180 Signal *characterData(
int c)
const;
187 setCharacter(c, &val.front(), val.size());
199 void setCharacterKey(
int c,
int key,
long msecDelay,
bool shiftFlag);
204 void setCharacterDelays(
mcr_NoOp delayValue);
205 void removeCharacter(
int c);
206 void trimCharacters();
207 void clearCharacters();
212 return isignalPt ? dispatcher(isignalPt->
interface.
id) :
nullptr;
216 return signalPt && signalPt->isignal ? dispatcher(signalPt->interface->
id) :
nullptr;
219 inline void setGenericDispatcher(
mcr_IDispatcher *idispatcherPt,
bool enable =
false)
221 setDispatcher(-1, idispatcherPt);
222 self.base.generic_dispatcher_flag = enable;
230 setGenericDispatcher(idispatcherPt, enable);
237 setDispatcher(signalPt->isignal, idispatcherPt, enable);
239 void clearDispatchers();
244 LibmacroPrivate *_private;
247 void construct(
bool enabled);
255 void setCharacter(
int c,
const Signal *valueArray,
size_t count);
struct mcr_Interface interface
#define mcr_throwif(condition, errorNumber)
MCR_API struct mcr_IRegistry * mcr_ISignal_registry(struct mcr_context *ctx)
Command - Execute a shell command, similar to execvp, with restrictions and without closing current p...
StringKey - Turn a text string into a set of signals, such as a key press
MCR_API int mcr_register(struct mcr_IRegistry *iRegPt, struct mcr_Interface *interfacePt, const char *name, const char *const *addNames, size_t addNamesCount)
String contracts for serialization.
Raise a compiler error. Usage: #include "mcr/err.h"
String contract registry for a primitive type.
C++ wrappers and extensions of C types.
Libmacro, by Jonathan Pelletier, New Paradigm Software. Alpha version.
MCR_API size_t mcr_ISignal_id(const struct mcr_ISignal *isigPt)
MCR_API struct mcr_IRegistry * mcr_ITrigger_registry(struct mcr_context *ctx)
void setCharacter(int c, const T &val)
struct mcr_IDispatcher * dispatcher_pt
String contract registry for a primitive type.