Базовые функции доступа к стеку Lua. Подробнее...
#include <luax.h>
Классы | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
class | activator | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Активатор. Подробнее... | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
class | ctrl | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Управляющий элемент диалога. Подробнее... | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
class | frame | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Интерфейс фрейма. Подробнее... | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
class | framestack | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Интерфейс стека фреймов. Подробнее... | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
class | panel | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Внешний объект панели. Подробнее... | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
class | table | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Таблица. Подробнее... | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Открытые члены | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Управление точками наблюдения. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Вызов обработчика события панели. Вызывает событие-обработчик, которое определено в разделе описания панели _p для управлящего элемента _ctrl. В вызываемое событие передаются параметры:
Дополнительные параметры располагаются на стеке потока в прямом порядке. Их количество определяется параметром _n. После обработки события допрлнительные параметры удаляются со стека. Функция возвращает управление после завершения обработки события или после аварийного завершения выполнения потока. Функция завершает выполнение потока _lua (см. end) в случае нормального завершения цикла обрабоки событий или в случае аварийного завершения потока. Обработчик события не должен приводить к вложенному вызову функции resume. В тех случаях, когда обработчик может вызывать вложенное возобновление потока должны использоваться функция queue.
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
const char * | add_local_watch (lua_State *_lua, lua_Debug *_ar, int _i) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Создание точки наблюдения для локальной переменной. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Открытые статические члены | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
static void | start (lua_State *_main_lua, lua_State *_lua, const char *_module, const char *_event, int _n) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Запуск потока. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
static void | call_module_yielding_events (lua_State *_lua) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Создание панели потока. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
::table * | pushctrl (lua_State *_lua, ctrl *_ctrl) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Создание объекта для управляющего элемента GRID. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
static int | call (lua_State *_lua, const wxString &_module, const wxString &_event) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Приостановка потока. Приостанавливает поток и передает управление основному потоку для обработки сообщений. Если у потока есть по крайней мере один объект (панель), который может вызывать события, то преостанавливает выполнения потока до момента возникновения события. Когда объект вызывает обработку события основной поток возобновляет приостановленный поток и возвращает на стеке объекты обработки в следующем порядке: p - объект, вызвавший событие m - имя модуля, где находится событие для обработки e - имя события, которое должно быть вызвано c - имя управляющего элемента i - позиция управляющего элемента (пункт меню, списка и т.д). | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
static const char * | convert_to_SQLCHAR (lua_State *_lua, int _i) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Преобразование значения Lua в строку для записи в БД. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
static void | end (lua_State *_lua) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Завершение потока. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
static void | endall (lua_State *_lua) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Завершение всех диалоговых потоков. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
static void | assign_panel_to_ctrl (lua_State *_lua, int _i) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Присвоение панели управляющему элементу. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
static const char * | type (int _type) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Получени имени типа Lua. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
static double | check_if_parameter_is_number (lua_State *_lua, int _i, bool _optional=false, double _default=0.0) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Проверка типа параметра события (число). | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
static const char * | check_if_parameter_is_string (lua_State *_lua, int _i, bool _optional=false) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Проверка типа параметра события (строка). | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
static void | make_tuple (lua_State *_lua, const co_table *_t, int _i) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Поместить на стек кортеж для строки таблицы. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Внутренние функции управления потоками | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
static void | error (lua_State *_lua, dump *_x) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Прерывание потока с дампом. Завершает поток. На стеке в качестве ошибки возвращается объект дампа. Не возвращает управления. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
static void | error (lua_State *_lua, const char *_msg,...) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Создание дампа и прерывание потока. Создает дамп по тексту сообщения и прерывает выполнение потока. Возвращает созданный объект дампа на стеке потока. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Закрытые статические члены | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
static void * | memory_allocator (void *_ud, void *_ptr, size_t _osize, size_t _nsize) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Закрытые статические данные | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
static const char * | EventLoopCode | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Код запуска цикла обработки событий. |
Базовые функции доступа к стеку Lua.
const char* luax_::add_local_watch | ( | lua_State * | _lua, | |
lua_Debug * | _ar, | |||
int | _i | |||
) |
Создание точки наблюдения для локальной переменной.
_lua | Стек потока. | |
_ar | Структура отладки. | |
_i | Номер переменной. |
void luax_::assign_panel_to_ctrl | ( | lua_State * | _lua, | |
int | _i | |||
) | [static] |
Присвоение панели управляющему элементу.
Используется для управляющих элементов, в которые донамически могут добавляться вложенные панели (например, ноутбуки). На вершине стека должна находиться присваиваемая панель. Состояние стека не изменяется.
_lua | Стек потока. | |
_i | Абсолютное положение управляющего элемента на стеке. |
int luax_::call | ( | lua_State * | _lua, | |
const wxString & | _module, | |||
const wxString & | _event | |||
) | [static] |
Приостановка потока. Приостанавливает поток и передает управление основному потоку для обработки сообщений. Если у потока есть по крайней мере один объект (панель), который может вызывать события, то преостанавливает выполнения потока до момента возникновения события. Когда объект вызывает обработку события основной поток возобновляет приостановленный поток и возвращает на стеке объекты обработки в следующем порядке: p - объект, вызвавший событие m - имя модуля, где находится событие для обработки e - имя события, которое должно быть вызвано c - имя управляющего элемента i - позиция управляющего элемента (пункт меню, списка и т.д).
_lua | Поток |
void luax_::call_module_yielding_events | ( | lua_State * | _lua | ) | [static] |
Создание панели потока.
_lua | Стек потока. | |
_pi | Дескриптор панели. | |
_title | Заголовок Синхронный вызов события панели. Используется для вызова события панели из тела другого события (например, события BEGIN при создании панели или закладок. В случае возникновения ошибок не возвращает управления и вызывает дамп потока как и приобычном прерывании потока (поэтому может использоваться только при выполнении события потока). | |
_lua | Стек потока. | |
_p | Указатель на панель. | |
_tag | Вид события (paneleventtag). | |
_ctrl | Имя управляющего элемента. | |
_narg | Количество дополнительных параметров вызова. | |
_nres | Количество возвращаемых значений. Выполнение обслуживающих событий. Для всех кешированных модулей выполняет объявленные обслуживающие события. События выполняются в защищенном режиме. | |
_lua | Стек потока. |
double luax_::check_if_parameter_is_number | ( | lua_State * | _lua, | |
int | _i, | |||
bool | _optional = false , |
|||
double | _default = 0.0 | |||
) | [static] |
Проверка типа параметра события (число).
Прерывает выполнение потока и создает дамп, если параметр не является числом.
_lua | Стек потока. | |
_i | Номер параметра. | |
_optional | Признак необязательного параметра. | |
_default | Значение по умоляению для необязательного параметра. |
const char * luax_::check_if_parameter_is_string | ( | lua_State * | _lua, | |
int | _i, | |||
bool | _optional = false | |||
) | [static] |
Проверка типа параметра события (строка).
Прерывает выполнение потока и создает дамп, если параметр не является строкой.
_lua | Стек потока. | |
_i | Номер параметра. | |
_optional | Признак необязательного параметра. | |
_default | Значение по умолчанию для необязательного параметра. |
const char * luax_::convert_to_SQLCHAR | ( | lua_State * | _lua, | |
int | _i | |||
) | [static] |
Преобразование значения Lua в строку для записи в БД.
_lua | Стек потока. | |
_i | Положение значения на стеке. |
void luax_::end | ( | lua_State * | _lua | ) | [static] |
Завершение потока.
Освобождает ресурсы, занимаемые потоком. Для этого обнуляет ссылку на поток в таблице K_REGISTRY_THREAD и вызывает сборку мусора. При этом удаляются объекты панелей, и управляющих элементов.
Если с потоком связан диалоговый фрейм, то он закрывается. Если закрытый фрейм - последний фрейм стека, то выполняется закрытие стека.
Функция не завершает цикла обработки событий.
_lua | Стек завершаемого потока. |
void luax_::endall | ( | lua_State * | _lua | ) | [static] |
Завершение всех диалоговых потоков.
Завершает все диалоговые потоки из таблицы K_REGISTRY_THREAD. Используется для завершения приложения.
_lua | Основной поток приложения. |
void luax_::error | ( | lua_State * | _lua, | |
const char * | _msg, | |||
... | ||||
) | [static] |
Создание дампа и прерывание потока. Создает дамп по тексту сообщения и прерывает выполнение потока. Возвращает созданный объект дампа на стеке потока.
_lua | Поток. | |
_msg | Формат сообщения. |
void luax_::error | ( | lua_State * | _lua, | |
dump * | _x | |||
) | [static] |
Прерывание потока с дампом. Завершает поток. На стеке в качестве ошибки возвращается объект дампа. Не возвращает управления.
_lua | Поток. | |
_x | Объект дампа. |
static void luax_::make_tuple | ( | lua_State * | _lua, | |
const co_table * | _t, | |||
int | _i | |||
) | [static] |
Поместить на стек кортеж для строки таблицы.
Создает на стеке кортеж, соответствующий строке таблицы.
_lua | Стек. | |
_t | Таблица. | |
_i | Номер строки. |
void * luax_::memory_allocator | ( | void * | _ud, | |
void * | _ptr, | |||
size_t | _osize, | |||
size_t | _nsize | |||
) | [static, private] |
Функция размещения памяти для стека Lua.
_ud | Внешний указатель, передаваемый через lua_newstate. | |
_ptr | Указатель на блок памяти. | |
_osize | Размер блока _ptr. | |
_nsize | Новый размер блока. |
См. документацию по Lua.
table * luax_::pushctrl | ( | lua_State * | _lua, | |
luax_::ctrl * | _ctrl | |||
) | [static] |
Создание объекта для управляющего элемента GRID.
Специализация функции pushctrl для цправляющего элемента GRID. Вызывает pushctrl для общего создания управляющего элемента. Дополнительно создает внутренюю таблицу для заполнения управляющего элемента. Созданная таблица является возвращаемым значением.
_lua | Стек потока. | |
_ctrl | Указатель на объект. |
void luax_::start | ( | lua_State * | _main_lua, | |
lua_State * | _lua, | |||
const char * | _module, | |||
const char * | _event, | |||
int | _n | |||
) | [static] |
Запуск потока.
Запускает поток, предварительно созданный, функцией thread. Выполнение потока начинается с выполнения события _event из модуля _module. При вызове события в него могут быть переданы параметры, которые перед запуском потока должны быть помещены на стек. В этом случае параметр _n указывает количество передаваемых параметров. Возвращает управление при завершении потока или при его приостановке и передаче управления основному потоку. Если поток успешно завершен, то удаляет поток из таблицы потоков и освобождает ресурсы, связанные с потоком (удаляет панели потока и фрейм потока, если он был создан). Если поток приостанавливается и ожидает обработки диалоговых сообщений, то вызываются обслуживающие события кешированных модулей.
В случае завершения потока с ошибкой формируется дамп потока и возникает исключительная ситуация. В это случае поток удаляется и таблицы потоков и его ресурсы освобождаются также, как и при обычном завершении потока.
_main_lua | Стек основного потока. | |
_lua | Стек запускаемого потока. | |
_module | Имя стартового модуля. | |
_event | Имя стартового события. | |
_n | Количество параметров на вершине основного потока, которые должны быть переданы стартовому забытию запускаемого потока. Параметры удаляются со стека основного потока. |
dump* | Ошибка при запуске потока или при выполнении стартового события. |
const char * luax_::type | ( | int | _type | ) | [static] |
Получени имени типа Lua.
В отличие от стандартной функции lua_typename возвращает имя типа так, как оно определено в заголовочном файле lua.h
_type | Тип Lua. |