[llvm-commits] CVS: llvm/include/llvm/Bitcode/BitstreamReader.h

Chris Lattner sabre at nondot.org
Mon Apr 30 21:59:24 PDT 2007



Changes in directory llvm/include/llvm/Bitcode:

BitstreamReader.h updated: 1.9 -> 1.10
---
Log message:

add JumpToBit, an explicit init method, and a default ctor.


---
Diffs of the changes:  (+28 -2)

 BitstreamReader.h |   30 ++++++++++++++++++++++++++++--
 1 files changed, 28 insertions(+), 2 deletions(-)


Index: llvm/include/llvm/Bitcode/BitstreamReader.h
diff -u llvm/include/llvm/Bitcode/BitstreamReader.h:1.9 llvm/include/llvm/Bitcode/BitstreamReader.h:1.10
--- llvm/include/llvm/Bitcode/BitstreamReader.h:1.9	Sun Apr 29 16:49:05 2007
+++ llvm/include/llvm/Bitcode/BitstreamReader.h	Mon Apr 30 23:59:06 2007
@@ -51,8 +51,20 @@
   /// FirstChar - This remembers the first byte of the stream.
   const unsigned char *FirstChar;
 public:
-  BitstreamReader(const unsigned char *Start, const unsigned char *End)
-    : NextChar(Start), LastChar(End), FirstChar(Start) {
+  BitstreamReader() {
+    NextChar = FirstChar = LastChar = 0;
+    CurWord = 0;
+    BitsInCurWord = 0;
+    CurCodeSize = 0;
+  }
+
+  BitstreamReader(const unsigned char *Start, const unsigned char *End) {
+    init(Start, End);
+  }
+  
+  void init(const unsigned char *Start, const unsigned char *End) {
+    NextChar = FirstChar = Start;
+    LastChar = End;
     assert(((End-Start) & 3) == 0 &&"Bitcode stream not a multiple of 4 bytes");
     CurWord = 0;
     BitsInCurWord = 0;
@@ -79,6 +91,20 @@
     return (NextChar-FirstChar)*8 + (32-BitsInCurWord);
   }
   
+  /// JumpToBit - Reset the stream to the specified bit number.
+  void JumpToBit(uint64_t BitNo) {
+    unsigned WordNo = BitNo/32;
+    unsigned WordBitNo = BitNo & 31;
+    assert(WordNo < (unsigned)(LastChar-FirstChar) && "Invalid location");
+    
+    // Move the cursor to the right word.
+    NextChar = FirstChar+WordNo;
+    BitsInCurWord = 0;
+    
+    // Skip over any bits that are already consumed.
+    if (WordBitNo) Read(WordBitNo);
+  }
+  
   /// GetAbbrevIDWidth - Return the number of bits used to encode an abbrev #.
   unsigned GetAbbrevIDWidth() const { return CurCodeSize; }
   






More information about the llvm-commits mailing list