<div dir="ltr">Hi all,<div><br></div><div>This is about <a href="https://reviews.llvm.org/D26100">https://reviews.llvm.org/D26100</a></div><div><br></div><div>That change moves the block info block state from BitstreamReader to BitstreamCursor in order to accommodate multiple block info blocks (the idea is that the cursor would store the block info block state for whichever block info block is active for that cursor).</div><div><br></div><div>Duncan objected to it on the grounds that we should aim for a design that would continue to allow a shared block info block state. I'd agree with him that such a design would be possible while still allowing multiple block info blocks; the design I have in mind would decouple the block info state from not only the cursor but the reader. The interface would look like this:</div><div><br></div><div>class BitstreamBlockInfo {</div><div>  // block info block state, i.e. everything matching *BlockInfo* in the current BitstreamReader interface</div><div>};</div><div><br></div><div>class BitstreamCursor : SimpleBitstreamCursor {</div><div>  // existing BitstreamCursor interface here</div><div><br></div><div>  /// Read a block info block into a BitstreamBlockInfo object, and return it.</div><div>  BitstreamBlockInfo ReadBlockInfo();</div><div><br></div><div>  /// Set the block info to be used by this BitstreamCursor to interpret abbreviated records.</div><div>  void setBlockInfo(BitstreamBlockInfo *Info);</div><div>};</div><div><br></div><div>What I like about this design is that it is more explicit than either the status quo or D26100, but I'd like feedback on it first.</div><div><br></div><div>Thanks,<br>-- <br><div class="gmail_signature"><div dir="ltr">-- <div>Peter</div></div></div>
</div></div>