diff --git a/src/simulator/src/eventQueue.js b/src/simulator/src/eventQueue.ts similarity index 87% rename from src/simulator/src/eventQueue.js rename to src/simulator/src/eventQueue.ts index a99cbfa9..349f137c 100644 --- a/src/simulator/src/eventQueue.js +++ b/src/simulator/src/eventQueue.ts @@ -2,19 +2,29 @@ * Event Queue is simply a priority Queue, basic implementation O(n^2). * @category eventQueue */ + +interface QueueObject { + queueProperties: { + inQueue: boolean + time: number + index: number + } + propagationDelay: number +} + export class EventQueue { - constructor(size) { + size: number + queue: Array + frontIndex: number + time: number + constructor(size: number) { this.size = size this.queue = new Array(size) this.frontIndex = 0 this.time = 0 } - /** - * @param {CircuitElement} obj - the elemnt to be added - * @param {number} delay - the delay in adding an object to queue - */ - add(obj, delay) { + add(obj: QueueObject, delay: number) { if (obj.queueProperties.inQueue) { obj.queueProperties.time = this.time + (delay || obj.propagationDelay) @@ -59,7 +69,7 @@ export class EventQueue { * To add without any delay. * @param {CircuitElement} obj - the object to be added */ - addImmediate(obj) { + addImmediate(obj: QueueObject) { this.queue[this.frontIndex] = obj obj.queueProperties.time = this.time obj.queueProperties.index = this.frontIndex @@ -69,10 +79,8 @@ export class EventQueue { /** * Function to swap two objects in queue. - * @param {number} v1 - * @param {number} v2 */ - swap(v1, v2) { + swap(v1: number, v2: number) { const obj1 = this.queue[v1] obj1.queueProperties.index = v2