ys2-intro/loader/tools/subsizer-0.7pre1/src/bitfunc.h
2025-11-13 19:07:39 +03:00

52 lines
1.2 KiB
C

/**************************************************************************
*
* FILE bitfunc.h
* Copyright (c) 2009-2011, 2013-2015 Daniel Kahlin <daniel@kahlin.net>
* Written by Daniel Kahlin <daniel@kahlin.net>
*
* DESCRIPTION
* bitstream read/write functions.
*
******/
#ifndef BITFUNC_H
#define BITFUNC_H
#include <stdint.h>
#define BITMODE_SIDEBYTE (1<<0)
#define BITMODE_PRESHIFT (1<<1)
//#define BITMODE_ROR (1<<2)
/* bit writer */
typedef struct {
uint8_t *ptr;
int pos;
int bits;
uint8_t buf;
int bit;
int bpos;
unsigned int flags;
} BitWriteState;
void bitwr_init(BitWriteState *bws, uint8_t *destbuf, unsigned int flags);
void bitwr_write(BitWriteState *bws, uint32_t data, int n);
void bitwr_write8s(BitWriteState *bws, uint8_t data);
int bitwr_flush(BitWriteState *bws);
/* bit reader */
typedef struct {
uint8_t *ptr;
int pos;
int bits;
uint8_t buf;
int bit;
unsigned int flags;
} BitReadState;
void bitrd_init(BitReadState *brs, uint8_t *srcbuf, unsigned int flags);
uint32_t bitrd_read(BitReadState *brs, int n);
uint8_t bitrd_read8s(BitReadState *brs);
#endif /* BITFUNC_H */
/* eof */