aboutsummaryrefslogtreecommitdiffstats
path: root/pbf2db/binarystream.py
diff options
context:
space:
mode:
authorslomo <steve.harrison@gmx.net>2011-01-12 20:37:16 +0100
committerslomo <steve.harrison@gmx.net>2011-01-12 20:37:16 +0100
commit2cb5dd752037ff81329578d1514dac7de0e3ee16 (patch)
tree58c043051b7f9e49c54db57ab65dec097281a0cc /pbf2db/binarystream.py
parent8758b959552cc282b2d9b72055130958a8f9101b (diff)
downloadosm-xapi-2cb5dd752037ff81329578d1514dac7de0e3ee16.tar.gz
osm-xapi-2cb5dd752037ff81329578d1514dac7de0e3ee16.tar.xz
osm-xapi-2cb5dd752037ff81329578d1514dac7de0e3ee16.zip
merged code from old repo
Diffstat (limited to 'pbf2db/binarystream.py')
-rw-r--r--pbf2db/binarystream.py95
1 files changed, 95 insertions, 0 deletions
diff --git a/pbf2db/binarystream.py b/pbf2db/binarystream.py
new file mode 100644
index 0000000..e1e0280
--- /dev/null
+++ b/pbf2db/binarystream.py
@@ -0,0 +1,95 @@
+from struct import *
+
+class BinaryStream:
+ def __init__(self, base_stream):
+ self.base_stream = base_stream
+
+ def readByte(self):
+ return self.base_stream.read(1)
+
+ def readBytes(self, length):
+ return self.base_stream.read(length)
+
+ def readChar(self):
+ return self.unpack('b')
+
+ def readUChar(self):
+ return self.unpack('B')
+
+ def readBool(self):
+ return self.unpack('?')
+
+ def readInt16(self):
+ return self.unpack('h', 2)
+
+ def readUInt16(self):
+ return self.unpack('H', 2)
+
+ def readInt32(self):
+ return self.unpack('i', 4)
+
+ def readUInt32(self):
+ return self.unpack('I', 4)
+
+ def readInt64(self):
+ return self.unpack('q', 8)
+
+ def readUInt64(self):
+ return self.unpack('Q', 8)
+
+ def readFloat(self):
+ return self.unpack('f', 4)
+
+ def readDouble(self):
+ return self.unpack('d', 8)
+
+ def readString(self):
+ length = self.readUInt16()
+ return self.unpack(str(length) + 's', length)
+
+ def writeBytes(self, value):
+ self.base_stream.write(value)
+
+ def writeChar(self, value):
+ self.pack('c', value)
+
+ def writeUChar(self, value):
+ self.pack('C', value)
+
+ def writeBool(self, value):
+ self.pack('?', value)
+
+ def writeInt16(self, value):
+ self.pack('h', value)
+
+ def writeUInt16(self, value):
+ self.pack('H', value)
+
+ def writeInt32(self, value):
+ self.pack('i', value)
+
+ def writeUInt32(self, value):
+ self.pack('I', value)
+
+ def writeInt64(self, value):
+ self.pack('q', value)
+
+ def writeUInt64(self, value):
+ self.pack('Q', value)
+
+ def writeFloat(self, value):
+ self.pack('f', value)
+
+ def writeDouble(self, value):
+ self.pack('d', value)
+
+ def writeString(self, value):
+ length = len(value)
+ self.writeUInt16(length)
+ self.pack(str(length) + 's', value)
+
+ def pack(self, fmt, data):
+ return self.writeBytes(pack(fmt, data))
+
+ def unpack(self, fmt, length = 1):
+ return unpack(fmt, self.readBytes(length))[0]