Refactoring Keyword mapping, introducing tuples

This commit is contained in:
Michael Schimmel
2026-01-04 15:07:02 +01:00
parent f1733c41a0
commit 0a7a6ea2d0
13 changed files with 245 additions and 93 deletions
+5 -5
View File
@@ -343,7 +343,7 @@ begin
SetLength(vals, rs.Def.Count);
var i64 := idx.AsScalar.Value.AsInt64;
for var k := 0 to rs.Def.Count - 1 do
vals[k] := rs.Fields[rs.Def.Items[k].Key].Items[Integer(i64)].Value;
vals[k] := rs.Fields[rs.Def.Keywords[k]].Items[Integer(i64)].Value;
Result := TDataValue.FromScalarRecord(TScalarRecord.Create(rs.Def, vals));
end
else
@@ -360,7 +360,7 @@ begin
case base.Kind of
vkRecordSeries: Result := TDataValue.FromSeries(base.AsRecordSeries.Fields[N.Member.Value]);
vkScalarRecord: Result := TDataValue(base.AsScalarRecord.Fields[N.Member.Value]);
vkGenericRecord: Result := TDataValue(base.AsGenericRecord.Fields[N.Member.Value]);
vkRecord: Result := TDataValue(base.AsRecord.Fields[N.Member.Value]);
vkStream: Result := TDataValue.FromSeries(base.AsStream.Series.Fields[N.Member.Value]);
else
raise EEvaluatorException.Create('Member error');
@@ -442,7 +442,7 @@ begin
begin
var key := selectors[k].Value;
var idx := srcDef.IndexOf(key);
config[i][k] := TScalarRecordField.Create(key, srcDef.Items[idx].Value);
config[i][k] := TScalarRecordField.Create(key, srcDef[idx]);
end;
end;
lambdaFunc := Visit(N.Transformation).AsMethod();
@@ -461,8 +461,8 @@ begin
if res.IsVoid then
exit(False);
var rec := res.AsScalarRecord;
for k := 0 to rec.Def.Count - 1 do
R[k] := rec.Items[k].Value.Value;
for k := 0 to rec.Count - 1 do
R[k] := rec.Items[k].Value;
Result := True;
end;
Result := TDataValue.FromStream(TPipeStream.Create(config, outputDef, sources, pipeAdapter));