/** * @exports * @class */ export class Reference { /** * @private * @description The array holding the references * @type {Array} */ private references: object[]; /** * @constructor */ constructor() { /** * @description Initialize the reference holder * @type {Array} */ this.references = [] } /** * @public * @description Returns a referenced value by index * @param {number} idx * @returns {object} */ public get(idx: number): object { return this.references[idx]; } /** * @public * @description Checks whether the given value is referenceable and returns it's index or adds it * @param {object} value * @returns {number|boolean} */ public check(value: object): number | boolean { const idx: number = this.references.indexOf(value); if (idx > -1) { return idx; } else { this.add(value); return false; } } /** * @public * @description Adds a new referenceable value * @param {object} value * @returns {void} */ public add(value: object): void { this.references[this.references.length] = value; } }