#ifndef ZFP_BITSTREAM_H
#define ZFP_BITSTREAM_H
#include <stddef.h>
#include "zfp/types.h"
#include "zfp/system.h"
typedef struct bitstream bitstream;
extern_ const size_t stream_word_bits;
#ifndef inline_
#ifdef __cplusplus
extern "C" {
#endif
bitstream* stream_open(void* buffer, size_t bytes);
void stream_close(bitstream* stream);
bitstream* stream_clone(const bitstream* stream);
void* stream_data(const bitstream* stream);
size_t stream_size(const bitstream* stream);
size_t stream_capacity(const bitstream* stream);
size_t stream_stride_block(const bitstream* stream);
ptrdiff_t stream_stride_delta(const bitstream* stream);
uint stream_read_bit(bitstream* stream);
uint stream_write_bit(bitstream* stream, uint bit);
uint64 stream_read_bits(bitstream* stream, uint n);
uint64 stream_write_bits(bitstream* stream, uint64 value, uint n);
size_t stream_rtell(const bitstream* stream);
size_t stream_wtell(const bitstream* stream);
void stream_rewind(bitstream* stream);
void stream_rseek(bitstream* stream, size_t offset);
void stream_wseek(bitstream* stream, size_t offset);
void stream_skip(bitstream* stream, uint n);
void stream_pad(bitstream* stream, uint n);
size_t stream_align(bitstream* stream);
size_t stream_flush(bitstream* stream);
void stream_copy(bitstream* dst, bitstream* src, size_t n);
#ifdef BIT_STREAM_STRIDED
int stream_set_stride(bitstream* stream, size_t block, ptrdiff_t delta);
#endif
#ifdef __cplusplus
}
#endif
#endif
#endif