cheat-engine/Cheat Engine/LuaStringlist.pas
2019-12-19 17:49:30 +01:00

116 lines
3.7 KiB
ObjectPascal
Executable file

unit LuaStringlist;
{$mode delphi}
interface
uses
Classes, SysUtils, lua, lualib, lauxlib;
procedure initializeLuaStringlist;
procedure stringlist_addMetaData(L: PLua_state; metatable: integer; userdata: integer );
implementation
uses luahandler, luaclass, luastrings;
function createStringlist(L: Plua_State): integer; cdecl;
begin
luaclass_newClass(L, TStringList.Create);
result:=1;
end;
function stringlist_getDuplicates(L: PLua_State): integer; cdecl;
var
stringlist: TStringlist;
begin
stringlist:=luaclass_getClassObject(L);
lua_pushinteger(L, integer(stringlist.Duplicates));
result:=1;
end;
function stringlist_setDuplicates(L: PLua_State): integer; cdecl;
var
stringlist: TStringlist;
a: integer;
begin
result:=0;
stringlist:=luaclass_getClassObject(L);
if lua_gettop(L)>=1 then
stringlist.Duplicates:=TDuplicates(lua_tointeger(L,-1));
end;
function stringlist_getSorted(L: PLua_State): integer; cdecl;
var
stringlist: TStringlist;
begin
stringlist:=luaclass_getClassObject(L);
lua_pushboolean(L, stringlist.Sorted);
result:=1;
end;
function stringlist_setSorted(L: PLua_State): integer; cdecl;
var
stringlist: TStringlist;
a: integer;
begin
result:=0;
stringlist:=luaclass_getClassObject(L);
if lua_gettop(L)>=1 then
stringlist.sorted:=lua_toboolean(L,-1);
end;
function stringlist_getCaseSensitive(L: PLua_State): integer; cdecl;
var
stringlist: TStringlist;
begin
stringlist:=luaclass_getClassObject(L);
lua_pushboolean(L, stringlist.CaseSensitive);
result:=1;
end;
function stringlist_setCaseSensitive(L: PLua_State): integer; cdecl;
var
stringlist: TStringlist;
a: integer;
begin
result:=0;
stringlist:=luaclass_getClassObject(L);
if lua_gettop(L)>=1 then
stringlist.CaseSensitive:=lua_toboolean(L,-1);
end;
procedure stringlist_addMetaData(L: PLua_state; metatable: integer; userdata: integer );
begin
strings_addMetaData(L, metatable, userdata);
luaclass_addClassFunctionToTable(L, metatable, userdata, 'getDuplicates', stringlist_getDuplicates);
luaclass_addClassFunctionToTable(L, metatable, userdata, 'setDuplicates', stringlist_setDuplicates);
luaclass_addClassFunctionToTable(L, metatable, userdata, 'getSorted', stringlist_getSorted);
luaclass_addClassFunctionToTable(L, metatable, userdata, 'setSorted', stringlist_setSorted);
luaclass_addClassFunctionToTable(L, metatable, userdata, 'getCaseSensitive', stringlist_getCaseSensitive);
luaclass_addClassFunctionToTable(L, metatable, userdata, 'setCaseSensitive', stringlist_setCaseSensitive);
luaclass_addPropertyToTable(L, metatable, userdata, 'Duplicates', stringlist_getDuplicates, stringlist_setDuplicates);
luaclass_addPropertyToTable(L, metatable, userdata, 'Sorted', stringlist_getSorted, stringlist_setSorted);
luaclass_addPropertyToTable(L, metatable, userdata, 'CaseSensitive', stringlist_getCaseSensitive, stringlist_setCaseSensitive);
end;
procedure initializeLuaStringlist;
begin
lua_register(LuaVM, 'createStringlist', createStringlist);
lua_register(LuaVM, 'createStringList', createStringList);
lua_register(LuaVM, 'stringlist_getDuplicates', stringlist_getDuplicates);
lua_register(LuaVM, 'stringlist_setDuplicates', stringlist_setDuplicates);
lua_register(LuaVM, 'stringlist_getSorted', stringlist_getSorted);
lua_register(LuaVM, 'stringlist_setSorted', stringlist_setSorted);
lua_register(LuaVM, 'stringlist_getCaseSensitive', stringlist_getCaseSensitive);
lua_register(LuaVM, 'stringlist_setCaseSensitive', stringlist_setCaseSensitive);
end;
initialization
luaclass_register(TStringList, stringlist_addMetaData);
end.