139 lines
4.3 KiB
ObjectPascal
Executable File
139 lines
4.3 KiB
ObjectPascal
Executable File
unit LuaComponent;
|
|
|
|
{$mode delphi}
|
|
|
|
interface
|
|
|
|
uses
|
|
Classes, SysUtils, lua, lualib, lauxlib;
|
|
|
|
procedure InitializeLuaComponent;
|
|
function component_findComponentByName(L: PLua_state): integer; cdecl; //used by luaclass when a entry can't be resolved
|
|
procedure component_addMetaData(L: PLua_state; metatable: integer; userdata: integer );
|
|
|
|
implementation
|
|
|
|
uses LuaHandler, LuaObject, LuaClass;
|
|
|
|
function component_getComponentCount(L: PLua_state): integer; cdecl;
|
|
var c: TComponent;
|
|
begin
|
|
c:=luaclass_getClassObject(L);
|
|
lua_pushinteger(L, c.ComponentCount);
|
|
result:=1;
|
|
end;
|
|
|
|
function component_findComponentByName(L: PLua_state): integer; cdecl;
|
|
var c: TComponent;
|
|
n: string;
|
|
begin
|
|
result:=0;
|
|
c:=luaclass_getClassObject(L);
|
|
if lua_gettop(L)>=1 then
|
|
begin
|
|
n:=Lua_ToString(L, -1);
|
|
luaclass_newClass(L, c.FindComponent(n));
|
|
result:=1;
|
|
end;
|
|
end;
|
|
|
|
function component_getComponent(L: PLua_state): integer; cdecl;
|
|
var c: TComponent;
|
|
i: integer;
|
|
begin
|
|
result:=0;
|
|
c:=luaclass_getClassObject(L);
|
|
if lua_gettop(L)>=1 then
|
|
begin
|
|
i:=lua_tointeger(L,-1);
|
|
luaclass_newClass(L, c.Components[i]);
|
|
result:=1;
|
|
end;
|
|
end;
|
|
|
|
function component_getName(L: PLua_state): integer; cdecl;
|
|
var c: TComponent;
|
|
begin
|
|
c:=luaclass_getClassObject(L);
|
|
lua_pushstring(L, c.Name);
|
|
result:=1;
|
|
end;
|
|
|
|
function component_setName(L: PLua_state): integer; cdecl;
|
|
var c: TComponent;
|
|
begin
|
|
result:=0;
|
|
c:=luaclass_getClassObject(L);
|
|
|
|
if lua_gettop(L)>=1 then
|
|
c.Name:=lua_tostring(L,-1);
|
|
end;
|
|
|
|
function component_getTag(L: PLua_state): integer; cdecl;
|
|
var c: TComponent;
|
|
begin
|
|
c:=luaclass_getClassObject(L);
|
|
lua_pushinteger(L, c.Tag);
|
|
result:=1;
|
|
end;
|
|
|
|
function component_setTag(L: PLua_state): integer; cdecl;
|
|
var c: TComponent;
|
|
begin
|
|
result:=0;
|
|
c:=luaclass_getClassObject(L);
|
|
if lua_gettop(L)>=1 then
|
|
c.Tag:=lua_tointeger(L, -1);
|
|
end;
|
|
|
|
|
|
function component_getOwner(L: PLua_state): integer; cdecl;
|
|
var c: TComponent;
|
|
begin
|
|
c:=luaclass_getClassObject(L);
|
|
luaclass_newClass(L, c.owner);
|
|
result:=1;
|
|
end;
|
|
|
|
procedure component_addMetaData(L: PLua_state; metatable: integer; userdata: integer);
|
|
begin
|
|
object_addMetaData(L, metatable, userdata);
|
|
|
|
luaclass_addClassFunctionToTable(L, metatable, userdata, 'getComponentCount', component_getComponentCount);
|
|
luaclass_addClassFunctionToTable(L, metatable, userdata, 'getComponent', component_getComponent);
|
|
luaclass_addClassFunctionToTable(L, metatable, userdata, 'findComponentByName', component_findComponentByName);
|
|
luaclass_addClassFunctionToTable(L, metatable, userdata, 'getName', component_getName);
|
|
luaclass_addClassFunctionToTable(L, metatable, userdata, 'setName', component_setName);
|
|
luaclass_addClassFunctionToTable(L, metatable, userdata, 'getTag', component_getTag);
|
|
luaclass_addClassFunctionToTable(L, metatable, userdata, 'setTag', component_setTag);
|
|
luaclass_addClassFunctionToTable(L, metatable, userdata, 'getOwner', component_getOwner);
|
|
|
|
luaclass_addPropertyToTable(L, metatable, userdata, 'ComponentCount', component_getComponentCount, nil);
|
|
luaclass_addArrayPropertyToTable(L, metatable, userdata, 'Component', component_getComponent);
|
|
luaclass_addArrayPropertyToTable(L, metatable, userdata, 'ComponentByName', component_findComponentByName);
|
|
luaclass_addPropertyToTable(L, metatable, userdata, 'Name', component_getName, component_setName);
|
|
luaclass_addPropertyToTable(L, metatable, userdata, 'Tag', component_getTag, component_setTag);
|
|
luaclass_addPropertyToTable(L, metatable, userdata, 'Owner', component_getOwner, nil);
|
|
|
|
|
|
end;
|
|
|
|
procedure InitializeLuaComponent;
|
|
begin
|
|
lua_register(LuaVM, 'component_getComponentCount', component_getComponentCount);
|
|
lua_register(LuaVM, 'component_getComponent', component_getComponent);
|
|
lua_register(LuaVM, 'component_findComponentByName', component_findComponentByName);
|
|
lua_register(LuaVM, 'component_getName', component_getName);
|
|
lua_register(LuaVM, 'component_setName', component_setName);
|
|
lua_register(LuaVM, 'component_getTag', component_getTag);
|
|
lua_register(LuaVM, 'component_setTag', component_setTag);
|
|
lua_register(LuaVM, 'component_getOwner', component_getOwner);
|
|
end;
|
|
|
|
initialization
|
|
luaclass_register(TComponent, component_addMetaData);
|
|
|
|
|
|
end.
|
|
|