Represent booleans with a single byte.

This commit is contained in:
akwizgran
2015-05-02 21:12:33 +01:00
parent 41c4c4d808
commit d519c543a6
5 changed files with 17 additions and 20 deletions

View File

@@ -1,6 +1,7 @@
package org.briarproject.data; package org.briarproject.data;
import static org.briarproject.data.Types.END; 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.FLOAT_64;
import static org.briarproject.data.Types.INT_16; import static org.briarproject.data.Types.INT_16;
import static org.briarproject.data.Types.INT_32; 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_16;
import static org.briarproject.data.Types.STRING_32; import static org.briarproject.data.Types.STRING_32;
import static org.briarproject.data.Types.STRING_8; import static org.briarproject.data.Types.STRING_8;
import static org.briarproject.data.Types.TRUE;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
@@ -133,24 +135,18 @@ class ReaderImpl implements Reader {
public boolean hasBoolean() throws IOException { public boolean hasBoolean() throws IOException {
if(!hasLookahead) readLookahead(); if(!hasLookahead) readLookahead();
if(eof) return false; if(eof) return false;
return next == Types.BOOLEAN; return next == FALSE || next == TRUE;
} }
public boolean readBoolean() throws IOException { public boolean readBoolean() throws IOException {
if(!hasBoolean()) throw new FormatException(); if(!hasBoolean()) throw new FormatException();
boolean bool = next == TRUE;
consumeLookahead(); consumeLookahead();
return readBoolean(true); return bool;
}
private boolean readBoolean(boolean consume) throws IOException {
readIntoBuffer(1, consume);
if(buf[0] != 0 && buf[0] != 1) throw new FormatException();
return buf[0] == 1;
} }
public void skipBoolean() throws IOException { public void skipBoolean() throws IOException {
if(!hasBoolean()) throw new FormatException(); if(!hasBoolean()) throw new FormatException();
skip(1);
hasLookahead = false; hasLookahead = false;
} }

View File

@@ -3,7 +3,8 @@ package org.briarproject.data;
interface Types { interface Types {
byte NULL = 0x00; byte NULL = 0x00;
byte BOOLEAN = 0x11; byte FALSE = 0x10;
byte TRUE = 0x11;
byte INT_8 = 0x21; byte INT_8 = 0x21;
byte INT_16 = 0x22; byte INT_16 = 0x22;
byte INT_32 = 0x24; byte INT_32 = 0x24;

View File

@@ -1,7 +1,7 @@
package org.briarproject.data; package org.briarproject.data;
import static org.briarproject.data.Types.BOOLEAN;
import static org.briarproject.data.Types.END; 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.FLOAT_64;
import static org.briarproject.data.Types.INT_16; import static org.briarproject.data.Types.INT_16;
import static org.briarproject.data.Types.INT_32; 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_16;
import static org.briarproject.data.Types.STRING_32; import static org.briarproject.data.Types.STRING_32;
import static org.briarproject.data.Types.STRING_8; import static org.briarproject.data.Types.STRING_8;
import static org.briarproject.data.Types.TRUE;
import java.io.IOException; import java.io.IOException;
import java.io.OutputStream; import java.io.OutputStream;
@@ -60,9 +61,8 @@ class WriterImpl implements Writer {
} }
public void writeBoolean(boolean b) throws IOException { public void writeBoolean(boolean b) throws IOException {
write(BOOLEAN); if(b) write(TRUE);
if(b) write((byte) 1); else write(FALSE);
else write((byte) 0);
} }
public void writeInteger(long i) throws IOException { public void writeInteger(long i) throws IOException {
@@ -139,9 +139,9 @@ class WriterImpl implements Writer {
} }
public void writeList(Collection<?> c) throws IOException { public void writeList(Collection<?> c) throws IOException {
write(Types.LIST); write(LIST);
for(Object o : c) writeObject(o); for(Object o : c) writeObject(o);
write(Types.END); write(END);
} }
private void writeObject(Object o) throws IOException { private void writeObject(Object o) throws IOException {

View File

@@ -37,7 +37,7 @@ public class ReaderImplTest extends BriarTestCase {
@Test @Test
public void testReadBoolean() throws Exception { public void testReadBoolean() throws Exception {
setContents("11" + "00" + "11" + "01"); setContents("10" + "11");
assertFalse(r.readBoolean()); assertFalse(r.readBoolean());
assertTrue(r.readBoolean()); assertTrue(r.readBoolean());
assertTrue(r.eof()); assertTrue(r.eof());
@@ -45,7 +45,7 @@ public class ReaderImplTest extends BriarTestCase {
@Test @Test
public void testSkipBoolean() throws Exception { public void testSkipBoolean() throws Exception {
setContents("11" + "00" + "11" + "01"); setContents("10" + "11");
r.skipBoolean(); r.skipBoolean();
r.skipBoolean(); r.skipBoolean();
assertTrue(r.eof()); assertTrue(r.eof());

View File

@@ -36,8 +36,8 @@ public class WriterImplTest extends BriarTestCase {
public void testWriteBoolean() throws IOException { public void testWriteBoolean() throws IOException {
w.writeBoolean(true); w.writeBoolean(true);
w.writeBoolean(false); w.writeBoolean(false);
// BOOLEAN tag, 1, BOOLEAN tag, 0 // TRUE tag, FALSE tag
checkContents("11" + "01" + "11" + "00"); checkContents("11" + "10");
} }
@Test @Test