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 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

View File

@@ -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;

View File

@@ -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>

View File

@@ -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;