32 #define DLLFUNC __declspec(dllexport)
58 using namespace mhthreads;
123 void (*nullary_fn)();
124 void (*unary_fn)(int);
129 Job() : nullary_fn(0), unary_fn(0), val(0), completed(0) {}
130 Job(
void (*nfn)()) : nullary_fn(nfn), unary_fn(0), val(0), completed(0) {}
131 Job(
void (*ufn)(
int),
int v) : nullary_fn(0), unary_fn(ufn), val(v), completed(0) {}
133 : nullary_fn(nfn), unary_fn(0), val(0), completed(c) {}
135 : nullary_fn(0), unary_fn(ufn), val(v), completed(c) {}
161 MHDBGMSG(__FILE__,__LINE__,__PRETTY_FUNCTION__);
164 MHDBGMSG(__FILE__,__LINE__,__PRETTY_FUNCTION__);
168 if (
robot==
nullptr) {
186 MHDBGMSG(__FILE__,__LINE__,__PRETTY_FUNCTION__);
190 MHDBGMSG(__FILE__,__LINE__,__PRETTY_FUNCTION__);
194 MHDBGMSG(__FILE__,__LINE__,__PRETTY_FUNCTION__);
199 MHDBGMSG(__FILE__,__LINE__,__PRETTY_FUNCTION__);
203 MHDBGMSG(__FILE__,__LINE__,__PRETTY_FUNCTION__);
208 MHDBGMSG(__FILE__,__LINE__,__PRETTY_FUNCTION__);
213 MHDBGMSG(__FILE__,__LINE__,__PRETTY_FUNCTION__);
219 MHDBGMSG(__FILE__,__LINE__,__PRETTY_FUNCTION__);
220 waitForCompletion.
Wait();
222 MHDBGMSG(__FILE__,__LINE__,__PRETTY_FUNCTION__);
228 MHDBGMSG(__FILE__,__LINE__,__PRETTY_FUNCTION__);
233 waitForCompletion.
Wait();
235 MHDBGMSG(__FILE__,__LINE__,__PRETTY_FUNCTION__);
242 MHDBGMSG(__FILE__,__LINE__,__PRETTY_FUNCTION__);
259 MHDBGMSG(__FILE__,__LINE__,__PRETTY_FUNCTION__);
264 MHDBGMSG(__FILE__,__LINE__,__PRETTY_FUNCTION__);
267 waitForCompletion.
Wait();
268 MHDBGMSG(__FILE__,__LINE__,__PRETTY_FUNCTION__);
286 while (!
jobs.empty()) {
311 MHDBGMSG(__FILE__,__LINE__,
"background thread is already running");
321 MHDBGMSG(__FILE__,__LINE__,__PRETTY_FUNCTION__);
354 if (&*
matchDefFileName == 0)
throw runtime_error(
"Match definition filename not set");
376 MHDBGMSG(__FILE__,__LINE__,__PRETTY_FUNCTION__);
382 MHDBGMSG(__FILE__,__LINE__,__PRETTY_FUNCTION__);
383 waitForCompletion.
Wait();
385 MHDBGMSG(__FILE__,__LINE__,__PRETTY_FUNCTION__);
402 MHDBGMSG(__FILE__,__LINE__,__PRETTY_FUNCTION__);
404 MHDBGMSG(__FILE__,__LINE__,__PRETTY_FUNCTION__);
435 MHDBGMSG(__FILE__,__LINE__,__PRETTY_FUNCTION__);
437 MHDBGMSG(__FILE__,__LINE__,
"no line observer");
449 MHDBGMSG(__FILE__,__LINE__,__PRETTY_FUNCTION__);
455 MHDBGMSG(__FILE__,__LINE__,__PRETTY_FUNCTION__);
457 MHDBGMSG(__FILE__,__LINE__,__PRETTY_FUNCTION__);
464 MHDBGMSG(__FILE__,__LINE__,__PRETTY_FUNCTION__);
465 if (&*
matchObs ==
nullptr)
return 0;
475 MHDBGMSG(__FILE__,__LINE__,__PRETTY_FUNCTION__);
481 MHDBGMSG(__FILE__,__LINE__,__PRETTY_FUNCTION__);
483 MHDBGMSG(__FILE__,__LINE__,__PRETTY_FUNCTION__);
491 MHDBGMSG(__FILE__,__LINE__,__PRETTY_FUNCTION__);
492 if (&*
textObs ==
nullptr)
return 0;
502 MHDBGMSG(__FILE__,__LINE__,__PRETTY_FUNCTION__);
508 MHDBGMSG(__FILE__,__LINE__,__PRETTY_FUNCTION__);
510 MHDBGMSG(__FILE__,__LINE__,__PRETTY_FUNCTION__);