UNPKG

jalhyd

Version:

JaLHyd, a Javascript Library for Hydraulics

113 lines 4.24 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ParamDomain = exports.ParamDomainValue = void 0; const internal_modules_1 = require("../internal_modules"); const internal_modules_2 = require("../internal_modules"); /** * domaine de définition du paramètre */ var ParamDomainValue; (function (ParamDomainValue) { /** >0, =0, <0 (-inf -> +inf) */ ParamDomainValue[ParamDomainValue["ANY"] = 0] = "ANY"; /** >=0 */ ParamDomainValue[ParamDomainValue["POS_NULL"] = 1] = "POS_NULL"; /** > 0 */ ParamDomainValue[ParamDomainValue["POS"] = 2] = "POS"; /** <>0 */ ParamDomainValue[ParamDomainValue["NOT_NULL"] = 3] = "NOT_NULL"; /** intervalle */ ParamDomainValue[ParamDomainValue["INTERVAL"] = 4] = "INTERVAL"; /** nombre entier relatif */ ParamDomainValue[ParamDomainValue["INTEGER"] = 5] = "INTEGER"; })(ParamDomainValue = exports.ParamDomainValue || (exports.ParamDomainValue = {})); class ParamDomain { constructor(d, min, max) { this.checkValue(d, min, max); this._domain = d; switch (this._domain) { case ParamDomainValue.INTERVAL: this._minValue = min; this._maxValue = max; break; default: const b = ParamDomain.getDefaultBounds(this._domain); this._minValue = b.min; this._maxValue = b.max; break; } } static getDefaultBounds(d) { switch (d) { case ParamDomainValue.INTERVAL: const e = new internal_modules_2.Message(internal_modules_2.MessageCode.ERROR_PARAMDOMAIN_INVALID); throw e; case ParamDomainValue.ANY: case ParamDomainValue.NOT_NULL: case ParamDomainValue.INTEGER: return { min: -Infinity, max: Infinity }; case ParamDomainValue.POS: return { min: 1e-9, max: Infinity }; case ParamDomainValue.POS_NULL: return { min: 0, max: Infinity }; // default: // throw "valeur de ParamDomainValue" + ParamDomainValue[d] + " non prise en charge"; } } get domain() { return this._domain; } get minValue() { return this._minValue; } get maxValue() { return this._maxValue; } get interval() { switch (this._domain) { case ParamDomainValue.INTERVAL: return new internal_modules_1.Interval(this._minValue, this._maxValue); default: const b = ParamDomain.getDefaultBounds(this._domain); return new internal_modules_1.Interval(b.min, b.max); } } clone() { switch (this._domain) { case ParamDomainValue.INTERVAL: return new ParamDomain(this._domain, this._minValue, this._maxValue); default: return new ParamDomain(this._domain); } } /** * Return a value bounded by the definition domain * @param v the value to be bounded */ getBoundedValue(v) { return Math.min(Math.max(v, this.minValue), this.maxValue); } checkValue(val, min, max) { switch (val) { case ParamDomainValue.INTERVAL: if (min === undefined || max === undefined || min > max) { const e = new internal_modules_2.Message(internal_modules_2.MessageCode.ERROR_PARAMDOMAIN_INTERVAL_BOUNDS); e.extraVar.minValue = min; e.extraVar.maxValue = max; throw e; } break; default: // en dehors du cas INTERVAL, on ne doit pas fournir de valeur if (min !== undefined || max !== undefined) { const e = new internal_modules_2.Message(internal_modules_2.MessageCode.ERROR_PARAMDOMAIN_INTERVAL_BOUNDS); e.extraVar.minValue = min; e.extraVar.maxValue = max; throw e; } break; } } } exports.ParamDomain = ParamDomain; //# sourceMappingURL=param-domain.js.map