BRL.Hook: | Functions | Source |
This module provides a generic way to hook into various BlitzMax commands, and to add support for hooks into your own code.
The following hook ids are currently used by BlitzMax modules:
Hook id | Description | Data |
FlipHook | A Max2D Flip is about to occur | Null |
EmitEventHook | An event has been emitted by a call to EmitEvent | A TEvent object |
To provide hook support for your own code, use AllocHookId to generate a valid integer hook id
somewhere in your program's startup code. Then, when the section of code you would like to be
'hookable' is about to execute, simply call RunHooks with the previously generated hook id and your
own custom 'data' object.
AllocHookId | Allocate a hook id |
AddHook | Add a hook function |
RunHooks | Run hook functions |
RemoveHook | Remove a hook function |
Function AllocHookId() | |
Returns | An integer hook id |
Description | Allocate a hook id |
Information | The returned hook id can be used with AddHook, RunHooks and RemoveHook. |
Function AddHook( id,func:Object( id,data:Object,context:Object ),context:Object=Null,priority=0 ) | |
Returns | A hook object that can be used with the RemoveHook command. |
Description | Add a hook function |
Information | Add a hook function to be executed when RunHooks is called with the specified hook id. |
Example | 'This function will be automagically called every Flip Function MyHook:Object( id,data:Object,context:Object ) Global count count:+1 If count Mod 10=0 Print "Flips="+count End Function 'Add our hook to the system AddHook FlipHook,MyHook 'Some simple graphics Graphics 640,480,0 While Not KeyHit( KEY_ESCAPE ) Cls DrawText MouseX()+","+MouseY(),0,0 Flip Wend |
Function RunHooks:Object( id,data:Object ) | |
Returns | The data produced by the last hook function |
Description | Run hook functions |
Information |
RunHooks runs all hook functions that have been added for the specified hook id.
The first hook function is called with the provided data object. The object returned by this function is then passed as the data parameter to the next hook function and so on. Therefore, hook functions should generally return the data parameter when finished. |
Function RemoveHook( id,func:Object( id,data:Object,context:Object ),context:Object=Null ) | |
Description | Remove a hook function |
Information | Removes the hook function specified by id, func and context. |