Refactoring Keyword mapping, introducing tuples

This commit is contained in:
Michael Schimmel
2026-01-04 15:29:26 +01:00
parent 700088b5c5
commit 8914d59607
6 changed files with 56 additions and 56 deletions
+10 -10
View File
@@ -344,7 +344,7 @@ begin
var i64 := idx.AsScalar.Value.AsInt64;
for var k := 0 to rs.Def.Count - 1 do
vals[k] := rs.Fields[rs.Def.Keywords[k]].Items[Integer(i64)].Value;
Result := TDataValue.FromScalarRecord(TScalarRecord.Create(rs.Def, vals));
Result := TScalarRecord.Create(rs.Def, vals);
end
else
raise EEvaluatorException.Create('Indexer error');
@@ -358,10 +358,10 @@ begin
if base.IsVoid then
exit(TDataValue.Void);
case base.Kind of
vkRecordSeries: Result := TDataValue.FromSeries(base.AsRecordSeries.Fields[N.Member.Value]);
vkScalarRecord: Result := TDataValue(base.AsScalarRecord.Fields[N.Member.Value]);
vkRecord: Result := TDataValue(base.AsRecord.Fields[N.Member.Value]);
vkStream: Result := TDataValue.FromSeries(base.AsStream.Series.Fields[N.Member.Value]);
vkRecordSeries: Result := base.AsRecordSeries.Fields[N.Member.Value];
vkScalarRecord: Result := base.AsScalarRecord.Fields[N.Member.Value];
vkRecord: Result := base.AsRecord.Fields[N.Member.Value];
vkStream: Result := base.AsStream.Series.Fields[N.Member.Value];
else
raise EEvaluatorException.Create('Member error');
end;
@@ -377,7 +377,7 @@ begin
SetLength(vals, N.Fields.Count);
for i := 0 to N.Fields.Count - 1 do
vals[i] := Visit(N.Fields[i].Value).AsScalar.Value;
Result := TDataValue.FromScalarRecord(TScalarRecord.Create(N.ScalarDefinition, vals));
Result := TScalarRecord.Create(N.ScalarDefinition, vals);
end
else
begin
@@ -385,16 +385,16 @@ begin
SetLength(fields, N.Fields.Count);
for i := 0 to N.Fields.Count - 1 do
fields[i] := TPair<IKeyword, TDataValue>.Create(N.Fields[i].Key.Value, Visit(N.Fields[i].Value));
Result := TDataValue.FromGenericRecord(TGenericRecord<TDataValue>.Create(fields));
Result := TGenericRecord<TDataValue>.Create(fields);
end;
end;
function TEvaluatorVisitor.VisitCreateSeries(const N: ICreateSeriesNode): TDataValue;
begin
if N.Definition.Trim.StartsWith('[') then
Result := TDataValue.FromRecordSeries(TScalarRecordSeries.Create(TRttiAstHelper.JsonToRecordDefinition(N.Definition)))
Result := TScalarRecordSeries.Create(TRttiAstHelper.JsonToRecordDefinition(N.Definition))
else
Result := TDataValue.FromSeries(TScalarSeries.Create(TScalar.StringToKind(N.Definition)));
Result := TScalarSeries.Create(TScalar.StringToKind(N.Definition));
end;
function TEvaluatorVisitor.VisitAddSeriesItem(const N: IAddSeriesItemNode): TDataValue;
@@ -465,7 +465,7 @@ begin
R[k] := rec.Items[k].Value;
Result := True;
end;
Result := TDataValue.FromStream(TPipeStream.Create(config, outputDef, sources, pipeAdapter));
Result := TPipeStream.Create(config, outputDef, sources, pipeAdapter);
end;
end.