2013-03-01 02:01:08 +00:00
|
|
|
unit LuaByteTable;
|
|
|
|
|
|
|
|
|
|
//ByteTable related functions
|
|
|
|
|
|
|
|
|
|
//A byte table is just a normal table with element ranging from 0 to 255
|
|
|
|
|
|
|
|
|
|
{$mode delphi}
|
|
|
|
|
|
|
|
|
|
interface
|
|
|
|
|
|
|
|
|
|
uses
|
|
|
|
|
Classes, SysUtils, lua;
|
|
|
|
|
|
|
|
|
|
procedure initializeLuaByteTable;
|
2023-05-20 00:37:31 +02:00
|
|
|
procedure readBytesFromTable(L: PLua_State; tableindex: integer; p: PByteArray; maxsize: integer; tablestartindex:integer=1);
|
2013-12-03 23:16:18 +00:00
|
|
|
procedure CreateByteTableFromPointer(L: PLua_state; p: pbytearray; size: integer );
|
2013-03-01 02:01:08 +00:00
|
|
|
|
|
|
|
|
implementation
|
|
|
|
|
|
2019-12-18 12:07:17 +01:00
|
|
|
uses luahandler, frmFloatingPointPanelUnit{$ifdef darwin},mactypes{$endif};
|
2013-03-01 02:01:08 +00:00
|
|
|
|
|
|
|
|
procedure CreateByteTableFromPointer(L: PLua_state; p: pbytearray; size: integer );
|
|
|
|
|
var t,i: integer;
|
|
|
|
|
begin
|
2014-02-07 02:04:53 +00:00
|
|
|
lua_createtable(L, size, 0);
|
|
|
|
|
|
|
|
|
|
//lua_newtable(L);
|
2013-03-01 02:01:08 +00:00
|
|
|
t:=lua_gettop(L);
|
|
|
|
|
for i:=1 to size do
|
|
|
|
|
begin
|
2014-02-07 02:04:53 +00:00
|
|
|
// lua_pushinteger(L, i);
|
2013-03-01 02:01:08 +00:00
|
|
|
lua_pushinteger(L, p[i-1]);
|
2014-02-07 02:04:53 +00:00
|
|
|
//lua_settable(L, t);
|
|
|
|
|
lua_rawseti(L, t, i);
|
2013-03-01 02:01:08 +00:00
|
|
|
end;
|
|
|
|
|
end;
|
|
|
|
|
|
2023-05-20 00:37:31 +02:00
|
|
|
procedure readBytesFromTable(L: PLua_State; tableindex: integer; p: PByteArray; maxsize: integer; tablestartindex: integer=1);
|
2013-12-03 23:16:18 +00:00
|
|
|
var i,j,x: integer;
|
2013-03-01 02:01:08 +00:00
|
|
|
begin
|
2023-05-20 00:37:31 +02:00
|
|
|
for i:=0 to maxsize-1 do
|
2013-03-01 02:01:08 +00:00
|
|
|
begin
|
2023-05-20 00:37:31 +02:00
|
|
|
lua_pushinteger(L, i+tablestartindex);
|
2013-03-01 02:01:08 +00:00
|
|
|
lua_gettable(L, tableindex);
|
2013-12-03 23:16:18 +00:00
|
|
|
|
2013-03-01 02:01:08 +00:00
|
|
|
if lua_isnil(L,-1) then
|
|
|
|
|
begin
|
|
|
|
|
lua_pop(L,1);
|
2023-05-20 00:37:31 +02:00
|
|
|
for j:=i to maxsize-1 do //zero out the rest
|
2013-03-01 02:01:08 +00:00
|
|
|
p[j]:=0;
|
|
|
|
|
|
|
|
|
|
exit;
|
|
|
|
|
end;
|
|
|
|
|
|
2023-05-20 00:37:31 +02:00
|
|
|
p[i]:=lua_tointeger(L, -1);
|
2013-03-01 02:01:08 +00:00
|
|
|
lua_pop(L,1);
|
|
|
|
|
end;
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
function wordToByteTable(L: PLua_state): integer; cdecl;
|
|
|
|
|
var v: word;
|
|
|
|
|
begin
|
|
|
|
|
result:=0;
|
|
|
|
|
if lua_gettop(L)=1 then
|
|
|
|
|
begin
|
|
|
|
|
v:=lua_tointeger(L, 1);
|
|
|
|
|
CreateByteTableFromPointer(L, @v, sizeof(v));
|
|
|
|
|
result:=1;
|
|
|
|
|
end;
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
function dwordToByteTable(L: PLua_state): integer; cdecl;
|
|
|
|
|
var v: dword;
|
|
|
|
|
begin
|
|
|
|
|
result:=0;
|
|
|
|
|
if lua_gettop(L)=1 then
|
|
|
|
|
begin
|
|
|
|
|
v:=lua_tointeger(L, 1);
|
|
|
|
|
CreateByteTableFromPointer(L, @v, sizeof(v));
|
|
|
|
|
result:=1;
|
|
|
|
|
end;
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
function qwordToByteTable(L: PLua_state): integer; cdecl;
|
|
|
|
|
var v: qword;
|
|
|
|
|
begin
|
|
|
|
|
result:=0;
|
|
|
|
|
if lua_gettop(L)=1 then
|
|
|
|
|
begin
|
|
|
|
|
v:=lua_tointeger(L, 1);
|
|
|
|
|
CreateByteTableFromPointer(L, @v, sizeof(v));
|
|
|
|
|
result:=1;
|
|
|
|
|
end;
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
function floatToByteTable(L: PLua_state): integer; cdecl;
|
|
|
|
|
var v: single;
|
|
|
|
|
begin
|
|
|
|
|
result:=0;
|
|
|
|
|
if lua_gettop(L)=1 then
|
|
|
|
|
begin
|
|
|
|
|
v:=lua_tonumber(L, 1);
|
|
|
|
|
CreateByteTableFromPointer(L, @v, sizeof(v));
|
|
|
|
|
result:=1;
|
|
|
|
|
end;
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
function doubleToByteTable(L: PLua_state): integer; cdecl;
|
2014-02-03 11:56:24 +00:00
|
|
|
var v: double;
|
2013-03-01 02:01:08 +00:00
|
|
|
begin
|
|
|
|
|
result:=0;
|
|
|
|
|
if lua_gettop(L)=1 then
|
|
|
|
|
begin
|
|
|
|
|
v:=lua_tonumber(L, 1);
|
|
|
|
|
CreateByteTableFromPointer(L, @v, sizeof(v));
|
|
|
|
|
result:=1;
|
|
|
|
|
end;
|
|
|
|
|
end;
|
|
|
|
|
|
2019-08-04 13:15:48 +02:00
|
|
|
function extendedToByteTable(L: PLua_state): integer; cdecl;
|
|
|
|
|
var
|
|
|
|
|
v: double;
|
|
|
|
|
e: Extended;
|
|
|
|
|
ex: array [0..9] of byte;
|
|
|
|
|
|
|
|
|
|
begin
|
|
|
|
|
result:=0;
|
|
|
|
|
if lua_gettop(L)=1 then
|
|
|
|
|
begin
|
|
|
|
|
v:=lua_tonumber(L, 1);
|
2022-06-01 13:10:34 +02:00
|
|
|
{$ifdef cpux86_64}
|
2019-08-04 13:15:48 +02:00
|
|
|
doubletoextended(@v,@ex[0]);
|
|
|
|
|
CreateByteTableFromPointer(L, @ex[0], 10);
|
2019-08-04 21:02:34 +02:00
|
|
|
{$else}
|
|
|
|
|
e:=v;
|
|
|
|
|
CreateByteTableFromPointer(L, @e, sizeof(e));
|
|
|
|
|
{$endif}
|
|
|
|
|
|
2019-08-04 13:15:48 +02:00
|
|
|
result:=1;
|
|
|
|
|
end;
|
|
|
|
|
end;
|
|
|
|
|
|
2013-03-01 02:01:08 +00:00
|
|
|
function stringToByteTable(L: PLua_state): integer; cdecl;
|
2014-02-17 22:52:18 +00:00
|
|
|
var s: pchar;
|
2014-02-17 22:56:42 +00:00
|
|
|
len: size_t;
|
2013-03-01 02:01:08 +00:00
|
|
|
begin
|
|
|
|
|
result:=0;
|
|
|
|
|
if lua_gettop(L)=1 then
|
|
|
|
|
begin
|
2014-02-17 22:56:42 +00:00
|
|
|
s:=lua_tolstring(L, 1, @len);
|
2014-02-17 22:52:18 +00:00
|
|
|
|
2014-02-17 22:56:42 +00:00
|
|
|
CreateByteTableFromPointer(L, pbytearray(s), len);
|
2013-03-01 02:01:08 +00:00
|
|
|
result:=1;
|
|
|
|
|
end;
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
function widestringToByteTable(L: PLua_state): integer; cdecl;
|
|
|
|
|
var s: string;
|
|
|
|
|
ws: widestring;
|
|
|
|
|
begin
|
|
|
|
|
result:=0;
|
|
|
|
|
if lua_gettop(L)=1 then
|
|
|
|
|
begin
|
|
|
|
|
s:=Lua_ToString(L, 1);
|
|
|
|
|
ws:=s;
|
|
|
|
|
CreateByteTableFromPointer(L, @ws[1], length(ws)*2);
|
|
|
|
|
result:=1;
|
|
|
|
|
end;
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
function byteTableToWord(L: PLua_state): integer; cdecl;
|
2020-10-10 19:16:52 +02:00
|
|
|
var
|
|
|
|
|
v: word;
|
2023-05-20 00:37:31 +02:00
|
|
|
tablestartindex: integer;
|
2013-03-01 02:01:08 +00:00
|
|
|
begin
|
|
|
|
|
result:=0;
|
2020-10-10 19:16:52 +02:00
|
|
|
if lua_gettop(L)>=1 then
|
2013-03-01 02:01:08 +00:00
|
|
|
begin
|
2023-05-20 00:37:31 +02:00
|
|
|
if lua_gettop(L)>=3 then
|
|
|
|
|
begin
|
|
|
|
|
tablestartindex:=lua_tointeger(L,3);
|
|
|
|
|
if tablestartindex<1 then
|
|
|
|
|
tablestartindex:=1;
|
|
|
|
|
end
|
|
|
|
|
else
|
|
|
|
|
tablestartindex:=1;
|
|
|
|
|
|
|
|
|
|
readBytesFromTable(L, 1, @v, sizeof(v), tablestartindex);
|
2020-10-10 19:16:52 +02:00
|
|
|
if (lua_gettop(L)>=2) and lua_toboolean(L,2) then
|
|
|
|
|
lua_pushinteger(L,smallint(v))
|
|
|
|
|
else
|
|
|
|
|
lua_pushinteger(L,v);
|
2013-03-01 02:01:08 +00:00
|
|
|
result:=1;
|
|
|
|
|
end;
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
function byteTableToDWord(L: PLua_state): integer; cdecl;
|
2023-05-20 00:37:31 +02:00
|
|
|
var
|
|
|
|
|
v: dword;
|
|
|
|
|
tablestartindex: integer;
|
2013-03-01 02:01:08 +00:00
|
|
|
begin
|
|
|
|
|
result:=0;
|
2020-10-10 19:16:52 +02:00
|
|
|
if lua_gettop(L)>=1 then
|
2013-03-01 02:01:08 +00:00
|
|
|
begin
|
2023-05-20 00:37:31 +02:00
|
|
|
if lua_gettop(L)>=3 then
|
|
|
|
|
begin
|
|
|
|
|
tablestartindex:=lua_tointeger(L,3);
|
|
|
|
|
if tablestartindex<1 then
|
|
|
|
|
tablestartindex:=1;
|
|
|
|
|
end
|
|
|
|
|
else
|
2023-08-25 08:48:13 +02:00
|
|
|
tablestartindex:=1;
|
2023-05-20 00:37:31 +02:00
|
|
|
|
|
|
|
|
readBytesFromTable(L, 1, @v, sizeof(v), tablestartindex);
|
2020-10-10 19:16:52 +02:00
|
|
|
if (lua_gettop(L)>=2) and lua_toboolean(L,2) then
|
|
|
|
|
lua_pushinteger(L,integer(v))
|
|
|
|
|
else
|
|
|
|
|
lua_pushinteger(L,v);
|
|
|
|
|
|
2013-03-01 02:01:08 +00:00
|
|
|
result:=1;
|
|
|
|
|
end;
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
function byteTableToQWord(L: PLua_state): integer; cdecl;
|
2023-05-20 00:37:31 +02:00
|
|
|
var
|
|
|
|
|
v: qword;
|
|
|
|
|
tablestartindex: integer;
|
2013-03-01 02:01:08 +00:00
|
|
|
begin
|
|
|
|
|
result:=0;
|
2023-05-20 00:37:31 +02:00
|
|
|
if lua_gettop(L)>=1 then
|
2013-03-01 02:01:08 +00:00
|
|
|
begin
|
2023-05-20 00:37:31 +02:00
|
|
|
if lua_gettop(L)>=2 then
|
|
|
|
|
begin
|
|
|
|
|
tablestartindex:=lua_tointeger(L,2);
|
|
|
|
|
if tablestartindex<1 then
|
|
|
|
|
tablestartindex:=1;
|
|
|
|
|
end
|
|
|
|
|
else
|
2023-08-25 08:48:13 +02:00
|
|
|
tablestartindex:=1;
|
2023-05-20 00:37:31 +02:00
|
|
|
|
|
|
|
|
readBytesFromTable(L, 1, @v, sizeof(v), tablestartindex);
|
2013-03-01 02:01:08 +00:00
|
|
|
lua_pushinteger(L,v);
|
|
|
|
|
result:=1;
|
|
|
|
|
end;
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
function byteTableToFloat(L: PLua_state): integer; cdecl;
|
2023-05-20 00:37:31 +02:00
|
|
|
var
|
|
|
|
|
v: single;
|
|
|
|
|
tablestartindex: integer;
|
2013-03-01 02:01:08 +00:00
|
|
|
begin
|
|
|
|
|
result:=0;
|
2023-05-20 00:37:31 +02:00
|
|
|
if lua_gettop(L)>=1 then
|
2013-03-01 02:01:08 +00:00
|
|
|
begin
|
2023-05-20 00:37:31 +02:00
|
|
|
if lua_gettop(L)>=2 then
|
|
|
|
|
begin
|
|
|
|
|
tablestartindex:=lua_tointeger(L,2);
|
|
|
|
|
if tablestartindex<1 then
|
|
|
|
|
tablestartindex:=1;
|
|
|
|
|
end
|
|
|
|
|
else
|
2023-08-25 08:48:13 +02:00
|
|
|
tablestartindex:=1;
|
2023-05-20 00:37:31 +02:00
|
|
|
|
|
|
|
|
readBytesFromTable(L, 1, @v, sizeof(v), tablestartindex);
|
2013-03-01 02:01:08 +00:00
|
|
|
lua_pushnumber(L,v);
|
|
|
|
|
result:=1;
|
|
|
|
|
end;
|
|
|
|
|
end;
|
|
|
|
|
|
2019-08-04 13:15:48 +02:00
|
|
|
|
|
|
|
|
|
2013-03-01 02:01:08 +00:00
|
|
|
function byteTableToDouble(L: PLua_state): integer; cdecl;
|
2023-05-20 00:37:31 +02:00
|
|
|
var
|
|
|
|
|
v: Double;
|
|
|
|
|
tablestartindex: integer;
|
2013-03-01 02:01:08 +00:00
|
|
|
begin
|
|
|
|
|
result:=0;
|
2023-05-20 00:37:31 +02:00
|
|
|
if lua_gettop(L)>=1 then
|
2013-03-01 02:01:08 +00:00
|
|
|
begin
|
2023-05-20 00:37:31 +02:00
|
|
|
if lua_gettop(L)>=2 then
|
|
|
|
|
begin
|
|
|
|
|
tablestartindex:=lua_tointeger(L,2);
|
|
|
|
|
if tablestartindex<1 then
|
|
|
|
|
tablestartindex:=1;
|
|
|
|
|
end
|
|
|
|
|
else
|
|
|
|
|
tablestartindex:=1;
|
|
|
|
|
|
|
|
|
|
readBytesFromTable(L, 1, @v, sizeof(v), tablestartindex);
|
2013-03-01 02:01:08 +00:00
|
|
|
lua_pushnumber(L,v);
|
|
|
|
|
result:=1;
|
|
|
|
|
end;
|
|
|
|
|
end;
|
|
|
|
|
|
2019-08-04 13:15:48 +02:00
|
|
|
|
|
|
|
|
function byteTableToExtended(L: PLua_state): integer; cdecl;
|
|
|
|
|
var
|
|
|
|
|
ex: array [0..9] of byte;
|
|
|
|
|
v: double;
|
2019-08-04 21:02:34 +02:00
|
|
|
e: extended;
|
2023-05-20 00:37:31 +02:00
|
|
|
tablestartindex: integer;
|
2019-08-04 13:15:48 +02:00
|
|
|
begin
|
|
|
|
|
result:=0;
|
2023-05-20 00:37:31 +02:00
|
|
|
if lua_gettop(L)>=1 then
|
2019-08-04 13:15:48 +02:00
|
|
|
begin
|
2023-05-20 00:37:31 +02:00
|
|
|
if lua_gettop(L)>=2 then
|
|
|
|
|
begin
|
|
|
|
|
tablestartindex:=lua_tointeger(L,2);
|
|
|
|
|
if tablestartindex<1 then
|
|
|
|
|
tablestartindex:=1;
|
|
|
|
|
end
|
|
|
|
|
else
|
|
|
|
|
tablestartindex:=0;
|
2019-08-04 21:02:34 +02:00
|
|
|
|
2022-06-01 13:10:34 +02:00
|
|
|
{$ifdef cpux86_64}
|
2023-05-20 00:37:31 +02:00
|
|
|
readBytesFromTable(L, 1, @ex[0], 10,tablestartindex);
|
2019-08-04 13:15:48 +02:00
|
|
|
extendedtodouble(@ex[0],v);
|
2019-08-04 21:02:34 +02:00
|
|
|
{$else}
|
2023-08-25 08:48:13 +02:00
|
|
|
readBytesFromTable(L, 1, @e, sizeof(e), tablestartindex);
|
2019-08-04 21:02:34 +02:00
|
|
|
v:=e;
|
|
|
|
|
{$endif}
|
2019-08-04 13:15:48 +02:00
|
|
|
lua_pushnumber(L,v);
|
|
|
|
|
result:=1;
|
|
|
|
|
end;
|
|
|
|
|
end;
|
|
|
|
|
|
2013-03-01 02:01:08 +00:00
|
|
|
function byteTableToString(L: PLua_state): integer; cdecl;
|
|
|
|
|
var s: pchar;
|
|
|
|
|
len: integer;
|
2023-05-20 00:37:31 +02:00
|
|
|
tablestartindex: integer;
|
2013-03-01 02:01:08 +00:00
|
|
|
begin
|
|
|
|
|
result:=0;
|
2023-05-20 00:37:31 +02:00
|
|
|
if lua_gettop(L)>=1 then
|
2013-03-01 02:01:08 +00:00
|
|
|
begin
|
2023-05-20 00:37:31 +02:00
|
|
|
if lua_gettop(L)>=2 then
|
|
|
|
|
begin
|
|
|
|
|
tablestartindex:=lua_tointeger(L,2);
|
|
|
|
|
if tablestartindex<1 then
|
|
|
|
|
tablestartindex:=1;
|
|
|
|
|
end
|
|
|
|
|
else
|
|
|
|
|
tablestartindex:=1;
|
|
|
|
|
|
|
|
|
|
len:=lua_objlen(L, 1)-(tablestartindex-1);
|
|
|
|
|
|
2014-02-17 22:52:18 +00:00
|
|
|
getmem(s, len);
|
2013-03-01 02:01:08 +00:00
|
|
|
|
2023-05-20 00:37:31 +02:00
|
|
|
readBytesFromTable(L, 1, @s[0], len,tablestartindex);
|
2014-02-17 22:52:18 +00:00
|
|
|
lua_pushlstring(L, s,len);
|
2013-03-01 02:01:08 +00:00
|
|
|
result:=1;
|
|
|
|
|
end;
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
function byteTableToWideString(L: PLua_state): integer; cdecl;
|
|
|
|
|
var s: pwidechar;
|
|
|
|
|
s2: pchar;
|
|
|
|
|
|
|
|
|
|
ansis: string;
|
|
|
|
|
len: integer;
|
2023-05-20 00:37:31 +02:00
|
|
|
tablestartindex: integer;
|
2013-03-01 02:01:08 +00:00
|
|
|
begin
|
|
|
|
|
result:=0;
|
|
|
|
|
if lua_gettop(L)=1 then
|
|
|
|
|
begin
|
2023-05-20 00:37:31 +02:00
|
|
|
if lua_gettop(L)>=2 then
|
|
|
|
|
begin
|
|
|
|
|
tablestartindex:=lua_tointeger(L,2);
|
|
|
|
|
if tablestartindex<1 then
|
|
|
|
|
tablestartindex:=1;
|
|
|
|
|
end
|
|
|
|
|
else
|
|
|
|
|
tablestartindex:=1;
|
|
|
|
|
|
|
|
|
|
|
2013-03-01 02:01:08 +00:00
|
|
|
len:=lua_objlen(L, 1);
|
2023-05-20 00:37:31 +02:00
|
|
|
len:=len-(tablestartindex-1);
|
2013-03-01 02:01:08 +00:00
|
|
|
getmem(s, len+2);
|
|
|
|
|
|
2023-05-20 00:37:31 +02:00
|
|
|
|
|
|
|
|
|
2013-03-01 02:01:08 +00:00
|
|
|
s2:=pointer(s);
|
|
|
|
|
|
2023-05-20 00:37:31 +02:00
|
|
|
readBytesFromTable(L, 1, @s[0], len, tablestartindex);
|
2013-03-01 02:01:08 +00:00
|
|
|
s2[len]:=#0;
|
|
|
|
|
s2[len+1]:=#0;
|
|
|
|
|
|
|
|
|
|
ansis:=s;
|
|
|
|
|
lua_pushstring(L, pchar(ansis));
|
|
|
|
|
result:=1;
|
|
|
|
|
end;
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure initializeLuaByteTable;
|
|
|
|
|
begin
|
|
|
|
|
|
|
|
|
|
lua_register(LuaVM, 'wordToByteTable', wordToByteTable);
|
|
|
|
|
lua_register(LuaVM, 'dwordToByteTable', dwordToByteTable);
|
|
|
|
|
lua_register(LuaVM, 'qwordToByteTable', qwordToByteTable);
|
|
|
|
|
|
|
|
|
|
lua_register(LuaVM, 'floatToByteTable', floatToByteTable);
|
|
|
|
|
lua_register(LuaVM, 'doubleToByteTable', doubleToByteTable);
|
2019-08-04 13:15:48 +02:00
|
|
|
lua_register(LuaVM, 'extendedToByteTable', extendedToByteTable);
|
2013-03-01 02:01:08 +00:00
|
|
|
lua_register(LuaVM, 'stringToByteTable', stringToByteTable);
|
|
|
|
|
lua_register(LuaVM, 'wideStringToByteTable', wideStringToByteTable);
|
|
|
|
|
|
|
|
|
|
lua_register(LuaVM, 'byteTableToWord', byteTableToWord);
|
|
|
|
|
lua_register(LuaVM, 'byteTableToDword', byteTableToDword);
|
|
|
|
|
lua_register(LuaVM, 'byteTableToQword', byteTableToQword);
|
|
|
|
|
lua_register(LuaVM, 'byteTableToFloat', byteTableToFloat);
|
|
|
|
|
lua_register(LuaVM, 'byteTableToDouble', byteTableToDouble);
|
2019-08-04 13:15:48 +02:00
|
|
|
lua_register(LuaVM, 'byteTableToExtended', byteTableToExtended);
|
2013-03-01 02:01:08 +00:00
|
|
|
lua_register(LuaVM, 'byteTableToString', byteTableToString);
|
|
|
|
|
lua_register(LuaVM, 'byteTableToWideString', byteTableToWideString);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
end.
|
|
|
|
|
|