diff --git a/Source/RuntimeBuilder.pas b/Source/RuntimeBuilder.pas index 16308ab..7adcf68 100644 --- a/Source/RuntimeBuilder.pas +++ b/Source/RuntimeBuilder.pas @@ -3,7 +3,10 @@ unit RuntimeBuilder; interface uses - System.TypInfo,System.Rtti; + {$ifndef fpc}System.{$endif}TypInfo, + {$ifndef fpc}System.{$endif}SysUtils, + {$ifndef fpc}System.Rtti,{$endif} + Variants; const CRTBCallTypeNil=ccStdCall; @@ -23,13 +26,19 @@ type TRTBType=PTypeInfo; + {$ifdef fpc} + TValue = Variant; + {$endif} + + TRTBArgArray = {$ifdef fpc}specialize{$endif} TArray; + TRTBFunc=class abstract public - function Call(OutType:PTypeInfo;args:TArray;CallType:TRTBCallType=CRTBCallTypeDefault):TValue;virtual;abstract; + function Call(OutType:PTypeInfo;args:TRTBArgArray;CallType:TRTBCallType=CRTBCallTypeDefault):TValue;virtual;abstract; end; TRTBCallBackOut=TValue; - TRTBCallBack=reference to function(arg:array of const):TRTBCallBackOut; + TRTBCallBack={$ifndef fpc}reference to{$endif} function(arg:array of const):TRTBCallBackOut; TRTBVar=class abstract protected @@ -41,8 +50,8 @@ type TRTBModule=class abstract protected - function GetFuntion(Name:string):TRTBFunc;virtual;abstract; - function GetVar(Name:string):TRTBVar;virtual;abstract; + function GetFuntion(const Name:string):TRTBFunc;virtual;abstract; + function GetVar(const Name:string):TRTBVar;virtual;abstract; public property Funtion[Name:string]:TRTBFunc read GetFuntion; property &Var[Name:string]:TRTBVar read GetVar; @@ -52,37 +61,37 @@ type protected Compiler:TRTBCompiler; function GetText:string;virtual;abstract; - procedure SetText(S:string);virtual;abstract; + procedure SetText(const S:string);virtual;abstract; public - constructor Create(Compiler:TRTBCompiler); + constructor Create(ACompiler:TRTBCompiler); - procedure LoadLib(Name:string);virtual;abstract; - procedure UnLoadLib(Name:string);virtual;abstract; + procedure LoadLib(const Name:string);virtual;abstract; + procedure UnLoadLib(const Name:string);virtual;abstract; - procedure AddNameSpace(Name:string);virtual;abstract; - procedure DelNameSpace(Name:string);virtual;abstract; + procedure AddNameSpace(const Name:string);virtual;abstract; + procedure DelNameSpace(const Name:string);virtual;abstract; - procedure AddType(NameSpace:string;Name:string;&Type:TRTBType);virtual;abstract;//äîáàâëÿåò òèï - procedure DelType(NameSpace:string;Name:string);virtual;abstract; + procedure AddType(const NameSpace,Name:string;&Type:TRTBType);virtual;abstract;//äîáàâëÿåò òèï + procedure DelType(const NameSpace,Name:string);virtual;abstract; - procedure AddConst(NameSpace:string;Name:string;Val:TValue);virtual;abstract;//äîáàâëÿåò êîíñòàíòó - procedure DelConst(NameSpace:string;Name:string);virtual;abstract; + procedure AddConst(const NameSpace,Name:string;Val:TValue);virtual;abstract;//äîáàâëÿåò êîíñòàíòó + procedure DelConst(const NameSpace,Name:string);virtual;abstract; - procedure AddVariable(NameSpace:string;Name:string;var Data);virtual;abstract;//äîáàâëÿåò ïåðåìåííóþ,èíèöèàëèçèðóÿ å¸ çíà÷åíèå - procedure ExportVariable(NameSpace:string;Name:string;var Data);virtual;abstract;//äîáàâëÿåò ïåðåìåííóþ,ñèíõõðîíèçèðîâàííóþ ñ Data - procedure DelVariable(NameSpace:string;Name:string);virtual;abstract; + procedure AddVariable(const NameSpace,Name:string;var Data);virtual;abstract;//äîáàâëÿåò ïåðåìåííóþ,èíèöèàëèçèðóÿ å¸ çíà÷åíèå + procedure ExportVariable(const NameSpace,Name:string;var Data);virtual;abstract;//äîáàâëÿåò ïåðåìåííóþ,ñèíõõðîíèçèðîâàííóþ ñ Data + procedure DelVariable(const NameSpace,Name:string);virtual;abstract; - procedure AddCallBack(NameSpace:string;Name:string;CallBack:TRTBCallBack);virtual;abstract;//äîáàâëÿåò ôóíêöèþ/ïðîöåäóðó/ìåòîä - procedure DelCallBack(NameSpace:string;Name:string);virtual;abstract; + procedure AddCallBack(const NameSpace,Name:string;CallBack:TRTBCallBack);virtual;abstract;//äîáàâëÿåò ôóíêöèþ/ïðîöåäóðó/ìåòîä + procedure DelCallBack(const NameSpace,Name:string);virtual;abstract; - procedure &Register(NameSpace:string;Name:string;&Type:TRTBType);virtual;abstract;//ðåãèñòðèðóåò ïåðåìåííóþ îáúÿâëåííóþ â ñêðèïòå - procedure UnRegister(NameSpace:string;Name:string);virtual;abstract; - procedure &RegisterFunction(NameSpace:string;Name:string);virtual;abstract;//ðåãèñòðèðóåò ôóíêöèþ îáúÿâëåííóþ â ñêðèïòå - procedure UnRegisterFunction(NameSpace:string;Name:string);virtual;abstract; + procedure &Register(const NameSpace,Name:string;&Type:TRTBType);virtual;abstract;//ðåãèñòðèðóåò ïåðåìåííóþ îáúÿâëåííóþ â ñêðèïòå + procedure UnRegister(const NameSpace,Name:string);virtual;abstract; + procedure &RegisterFunction(const NameSpace,Name:string);virtual;abstract;//ðåãèñòðèðóåò ôóíêöèþ îáúÿâëåííóþ â ñêðèïòå + procedure UnRegisterFunction(const NameSpace,Name:string);virtual;abstract; function Compilate:TRTBModule;virtual;abstract; - procedure LoadFromFile(&File:string);virtual; - procedure SaveToFile(&File:string);virtual; + procedure LoadFromFile(const &File:string);virtual; + procedure SaveToFile(const &File:string);virtual; property Text:string read GetText write SetText; end; @@ -94,14 +103,14 @@ type implementation uses - System.SysUtils,System.Classes; + {$ifndef fpc}System.{$endif}Classes; -constructor TRTBSource.Create(Compiler:TRTBCompiler); +constructor TRTBSource.Create(ACompiler:TRTBCompiler); begin -Self.Compiler:=Compiler; +Self.Compiler:=ACompiler; end; -procedure TRTBSource.LoadFromFile(&File:string); +procedure TRTBSource.LoadFromFile(const &File:string); var Data:TStrings; begin @@ -111,7 +120,7 @@ Text:=Data.Text; FreeAndNil(Data); end; -procedure TRTBSource.SaveToFile(&File:string); +procedure TRTBSource.SaveToFile(const &File:string); var Data:TStrings; begin @@ -121,4 +130,4 @@ Data.SaveToFile(&File); FreeAndNil(Data); end; -end. +end. \ No newline at end of file