Merge branch 'master' of Alextp/RuntimeBuilder into master

This commit is contained in:
2018-06-11 18:14:59 +03:00
committed by Gogs

View File

@@ -3,7 +3,10 @@ unit RuntimeBuilder;
interface interface
uses uses
System.TypInfo,System.Rtti; {$ifndef fpc}System.{$endif}TypInfo,
{$ifndef fpc}System.{$endif}SysUtils,
{$ifndef fpc}System.Rtti,{$endif}
Variants;
const const
CRTBCallTypeNil=ccStdCall; CRTBCallTypeNil=ccStdCall;
@@ -23,13 +26,19 @@ type
TRTBType=PTypeInfo; TRTBType=PTypeInfo;
{$ifdef fpc}
TValue = Variant;
{$endif}
TRTBArgArray = {$ifdef fpc}specialize{$endif} TArray<TValue>;
TRTBFunc=class abstract TRTBFunc=class abstract
public public
function Call(OutType:PTypeInfo;args:TArray<TValue>;CallType:TRTBCallType=CRTBCallTypeDefault):TValue;virtual;abstract; function Call(OutType:PTypeInfo;args:TRTBArgArray;CallType:TRTBCallType=CRTBCallTypeDefault):TValue;virtual;abstract;
end; end;
TRTBCallBackOut=TValue; TRTBCallBackOut=TValue;
TRTBCallBack=reference to function(arg:array of const):TRTBCallBackOut; TRTBCallBack={$ifndef fpc}reference to{$endif} function(arg:array of const):TRTBCallBackOut;
TRTBVar=class abstract TRTBVar=class abstract
protected protected
@@ -41,8 +50,8 @@ type
TRTBModule=class abstract TRTBModule=class abstract
protected protected
function GetFuntion(Name:string):TRTBFunc;virtual;abstract; function GetFuntion(const Name:string):TRTBFunc;virtual;abstract;
function GetVar(Name:string):TRTBVar;virtual;abstract; function GetVar(const Name:string):TRTBVar;virtual;abstract;
public public
property Funtion[Name:string]:TRTBFunc read GetFuntion; property Funtion[Name:string]:TRTBFunc read GetFuntion;
property &Var[Name:string]:TRTBVar read GetVar; property &Var[Name:string]:TRTBVar read GetVar;
@@ -52,37 +61,37 @@ type
protected protected
Compiler:TRTBCompiler; Compiler:TRTBCompiler;
function GetText:string;virtual;abstract; function GetText:string;virtual;abstract;
procedure SetText(S:string);virtual;abstract; procedure SetText(const S:string);virtual;abstract;
public public
constructor Create(Compiler:TRTBCompiler); constructor Create(ACompiler:TRTBCompiler);
procedure LoadLib(Name:string);virtual;abstract; procedure LoadLib(const Name:string);virtual;abstract;
procedure UnLoadLib(Name:string);virtual;abstract; procedure UnLoadLib(const Name:string);virtual;abstract;
procedure AddNameSpace(Name:string);virtual;abstract; procedure AddNameSpace(const Name:string);virtual;abstract;
procedure DelNameSpace(Name:string);virtual;abstract; procedure DelNameSpace(const Name:string);virtual;abstract;
procedure AddType(NameSpace:string;Name:string;&Type:TRTBType);virtual;abstract;//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> procedure AddType(const NameSpace,Name:string;&Type:TRTBType);virtual;abstract;//äîáàâëÿåò òèï
procedure DelType(NameSpace:string;Name:string);virtual;abstract; procedure DelType(const NameSpace,Name:string);virtual;abstract;
procedure AddConst(NameSpace:string;Name:string;Val:TValue);virtual;abstract;//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> procedure AddConst(const NameSpace,Name:string;Val:TValue);virtual;abstract;//äîáàâëÿåò êîíñòàíòó
procedure DelConst(NameSpace:string;Name:string);virtual;abstract; procedure DelConst(const NameSpace,Name:string);virtual;abstract;
procedure AddVariable(NameSpace:string;Name:string;var Data);virtual;abstract;//<EFBFBD><EFBFBD><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> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> procedure AddVariable(const NameSpace,Name:string;var Data);virtual;abstract;//äîáàâëÿåò ïåðåìåííóþ,èíèöèàëèçèðóÿ å¸ çíà÷åíèå
procedure ExportVariable(NameSpace:string;Name:string;var Data);virtual;abstract;//<EFBFBD><EFBFBD><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(const NameSpace,Name:string;var Data);virtual;abstract;//äîáàâëÿåò ïåðåìåííóþ,ñèíõõðîíèçèðîâàííóþ ñ Data
procedure DelVariable(NameSpace:string;Name:string);virtual;abstract; procedure DelVariable(const NameSpace,Name:string);virtual;abstract;
procedure AddCallBack(NameSpace:string;Name:string;CallBack:TRTBCallBack);virtual;abstract;//<EFBFBD><EFBFBD><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 AddCallBack(const NameSpace,Name:string;CallBack:TRTBCallBack);virtual;abstract;//äîáàâëÿåò ôóíêöèþ/ïðîöåäóðó/ìåòîä
procedure DelCallBack(NameSpace:string;Name:string);virtual;abstract; procedure DelCallBack(const NameSpace,Name:string);virtual;abstract;
procedure &Register(NameSpace:string;Name:string;&Type:TRTBType);virtual;abstract;//<EFBFBD><EFBFBD><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(const NameSpace,Name:string;&Type:TRTBType);virtual;abstract;//ðåãèñòðèðóåò ïåðåìåííóþ îáúÿâëåííóþ â ñêðèïòå
procedure UnRegister(NameSpace:string;Name:string);virtual;abstract; procedure UnRegister(const NameSpace,Name:string);virtual;abstract;
procedure &RegisterFunction(NameSpace:string;Name:string);virtual;abstract;//<EFBFBD><EFBFBD><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(const NameSpace,Name:string);virtual;abstract;//ðåãèñòðèðóåò ôóíêöèþ îáúÿâëåííóþ â ñêðèïòå
procedure UnRegisterFunction(NameSpace:string;Name:string);virtual;abstract; procedure UnRegisterFunction(const NameSpace,Name:string);virtual;abstract;
function Compilate:TRTBModule;virtual;abstract; function Compilate:TRTBModule;virtual;abstract;
procedure LoadFromFile(&File:string);virtual; procedure LoadFromFile(const &File:string);virtual;
procedure SaveToFile(&File:string);virtual; procedure SaveToFile(const &File:string);virtual;
property Text:string read GetText write SetText; property Text:string read GetText write SetText;
end; end;
@@ -94,14 +103,14 @@ type
implementation implementation
uses uses
System.SysUtils,System.Classes; {$ifndef fpc}System.{$endif}Classes;
constructor TRTBSource.Create(Compiler:TRTBCompiler); constructor TRTBSource.Create(ACompiler:TRTBCompiler);
begin begin
Self.Compiler:=Compiler; Self.Compiler:=ACompiler;
end; end;
procedure TRTBSource.LoadFromFile(&File:string); procedure TRTBSource.LoadFromFile(const &File:string);
var var
Data:TStrings; Data:TStrings;
begin begin
@@ -111,7 +120,7 @@ Text:=Data.Text;
FreeAndNil(Data); FreeAndNil(Data);
end; end;
procedure TRTBSource.SaveToFile(&File:string); procedure TRTBSource.SaveToFile(const &File:string);
var var
Data:TStrings; Data:TStrings;
begin begin
@@ -121,4 +130,4 @@ Data.SaveToFile(&File);
FreeAndNil(Data); FreeAndNil(Data);
end; end;
end. end.