Adding Pipes

This commit is contained in:
Michael Schimmel
2025-12-18 11:58:41 +01:00
parent 8bde31a478
commit 34b4466a15
8 changed files with 45 additions and 32 deletions
+20 -3
View File
@@ -199,13 +199,14 @@ type
function GetRecordCount: Int64;
function GetTotalCount: Int64;
{$endregion}
procedure Add(const Item: IKeywordMapping<TScalar>; Lookback: Int64 = -1);
procedure Add(const Item: IKeywordMapping<TScalar>; Lookback: Int64 = -1); overload;
procedure Add(const Items: TArray<TScalar.TValue>; Lookback: Int64 = -1); overload;
property RecordCount: Int64 read GetRecordCount;
property TotalCount: Int64 read GetTotalCount;
end;
// A series of scalar records, optimized for memory and access speed.
TScalarRecordSeries = class(TInterfacedObject, IWriteableScalarRecordSeries, IKeywordMapping<ISeries>)
TScalarRecordSeries = class(TInterfacedObject, IKeywordMapping<ISeries>, IScalarRecordSeries, IWriteableScalarRecordSeries)
type
TMemberSeries = class(TGenericContainedObject<TScalarRecordSeries>, ISeries)
private
@@ -239,7 +240,8 @@ type
constructor Create(const ADef: IScalarRecordDefinition);
destructor Destroy; override;
procedure Add(const Item: IKeywordMapping<TScalar>; Lookback: Int64 = -1);
procedure Add(const Item: IKeywordMapping<TScalar>; Lookback: Int64 = -1); overload;
procedure Add(const Items: TArray<TScalar.TValue>; Lookback: Int64 = -1); overload;
property RecordCount: Int64 read GetRecordCount;
property Def: IScalarRecordDefinition read GetDef;
@@ -816,9 +818,24 @@ end;
procedure TScalarRecordSeries.Add(const Item: IKeywordMapping<TScalar>; Lookback: Int64 = -1);
begin
Assert(Item.Count = FDef.Count, 'Mapping does not fit series definition');
var lb := FDef.Count * Integer(Lookback);
for var i := 0 to FDef.Count - 1 do
begin
Assert(Item[i].Key = FDef[i].Key, 'Mapping does not fit series definition');
FArray.Add(Item[i].Value.Value, lb);
end;
inc(FTotalCount);
end;
procedure TScalarRecordSeries.Add(const Items: TArray<TScalar.TValue>; Lookback: Int64 = -1);
begin
Assert(Length(Items) = FDef.Count, 'Array does not fit series definition');
var lb := FDef.Count * Integer(Lookback);
for var i := 0 to FDef.Count - 1 do
FArray.Add(Items[i], lb);
inc(FTotalCount);
end;