58 lines
1.5 KiB
ObjectPascal
58 lines
1.5 KiB
ObjectPascal
unit RuntimeBuilder.Types;
|
|
|
|
interface
|
|
|
|
const
|
|
CRTBCallTypeNil=$0;
|
|
CRTBCallTypeRegister=$1;
|
|
CRTBCallTypeStdCall=$2;
|
|
CRTBCallTypeCdecl=$3;
|
|
CRTBCallTypeClrcall=$4;
|
|
CRTBCallTypeThiscall=$5;
|
|
CRTBCallTypeVectorcall=$6;
|
|
CRTBCallTypeCFastCall=$7;
|
|
CRTBCallTypeFortran=$8;
|
|
CRTBCallTypeSyscall=$9;
|
|
CRTBCallType64Call=$40;
|
|
CRTBCallTypeDefault=$80;
|
|
|
|
type
|
|
TRTBCompliter=class;
|
|
|
|
TRTBCallType=CRTBCallTypeNil..CRTBCallTypeDefault;
|
|
|
|
TRTBFunc=class abstract
|
|
public
|
|
function Call(args:array of const;CallType:TRTBCallType=CRTBCallTypeDefault):Variant;virtual;abstract;
|
|
end;
|
|
|
|
TRTBLib=class abstract
|
|
private
|
|
function GetFuntion(Name:string):TRTBFunc;virtual;abstract;
|
|
public
|
|
property Funtion[Name:string]:TRTBFunc read GetFuntion;
|
|
end;
|
|
|
|
TRTBSource=class abstract
|
|
private
|
|
Compliter:TRTBCompliter;
|
|
function GetText:string;virtual;abstract;
|
|
procedure SetText(S:string);virtual;abstract;
|
|
public
|
|
procedure CompleteAsLib:TRTBLib;virtual;abstract;
|
|
procedure CompleteAsFunc:TRTBLib;virtual;abstract;
|
|
property Text:string read GetText write SetText;
|
|
end;
|
|
|
|
TRTBCompliter=class abstract
|
|
public
|
|
function LoadLib(Name:string):TRTBLib;virtual;abstract;
|
|
function GenSrc():TRTBSource;virtual;abstract;
|
|
function CompleteFunc(Source:TRTBSource;args:array of const):TRTBFunc;virtual;abstract;
|
|
function CompleteLib(Source:TRTBSource;args:array of const):TRTBLib;virtual;abstract;
|
|
end;
|
|
|
|
implementation
|
|
|
|
end.
|