Table of Contents
00000000:0001 - #IFEXT
- ID: 00000000:0001
|playing_should||MAY||If any #IFEXT calls are used in Objects with the described caveat for optional support.|
|playing_must||MAY||If any #IFEXT calls are used in Objects.|
This extension adds an OOP command which faciliates run-time detection of extensions on both ZZT 3.2 and ZXT-compatible implementations. The command is
#IFEXT owner_id selector_id …, where owner_id and selector_id are specified as 32-bit and 16-bit hexadecimal numbers, respectively. If the extension with a given owner_id and selector_id is currently active within the execution context, the rest of the line is treated as a command.
Keep in mind that to support
#IFEXT as an optional extension, an
:IFEXT label SHOULD be provided to handle the situation in which this extension is not present.
#ifext 00000000 0001 found :found Extensions found! #end :ifext Extensions not found. #end
Two touch codepaths
@Interactive #ifext 00000000 0001 zap touch :ifext #end :touch I found nothing... #end :touch I found IFEXT support! #end
Two touch codepaths (#BIND workaround)
If the code above is bound,
:TOUCH might end up being zapped multiple times. This code takes care of that:
@Interactive #send init #end :init #zap init #ifext 00000000 0001 zap touch :ifext #end :touch I found nothing... #end :touch I found IFEXT support! #end
An alternative, more advanced technique is pre-setting the instruction pointer in an external editor.