New type system
This commit is contained in:
@@ -23,9 +23,6 @@ type
|
||||
|
||||
implementation
|
||||
|
||||
uses
|
||||
System.Rtti;
|
||||
|
||||
type
|
||||
// Implements the simple tuple data value.
|
||||
TImplDataTupleValue = class(TInterfacedObject, IDataValue, IDataTupleValue)
|
||||
@@ -33,7 +30,6 @@ type
|
||||
FItems: TArray<IDataValue>;
|
||||
function GetDataType: IDataType;
|
||||
function GetAsString: string;
|
||||
function AsTValue: TValue;
|
||||
function GetItemCount: Integer;
|
||||
function GetItem(Idx: Integer): IDataValue;
|
||||
public
|
||||
@@ -45,12 +41,10 @@ type
|
||||
strict private
|
||||
class var
|
||||
FSingleton: IDataTupleValue;
|
||||
FEmptyTValue: TValue;
|
||||
class constructor CreateClass;
|
||||
private
|
||||
function GetDataType: IDataType;
|
||||
function GetAsString: string;
|
||||
function AsTValue: TValue;
|
||||
function GetItemCount: Integer;
|
||||
function GetItem(Idx: Integer): IDataValue;
|
||||
public
|
||||
@@ -63,7 +57,6 @@ type
|
||||
FItem0: IDataValue;
|
||||
function GetDataType: IDataType;
|
||||
function GetAsString: string;
|
||||
function AsTValue: TValue;
|
||||
function GetItemCount: Integer;
|
||||
function GetItem(Idx: Integer): IDataValue;
|
||||
public
|
||||
@@ -76,7 +69,6 @@ type
|
||||
FItem0, FItem1: IDataValue;
|
||||
function GetDataType: IDataType;
|
||||
function GetAsString: string;
|
||||
function AsTValue: TValue;
|
||||
function GetItemCount: Integer;
|
||||
function GetItem(Idx: Integer): IDataValue;
|
||||
public
|
||||
@@ -89,7 +81,6 @@ type
|
||||
FItem0, FItem1, FItem2: IDataValue;
|
||||
function GetDataType: IDataType;
|
||||
function GetAsString: string;
|
||||
function AsTValue: TValue;
|
||||
function GetItemCount: Integer;
|
||||
function GetItem(Idx: Integer): IDataValue;
|
||||
public
|
||||
@@ -102,7 +93,6 @@ type
|
||||
FItem0, FItem1, FItem2, FItem3: IDataValue;
|
||||
function GetDataType: IDataType;
|
||||
function GetAsString: string;
|
||||
function AsTValue: TValue;
|
||||
function GetItemCount: Integer;
|
||||
function GetItem(Idx: Integer): IDataValue;
|
||||
public
|
||||
@@ -115,7 +105,6 @@ type
|
||||
FItem0, FItem1, FItem2, FItem3, FItem4: IDataValue;
|
||||
function GetDataType: IDataType;
|
||||
function GetAsString: string;
|
||||
function AsTValue: TValue;
|
||||
function GetItemCount: Integer;
|
||||
function GetItem(Idx: Integer): IDataValue;
|
||||
public
|
||||
@@ -160,17 +149,6 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
function TImplDataTupleValue.AsTValue: TValue;
|
||||
var
|
||||
tvalueArray: TArray<TValue>;
|
||||
i: Integer;
|
||||
begin
|
||||
SetLength(tvalueArray, Length(FItems));
|
||||
for i := 0 to High(FItems) do
|
||||
tvalueArray[i] := FItems[i].AsTValue;
|
||||
Result := TValue.From<TArray<TValue>>(tvalueArray);
|
||||
end;
|
||||
|
||||
function TImplDataTupleValue.GetItem(Idx: Integer): IDataValue;
|
||||
begin
|
||||
Result := FItems[Idx];
|
||||
@@ -184,12 +162,8 @@ end;
|
||||
{ TImplDataTupleValue0 }
|
||||
|
||||
class constructor TImplDataTupleValue0.CreateClass;
|
||||
var
|
||||
emptyArray: TArray<TValue>;
|
||||
begin
|
||||
FSingleton := TImplDataTupleValue0.Create;
|
||||
SetLength(emptyArray, 0);
|
||||
FEmptyTValue := TValue.From<TArray<TValue>>(emptyArray);
|
||||
end;
|
||||
|
||||
function TImplDataTupleValue0.GetAsString: string;
|
||||
@@ -197,11 +171,6 @@ begin
|
||||
Result := '()';
|
||||
end;
|
||||
|
||||
function TImplDataTupleValue0.AsTValue: TValue;
|
||||
begin
|
||||
Result := FEmptyTValue;
|
||||
end;
|
||||
|
||||
function TImplDataTupleValue0.GetDataType: IDataType;
|
||||
begin
|
||||
Result := TImplDataTupleType.Singleton;
|
||||
@@ -230,15 +199,6 @@ begin
|
||||
Result := '(' + FItem0.AsString + ')';
|
||||
end;
|
||||
|
||||
function TImplDataTupleValue1.AsTValue: TValue;
|
||||
var
|
||||
tvalueArray: TArray<TValue>;
|
||||
begin
|
||||
SetLength(tvalueArray, 1);
|
||||
tvalueArray[0] := FItem0.AsTValue;
|
||||
Result := TValue.From<TArray<TValue>>(tvalueArray);
|
||||
end;
|
||||
|
||||
function TImplDataTupleValue1.GetDataType: IDataType;
|
||||
begin
|
||||
Result := TImplDataTupleType.Singleton;
|
||||
@@ -272,16 +232,6 @@ begin
|
||||
Result := '(' + FItem0.AsString + ', ' + FItem1.AsString + ')';
|
||||
end;
|
||||
|
||||
function TImplDataTupleValue2.AsTValue: TValue;
|
||||
var
|
||||
tvalueArray: TArray<TValue>;
|
||||
begin
|
||||
SetLength(tvalueArray, 2);
|
||||
tvalueArray[0] := FItem0.AsTValue;
|
||||
tvalueArray[1] := FItem1.AsTValue;
|
||||
Result := TValue.From<TArray<TValue>>(tvalueArray);
|
||||
end;
|
||||
|
||||
function TImplDataTupleValue2.GetDataType: IDataType;
|
||||
begin
|
||||
Result := TImplDataTupleType.Singleton;
|
||||
@@ -331,17 +281,6 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
function TImplDataTupleValue3.AsTValue: TValue;
|
||||
var
|
||||
tvalueArray: TArray<TValue>;
|
||||
begin
|
||||
SetLength(tvalueArray, 3);
|
||||
tvalueArray[0] := FItem0.AsTValue;
|
||||
tvalueArray[1] := FItem1.AsTValue;
|
||||
tvalueArray[2] := FItem2.AsTValue;
|
||||
Result := TValue.From<TArray<TValue>>(tvalueArray);
|
||||
end;
|
||||
|
||||
function TImplDataTupleValue3.GetDataType: IDataType;
|
||||
begin
|
||||
Result := TImplDataTupleType.Singleton;
|
||||
@@ -395,18 +334,6 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
function TImplDataTupleValue4.AsTValue: TValue;
|
||||
var
|
||||
tvalueArray: TArray<TValue>;
|
||||
begin
|
||||
SetLength(tvalueArray, 4);
|
||||
tvalueArray[0] := FItem0.AsTValue;
|
||||
tvalueArray[1] := FItem1.AsTValue;
|
||||
tvalueArray[2] := FItem2.AsTValue;
|
||||
tvalueArray[3] := FItem3.AsTValue;
|
||||
Result := TValue.From<TArray<TValue>>(tvalueArray);
|
||||
end;
|
||||
|
||||
function TImplDataTupleValue4.GetDataType: IDataType;
|
||||
begin
|
||||
Result := TImplDataTupleType.Singleton;
|
||||
@@ -464,19 +391,6 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
function TImplDataTupleValue5.AsTValue: TValue;
|
||||
var
|
||||
tvalueArray: TArray<TValue>;
|
||||
begin
|
||||
SetLength(tvalueArray, 5);
|
||||
tvalueArray[0] := FItem0.AsTValue;
|
||||
tvalueArray[1] := FItem1.AsTValue;
|
||||
tvalueArray[2] := FItem2.AsTValue;
|
||||
tvalueArray[3] := FItem3.AsTValue;
|
||||
tvalueArray[4] := FItem4.AsTValue;
|
||||
Result := TValue.From<TArray<TValue>>(tvalueArray);
|
||||
end;
|
||||
|
||||
function TImplDataTupleValue5.GetDataType: IDataType;
|
||||
begin
|
||||
Result := TImplDataTupleType.Singleton;
|
||||
|
||||
Reference in New Issue
Block a user