API Update:Add CallBack
This commit is contained in:
@@ -62,8 +62,8 @@ type
|
|||||||
procedure AddNameSpace(Name:string);override;
|
procedure AddNameSpace(Name:string);override;
|
||||||
procedure DelNameSpace(Name:string);override;
|
procedure DelNameSpace(Name:string);override;
|
||||||
|
|
||||||
procedure AddType(NameSpace:string;Name:string;&Type:TRTBType);override;
|
procedure AddType(NameSpace:string;Name:string;&Type:TRTBType);override;//-
|
||||||
procedure DelType(NameSpace:string;Name:string);override;
|
procedure DelType(NameSpace:string;Name:string);override;//-
|
||||||
|
|
||||||
procedure AddConst(NameSpace:string;Name:string;Val:TValue);override;
|
procedure AddConst(NameSpace:string;Name:string;Val:TValue);override;
|
||||||
procedure DelConst(NameSpace:string;Name:string);override;
|
procedure DelConst(NameSpace:string;Name:string);override;
|
||||||
@@ -72,6 +72,9 @@ type
|
|||||||
procedure ExportVariable(NameSpace:string;Name:string;var Data);override;
|
procedure ExportVariable(NameSpace:string;Name:string;var Data);override;
|
||||||
procedure DelVariable(NameSpace:string;Name:string);override;
|
procedure DelVariable(NameSpace:string;Name:string);override;
|
||||||
|
|
||||||
|
procedure AddCallBack(NameSpace:string;Name:string;CallBack:TRTBCallBack);override;//-
|
||||||
|
procedure DelCallBack(NameSpace:string;Name:string);override;//-
|
||||||
|
|
||||||
procedure &Register(NameSpace:string;Name:string;&Type:TRTBType);override;
|
procedure &Register(NameSpace:string;Name:string;&Type:TRTBType);override;
|
||||||
procedure UnRegister(NameSpace:string;Name:string);override;
|
procedure UnRegister(NameSpace:string;Name:string);override;
|
||||||
procedure RegisterFunction(NameSpace:string;Name:string);override;
|
procedure RegisterFunction(NameSpace:string;Name:string);override;
|
||||||
@@ -298,6 +301,14 @@ begin
|
|||||||
DelConst(NameSpace,Name);
|
DelConst(NameSpace,Name);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TRTBFasmCompiler.TRTBFasmSource.AddCallBack(NameSpace:string;Name:string;CallBack:TRTBCallBack);
|
||||||
|
begin
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TRTBFasmCompiler.TRTBFasmSource.DelCallBack(NameSpace:string;Name:string);
|
||||||
|
begin
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TRTBFasmCompiler.TRTBFasmSource.&Register(NameSpace:string;Name:string;&Type:TRTBType);
|
procedure TRTBFasmCompiler.TRTBFasmSource.&Register(NameSpace:string;Name:string;&Type:TRTBType);
|
||||||
begin
|
begin
|
||||||
if NameSpace<>'' then
|
if NameSpace<>'' then
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ type
|
|||||||
private
|
private
|
||||||
//p:Pointer;
|
//p:Pointer;
|
||||||
public
|
public
|
||||||
//constructor Create(p:Pointer);
|
constructor Create(s:string);
|
||||||
//function Call(OutType:PTypeInfo;args:TArray<TValue>;CallType:TRTBCallType=CRTBCallTypeDefault):TValue;override;
|
//function Call(OutType:PTypeInfo;args:TArray<TValue>;CallType:TRTBCallType=CRTBCallTypeDefault):TValue;override;
|
||||||
//destructor Destroy;override;
|
//destructor Destroy;override;
|
||||||
end;
|
end;
|
||||||
@@ -597,19 +597,9 @@ function TRTBLuaCompiler.TRTBLuaSource.Compilate:TRTBModule;
|
|||||||
var
|
var
|
||||||
templib,PreDecl:string;
|
templib,PreDecl:string;
|
||||||
i,sb:NativeUInt;
|
i,sb:NativeUInt;
|
||||||
FuncDict:TDictionary<string,NativeUInt>;
|
|
||||||
RegVarDict:TDictionary<string,TPair<NativeUInt,PTypeInfo>>;
|
RegVarDict:TDictionary<string,TPair<NativeUInt,PTypeInfo>>;
|
||||||
p:pointer;
|
p:pointer;
|
||||||
begin
|
begin
|
||||||
//FuncDict:=TDictionary<string,NativeUInt>.Create();
|
|
||||||
with funcs do
|
|
||||||
if Count<>0 then
|
|
||||||
for i:=0 to Count-1 do
|
|
||||||
begin
|
|
||||||
PreDecl:=PreDecl+Strings[i]+sLineBreak;
|
|
||||||
FuncDict.Add(Strings[i],base);
|
|
||||||
inc(base,SizeOf(pointer));
|
|
||||||
end;
|
|
||||||
{RegVarDict:=TDictionary<string,TPair<NativeUInt,PTypeInfo>>.Create();
|
{RegVarDict:=TDictionary<string,TPair<NativeUInt,PTypeInfo>>.Create();
|
||||||
with regvars do
|
with regvars do
|
||||||
if Count<>0 then
|
if Count<>0 then
|
||||||
@@ -625,7 +615,7 @@ with consts do
|
|||||||
with Items[i] do
|
with Items[i] do
|
||||||
ConstParse(Key,Value,PreDecl,base);}
|
ConstParse(Key,Value,PreDecl,base);}
|
||||||
|
|
||||||
//Result:=TRTBFasmModule.Create(p,Res.sb,FuncDict,RegVarDict);
|
Result:=TRTBLuaModule.Create(FText,funcs);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
destructor TRTBLuaCompiler.TRTBLuaSource.Destroy;
|
destructor TRTBLuaCompiler.TRTBLuaSource.Destroy;
|
||||||
|
|||||||
@@ -28,6 +28,9 @@ type
|
|||||||
function Call(OutType:PTypeInfo;args:TArray<TValue>;CallType:TRTBCallType=CRTBCallTypeDefault):TValue;virtual;abstract;
|
function Call(OutType:PTypeInfo;args:TArray<TValue>;CallType:TRTBCallType=CRTBCallTypeDefault):TValue;virtual;abstract;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
TRTBCallBackOut=TValue;
|
||||||
|
TRTBCallBack=reference to function(arg:array of const):TRTBCallBackOut;
|
||||||
|
|
||||||
TRTBVar=class abstract
|
TRTBVar=class abstract
|
||||||
protected
|
protected
|
||||||
procedure SetVal(Val:TValue);virtual;abstract;
|
procedure SetVal(Val:TValue);virtual;abstract;
|
||||||
@@ -69,6 +72,9 @@ type
|
|||||||
procedure ExportVariable(NameSpace:string;Name:string;var Data);virtual;abstract;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> Data
|
procedure ExportVariable(NameSpace:string;Name:string;var Data);virtual;abstract;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> Data
|
||||||
procedure DelVariable(NameSpace:string;Name:string);virtual;abstract;
|
procedure DelVariable(NameSpace:string;Name:string);virtual;abstract;
|
||||||
|
|
||||||
|
procedure AddCallBack(NameSpace:string;Name:string;CallBack:TRTBCallBack);virtual;abstract;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
procedure DelCallBack(NameSpace:string;Name:string);virtual;abstract;
|
||||||
|
|
||||||
procedure &Register(NameSpace:string;Name:string;&Type:TRTBType);virtual;abstract;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
procedure &Register(NameSpace:string;Name:string;&Type:TRTBType);virtual;abstract;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
procedure UnRegister(NameSpace:string;Name:string);virtual;abstract;
|
procedure UnRegister(NameSpace:string;Name:string);virtual;abstract;
|
||||||
procedure &RegisterFunction(NameSpace:string;Name:string);virtual;abstract;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
procedure &RegisterFunction(NameSpace:string;Name:string);virtual;abstract;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
|||||||
@@ -84,7 +84,7 @@ Src.RegisterFunction('','main');
|
|||||||
Module:=Src.Compilate;
|
Module:=Src.Compilate;
|
||||||
Func1:=Module.Funtion['main'];
|
Func1:=Module.Funtion['main'];
|
||||||
//Func2:=Module.Funtion['varmain'];
|
//Func2:=Module.Funtion['varmain'];
|
||||||
if 454<>Func1.Call(TypeInfo(integer),[454],CRTBCallTypeStdCall).AsInteger then
|
if 1<>Func1.Call(TypeInfo(integer),[454],CRTBCallTypeStdCall).AsInteger then
|
||||||
raise Exception.Create('Error in LuaTest');
|
raise Exception.Create('Error in LuaTest');
|
||||||
//Var1:=Module.&Var['Pmain'];
|
//Var1:=Module.&Var['Pmain'];
|
||||||
//Var1.Val:=424;
|
//Var1.Val:=424;
|
||||||
|
|||||||
Reference in New Issue
Block a user