658 lines
18 KiB
ObjectPascal
Executable File
658 lines
18 KiB
ObjectPascal
Executable File
unit LuaStructure;
|
|
|
|
{$mode delphi}
|
|
|
|
interface
|
|
|
|
uses
|
|
Classes, SysUtils, lua, lualib, lauxlib, LuaHandler, LuaCaller, symbolhandler,
|
|
cefuncproc, newkernelhandler, Dialogs, LuaClass, LuaClassArray, commonTypeDefs;
|
|
|
|
procedure initializeLuaStructure;
|
|
|
|
procedure structure_addMetaData(L: PLua_state; metatable: integer; userdata: integer );
|
|
procedure structureElement_addMetaData(L: PLua_state; metatable: integer; userdata: integer );
|
|
|
|
implementation
|
|
|
|
uses StructuresFrm2, LuaObject, DotNetPipe, symbolhandlerstructs;
|
|
|
|
|
|
resourcestring
|
|
rsInvalidIndex='Invalid index';
|
|
|
|
|
|
function getStructureCount(L: PLua_State): integer; cdecl;
|
|
begin
|
|
result:=1;
|
|
lua_pushinteger(L, DissectedStructs.Count);
|
|
end;
|
|
|
|
function getStructure(L: PLua_State): integer; cdecl;
|
|
var
|
|
parameters: integer;
|
|
i: integer;
|
|
userdata, metatable: integer;
|
|
begin
|
|
result:=0;
|
|
parameters:=lua_gettop(L);
|
|
if parameters=1 then
|
|
begin
|
|
i:=lua_tointeger(L,1);
|
|
lua_pop(L, parameters);
|
|
|
|
if (i<0) or (i>=DissectedStructs.Count) then
|
|
begin
|
|
lua_pushnil(L);
|
|
lua_pushstring(L,rsInvalidindex);
|
|
exit(2);
|
|
end;
|
|
|
|
luaclass_newClass(L, DissectedStructs[i]);
|
|
|
|
result:=1;
|
|
end else lua_pop(L, parameters);
|
|
end;
|
|
|
|
|
|
|
|
function structure_getName(L: PLua_State): integer; cdecl;
|
|
var
|
|
struct: TDissectedStruct;
|
|
begin
|
|
struct:=luaclass_getClassObject(L);
|
|
lua_pushstring(L, struct.name);
|
|
result:=1;
|
|
end;
|
|
|
|
function structure_setName(L: PLua_State): integer; cdecl;
|
|
var
|
|
struct: TDissectedStruct;
|
|
begin
|
|
result:=0;
|
|
|
|
struct:=luaclass_getClassObject(L);
|
|
if lua_gettop(L)>=1 then
|
|
struct.name:=Lua_ToString(L, 1);
|
|
end;
|
|
|
|
function structure_getSize(L: PLua_State): integer; cdecl;
|
|
var
|
|
struct: TDissectedStruct;
|
|
begin
|
|
struct:=luaclass_getClassObject(L);
|
|
lua_pushinteger(L, struct.structuresize);
|
|
result:=1;
|
|
end;
|
|
|
|
function structure_getElementCount(L: PLua_State): integer; cdecl;
|
|
var
|
|
struct: TDissectedStruct;
|
|
begin
|
|
struct:=luaclass_getClassObject(L);
|
|
lua_pushinteger(L, struct.count);
|
|
result:=1;
|
|
end;
|
|
|
|
function structure_getElement(L: PLua_State): integer; cdecl;
|
|
var
|
|
parameters: integer;
|
|
struct: TDissectedStruct;
|
|
index: integer;
|
|
begin
|
|
result:=0;
|
|
struct:=luaclass_getClassObject(L);
|
|
|
|
parameters:=lua_gettop(L);
|
|
if parameters>=1 then
|
|
begin
|
|
index:=lua_tointeger(L,1);
|
|
if (index>=0) and (index<struct.count) then
|
|
begin
|
|
luaclass_newclass(L, struct.element[index]);
|
|
result:=1;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
|
|
function structure_getElementByOffset(L: PLua_State): integer; cdecl;
|
|
var
|
|
parameters: integer;
|
|
struct: TDissectedStruct;
|
|
offset: integer;
|
|
begin
|
|
result:=0;
|
|
struct:=luaclass_getClassObject(L);
|
|
|
|
parameters:=lua_gettop(L);
|
|
if parameters>=1 then
|
|
begin
|
|
offset:=lua_tointeger(L,1);
|
|
luaclass_newclass(L, struct.element[struct.getIndexOfOffset(offset)]);
|
|
result:=1;
|
|
end else lua_pop(L, parameters);
|
|
end;
|
|
|
|
function structure_addElement(L: PLua_State): integer; cdecl;
|
|
var
|
|
parameters: integer;
|
|
struct: TDissectedStruct;
|
|
begin
|
|
result:=0;
|
|
parameters:=lua_gettop(L);
|
|
|
|
struct:=luaclass_getClassObject(L);
|
|
|
|
luaclass_newclass(L, struct.addElement);
|
|
result:=1;
|
|
end;
|
|
|
|
function structure_fillFromDotNetAddress(L: PLua_State): integer; cdecl;
|
|
var
|
|
parameters: integer;
|
|
struct: TDissectedStruct;
|
|
address: ptruint;
|
|
changename: boolean;
|
|
|
|
al: TAddressData;
|
|
begin
|
|
struct:=luaclass_getClassObject(L);
|
|
result:=0;
|
|
parameters:=lua_gettop(L);
|
|
|
|
changename:=false;
|
|
if parameters>=1 then
|
|
begin
|
|
if lua_isnumber(L, 1) then
|
|
address:=lua_tointeger(L,1)
|
|
else
|
|
address:=symhandler.getAddressFromNameL(lua_tostring(L,1));
|
|
|
|
|
|
if (parameters>=2) then
|
|
changename:=lua_toboolean(L, 2);
|
|
|
|
|
|
if symhandler.GetLayoutFromAddress(address, al) then
|
|
begin
|
|
struct.fillFromDotNetAddressData(al);
|
|
|
|
if changename then
|
|
struct.setName(al.typedata.classname);
|
|
end;
|
|
|
|
|
|
end;
|
|
end;
|
|
|
|
function structure_autoGuess(L: PLua_State): integer; cdecl;
|
|
var
|
|
parameters: integer;
|
|
struct: TDissectedStruct;
|
|
base: ptruint;
|
|
offset: integer;
|
|
size: integer;
|
|
begin
|
|
// structure_autoGuess(structure, baseaddresstoguessfrom, offset, size)
|
|
|
|
struct:=luaclass_getClassObject(L);
|
|
|
|
result:=0;
|
|
parameters:=lua_gettop(L);
|
|
if parameters>=3 then
|
|
begin
|
|
if lua_isstring(L, 1) then
|
|
base:=symhandler.getAddressFromNameL(lua_tostring(L,1))
|
|
else
|
|
base:=lua_tointeger(L,1);
|
|
|
|
|
|
offset:=lua_tointeger(L,2);
|
|
size:=lua_tointeger(L,3);
|
|
struct.autoGuessStruct(base, offset, size);
|
|
result:=0;
|
|
end;
|
|
end;
|
|
|
|
function structure_beginUpdate(L: PLua_State): integer; cdecl;
|
|
var
|
|
struct: TDissectedStruct;
|
|
begin
|
|
result:=0;
|
|
struct:=luaclass_getClassObject(L);
|
|
|
|
struct.beginUpdate;
|
|
end;
|
|
|
|
function structure_endUpdate(L: PLua_State): integer; cdecl;
|
|
var
|
|
struct: TDissectedStruct;
|
|
begin
|
|
result:=0;
|
|
struct:=luaclass_getClassObject(L);
|
|
|
|
struct.endUpdate;
|
|
end;
|
|
|
|
function structure_addToGlobalStructureList(L: PLua_State): integer; cdecl;
|
|
var
|
|
struct: TDissectedStruct;
|
|
begin
|
|
result:=0;
|
|
struct:=luaclass_getClassObject(L);
|
|
|
|
struct.addToGlobalStructList;
|
|
end;
|
|
|
|
function structure_removeFromGlobalStructureList(L: PLua_State): integer; cdecl;
|
|
var
|
|
struct: TDissectedStruct;
|
|
begin
|
|
result:=0;
|
|
struct:=luaclass_getClassObject(L);
|
|
|
|
struct.removeFromGlobalStructList;
|
|
end;
|
|
|
|
|
|
|
|
|
|
procedure structure_addMetaData(L: PLua_state; metatable: integer; userdata: integer );
|
|
var i: integer;
|
|
begin
|
|
object_addMetaData(L, metatable, userdata);
|
|
luaclass_addClassFunctionToTable(L, metatable, userdata, 'setName', structure_setName);
|
|
luaclass_addClassFunctionToTable(L, metatable, userdata, 'getName', structure_getName);
|
|
|
|
luaclass_addPropertyToTable(L, metatable, userdata, 'Name', structure_getName, structure_setName);
|
|
|
|
luaclass_addClassFunctionToTable(L, metatable, userdata, 'getSize', structure_getSize);
|
|
luaclass_addPropertyToTable(L, metatable, userdata, 'Size', structure_getSize, nil);
|
|
|
|
luaclass_addClassFunctionToTable(L, metatable, userdata, 'getElementCount', structure_getElementCount);
|
|
luaclass_addPropertyToTable(L, metatable, userdata, 'Count', structure_getElementCount, nil);
|
|
|
|
luaclass_addClassFunctionToTable(L, metatable, userdata, 'getElement', structure_getElement);
|
|
|
|
|
|
luaclass_addArrayPropertyToTable(L, metatable, userdata, 'Element', structure_getElement);
|
|
|
|
|
|
luaclass_addClassFunctionToTable(L, metatable, userdata, 'getElementByOffset', structure_getElementByOffset);
|
|
luaclass_addClassFunctionToTable(L, metatable, userdata, 'addElement', structure_addElement);
|
|
luaclass_addClassFunctionToTable(L, metatable, userdata, 'autoGuess', structure_autoGuess);
|
|
luaclass_addClassFunctionToTable(L, metatable, userdata, 'fillFromDotNetAddress', structure_fillFromDotNetAddress);
|
|
|
|
luaclass_addClassFunctionToTable(L, metatable, userdata, 'beginUpdate', structure_beginUpdate);
|
|
luaclass_addClassFunctionToTable(L, metatable, userdata, 'endUpdate', structure_endUpdate);
|
|
luaclass_addClassFunctionToTable(L, metatable, userdata, 'addToGlobalStructureList', structure_addToGlobalStructureList);
|
|
luaclass_addClassFunctionToTable(L, metatable, userdata, 'removeFromGlobalStructureList', structure_removeFromGlobalStructureList);
|
|
|
|
luaclass_setDefaultArrayProperty(L, metatable, userdata, structure_getElement, nil);
|
|
end;
|
|
|
|
|
|
function createStructureFromName(L: PLua_State): integer; cdecl;
|
|
var
|
|
name: string;
|
|
i: integer;
|
|
el: tstringlist;
|
|
e: TDBElementInfo;
|
|
struct: TDissectedStruct;
|
|
begin
|
|
result:=0;
|
|
if lua_gettop(L)>=1 then
|
|
begin
|
|
name:=Lua_ToString(L,1);
|
|
|
|
el:=tstringlist.create;
|
|
try
|
|
symhandler.getStructureElementsFromName(name,el);
|
|
if el.count>0 then
|
|
begin
|
|
struct:=TDissectedStruct.create(name);
|
|
//fill in the struct based on what is in e
|
|
|
|
for i:=0 to el.count-1 do
|
|
begin
|
|
e:=TDBElementInfo(el.Objects[i]);
|
|
|
|
struct.addElement(el[i],e.offset, e.vartype);
|
|
|
|
e.Free;
|
|
end;
|
|
|
|
|
|
|
|
|
|
luaclass_newclass(L, struct, structure_addMetaData);
|
|
result:=1;
|
|
end;
|
|
finally
|
|
el.free;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
function createStructure(L: PLua_State): integer; cdecl;
|
|
var
|
|
parameters: integer;
|
|
name: string;
|
|
struct: TDissectedStruct;
|
|
|
|
metatable: integer;
|
|
m: tmethod;
|
|
i: integer;
|
|
userdata: integer;
|
|
begin
|
|
result:=0;
|
|
parameters:=lua_gettop(L);
|
|
if parameters=1 then
|
|
begin
|
|
name:=Lua_ToString(L,-parameters);
|
|
lua_pop(L, parameters);
|
|
|
|
struct:=TDissectedStruct.create(name);
|
|
luaclass_newclass(L, struct, structure_addMetaData);
|
|
result:=1;
|
|
end else lua_pop(L, parameters);
|
|
end;
|
|
|
|
function structureElement_getOwnerStructure(L: PLua_State): integer; cdecl;
|
|
var
|
|
se: TStructelement;
|
|
begin
|
|
se:=luaclass_getClassObject(L);
|
|
luaclass_newclass(L, se.parent, structure_addMetaData);
|
|
result:=1;
|
|
end;
|
|
|
|
function structureElement_getOffset(L: PLua_State): integer; cdecl;
|
|
var
|
|
se: TStructelement;
|
|
begin
|
|
se:=luaclass_getClassObject(L);
|
|
lua_pushinteger(L, se.Offset);
|
|
result:=1;
|
|
end;
|
|
|
|
function structureElement_setOffset(L: PLua_State): integer; cdecl;
|
|
var
|
|
se: TStructelement;
|
|
offset: integer;
|
|
begin
|
|
result:=0;
|
|
se:=luaclass_getClassObject(L);
|
|
|
|
offset:=Lua_Tointeger(L, 1);
|
|
se.offset:=offset;
|
|
end;
|
|
|
|
function structureElement_getValue(L: PLua_State): integer; cdecl;
|
|
var
|
|
se: TStructelement;
|
|
address: ptruint;
|
|
begin
|
|
se:=luaclass_getClassObject(L);
|
|
|
|
address:=lua_toaddress(L,1);
|
|
|
|
lua_pushstring(L, se.getValue(address));
|
|
result:=1;
|
|
end;
|
|
|
|
function structureElement_setValue(L: PLua_State): integer; cdecl;
|
|
var
|
|
se: TStructelement;
|
|
address: ptruint;
|
|
value: string;
|
|
begin
|
|
se:=luaclass_getClassObject(L);
|
|
|
|
address:=lua_toaddress(L,1);
|
|
value:=Lua_ToString(L,2);
|
|
|
|
se.setValue(address,value);
|
|
result:=1;
|
|
end;
|
|
|
|
function structureElement_getValueFromBase(L: PLua_State): integer; cdecl;
|
|
var
|
|
se: TStructelement;
|
|
baseaddress: ptruint;
|
|
begin
|
|
se:=luaclass_getClassObject(L);
|
|
|
|
baseaddress:=lua_toaddress(L,1);
|
|
|
|
lua_pushstring(L, se.getValueFromBase(baseaddress));
|
|
result:=1;
|
|
end;
|
|
|
|
function structureElement_setValueFromBase(L: PLua_State): integer; cdecl;
|
|
var
|
|
se: TStructelement;
|
|
baseaddress: ptruint;
|
|
value: string;
|
|
begin
|
|
se:=luaclass_getClassObject(L);
|
|
|
|
baseaddress:=lua_toaddress(L,1);
|
|
value:=Lua_ToString(L,2);
|
|
|
|
se.setValueFromBase(baseaddress,value);
|
|
result:=1;
|
|
end;
|
|
|
|
|
|
function structureElement_getName(L: PLua_State): integer; cdecl;
|
|
var
|
|
se: TStructelement;
|
|
begin
|
|
se:=luaclass_getClassObject(L);
|
|
lua_pushstring(L, se.name);
|
|
result:=1;
|
|
end;
|
|
|
|
function structureElement_setName(L: PLua_State): integer; cdecl;
|
|
var
|
|
se: TStructelement;
|
|
Name: string;
|
|
begin
|
|
result:=0;
|
|
se:=luaclass_getClassObject(L);
|
|
|
|
if lua_gettop(L)>=1 then
|
|
begin
|
|
name:=Lua_ToString(L, 1);
|
|
se.Name:=Name;
|
|
end;
|
|
end;
|
|
|
|
function structureElement_getVartype(L: PLua_State): integer; cdecl;
|
|
var
|
|
se: TStructelement;
|
|
begin
|
|
se:=luaclass_getClassObject(L);
|
|
lua_pushinteger(L, integer(se.Vartype));
|
|
result:=1;
|
|
end;
|
|
|
|
function structureElement_setVartype(L: PLua_State): integer; cdecl;
|
|
var
|
|
se: TStructelement;
|
|
Vartype: integer;
|
|
begin
|
|
result:=0;
|
|
se:=luaclass_getClassObject(L);
|
|
if lua_gettop(L)>=1 then
|
|
begin
|
|
Vartype:=lua_tointeger(L, 1);
|
|
se.Vartype:=Tvariabletype(Vartype);
|
|
end;
|
|
end;
|
|
|
|
|
|
function structureElement_getChildStruct(L: PLua_State): integer; cdecl;
|
|
var
|
|
se: TStructelement;
|
|
begin
|
|
se:=luaclass_getClassObject(L);
|
|
luaclass_newClass(L, se.ChildStruct, structure_addMetaData);
|
|
result:=1;
|
|
end;
|
|
|
|
function structureElement_setChildStruct(L: PLua_State): integer; cdecl;
|
|
var
|
|
parameters: integer;
|
|
se: TStructelement;
|
|
o: tobject;
|
|
Childstruct: TDissectedStruct;
|
|
begin
|
|
result:=0;
|
|
se:=luaclass_getClassObject(L);
|
|
|
|
if lua_gettop(L)>=1 then
|
|
begin
|
|
if lua_isnil(L,1) then
|
|
childstruct:=nil
|
|
else
|
|
begin
|
|
o:=lua_ToCEUserData(L, 1);
|
|
if o is TDissectedStruct then
|
|
Childstruct:=TDissectedStruct(o)
|
|
else
|
|
raise EStructureException.create('Invalid child structure object:'+o.ClassName);
|
|
end;
|
|
|
|
se.Childstruct:=Childstruct;
|
|
end;
|
|
end;
|
|
|
|
function structureElement_getChildStructStart(L: PLua_State): integer; cdecl;
|
|
var
|
|
se: TStructelement;
|
|
begin
|
|
se:=luaclass_getClassObject(L);
|
|
lua_pushinteger(L, se.ChildStructStart);
|
|
result:=1;
|
|
end;
|
|
|
|
function structureElement_setChildStructStart(L: PLua_State): integer; cdecl;
|
|
var
|
|
se: TStructelement;
|
|
begin
|
|
result:=0;
|
|
se:=luaclass_getClassObject(L);
|
|
if lua_gettop(L)>=1 then
|
|
se.ChildStructStart:=lua_tointeger(L, 1);
|
|
end;
|
|
|
|
function structureElement_getByteSize(L: PLua_State): integer; cdecl;
|
|
var
|
|
se: TStructelement;
|
|
begin
|
|
se:=luaclass_getClassObject(L);
|
|
lua_pushinteger(L, se.Bytesize);
|
|
result:=1;
|
|
end;
|
|
|
|
function structureElement_setByteSize(L: PLua_State): integer; cdecl;
|
|
var
|
|
se: TStructelement;
|
|
begin
|
|
result:=0;
|
|
se:=luaclass_getClassObject(L);
|
|
if lua_gettop(L)>=1 then
|
|
se.bytesize:=lua_tointeger(L, 1);
|
|
end;
|
|
|
|
procedure structureElement_addMetaData(L: PLua_state; metatable: integer; userdata: integer );
|
|
begin
|
|
object_addMetaData(L, metatable, userdata);
|
|
luaclass_addClassFunctionToTable(L, metatable, userdata, 'getOwnerStructure', structureElement_getOwnerStructure);
|
|
luaclass_addPropertyToTable(L, metatable, userdata, 'Owner', structureElement_getOwnerStructure, nil);
|
|
|
|
|
|
luaclass_addClassFunctionToTable(L, metatable, userdata, 'getOffset', structureElement_getOffset);
|
|
luaclass_addClassFunctionToTable(L, metatable, userdata, 'setOffset', structureElement_setOffset);
|
|
luaclass_addPropertyToTable(L, metatable, userdata, 'Offset', structureElement_getOffset, structureElement_setOffset);
|
|
|
|
luaclass_addClassFunctionToTable(L, metatable, userdata, 'getName', structureElement_getName);
|
|
luaclass_addClassFunctionToTable(L, metatable, userdata, 'setName', structureElement_setName);
|
|
luaclass_addPropertyToTable(L, metatable, userdata, 'Name', structureElement_getName, structureElement_setName);
|
|
|
|
luaclass_addClassFunctionToTable(L, metatable, userdata, 'getValue', structureElement_getValue);
|
|
luaclass_addClassFunctionToTable(L, metatable, userdata, 'setValue', structureElement_setValue);
|
|
luaclass_addClassFunctionToTable(L, metatable, userdata, 'getValueFromBase', structureElement_getValueFromBase);
|
|
luaclass_addClassFunctionToTable(L, metatable, userdata, 'setValueFromBase', structureElement_setValueFromBase);
|
|
|
|
luaclass_addClassFunctionToTable(L, metatable, userdata, 'getVartype', structureElement_getVartype);
|
|
luaclass_addClassFunctionToTable(L, metatable, userdata, 'setVartype', structureElement_setVartype);
|
|
luaclass_addPropertyToTable(L, metatable, userdata, 'Vartype', structureElement_getVartype, structureElement_setVartype);
|
|
|
|
luaclass_addClassFunctionToTable(L, metatable, userdata, 'getChildStruct', structureElement_getChildStruct);
|
|
luaclass_addClassFunctionToTable(L, metatable, userdata, 'setChildStruct', structureElement_setChildStruct);
|
|
luaclass_addPropertyToTable(L, metatable, userdata, 'ChildStruct', structureElement_getChildStruct, structureElement_setChildStruct);
|
|
|
|
luaclass_addClassFunctionToTable(L, metatable, userdata, 'getChildStructStart', structureElement_getChildStructStart);
|
|
luaclass_addClassFunctionToTable(L, metatable, userdata, 'setChildStructStart', structureElement_setChildStructStart);
|
|
luaclass_addClassFunctionToTable(L, metatable, userdata, 'getBytesize', structureElement_getBytesize);
|
|
luaclass_addClassFunctionToTable(L, metatable, userdata, 'setBytesize', structureElement_setBytesize);
|
|
|
|
|
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
procedure initializeLuaStructure;
|
|
begin
|
|
lua_register(LuaVM, 'getStructureCount', getStructureCount);
|
|
lua_register(LuaVM, 'getStructure', getStructure);
|
|
|
|
lua_register(LuaVM, 'createStructure', createStructure);
|
|
lua_register(LuaVM, 'createStructureFromName', createStructureFromName);
|
|
|
|
|
|
|
|
lua_register(LuaVM, 'structure_getName', structure_getName);
|
|
lua_register(LuaVM, 'structure_setName', structure_setName);
|
|
lua_register(LuaVM, 'structure_getSize', structure_getSize);
|
|
lua_register(LuaVM, 'structure_getElementCount', structure_getElementCount);
|
|
lua_register(LuaVM, 'structure_getElement', structure_getElement);
|
|
lua_register(LuaVM, 'structure_getElementByOffset', structure_getElementByOffset);
|
|
lua_register(LuaVM, 'structure_addElement', structure_addElement);
|
|
lua_register(LuaVM, 'structure_autoGuess', structure_autoGuess);
|
|
lua_register(LuaVM, 'structure_beginUpdate', structure_beginUpdate);
|
|
lua_register(LuaVM, 'structure_endUpdate', structure_endUpdate);
|
|
|
|
lua_register(LuaVM, 'structure_addToGlobalStructureList', structure_addToGlobalStructureList);
|
|
lua_register(LuaVM, 'structure_removeFromGlobalStructureList', structure_removeFromGlobalStructureList);
|
|
|
|
|
|
//structurelement is part of a structure so define here as well
|
|
lua_register(LuaVM, 'structureElement_getOwnerStructure', structureElement_getOwnerStructure);
|
|
lua_register(LuaVM, 'structureElement_getOffset', structureElement_getOffset);
|
|
lua_register(LuaVM, 'structureElement_setOffset', structureElement_setOffset);
|
|
lua_register(LuaVM, 'structureElement_getName', structureElement_getName);
|
|
lua_register(LuaVM, 'structureElement_setName', structureElement_setName);
|
|
lua_register(LuaVM, 'structureElement_getVartype', structureElement_getVartype);
|
|
lua_register(LuaVM, 'structureElement_setVartype', structureElement_setVartype);
|
|
lua_register(LuaVM, 'structureElement_getChildStruct', structureElement_getChildStruct);
|
|
lua_register(LuaVM, 'structureElement_setChildStruct', structureElement_setChildStruct);
|
|
lua_register(LuaVM, 'structureElement_getChildStructStart', structureElement_getChildStructStart);
|
|
lua_register(LuaVM, 'structureElement_setChildStructStart', structureElement_setChildStructStart);
|
|
lua_register(LuaVM, 'structureElement_getBytesize', structureElement_getBytesize);
|
|
lua_register(LuaVM, 'structureElement_setBytesize', structureElement_setBytesize);
|
|
end;
|
|
|
|
initialization
|
|
luaclass_register(TDissectedStruct, structure_addMetaData);
|
|
luaclass_register(TStructelement, structureElement_addMetaData);
|
|
|
|
end.
|
|
|