Класс luax_

Базовые функции доступа к стеку Lua. Подробнее...

#include <luax.h>

Полный список членов класса

Классы

class  activator
 Активатор. Подробнее...
class  ctrl
 Управляющий элемент диалога. Подробнее...
class  frame
 Интерфейс фрейма. Подробнее...
class  framestack
 Интерфейс стека фреймов. Подробнее...
class  panel
 Внешний объект панели. Подробнее...
class  table
 Таблица. Подробнее...

Открытые члены

Управление точками наблюдения.

Вызов обработчика события панели.

Вызывает событие-обработчик, которое определено в разделе описания панели _p для управлящего элемента _ctrl. В вызываемое событие передаются параметры:

  1. объект панели
  2. имя управляющего элемента
  3. дополнительные параметры

Дополнительные параметры располагаются на стеке потока в прямом порядке. Их количество определяется параметром _n. После обработки события допрлнительные параметры удаляются со стека.

Функция возвращает управление после завершения обработки события или после аварийного завершения выполнения потока. Функция завершает выполнение потока _lua (см. end) в случае нормального завершения цикла обрабоки событий или в случае аварийного завершения потока.

Обработчик события не должен приводить к вложенному вызову функции resume. В тех случаях, когда обработчик может вызывать вложенное возобновление потока должны использоваться функция queue.

Аргументы:
_main_lua Стек основного потока.
_lua Стек потока.
_p Панель.
_tag Вид события.
_ctrl Имя управляющего элемента.
_n Количество дополнительных параметров на стеке.
Исключения:
dump* Ошибка при возобновлении потока или при выполнении события. Отложенный вызов обработчика события панели. Вызывает обработчик события панели, только в том случае, когда поток панели приостановлен и ожидает вызова (в этом случае используется функция resume для возобновления потока). Если поток панели находится в состоянии выполнения (а это значит, что событие панели вызвано рекурсивно), то поток не возобновляется сразу, а в очередь событий панели ставиться событие _qevent (которое, обычно является инициатором обработки). Функция возвращает управление сразу после постановки события в очередь. В общем случае панель, чобытие которой должно быть обработано и панель, в очередь которой ставиться событие могут быть разными. Например событие инициализирует управляющий элемент wxNotebook при смене выбора страницы, а событие обрабатывает панель страницы. Если поток занят, то событие должно быть поставлено в очередь управляющего элемента wxNotebook.
Аргументы:
_main_lua Стек основного потока.
_lua Стек потока.
_p Панель, событие которой должно быть обработано.
_tag Вид события.
_ctrl Имя управляющего элемента.
_n Количество дополнительных параметров на стеке.
_qevent Событие отложенной обработки.
_qp Панель, в очередь которой ставится событие.
Исключения:
dump* Ошибка при возобновлении потока или при выполнении события. Проверка статуса занят/свободен. Проверяет текущее состояние потока. Поток может быть занят обработкой некоторого события и в этом случае обработка нового события должна быть отложена до момента освобождения потока. Функция queue может быть использована для возобновления потока сразу после освобождения посредством организации очереди обрабатываемых событий.
Аргументы:
_lua Стек потока.
Возвращает:
Если поток занят обработкой события, то возвращает true, иначе возвращает false. Переключение режима отладки. Включает/выключает режим отладки для основного потока и для всех диалоговых потоков. После установки режима отладки выполняющийся поток приостанавливается при выполнении следующей строки Lua-кода. Это будет либо первый оператор при возобновлении потока, либо оператор следующий за выполнившим функцию debug. При отключении режима отладки поток, где находится активная точка останова начинает выполняться.
Аргументы:
_main_lua Стек основного потока.
_flag Режим отладки. Проверка существования события панели. Может быть использована для условного вызова обработчика события. Проверка существования обработчика выполняется в основном потоке и, если обработчик существует, то поток панели запускается для выполнения обработчика (resume).
_main_lua Стек основного потока.
_p Указатель на панель.
_tag Вид события.
_ctrl Имя управляющего элемента.
Возвращает:
true если обработчик события указан в описании панели.
Исключения:
dump* Ошибка при получении описателя панели.
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)
 Создание панели потока.
::tablepushctrl (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)
 Поместить на стек кортеж для строки таблицы.
Внутренние функции управления потоками

Создание основного потока.

Аргументы:
_app Указатель на интерфейс приложения. Этот указатель должен быть допустимым до момента вызова функции terminate. Завершение основного потока.
_lua Стек основного потока.
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.
Возвращает:
Имя типа.

Объявления и описания членов классов находятся в файлах:
Документация по faeton. Последние изменения: Sun Apr 10 01:05:26 2011. Создано системой  doxygen 1.6.3