From 0c53b49c6a101e51f7f583221aada6b1659d7cec Mon Sep 17 00:00:00 2001 From: Sam Rang Date: Mon, 18 Apr 2016 19:11:07 -0500 Subject: [PATCH] use full byte for each bool --- config-serializer/Serializable.ts | 10 ++++++++++ config-serializer/config-items/KeyMap.ts | 15 ++++---------- config-serializer/config-items/Macro.ts | 20 ++++--------------- .../config-items/SwitchLayerAction.ts | 14 ++++--------- 4 files changed, 22 insertions(+), 37 deletions(-) diff --git a/config-serializer/Serializable.ts b/config-serializer/Serializable.ts index f108db94..75305566 100644 --- a/config-serializer/Serializable.ts +++ b/config-serializer/Serializable.ts @@ -1,5 +1,6 @@ abstract class Serializable { + static boolFlag = 0x80; private static depth = 0; private static maxDisplayedJsonLength = 160; private static enableDump = true; @@ -45,6 +46,15 @@ abstract class Serializable { return value; } + /* should have assert uint8? */ + binToBool(bin: number) { + return (bin & Serializable.boolFlag) !== 0; + } + + boolToBin(bool: boolean) { + return bool ? Serializable.boolFlag : 0; + } + abstract _fromJsObject(jsObject: any): Serializable; abstract _fromBinary(buffer: UhkBuffer): Serializable; abstract _toJsObject(): any; diff --git a/config-serializer/config-items/KeyMap.ts b/config-serializer/config-items/KeyMap.ts index d1ed5d53..bf6cff8f 100644 --- a/config-serializer/config-items/KeyMap.ts +++ b/config-serializer/config-items/KeyMap.ts @@ -1,7 +1,5 @@ class KeyMap extends Serializable { - static defaultFlag = 0x80; - // @assertUInt8 id: number; @@ -23,10 +21,8 @@ class KeyMap extends Serializable { } _fromBinary(buffer: UhkBuffer): KeyMap { - let map = buffer.readUInt8(); - /* saves almost a byte but limits number of keymaps... */ - this.isDefault = (map & KeyMap.defaultFlag) !== 0; - this.id = map & ~KeyMap.defaultFlag; // Clear isDefault bit.; + this.id = buffer.readUInt8(); + this.isDefault = this.binToBool(buffer.readUInt8()); this.abbreviation = buffer.readString(); this.name = buffer.readString(); this.layers = new Layers().fromBinary(buffer); @@ -44,7 +40,8 @@ class KeyMap extends Serializable { } _toBinary(buffer: UhkBuffer): void { - buffer.writeUInt8(this.id | this.getDefaultFlag()); + buffer.writeUInt8(this.id); + buffer.writeUInt8(this.boolToBin(this.isDefault)); buffer.writeString(this.abbreviation); buffer.writeString(this.name); this.layers.toBinary(buffer); @@ -53,8 +50,4 @@ class KeyMap extends Serializable { toString(): string { return ``; } - - private getDefaultFlag() { - return this.isDefault ? KeyMap.defaultFlag : 0; - } } diff --git a/config-serializer/config-items/Macro.ts b/config-serializer/config-items/Macro.ts index 11a08a32..e68ef437 100644 --- a/config-serializer/config-items/Macro.ts +++ b/config-serializer/config-items/Macro.ts @@ -1,8 +1,5 @@ class Macro extends Serializable { - static loopedFlag = 0x80; - static privateFlag = 0x08; - // @assertUInt8 id: number; @@ -25,10 +22,8 @@ class Macro extends Serializable { _fromBinary(buffer: UhkBuffer): Macro { this.id = buffer.readUInt8(); - let bools = buffer.readUInt8(); - /* saves almost a byte but limits number of keymaps... */ - this.isLooped = (bools & Macro.loopedFlag) !== 0; - this.isPrivate = (bools & Macro.privateFlag) !== 0; + this.isLooped = this.binToBool(buffer.readUInt8()); + this.isPrivate = this.binToBool(buffer.readUInt8()); this.name = buffer.readString(); this.macroActions = new MacroActions().fromBinary(buffer); return this; @@ -46,7 +41,8 @@ class Macro extends Serializable { _toBinary(buffer: UhkBuffer): void { buffer.writeUInt8(this.id); - buffer.writeUInt8(this.getLoopedFlag() | this.getPrivateFlag()); + buffer.writeUInt8(this.boolToBin(this.isLooped)); + buffer.writeUInt8(this.boolToBin(this.isPrivate)); buffer.writeString(this.name); this.macroActions.toBinary(buffer); } @@ -54,12 +50,4 @@ class Macro extends Serializable { toString(): string { return ``; } - - private getLoopedFlag() { - return this.isLooped ? Macro.loopedFlag : 0; - } - - private getPrivateFlag() { - return this.isPrivate ? Macro.privateFlag : 0; - } } diff --git a/config-serializer/config-items/SwitchLayerAction.ts b/config-serializer/config-items/SwitchLayerAction.ts index 7ef48187..b4ed51f4 100644 --- a/config-serializer/config-items/SwitchLayerAction.ts +++ b/config-serializer/config-items/SwitchLayerAction.ts @@ -6,8 +6,6 @@ enum LayerName { class SwitchLayerAction extends KeyAction { - static toggleFlag = 0x80; - isLayerToggleable: boolean; // @assertEnum(LayerName) @@ -22,9 +20,8 @@ class SwitchLayerAction extends KeyAction { _fromBinary(buffer: UhkBuffer): SwitchLayerAction { this.readAndAssertKeyActionId(buffer); - let layer = buffer.readUInt8(); - this.isLayerToggleable = (layer & SwitchLayerAction.toggleFlag) !== 0; - this.layer = layer & ~SwitchLayerAction.toggleFlag; // Clear toggle bit. + this.layer = buffer.readUInt8(); + this.isLayerToggleable = this.binToBool(buffer.readUInt8()); return this; } @@ -38,14 +35,11 @@ class SwitchLayerAction extends KeyAction { _toBinary(buffer: UhkBuffer) { buffer.writeUInt8(KeyActionId.SwitchLayerAction); - buffer.writeUInt8(this.layer | this.getToggleFlag()); + buffer.writeUInt8(this.layer); + buffer.writeUInt8(this.boolToBin(this.isLayerToggleable)); } toString(): string { return ``; } - - private getToggleFlag() { - return this.isLayerToggleable ? SwitchLayerAction.toggleFlag : 0; - } }