Files
RuntimeBuilder/Source/RuntimeBuilder.Types.pas

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.