Merge branch 'master' of github.com:poolifier/poolifier
[poolifier.git] / src / circular-buffer.ts
index 55f5f9bfc22e48f6f6e42da61c252ec124ac0bca..803af1294f83eb0f094cd6d2ab40e52353408ed7 100644 (file)
@@ -5,14 +5,13 @@ export const defaultBufferSize = 2048
 
 /**
  * Circular buffer designed for positive numbers.
- *
  * @internal
  */
 export class CircularBuffer {
+  private readonly items: Float32Array
+  private readonly maxArrayIdx: number
   private readIdx: number
   private writeIdx: number
-  private items: Float32Array
-  private readonly maxArrayIdx: number
   public size: number
 
   /**
@@ -28,9 +27,25 @@ export class CircularBuffer {
     this.items = new Float32Array(size).fill(-1)
   }
 
+  /**
+   * Checks the buffer size.
+   * @param size - Buffer size.
+   */
+  private checkSize (size: number): void {
+    if (!Number.isSafeInteger(size)) {
+      throw new TypeError(
+        `Invalid circular buffer size: '${size.toString()}' is not an integer`
+      )
+    }
+    if (size < 0) {
+      throw new RangeError(
+        `Invalid circular buffer size: ${size.toString()} < 0`
+      )
+    }
+  }
+
   /**
    * Checks whether the buffer is empty.
-   *
    * @returns Whether the buffer is empty.
    */
   public empty (): boolean {
@@ -39,29 +54,14 @@ export class CircularBuffer {
 
   /**
    * Checks whether the buffer is full.
-   *
    * @returns Whether the buffer is full.
    */
   public full (): boolean {
     return this.size === this.items.length
   }
 
-  /**
-   * Puts number into buffer.
-   *
-   * @param number - Number to put into buffer.
-   */
-  public put (number: number): void {
-    this.items[this.writeIdx] = number
-    this.writeIdx = this.writeIdx === this.maxArrayIdx ? 0 : this.writeIdx + 1
-    if (this.size < this.items.length) {
-      ++this.size
-    }
-  }
-
   /**
    * Gets number from buffer.
-   *
    * @returns Number from buffer.
    */
   public get (): number | undefined {
@@ -75,23 +75,23 @@ export class CircularBuffer {
     return number
   }
 
+  /**
+   * Puts number into buffer.
+   * @param number - Number to put into buffer.
+   */
+  public put (number: number): void {
+    this.items[this.writeIdx] = number
+    this.writeIdx = this.writeIdx === this.maxArrayIdx ? 0 : this.writeIdx + 1
+    if (this.size < this.items.length) {
+      ++this.size
+    }
+  }
+
   /**
    * Returns buffer as numbers' array.
-   *
    * @returns Numbers' array.
    */
   public toArray (): number[] {
     return Array.from(this.items.filter(item => item !== -1))
   }
-
-  private checkSize (size: number): void {
-    if (!Number.isSafeInteger(size)) {
-      throw new TypeError(
-        `Invalid circular buffer size: ${size} is not an integer`
-      )
-    }
-    if (size < 0) {
-      throw new RangeError(`Invalid circular buffer size: ${size} < 0`)
-    }
-  }
 }