Ловушки интерпретатора (interpreter hooks)

The Main interpreter hook

Эта ловушка используется для анализа аргументов командной строки. Ее прототип должен быть :

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

Используйте эту функцию для интерпретации некоторых аргументов командноай строки. Если вы хотите удалить интерпретированные аргументы из массива argv , не забудьте модифицировать количество ссылок аргументов в argc соответственно.

Каждый оставшийся параметр передается интерпретируемой Gambas программе, так что их можно получить с массивом Application.Args .

The Loop interpreter hook

Эта ловушка используется для обслуживания цикла события. Ее прототип должен быть :

void LoopHook ( void )

Эта ловушка вызывается только после того, как возвращен метод запуска Gambas программы.

Ловушка должна вернуть, когда программа закончится. Возвращенное значение ловушки будет возвращаемым значением программы.

Если ни один из компонентов не предоставляет такой ловушки, тогда интерпретатор снабдит его собственным циклом события. Этот цикл события может только обслуживать наблюдаемые дескрипторы файлов. 

The Wait interpreter hook

Эта ловушка используется для реализации инструкции WAIT . Ее прототип должен быть :

void WaitHook ( long duration )

Ловушка должна ожидать, пока истекут миллисекундыl duration , и должна вызвать цикл события в процессе этого ожидания.

Ловушка может вернуться прежде, чем истечет заданная пауза. В этом случае ловушка будет вызвана вновь и вновь, пока действительно не истечет заданное в инструкции WAIT время.

The Watch interpreter hook

Эта ловушка вызывается, когда интерпретатор намерен наблюдать за заданным дескриптором файла. Ее прототип должен быть:

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

The Post interpreter hook

Эта ловушка вызывается каждый раз, когда программа обратного вызова (callback routine) что-то постит (записывает) с функцией GB.Post . Ее прототип должен быть :

void PostHook ( void )

Цель этой ловушки - дать обслуживанию цикла события вызвать каждый записывающий (posted) обратный вызов в конце цикла события с помощью функции GB.CheckPost .

Например, ловушка Post компонента gb.qt инициализирует одноразовый QTimer, который известно, что вызывается в конце цикла. Когда этот одноразовый QTimer возбуждает свой сигнал, слот (slot) вызывает этот вызов GB.CheckPost в ответ.

The Quit interpreter hook

Эта ловушка вызывается, когда используется инструкция QUIT . Ее прототип должен быть :

void QuitHook ( void )

Используйте эту ловушку для освобождения стольких объектов, сколько возможно, так что интерпретатор сможет выйти как можно чище.

The Error interpreter hook

Эта ловушка вызывается, когда есть сообщение об ошибке для отображения. Ее прототип должен быть :

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