API Update:Add CallBack

This commit is contained in:
2018-05-09 11:07:55 +03:00
parent 88cfa48d24
commit b4da0b0b7a
4 changed files with 22 additions and 15 deletions

View File

@@ -62,8 +62,8 @@ type
procedure AddNameSpace(Name:string);override;
procedure DelNameSpace(Name:string);override;
procedure AddType(NameSpace:string;Name:string;&Type:TRTBType);override;
procedure DelType(NameSpace:string;Name:string);override;
procedure AddType(NameSpace:string;Name:string;&Type:TRTBType);override;//-
procedure DelType(NameSpace:string;Name:string);override;//-
procedure AddConst(NameSpace:string;Name:string;Val:TValue);override;
procedure DelConst(NameSpace:string;Name:string);override;
@@ -72,6 +72,9 @@ type
procedure ExportVariable(NameSpace:string;Name:string;var Data);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 UnRegister(NameSpace:string;Name:string);override;
procedure RegisterFunction(NameSpace:string;Name:string);override;
@@ -298,6 +301,14 @@ begin
DelConst(NameSpace,Name);
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);
begin
if NameSpace<>'' then

View File

@@ -17,7 +17,7 @@ type
private
//p:Pointer;
public
//constructor Create(p:Pointer);
constructor Create(s:string);
//function Call(OutType:PTypeInfo;args:TArray<TValue>;CallType:TRTBCallType=CRTBCallTypeDefault):TValue;override;
//destructor Destroy;override;
end;
@@ -597,19 +597,9 @@ function TRTBLuaCompiler.TRTBLuaSource.Compilate:TRTBModule;
var
templib,PreDecl:string;
i,sb:NativeUInt;
FuncDict:TDictionary<string,NativeUInt>;
RegVarDict:TDictionary<string,TPair<NativeUInt,PTypeInfo>>;
p:pointer;
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();
with regvars do
if Count<>0 then
@@ -625,7 +615,7 @@ with consts do
with Items[i] do
ConstParse(Key,Value,PreDecl,base);}
//Result:=TRTBFasmModule.Create(p,Res.sb,FuncDict,RegVarDict);
Result:=TRTBLuaModule.Create(FText,funcs);
end;
destructor TRTBLuaCompiler.TRTBLuaSource.Destroy;

View File

@@ -28,6 +28,9 @@ type
function Call(OutType:PTypeInfo;args:TArray<TValue>;CallType:TRTBCallType=CRTBCallTypeDefault):TValue;virtual;abstract;
end;
TRTBCallBackOut=TValue;
TRTBCallBack=reference to function(arg:array of const):TRTBCallBackOut;
TRTBVar=class abstract
protected
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 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 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>

View File

@@ -84,7 +84,7 @@ Src.RegisterFunction('','main');
Module:=Src.Compilate;
Func1:=Module.Funtion['main'];
//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');
//Var1:=Module.&Var['Pmain'];
//Var1.Val:=424;