Forked from HYCAR-Hydro / airGR
Source project has a limited visibility.
base.ts 2.39 KiB
import { Message, MessageCode } from "./util/message";
/**
 * Résultat de calcul comprenant la valeur du résultat et des calculs annexes (flag, calculs intermédiaires...)
 */
export class Result {
    /** Valeur calculée */
    private _vCalc: number;
    /** Calculs intermédiaires ou supplémentaires, flags de calcul */
    public extraVar: { [key: string]: any };
    private _message: Message;
    constructor(v: number, m: Message = undefined, e: { [key: string]: any } = {}) {
        this._vCalc = v;
        this._message = m;
        this.extraVar = e;
    get vCalc() { return this._vCalc; }
    set vCalc(v: number) {
        this._vCalc = v;
    get code() {
        if (this._message == undefined)
            return MessageCode.ERROR_OK;
        return this._message.code;
    get Message() { return this._message; }
/**
 * Série de valeurs à calculer définie par le nom de la variable à sérier et le vecteur de valeur
export class Serie {
    public name: string;
    public values: number[];
    constructor(name: string, values: number[]) {
        this.name = name;
        this.values = values;
/**
 * Gestion des messages de debogage dans la console
 * @note Etendre cette classe pour toutes les classes à debugguer
 * Dans le constructeur, utiliser super(true) pour debugger la classe, super(false) sinon.
export abstract class Debug {
    /**
     * @param _DBG Flag de débuggage
    constructor(private _DBG: boolean) { }
    /**
     * Affiche un message dans la console si le flag this.DBG est à true
     * @param s Message à afficher dans la console
    protected debug(s: any) {
        if (this._DBG) console.log(s);
    get DBG() { return this._DBG; }
7172737475767778798081828384858687888990919293949596979899100
/** * Méthode simulant l'opérateur booléen xor * @see http://www.howtocreate.co.uk/xor.html */ export function XOR(a: boolean, b: boolean): boolean { return (a || b) && !(a && b); } /** * Méthode simulant l'opérateur booléen identité (vrai si a=b) */ export function BoolIdentity(a: boolean, b: boolean): boolean { return (a && b) || (!a && !b); } /** * arrondi d'un nombre avec une précision donnée * @param val nombre à arrondir * @param prec nombre de chiffres */ export function round(val: number, prec: number) { let m = Math.pow(10, prec || 0); return Math.round(val * m) / m; } // export class UndefinedError extends Error { // }