ac5f7d4e7ec632f0108d36081ab05d0ae8b60c90
[swftools.git] / src / bitio.h
1 /* bitio.h 
2    Header file for bitio.c.
3
4    Part of the swftools package.
5    
6    Copyright (c) 2001 Matthias Kramm <kramm@quiss.org> 
7
8    This file is distributed under the GPL, see file COPYING for details */
9
10 #ifndef __bitio_h__
11 #define __bitio_h__
12
13 #include "types.h"
14
15 struct reader_t {
16     u8* data;
17     int datalength;
18     int datapos;
19     u8 bitpos,mybyte;
20     u8 bitmem;
21 };
22
23 struct writer_t {
24     u8* data;
25     int maxlength;
26     int pos;
27     int bitpos;
28     u8 mybyte;
29 };
30
31 void reader_resetbits(struct reader_t*);
32 void reader_init(struct reader_t*,uchar*newdata, int newlength);
33 void reader_skip(struct reader_t*,int length);
34 void reader_input1(struct reader_t*, void*target);
35 void reader_input2(struct reader_t*, void*target);
36 void reader_input4(struct reader_t*, void*target);
37 uchar*reader_getinputpos(struct reader_t*);
38 int reader_getinputlength(struct reader_t*);
39 void reader_setinputpos(struct reader_t*,uchar*pos);
40 u32 reader_readbit(struct reader_t*);
41 void reader_readbits(struct reader_t*,u32*val,int num);
42 void reader_readsbits(struct reader_t*,s32*val,int num);
43 u32 reader_getbits(struct reader_t*,int num);
44 s32 reader_getsbits(struct reader_t*,int num);
45 u8 reader_readu8(struct reader_t*);
46 u16 reader_readu16(struct reader_t*);
47 u32 reader_readu32(struct reader_t*);
48
49 void writer_init(struct writer_t*w, u8*data, int maxlength);
50 void writer_write(struct writer_t*w, void*data, int length);
51 void* writer_getpos(struct writer_t*w);
52 void writer_writebit(struct writer_t*w, int bit);
53 void writer_writebits(struct writer_t*w, u32 data, int bits);
54 void writer_writeu8(struct writer_t*w, u8 value);
55 void writer_writeu16(struct writer_t*w, u16 value);
56 void writer_writeu32(struct writer_t*w, u32 value);
57 void writer_resetbits(struct writer_t*w);
58
59 #endif //__bitio_h__