Составители:
Рубрика:
23
{------------------------------------------------------------------------------}
function TMyComponent_settable_event( L: lua_State ): integer; cdecl;
begin
Result := 0;
lua_pushvalue( L, 2 );
lua_pushvalue( L, 3 );
lua_rawset( L, 1 );
end;
////////////////////////////////////////////////////////////////////////////////
function to_TMyComponent( L: lua_State;
value_index: integer ): TMyComponent;
var MyComp: TMyComponent;
begin
Result := nil;
if GetObjectFromTable( L, value_index, MyComp ) then
Result := MyComp;
end;
{------------------------------------------------------------------------------}
function push_TMyComponent( L: lua_State;
value: TMyComponent ): integer;
begin
Result := 1;
lua_newtable( L );
AddObjectInfoToTable( L, lua_gettop(L), @TMyComponent_Info );
PushObjectHandleWithTag( L, value );
SetObjectHandleToTable( L, lua_gettop(L)-1, lua_gettop(L) );
lua_pop( L, 1 );
if TMyComponent_Tag = LUA_NOTAG then begin
TMyComponent_Tag := lua_newtag( L );
lua_pushcfunction( L, TMyComponent_gettable_event );
lua_settagmethod( L, TMyComponent_Tag, 'gettable' );
lua_pushcfunction( L, TMyComponent_settable_event );
lua_settagmethod( L, TMyComponent_Tag, 'settable' );
end;
lua_settag( L, TMyComponent_Tag );
end;
////////////////////////////////////////////////////////////////////////////////
end.
4. Сгенерировать модуль TMyComponent_LuaObject.pas при помощи программы
convert_pas (COMA\sdk\LuaScript\convert\). Для этого необходимо сначала соз-
дать файл TMyComponent_LuaObject (без расширения), который должен иметь
следующий вид:
unit TMyComponent_LuaObject;
interface
uses
Lua,
LuaObject_unit,
TMyComponent_BaseLuaObject;
classes
TMyComponent = class( TBaseMyComponent )
← Сюда необходимо поместить хотя бы один метод класса TMyComponent
end;
end;
implementation
uses
SysUtils,
LuaDebug,
{------------------------------------------------------------------------------} function TMyComponent_settable_event( L: lua_State ): integer; cdecl; begin Result := 0; lua_pushvalue( L, 2 ); lua_pushvalue( L, 3 ); lua_rawset( L, 1 ); end; //////////////////////////////////////////////////////////////////////////////// function to_TMyComponent( L: lua_State; value_index: integer ): TMyComponent; var MyComp: TMyComponent; begin Result := nil; if GetObjectFromTable( L, value_index, MyComp ) then Result := MyComp; end; {------------------------------------------------------------------------------} function push_TMyComponent( L: lua_State; value: TMyComponent ): integer; begin Result := 1; lua_newtable( L ); AddObjectInfoToTable( L, lua_gettop(L), @TMyComponent_Info ); PushObjectHandleWithTag( L, value ); SetObjectHandleToTable( L, lua_gettop(L)-1, lua_gettop(L) ); lua_pop( L, 1 ); if TMyComponent_Tag = LUA_NOTAG then begin TMyComponent_Tag := lua_newtag( L ); lua_pushcfunction( L, TMyComponent_gettable_event ); lua_settagmethod( L, TMyComponent_Tag, 'gettable' ); lua_pushcfunction( L, TMyComponent_settable_event ); lua_settagmethod( L, TMyComponent_Tag, 'settable' ); end; lua_settag( L, TMyComponent_Tag ); end; //////////////////////////////////////////////////////////////////////////////// end. 4. Сгенерировать модуль TMyComponent_LuaObject.pas при помощи программы convert_pas (COMA\sdk\LuaScript\convert\). Для этого необходимо сначала соз- дать файл TMyComponent_LuaObject (без расширения), который должен иметь следующий вид: unit TMyComponent_LuaObject; interface uses Lua, LuaObject_unit, TMyComponent_BaseLuaObject; classes TMyComponent = class( TBaseMyComponent ) ← Сюда необходимо поместить хотя бы один метод класса TMyComponent end; end; implementation uses SysUtils, LuaDebug, 23