From d519c543a6abdcbaddaa920bcd1d71583d399121 Mon Sep 17 00:00:00 2001 From: akwizgran <akwizgran@users.sourceforge.net> Date: Sat, 2 May 2015 21:12:33 +0100 Subject: [PATCH] Represent booleans with a single byte. --- .../src/org/briarproject/data/ReaderImpl.java | 14 +++++--------- briar-core/src/org/briarproject/data/Types.java | 3 ++- .../src/org/briarproject/data/WriterImpl.java | 12 ++++++------ .../src/org/briarproject/data/ReaderImplTest.java | 4 ++-- .../src/org/briarproject/data/WriterImplTest.java | 4 ++-- 5 files changed, 17 insertions(+), 20 deletions(-) diff --git a/briar-core/src/org/briarproject/data/ReaderImpl.java b/briar-core/src/org/briarproject/data/ReaderImpl.java index aadeb448c4..420ff25ed9 100644 --- a/briar-core/src/org/briarproject/data/ReaderImpl.java +++ b/briar-core/src/org/briarproject/data/ReaderImpl.java @@ -1,6 +1,7 @@ package org.briarproject.data; import static org.briarproject.data.Types.END; +import static org.briarproject.data.Types.FALSE; import static org.briarproject.data.Types.FLOAT_64; import static org.briarproject.data.Types.INT_16; import static org.briarproject.data.Types.INT_32; @@ -15,6 +16,7 @@ import static org.briarproject.data.Types.RAW_8; import static org.briarproject.data.Types.STRING_16; import static org.briarproject.data.Types.STRING_32; import static org.briarproject.data.Types.STRING_8; +import static org.briarproject.data.Types.TRUE; import java.io.IOException; import java.io.InputStream; @@ -133,24 +135,18 @@ class ReaderImpl implements Reader { public boolean hasBoolean() throws IOException { if(!hasLookahead) readLookahead(); if(eof) return false; - return next == Types.BOOLEAN; + return next == FALSE || next == TRUE; } public boolean readBoolean() throws IOException { if(!hasBoolean()) throw new FormatException(); + boolean bool = next == TRUE; consumeLookahead(); - return readBoolean(true); - } - - private boolean readBoolean(boolean consume) throws IOException { - readIntoBuffer(1, consume); - if(buf[0] != 0 && buf[0] != 1) throw new FormatException(); - return buf[0] == 1; + return bool; } public void skipBoolean() throws IOException { if(!hasBoolean()) throw new FormatException(); - skip(1); hasLookahead = false; } diff --git a/briar-core/src/org/briarproject/data/Types.java b/briar-core/src/org/briarproject/data/Types.java index ae64f49673..5f5dbc5c9f 100644 --- a/briar-core/src/org/briarproject/data/Types.java +++ b/briar-core/src/org/briarproject/data/Types.java @@ -3,7 +3,8 @@ package org.briarproject.data; interface Types { byte NULL = 0x00; - byte BOOLEAN = 0x11; + byte FALSE = 0x10; + byte TRUE = 0x11; byte INT_8 = 0x21; byte INT_16 = 0x22; byte INT_32 = 0x24; diff --git a/briar-core/src/org/briarproject/data/WriterImpl.java b/briar-core/src/org/briarproject/data/WriterImpl.java index cd0d833f6d..e178bff9dd 100644 --- a/briar-core/src/org/briarproject/data/WriterImpl.java +++ b/briar-core/src/org/briarproject/data/WriterImpl.java @@ -1,7 +1,7 @@ package org.briarproject.data; -import static org.briarproject.data.Types.BOOLEAN; import static org.briarproject.data.Types.END; +import static org.briarproject.data.Types.FALSE; import static org.briarproject.data.Types.FLOAT_64; import static org.briarproject.data.Types.INT_16; import static org.briarproject.data.Types.INT_32; @@ -16,6 +16,7 @@ import static org.briarproject.data.Types.RAW_8; import static org.briarproject.data.Types.STRING_16; import static org.briarproject.data.Types.STRING_32; import static org.briarproject.data.Types.STRING_8; +import static org.briarproject.data.Types.TRUE; import java.io.IOException; import java.io.OutputStream; @@ -60,9 +61,8 @@ class WriterImpl implements Writer { } public void writeBoolean(boolean b) throws IOException { - write(BOOLEAN); - if(b) write((byte) 1); - else write((byte) 0); + if(b) write(TRUE); + else write(FALSE); } public void writeInteger(long i) throws IOException { @@ -139,9 +139,9 @@ class WriterImpl implements Writer { } public void writeList(Collection<?> c) throws IOException { - write(Types.LIST); + write(LIST); for(Object o : c) writeObject(o); - write(Types.END); + write(END); } private void writeObject(Object o) throws IOException { diff --git a/briar-tests/src/org/briarproject/data/ReaderImplTest.java b/briar-tests/src/org/briarproject/data/ReaderImplTest.java index 4fcd88949f..1b14d3c17e 100644 --- a/briar-tests/src/org/briarproject/data/ReaderImplTest.java +++ b/briar-tests/src/org/briarproject/data/ReaderImplTest.java @@ -37,7 +37,7 @@ public class ReaderImplTest extends BriarTestCase { @Test public void testReadBoolean() throws Exception { - setContents("11" + "00" + "11" + "01"); + setContents("10" + "11"); assertFalse(r.readBoolean()); assertTrue(r.readBoolean()); assertTrue(r.eof()); @@ -45,7 +45,7 @@ public class ReaderImplTest extends BriarTestCase { @Test public void testSkipBoolean() throws Exception { - setContents("11" + "00" + "11" + "01"); + setContents("10" + "11"); r.skipBoolean(); r.skipBoolean(); assertTrue(r.eof()); diff --git a/briar-tests/src/org/briarproject/data/WriterImplTest.java b/briar-tests/src/org/briarproject/data/WriterImplTest.java index 3b3be5f491..05cf0875a4 100644 --- a/briar-tests/src/org/briarproject/data/WriterImplTest.java +++ b/briar-tests/src/org/briarproject/data/WriterImplTest.java @@ -36,8 +36,8 @@ public class WriterImplTest extends BriarTestCase { public void testWriteBoolean() throws IOException { w.writeBoolean(true); w.writeBoolean(false); - // BOOLEAN tag, 1, BOOLEAN tag, 0 - checkContents("11" + "01" + "11" + "00"); + // TRUE tag, FALSE tag + checkContents("11" + "10"); } @Test -- GitLab