API Remake
This commit is contained in:
@@ -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;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user