Global data value refactoring + 1st scripting version
This commit is contained in:
@@ -152,10 +152,8 @@ begin
|
||||
end;
|
||||
|
||||
case AValue.AsScalar.Kind of
|
||||
skInteger: Result := (AValue.AsScalar.Value.AsInteger <> 0);
|
||||
skInt64: Result := (AValue.AsScalar.Value.AsInt64 <> 0);
|
||||
skUInt64: Result := (AValue.AsScalar.Value.AsUInt64 <> 0);
|
||||
skBoolean: Result := (AValue.AsScalar.Value.AsBoolean);
|
||||
TScalar.TKind.Ordinal: Result := (AValue.AsScalar.Value.AsInt64 <> 0);
|
||||
TScalar.TKind.Float: Result := (AValue.AsScalar.Value.AsDouble <> 0.0);
|
||||
else
|
||||
Result := False;
|
||||
end;
|
||||
@@ -297,13 +295,10 @@ begin
|
||||
if Assigned(Node.Lookback) then
|
||||
begin
|
||||
lookbackValue := Node.Lookback.Accept(Self);
|
||||
if (lookbackValue.Kind <> vkScalar) or not (lookbackValue.AsScalar.Kind in [skInteger, skInt64]) then
|
||||
if (lookbackValue.Kind <> vkScalar) or (lookbackValue.AsScalar.Kind <> TScalar.TKind.Ordinal) then
|
||||
raise EArgumentException.Create('Lookback parameter must be an integer.');
|
||||
|
||||
if lookbackValue.AsScalar.Kind = skInteger then
|
||||
lookback := lookbackValue.AsScalar.Value.AsInteger
|
||||
else
|
||||
lookback := lookbackValue.AsScalar.Value.AsInt64;
|
||||
lookback := lookbackValue.AsScalar.Value.AsInt64;
|
||||
end;
|
||||
|
||||
case seriesVar.Kind of
|
||||
@@ -365,21 +360,14 @@ function TEvaluatorVisitor.VisitIndexer(const Node: IIndexerNode): TDataValue;
|
||||
var
|
||||
baseValue, indexValue: TDataValue;
|
||||
index: Int64;
|
||||
indexScalar: TScalar;
|
||||
begin
|
||||
baseValue := Node.Base.Accept(Self);
|
||||
indexValue := Node.Index.Accept(Self);
|
||||
|
||||
if (indexValue.Kind <> vkScalar) then
|
||||
raise EArgumentException.Create('Indexer `[]` requires a scalar integer argument.');
|
||||
if (indexValue.Kind <> vkScalar) or (indexValue.AsScalar.Kind <> TScalar.TKind.Ordinal) then
|
||||
raise EArgumentException.Create('Indexer `[]` requires an integer argument.');
|
||||
|
||||
indexScalar := indexValue.AsScalar;
|
||||
case indexScalar.Kind of
|
||||
skInteger: index := indexScalar.Value.AsInteger;
|
||||
skInt64: index := indexScalar.Value.AsInt64;
|
||||
else
|
||||
raise EArgumentException.Create('Indexer `[]` requires an integer type argument.');
|
||||
end;
|
||||
index := indexValue.AsScalar.Value.AsInt64;
|
||||
|
||||
case baseValue.Kind of
|
||||
vkSeries:
|
||||
|
||||
Reference in New Issue
Block a user