Moved TLuaParameters to interface section
This commit is contained in:
parent
f8515a948c
commit
018dbf03b2
130
Lua.pas
130
Lua.pas
@ -208,6 +208,58 @@ type
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
TCustomLuaParameters = class(TInterfacedObject, ILuaVariable, ILuaReadParameters)
|
||||||
|
protected
|
||||||
|
function GetDefaultVariable: ILuaVariable;
|
||||||
|
public
|
||||||
|
{ ILuaVariable }
|
||||||
|
function GetVariableType: TLuaVariableType;
|
||||||
|
function GetDataType: TLuaDataType;
|
||||||
|
|
||||||
|
function GetAsBoolean: Boolean;
|
||||||
|
function GetAsInteger: Integer;
|
||||||
|
function GetAsNumber: Double;
|
||||||
|
function GetAsUserData: Pointer;
|
||||||
|
function GetAsString: string;
|
||||||
|
function GetAsTable: ILuaTable;
|
||||||
|
function GetAsFunction: ILuaFunction;
|
||||||
|
|
||||||
|
procedure SetAsBoolean(ABoolean: Boolean);
|
||||||
|
procedure SetAsInteger(AInteger: Integer);
|
||||||
|
procedure SetAsNumber(ANumber: Double);
|
||||||
|
procedure SetAsUserData(AUserData: Pointer);
|
||||||
|
procedure SetAsString(AString: string);
|
||||||
|
procedure SetAsTable(ATable: ILuaTable);
|
||||||
|
|
||||||
|
{ ILuaReadParameters }
|
||||||
|
function GetCount: Integer; virtual; abstract;
|
||||||
|
function GetItem(Index: Integer): ILuaVariable; virtual; abstract;
|
||||||
|
|
||||||
|
function GetEnumerator: ILuaParametersEnumerator;
|
||||||
|
function ToString: string; override;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
TLuaParameters = class(TCustomLuaParameters, ILuaWriteParameters)
|
||||||
|
private
|
||||||
|
FParameters: TList<ILuaVariable>;
|
||||||
|
public
|
||||||
|
constructor Create;
|
||||||
|
destructor Destroy; override;
|
||||||
|
|
||||||
|
function GetCount: Integer; override;
|
||||||
|
function GetItem(Index: Integer): ILuaVariable; override;
|
||||||
|
|
||||||
|
{ ILuaWriteParameters }
|
||||||
|
procedure Push(ABoolean: Boolean); overload;
|
||||||
|
procedure Push(AInteger: Integer); overload;
|
||||||
|
procedure Push(ANumber: Double); overload;
|
||||||
|
procedure Push(AUserData: Pointer); overload;
|
||||||
|
procedure Push(const AString: string); overload;
|
||||||
|
procedure Push(ATable: ILuaTable); overload;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
ILuaFunction = interface
|
ILuaFunction = interface
|
||||||
['{1BE5E470-0318-410E-8D5B-94BFE04A3DBE}']
|
['{1BE5E470-0318-410E-8D5B-94BFE04A3DBE}']
|
||||||
function Call(): ILuaReadParameters; overload;
|
function Call(): ILuaReadParameters; overload;
|
||||||
@ -413,38 +465,6 @@ type
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
TCustomLuaParameters = class(TInterfacedObject, ILuaVariable, ILuaReadParameters)
|
|
||||||
protected
|
|
||||||
function GetDefaultVariable: ILuaVariable;
|
|
||||||
public
|
|
||||||
{ ILuaVariable }
|
|
||||||
function GetVariableType: TLuaVariableType;
|
|
||||||
function GetDataType: TLuaDataType;
|
|
||||||
|
|
||||||
function GetAsBoolean: Boolean;
|
|
||||||
function GetAsInteger: Integer;
|
|
||||||
function GetAsNumber: Double;
|
|
||||||
function GetAsUserData: Pointer;
|
|
||||||
function GetAsString: string;
|
|
||||||
function GetAsTable: ILuaTable;
|
|
||||||
function GetAsFunction: ILuaFunction;
|
|
||||||
|
|
||||||
procedure SetAsBoolean(ABoolean: Boolean);
|
|
||||||
procedure SetAsInteger(AInteger: Integer);
|
|
||||||
procedure SetAsNumber(ANumber: Double);
|
|
||||||
procedure SetAsUserData(AUserData: Pointer);
|
|
||||||
procedure SetAsString(AString: string);
|
|
||||||
procedure SetAsTable(ATable: ILuaTable);
|
|
||||||
|
|
||||||
{ ILuaReadParameters }
|
|
||||||
function GetCount: Integer; virtual; abstract;
|
|
||||||
function GetItem(Index: Integer): ILuaVariable; virtual; abstract;
|
|
||||||
|
|
||||||
function GetEnumerator: ILuaParametersEnumerator;
|
|
||||||
function ToString: string; override;
|
|
||||||
end;
|
|
||||||
|
|
||||||
|
|
||||||
TLuaStackParameters = class(TCustomLuaParameters)
|
TLuaStackParameters = class(TCustomLuaParameters)
|
||||||
private
|
private
|
||||||
FState: lua_State;
|
FState: lua_State;
|
||||||
@ -568,26 +588,6 @@ type
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
TLuaReadWriteParameters = class(TCustomLuaParameters, ILuaWriteParameters)
|
|
||||||
private
|
|
||||||
FParameters: TList<ILuaVariable>;
|
|
||||||
public
|
|
||||||
constructor Create;
|
|
||||||
destructor Destroy; override;
|
|
||||||
|
|
||||||
function GetCount: Integer; override;
|
|
||||||
function GetItem(Index: Integer): ILuaVariable; override;
|
|
||||||
|
|
||||||
{ ILuaWriteParameters }
|
|
||||||
procedure Push(ABoolean: Boolean); overload;
|
|
||||||
procedure Push(AInteger: Integer); overload;
|
|
||||||
procedure Push(ANumber: Double); overload;
|
|
||||||
procedure Push(AUserData: Pointer); overload;
|
|
||||||
procedure Push(const AString: string); overload;
|
|
||||||
procedure Push(ATable: ILuaTable); overload;
|
|
||||||
end;
|
|
||||||
|
|
||||||
|
|
||||||
TLuaStackWriteParameters = class(TInterfacedObject, ILuaWriteParameters)
|
TLuaStackWriteParameters = class(TInterfacedObject, ILuaWriteParameters)
|
||||||
private
|
private
|
||||||
FState: lua_State;
|
FState: lua_State;
|
||||||
@ -682,11 +682,11 @@ class function TLuaHelpers.CreateParameters(AParameters: array of const): ILuaRe
|
|||||||
var
|
var
|
||||||
parameterIndex: Integer;
|
parameterIndex: Integer;
|
||||||
parameter: TVarRec;
|
parameter: TVarRec;
|
||||||
resultParameters: TLuaReadWriteParameters;
|
resultParameters: TLuaParameters;
|
||||||
table: ILuaTable;
|
table: ILuaTable;
|
||||||
|
|
||||||
begin
|
begin
|
||||||
resultParameters := TLuaReadWriteParameters.Create;
|
resultParameters := TLuaParameters.Create;
|
||||||
|
|
||||||
for parameterIndex := Low(AParameters) to High(AParameters) do
|
for parameterIndex := Low(AParameters) to High(AParameters) do
|
||||||
begin
|
begin
|
||||||
@ -2263,8 +2263,8 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
{ TLuaReadWriteParameters }
|
{ TLuaParameters }
|
||||||
constructor TLuaReadWriteParameters.Create;
|
constructor TLuaParameters.Create;
|
||||||
begin
|
begin
|
||||||
inherited Create;
|
inherited Create;
|
||||||
|
|
||||||
@ -2272,7 +2272,7 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
destructor TLuaReadWriteParameters.Destroy;
|
destructor TLuaParameters.Destroy;
|
||||||
begin
|
begin
|
||||||
FreeAndNil(FParameters);
|
FreeAndNil(FParameters);
|
||||||
|
|
||||||
@ -2280,49 +2280,49 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
function TLuaReadWriteParameters.GetCount: Integer;
|
function TLuaParameters.GetCount: Integer;
|
||||||
begin
|
begin
|
||||||
Result := FParameters.Count;
|
Result := FParameters.Count;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
function TLuaReadWriteParameters.GetItem(Index: Integer): ILuaVariable;
|
function TLuaParameters.GetItem(Index: Integer): ILuaVariable;
|
||||||
begin
|
begin
|
||||||
Result := FParameters[Index];
|
Result := FParameters[Index];
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
procedure TLuaReadWriteParameters.Push(ABoolean: Boolean);
|
procedure TLuaParameters.Push(ABoolean: Boolean);
|
||||||
begin
|
begin
|
||||||
FParameters.Add(TLuaVariable.Create(ABoolean));
|
FParameters.Add(TLuaVariable.Create(ABoolean));
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
procedure TLuaReadWriteParameters.Push(AInteger: Integer);
|
procedure TLuaParameters.Push(AInteger: Integer);
|
||||||
begin
|
begin
|
||||||
FParameters.Add(TLuaVariable.Create(AInteger));
|
FParameters.Add(TLuaVariable.Create(AInteger));
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
procedure TLuaReadWriteParameters.Push(ANumber: Double);
|
procedure TLuaParameters.Push(ANumber: Double);
|
||||||
begin
|
begin
|
||||||
FParameters.Add(TLuaVariable.Create(ANumber));
|
FParameters.Add(TLuaVariable.Create(ANumber));
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
procedure TLuaReadWriteParameters.Push(AUserData: Pointer);
|
procedure TLuaParameters.Push(AUserData: Pointer);
|
||||||
begin
|
begin
|
||||||
FParameters.Add(TLuaVariable.Create(AUserData));
|
FParameters.Add(TLuaVariable.Create(AUserData));
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
procedure TLuaReadWriteParameters.Push(const AString: string);
|
procedure TLuaParameters.Push(const AString: string);
|
||||||
begin
|
begin
|
||||||
FParameters.Add(TLuaVariable.Create(AString));
|
FParameters.Add(TLuaVariable.Create(AString));
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
procedure TLuaReadWriteParameters.Push(ATable: ILuaTable);
|
procedure TLuaParameters.Push(ATable: ILuaTable);
|
||||||
begin
|
begin
|
||||||
FParameters.Add(TLuaVariable.Create(ATable));
|
FParameters.Add(TLuaVariable.Create(ATable));
|
||||||
end;
|
end;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user