diff --git a/src/bitflags/bitflags32.ts b/src/bitflags/bitflags32.ts index b3e5214..c66fffc 100644 --- a/src/bitflags/bitflags32.ts +++ b/src/bitflags/bitflags32.ts @@ -5,11 +5,11 @@ export class BitFlags32< I extends Record, O = OutputRecord, > extends SizedType { - #record: I; + #recordEntries: Array<[string, number]>; constructor(record: I) { super(4, 4); - this.#record = record; + this.#recordEntries = Object.entries(record); } readPacked(dt: DataView, options: Options = { byteOffset: 0 }): O { @@ -18,7 +18,7 @@ export class BitFlags32< const returnObject: Record = {}; const byteBag = dt.getUint32(options.byteOffset); - for (const { 0: key, 1: flag } of Object.entries(this.#record)) { + for (const { 0: key, 1: flag } of this.#recordEntries) { returnObject[key] = (byteBag & flag) === flag; } @@ -36,7 +36,7 @@ export class BitFlags32< let flags = 0; - for (const { 0: key, 1: flagValue } of Object.entries(this.#record)) { + for (const { 0: key, 1: flagValue } of this.#recordEntries) { if (value[key as keyof O]) { flags |= flagValue; } diff --git a/src/bitflags/bitflags64.ts b/src/bitflags/bitflags64.ts index 0ff2618..08db206 100644 --- a/src/bitflags/bitflags64.ts +++ b/src/bitflags/bitflags64.ts @@ -5,11 +5,11 @@ export class BitFlags64< I extends Record, O = OutputRecord, > extends SizedType { - #record: I; + #recordEntries: Array<[string, bigint]>; constructor(record: I) { super(8, 8); - this.#record = record; + this.#recordEntries = Object.entries(record); } readPacked(dt: DataView, options: Options = { byteOffset: 0 }): O { @@ -18,7 +18,7 @@ export class BitFlags64< const returnObject: Record = {}; const byteBag = dt.getBigUint64(options.byteOffset); - for (const { 0: key, 1: flag } of Object.entries(this.#record)) { + for (const { 0: key, 1: flag } of this.#recordEntries) { returnObject[key] = (byteBag & flag) === flag; } @@ -36,7 +36,7 @@ export class BitFlags64< let flags = 0n; - for (const { 0: key, 1: flagValue } of Object.entries(this.#record)) { + for (const { 0: key, 1: flagValue } of this.#recordEntries) { if (value[key as keyof O]) { flags |= flagValue; }