mirror of
https://code.briarproject.org/briar/briar.git
synced 2026-02-19 14:19:53 +01:00
Represent booleans with a single byte.
This commit is contained in:
@@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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 {
|
||||||
|
|||||||
@@ -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());
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user