This commit is contained in:
Michael Schimmel
2025-10-31 18:12:53 +01:00
parent 0526ec8a24
commit 8abec8e98f
8 changed files with 199 additions and 106 deletions
+14 -14
View File
@@ -46,7 +46,7 @@ type
function GetKind: TStaticTypeKind;
function GetElementType: IStaticType;
function GetSignature: IMethodSignature;
function GetDefinition: TScalarRecordDefinition;
function GetDefinition: IScalarRecordDefinition;
{$endregion}
// The kind of type (e.g., Ordinal, Series, etc.)
@@ -56,7 +56,7 @@ type
// The signature (if Kind = stMethod)
property Signature: IMethodSignature read GetSignature;
// The definition (if Kind = stRecord or stRecordSeries)
property Definition: TScalarRecordDefinition read GetDefinition;
property Definition: IScalarRecordDefinition read GetDefinition;
// Checks for type equality
function IsEqual(const Other: IStaticType): Boolean;
@@ -94,8 +94,8 @@ type
// Factory functions for complex types
class function CreateSeries(const AElementType: IStaticType): IStaticType; static;
class function CreateMethod(const AParamTypes: TArray<IStaticType>; const AReturnType: IStaticType): IStaticType; static;
class function CreateRecord(const ADef: TScalarRecordDefinition): IStaticType; static;
class function CreateRecordSeries(const ADef: TScalarRecordDefinition): IStaticType; static;
class function CreateRecord(const ADef: IScalarRecordDefinition): IStaticType; static;
class function CreateRecordSeries(const ADef: IScalarRecordDefinition): IStaticType; static;
class function FromScalarKind(AKind: TScalar.TKind): IStaticType; static;
end;
@@ -148,7 +148,7 @@ type
function GetKind: TStaticTypeKind; virtual; abstract;
function GetElementType: IStaticType; virtual;
function GetSignature: IMethodSignature; virtual;
function GetDefinition: TScalarRecordDefinition; virtual;
function GetDefinition: IScalarRecordDefinition; virtual;
function IsEqual(const Other: IStaticType): Boolean; virtual;
function ToString: string; override;
end;
@@ -163,10 +163,10 @@ begin
Result := nil;
end;
function TAbstractStaticType.GetDefinition: TScalarRecordDefinition;
function TAbstractStaticType.GetDefinition: IScalarRecordDefinition;
begin
// Return an empty/invalid definition
Result := Default(TScalarRecordDefinition);
Result := Default(IScalarRecordDefinition);
end;
function TAbstractStaticType.IsEqual(const Other: IStaticType): Boolean;
@@ -346,16 +346,16 @@ type
TRecordType = class(TAbstractStaticType)
private
FKind: TStaticTypeKind;
FDefinition: TScalarRecordDefinition;
FDefinition: IScalarRecordDefinition;
public
constructor Create(AKind: TStaticTypeKind; ADef: TScalarRecordDefinition);
constructor Create(AKind: TStaticTypeKind; ADef: IScalarRecordDefinition);
function GetKind: TStaticTypeKind; override;
function GetDefinition: TScalarRecordDefinition; override;
function GetDefinition: IScalarRecordDefinition; override;
function IsEqual(const Other: IStaticType): Boolean; override;
function ToString: string; override;
end;
constructor TRecordType.Create(AKind: TStaticTypeKind; ADef: TScalarRecordDefinition);
constructor TRecordType.Create(AKind: TStaticTypeKind; ADef: IScalarRecordDefinition);
begin
inherited Create;
Assert(AKind in [stRecord, stRecordSeries]);
@@ -368,7 +368,7 @@ begin
Result := FKind;
end;
function TRecordType.GetDefinition: TScalarRecordDefinition;
function TRecordType.GetDefinition: IScalarRecordDefinition;
begin
Result := FDefinition;
end;
@@ -426,12 +426,12 @@ begin
Result := TMethodType.Create(AParamTypes, AReturnType);
end;
class function TTypes.CreateRecord(const ADef: TScalarRecordDefinition): IStaticType;
class function TTypes.CreateRecord(const ADef: IScalarRecordDefinition): IStaticType;
begin
Result := TRecordType.Create(stRecord, ADef);
end;
class function TTypes.CreateRecordSeries(const ADef: TScalarRecordDefinition): IStaticType;
class function TTypes.CreateRecordSeries(const ADef: IScalarRecordDefinition): IStaticType;
begin
Result := TRecordType.Create(stRecordSeries, ADef);
end;