jalhyd
Version:
JaLHyd, a Javascript Library for Hydraulics
113 lines • 4.24 kB
JavaScript
;
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