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 TRTBCompiler=class; TRTBCallType=CRTBCallTypeNil..CRTBCallTypeDefault; TRTBFunc=class abstract public function Call(args:array of const;CallType:TRTBCallType=CRTBCallTypeDefault):Variant;virtual;abstract; end; TRTBLib=class abstract protected function GetFuntion(Name:string):TRTBFunc;virtual;abstract; public property Funtion[Name:string]:TRTBFunc read GetFuntion; end; TRTBSource=class abstract protected Compiler:TRTBCompiler; function GetText:string;virtual;abstract; procedure SetText(S:string);virtual;abstract; public constructor Create(Compiler:TRTBCompiler); function CompilateAsFunc:TRTBFunc;virtual;abstract; function CompilateAsLib:TRTBLib;virtual;abstract; procedure LoadFromFile(&File:string); procedure SaveToFile(&File:string); property Text:string read GetText write SetText; end; TRTBCompiler=class abstract public function LoadLib(Name:string):TRTBLib;virtual;abstract; function GenNewSrc():TRTBSource;virtual;abstract; end; implementation uses System.SysUtils,System.Classes; constructor TRTBSource.Create(Compiler:TRTBCompiler); begin Self.Compiler:=Compiler; end; procedure TRTBSource.LoadFromFile(&File:string); var Data:TStrings; begin Data:=TStringList.Create; Data.LoadFromFile(&File); Text:=Data.Text; FreeAndNil(Data); end; procedure TRTBSource.SaveToFile(&File:string); var Data:TStrings; begin Data:=TStringList.Create; Data.Text:=Text; Data.SaveToFile(&File); FreeAndNil(Data); end; end.