New type system

This commit is contained in:
Michael Schimmel
2025-08-26 15:49:28 +02:00
parent e9608a746a
commit 54d470b2f8
15 changed files with 58 additions and 364 deletions
-86
View File
@@ -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;