Jan Burse, created Aug 15. 2016
* The programming interface allows mode changes from a secondary
* thread. The secondary thread acts as a controller of the primary
* thread. By changing the mode it controls the behav-iour of the
* primary thread. A typical example of a secondary thread is the
* user interface event thread. The primary threads are then the
* console window Prolog threads. The secondary thread can then
* for example start tracing a console window Prolog thread by
* changing into an appropriate mode.
* The normal flow allows that mode changes can happen at any
* time. Their effect is also not delimited to the call port of
* a predicate or to an interrupted blocking operation. This is
* not very problematic except when inside a trace handler. A mode
* change might cause an undesired invocation of the trace handler.
* The system predicate sys_ignore/1 allows calling a goal with
* the mode cloak mask temporarily set off.
* Warranty & Liability
* To the extent permitted by applicable law and unless explicitly
* otherwise agreed upon, XLOG Technologies GmbH makes no warranties
* regarding the provided information. XLOG Technologies GmbH assumes
* no liability that any problems might be solved with the information
* provided by XLOG Technologies GmbH.
* Rights & License
* All industrial property rights regarding the information - copyright
* and patent rights in particular - are the sole property of XLOG
* Technologies GmbH. If the company was not the originator of some
* excerpts, XLOG Technologies GmbH has at least obtained the right to
* reproduce, change and translate the information.
* Reproduction is restricted to the whole unaltered document. Reproduction
* of the information is only allowed for non-commercial uses. Selling,
* giving away or letting of the execution of the library is prohibited.
* The library can be distributed as part of your applications and libraries
* for execution provided this comment remains unchanged.
* Jekejeke is a registered trademark of XLOG Technologies GmbH.
* The predicate succeeds whenever A succeeds. The goal A is invoked
* with the mode cloak temporarily set to off.
% The instrumentation hooks