dev • api • name • gb.hook

GB.Hook

void *GB.Hook ( int type , void *hook )

Installs a global interpreter hook.

  • type is an integer constant that identifies the hook.

  • hook is the hook function pointer.

The GB.Hook function returns the previous hook, so that you can call it yourself if necessary. I think this is useful only to the GB_HOOK_MAIN hook.

There are eight global hooks:

Name

Description
GB_HOOK_MAIN

void hook_main ( int *argc, char **argv )

This hook is called to parse the command line.

  • argc is a pointer to the number of arguments.

  • argv is an array of strings containing the arguments, like the one received by the main function.

If you consume process arguments in argv, then you have to remove them from it and modify *argc accordingly.

GB_HOOK_LOOP

int hook_loop ( void )

This hook is called to enter the event loop until the program ends.

The return value should be the value that must be returned by the program.

GB_HOOK_WAIT

void hook_wait ( long duration )

This hook is called to implement the WAIT instruction.

You must watch the event loop at most during the number of milliseconds specified by duration, and then return.

GB_HOOK_TIMER

void hook_timer ( GB_TIMER *timer, int enabled )

This hook is called to start or stop a timer.

  • timer points at the timer object. All needed information is found inside.

  • enabled is TRUE is the timer must be activated, or FALSE if it must be stopped.

The GB_TIMER structure includes a field named id, that you have to set to a number that uniquely identifies the timer. This identifier must be reset to zero when the timer is stopped.

GB_HOOK_LANG

void hook_lang ( char *lang , int rtl )

This hook is called when the current language changes.

  • lang is the new language set

  • rtl will tell you if this language is right-to-left written.

GB_HOOK_WATCH

void hook_watch ( int fd , int type , void *callback , long param )

This hook is called to implement the watch of file descriptors.

  • fd is the file descriptor to watch.

  • type is one of the constants specified in /wiki/api/cat/watch.

  • param is the parameter registered when calling GB.Watch.

GB_HOOK_POST

void hook_post ( void )

This hook is called to execute callback functions at the next call of the event loop.

GB_HOOK_QUIT

void hook_quit ( void )

This hook is called when the QUIT instruction is used.

You should clean and release everything you can.

GB_HOOK_ERROR

void hook_error ( int code , char *error , char *where )

This hook is called to display error messages.

  • code is the error code.

  • error is the error message.

  • where is a string that describes where the error occured.

See also