1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
|
/*\
* $Id: bitio.h,v 1.4 1992/11/24 19:37:02 dws Exp dws $
*
* bitio.h - bitstream I/O
*
* Works for (sizeof(unsigned long)-1)*8 bits.
*
* Copyright (C) 1992 by David W. Sanderson.
*
* Permission to use, copy, modify, and distribute this software and its
* documentation for any purpose and without fee is hereby granted,
* provided that the above copyright notice appear in all copies and
* that both that copyright notice and this permission notice appear
* in supporting documentation. This software is provided "as is"
* without express or implied warranty.
*
* $Log: bitio.h,v $
* Revision 1.4 1992/11/24 19:37:02 dws
* Added copyright
*
* Revision 1.3 1992/11/17 03:37:59 dws
* updated comment
*
* Revision 1.2 1992/11/10 23:10:22 dws
* Generalized to handle more than one bitstream at a time.
*
* Revision 1.1 1992/11/10 18:33:51 dws
* Initial revision
*
\*/
#ifndef _BITIO_H_
#define _BITIO_H_
#include "pm.h"
#ifdef __cplusplus
extern "C" {
#endif
#if 0
} /* to fake out automatic code indenters */
#endif
typedef struct bitstream *BITSTREAM;
struct bitstream *
pm_bitinit(FILE * const f, const char * const mode);
/*
* pm_bitfini() - deallocate the given BITSTREAM.
*
* You must call this after you are done with the BITSTREAM.
*
* It may flush some bits left in the buffer.
*
* Returns the number of bytes written, -1 on error.
*/
int
pm_bitfini(BITSTREAM b);
/*
* pm_bitread() - read the next nbits into *val from the given file.
*
* Returns the number of bytes read, -1 on error.
*/
int
pm_bitread(BITSTREAM b,
unsigned long nbits,
unsigned long * val);
/*
* pm_bitwrite() - write the low nbits of val to the given file.
*
* The last pm_bitwrite() must be followed by a call to pm_bitflush().
*
* Returns the number of bytes written, -1 on error.
*/
int
pm_bitwrite(BITSTREAM b,
unsigned long nbits,
unsigned long val);
#ifdef __cplusplus
}
#endif
#endif /* _BITIO_H_ */
|