2005-01-31 Zoltan Varga <vargaz@freemail.hu>
[mono.git] / mcs / class / ByteFX.Data / Common / BitStream.cs
1 using System;\r
2 using System.IO;\r
3 \r
4 namespace ByteFX.Data.Common\r
5 {\r
6         /// <summary>\r
7         /// Summary description for BitStream.\r
8         /// </summary>\r
9         public class BitStream : MemoryStream\r
10         {\r
11                 private byte[]  _input;\r
12                 private int             _start;\r
13                 private int             _end;\r
14                 private int             _bitindex;\r
15                 private uint    _bitbuffer;\r
16                 private int             _bits_in_buffer;\r
17 \r
18                 public BitStream(byte[] input, int index, int len)\r
19                 {\r
20                         _bitindex = 0;\r
21                         _bitbuffer = 0;\r
22                         _bits_in_buffer = 0;\r
23                         _input = input;\r
24                         _start = index;\r
25                         _end = _start + len;\r
26                 }\r
27 \r
28                 public int GetBits(int numbits)\r
29                 {\r
30                         return 0;\r
31                 }\r
32 \r
33                 public int PeekBits(int numbits)\r
34                 {\r
35                         int val=0;\r
36 \r
37                         int index=_start;\r
38                         while (numbits > 0)\r
39                         {\r
40                                 val = (val << 8) | _input[index++];\r
41                                 numbits -= 8;\r
42                         }\r
43 \r
44                         while (_bits_in_buffer < numbits)\r
45                         {\r
46                                 if (_start == _end)\r
47                                         throw new Exception("Out of bits");\r
48                                 byte b = _input[_start++];\r
49                         }\r
50                         return 0;\r
51                 }\r
52         }\r
53 }\r