API Remake

This commit is contained in:
2018-04-01 01:23:44 +03:00
parent d4eb19affa
commit 08d7761837
10 changed files with 269 additions and 47 deletions

View File

@@ -2,26 +2,38 @@ unit RuntimeBuilder;
interface
uses System.TypInfo,System.Rtti;
uses
System.TypInfo,System.Rtti;
const
CRTBCallTypeNil=$0;
CRTBCallTypeRegister=$1;
CRTBCallTypeStdCall=$2;
CRTBCallTypeCdecl=$3;
CRTBCallTypePascal=$4;
CRTBCallTypeSafeCall=$5;
CRTBCallType64Call=$40;
CRTBCallTypeDefault=$80;
CRTBCallTypeNil=ccReg;
CRTBCallTypeRegister=ccReg;
CRTBCallTypeStdCall=ccStdCall;
CRTBCallTypeCdecl=ccCdecl;
CRTBCallTypePascal=ccPascal;
CRTBCallTypeSafeCall=ccSafeCall;
CRTBCallType64Call=CRTBCallTypeNil;
CRTBCallTypeScript=CRTBCallTypeNil;
CRTBCallTypeDefault=CRTBCallTypeNil;
type
TRTBCompiler=class;
TRTBCallType=CRTBCallTypeNil..CRTBCallTypeDefault;
TRTBCallType=TCallConv;
TRTBType=PTypeInfo;
TRTBFunc=class abstract
public
function Call(OutType:PTypeInfo;args:TArray<TValue>;CallType:TRTBCallType=CRTBCallTypeDefault):TValue;virtual;abstract;
function Call(Name:string;OutType:PTypeInfo;args:TArray<TValue>;CallType:TRTBCallType=CRTBCallTypeDefault):TValue;virtual;abstract;
end;
TRTBVar=class abstract
protected
function SetVal(TValue);virtual;abstract;
function GetVal:TValue;virtual;abstract;
public
property Val:TValue read GetVal write SetVal;
end;
TRTBLib=class abstract
@@ -29,6 +41,7 @@ type
function GetFuntion(Name:string):TRTBFunc;virtual;abstract;
public
property Funtion[Name:string]:TRTBFunc read GetFuntion;
property &Var[Name:string]:TRTBVar read GetFuntion;
end;
TRTBSource=class abstract
@@ -38,8 +51,29 @@ type
procedure SetText(S:string);virtual;abstract;
public
constructor Create(Compiler:TRTBCompiler);
function CompilateAsFunc:TRTBFunc;virtual;abstract;
function CompilateAsLib:TRTBLib;virtual;abstract;
procedure LoadLib(Name:string);virtual;abstract;
procedure UnLoadLib(Name:string);virtual;abstract;
procedure AddNameSpace(Name:string);virtual;abstract;
procedure DelNameSpace(Name:string);virtual;abstract;
procedure AddType(NameSpace:string;Name:string;&Type:TRTBType);virtual;abstract;
procedure ExportType(NameSpace:string;Name:string;&Type:TRTBType);virtual;abstract;
procedure DelType(NameSpace:string;Name:string);virtual;abstract;
procedure AddConst(NameSpace:string;Name:string;Val:TValue);virtual;abstract;
procedure ExportConst(NameSpace:string;Name:string;Val:TValue);virtual;abstract;
procedure DelConst(NameSpace:string;Name:string);virtual;abstract;
procedure AddVariable(NameSpace:string;Name:string;var Data);virtual;abstract;
procedure ExportVariable(NameSpace:string;Name:string;var Data);virtual;abstract;
procedure DelVariable(NameSpace:string;Name:string);virtual;abstract;
procedure &Register(NameSpace:string;Name:string;&Type:TRTBType);virtual;abstract;
procedure &RegisterFunction(NameSpace:string;Name:string);virtual;abstract;
function Compilate:TRTBLib;virtual;abstract;
procedure LoadFromFile(&File:string);
procedure SaveToFile(&File:string);
property Text:string read GetText write SetText;
@@ -47,7 +81,6 @@ type
TRTBCompiler=class abstract
public
function LoadLib(Name:string):TRTBLib;virtual;abstract;
function GenNewSrc():TRTBSource;virtual;abstract;
end;