Added readCompactLength and writeCompactLength
git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@12 3789f03b-4d11-0410-bbf8-ca57d06f2519
diff --git a/rdr/InStream.h b/rdr/InStream.h
index 2048daa..a3eeaad 100644
--- a/rdr/InStream.h
+++ b/rdr/InStream.h
@@ -71,6 +71,23 @@
inline S16 readS16() { return (S16)readU16(); }
inline S32 readS32() { return (S32)readU32(); }
+ // readCompactLength() reads 1..3 bytes representing length of the data
+ // following. This method is used by the Tight decoder.
+
+ inline unsigned int readCompactLength() {
+ U8 b = readU8();
+ int result = (int)b & 0x7F;
+ if (b & 0x80) {
+ b = readU8();
+ result |= ((int)b & 0x7F) << 7;
+ if (b & 0x80) {
+ b = readU8();
+ result |= ((int)b & 0xFF) << 14;
+ }
+ }
+ return result;
+ }
+
// readString() reads a string - a U32 length followed by the data.
// Returns a null-terminated string - the caller should delete[] it
// afterwards.