diff --git a/spec/iterator/paramvalues_iterator.spec.ts b/spec/iterator/paramvalues_iterator.spec.ts index 9bfa898de4e237b2d914a87b7effa3d8ab2d56c3..672cb1342c00a1fa19ef2efc94d56cced8bbdf20 100644 --- a/spec/iterator/paramvalues_iterator.spec.ts +++ b/spec/iterator/paramvalues_iterator.spec.ts @@ -1,8 +1,8 @@ import { ParamValues } from "../../src/param/param-values" -import { ParamValueIterator } from "../../src/param/param-value-iterator"; +import { NumberIterator } from "../../src/param/param-value-iterator"; import { ParamValueMode } from "../../src/param/param-value-mode"; -function checkNumberList(it: ParamValueIterator, exp: number[]) { +function checkNumberList(it: NumberIterator, exp: number[]) { let n = 0; for (const v of it) { expect(v).toEqual(exp[n]); diff --git a/src/nub.ts b/src/nub.ts index 76c66022b9b7a5070b85cd230726847af6f56898..d5f0bb782a8c4e072a204bec90030a44daa4f6c8 100644 --- a/src/nub.ts +++ b/src/nub.ts @@ -207,7 +207,7 @@ export abstract class Nub extends ComputeNode implements IReferencedNub { return r.getExtraResult(tmp[1]); } - public getReferencedValuesIterator(desc: string): IterableIterator<number> { + public getReferencedValuesIterator(desc: string): NumberIterator { const tmp = desc.split("."); if (tmp.length > 1 && tmp[1] === "") diff --git a/src/param/param-base.ts b/src/param/param-base.ts index 7c40e9dd1db3e030160a45970603410fc28ab75f..394d44461413b76201835dffb750187c499c3fdf 100644 --- a/src/param/param-base.ts +++ b/src/param/param-base.ts @@ -7,7 +7,7 @@ import { ParamValues } from "./param-values"; import { ParamValueMode } from "./param-value-mode"; import { IReferencedNub, INubReference } from "../value_ref/object_ref"; import { Result } from "../util/result"; -import { NamedIterableValues } from "./param-value-iterator"; +import { NamedIterableValues, NumberIterator } from "./param-value-iterator"; import { IObservable, Observable, Observer } from "../util/observer"; /** @@ -338,7 +338,7 @@ export class BaseParam extends JalhydObject implements INubReference, NamedItera return this._paramValues.referencedExtraResult; } - public get referencedValuesIterator(): IterableIterator<number> { + public get referencedValuesIterator(): NumberIterator { return this._paramValues.referencedValuesIterator; } @@ -348,7 +348,7 @@ export class BaseParam extends JalhydObject implements INubReference, NamedItera // interface NamedIterableValues - public get valuesIterator(): IterableIterator<number> { + public get valuesIterator(): NumberIterator { if (this.isReferenceDefined) return this.referencedValuesIterator; return this._paramValues.valuesIterator; diff --git a/src/param/param-value-iterator.ts b/src/param/param-value-iterator.ts index b94e3095cfe13f5a13d34580c5a86afa739677ad..c5f05fcbf12acf15c3e56c4129a5823c4fe7578d 100644 --- a/src/param/param-value-iterator.ts +++ b/src/param/param-value-iterator.ts @@ -2,6 +2,21 @@ import { ParamValues } from "./param-values"; import { ParamValueMode } from "./param-value-mode"; import { INamedObject } from "../jalhyd_object"; +/** + * itérateur sur des nombres + */ +export interface NumberIterator extends IterableIterator<number> { + /** + * @return true si il reste des valeurs à parcourir + */ + readonly hasNext: boolean; + + /** + * prochaine valeur + */ + next(): IteratorResult<number>; +} + /** * interface implémentée par les objets pouvant renvoyer un itérateur sur une série de valeurs numériques */ @@ -9,7 +24,7 @@ export interface IterableValues { /** * itérateur sur les valeurs */ - readonly valuesIterator: IterableIterator<number>; + readonly valuesIterator: NumberIterator; /** * true si la série de valeurs a plus d'une valeur @@ -26,7 +41,7 @@ export interface NamedIterableValues extends INamedObject, IterableValues { /** * itérateur sur les (ou la) valeurs prises par un ParamValues */ -export class ParamValueIterator implements IterableIterator<number> { +export class ParamValueIterator implements NumberIterator { /** * paramètre à itérer */ diff --git a/src/param/param-values.ts b/src/param/param-values.ts index 345206b665a8d8b00b4aa73e0ebccde9cddffe20..6f424e885d5da276a395e113fd865a1d94d4b105 100644 --- a/src/param/param-values.ts +++ b/src/param/param-values.ts @@ -44,7 +44,7 @@ export class ParamValues implements INubReference, IterableValues { /** * itérateur courant */ - private _iterator: ParamValueIterator; + private _iterator: NumberIterator; /** * implémentation par délégation de INubReference @@ -237,7 +237,7 @@ export class ParamValues implements INubReference, IterableValues { * crée un ParamValueIterator * @param reverse true si on veut itérer max->min ou depuis la fin de la liste */ - public getValuesIterator(reverse: boolean = false): ParamValueIterator { + public getValuesIterator(reverse: boolean = false): NumberIterator { return new ParamValueIterator(this, reverse); } @@ -324,7 +324,7 @@ export class ParamValues implements INubReference, IterableValues { // interface IterableValues - public get valuesIterator(): IterableIterator<number> { + public get valuesIterator(): NumberIterator { return this.getValuesIterator(); } diff --git a/src/util/result.ts b/src/util/result.ts index 5fce944905314b95d71e04578a3183a92ab11e5c..6c4ac03d06b95d66e157aa39a5b004242b653ba0 100644 --- a/src/util/result.ts +++ b/src/util/result.ts @@ -2,7 +2,7 @@ import { cLog } from "./log"; import { Message, MessageCode, MessageSeverity } from "./message"; import { ResultElement } from "./resultelement"; import { JalhydObject } from "../jalhyd_object"; -import { NamedIterableValues } from "../param/param-value-iterator"; +import { NamedIterableValues, NumberIterator } from "../param/param-value-iterator"; /** * Résultat global d'un calcul @@ -266,11 +266,11 @@ export class Result extends JalhydObject implements NamedIterableValues { return this._name; } - public get valuesIterator(): IterableIterator<number> { + public get valuesIterator(): NumberIterator { const tmp: number[] = []; for (const re of this._resultElements) tmp.push(re.vCalc); - return tmp[Symbol.iterator](); + return tmp[Symbol.iterator]() as NumberIterator; } public get hasMultipleValues(): boolean { @@ -318,8 +318,8 @@ export class ExtraResults extends JalhydObject implements NamedIterableValues { // interface NamedIterableValues - public get valuesIterator(): IterableIterator<number> { - return this._values[Symbol.iterator](); + public get valuesIterator(): NumberIterator { + return this._values[Symbol.iterator]() as NumberIterator; } public get hasMultipleValues(): boolean { diff --git a/src/value_ref/object_ref.ts b/src/value_ref/object_ref.ts index 2eb60396c8a13eeb78785ba878629ca510bf07aa..0db46b1dc7b5a48d4191f14d38f74c8d44ea2d89 100644 --- a/src/value_ref/object_ref.ts +++ b/src/value_ref/object_ref.ts @@ -29,7 +29,7 @@ export interface IReferencedNub { /** * itérateur sur les valeurs */ - getReferencedValuesIterator(desc: string): IterableIterator<number>; + getReferencedValuesIterator(desc: string): NumberIterator; /** * objet (paramètre/résultat/résultat complémentaire) référencé @@ -81,7 +81,7 @@ export interface INubReference { /** * itérateur sur les valeurs référencées */ - readonly referencedValuesIterator: IterableIterator<number>; + readonly referencedValuesIterator: NumberIterator; /** * objet (paramètre/résultat/résultat complémentaire) référencé @@ -158,7 +158,7 @@ export class NubReference implements INubReference { /** * itérateur sur les valeurs référencées */ - public get referencedValuesIterator(): IterableIterator<number> { + public get referencedValuesIterator(): NumberIterator { return this._referencedNub.getReferencedValuesIterator(this._refDefinition); }