TurboPFor: Variable byte encode/decode
This commit is contained in:
3
vint.c
3
vint.c
@ -200,8 +200,9 @@ unsigned TEMPLATE2(vbzgeteq, USIZE)(unsigned char **__restrict in, unsigned n, u
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
unsigned char *TEMPLATE2(VBDENC, USIZE)(uint_t *__restrict in, unsigned n, unsigned char *__restrict out, uint_t start) {
|
unsigned char *TEMPLATE2(VBDENC, USIZE)(uint_t *__restrict in, unsigned n, unsigned char *__restrict out, uint_t start) {
|
||||||
unsigned char *op = out; if(!n) return out;
|
unsigned char *op = out;
|
||||||
uint_t *ip, b=0,v;
|
uint_t *ip, b=0,v;
|
||||||
|
if(!n) return out;
|
||||||
#define VBDE { v = (*ip)-start-VDELTA; start = *ip++; TEMPLATE2(_vbput, USIZE)(op, v, ;); b |= (v /*^ x*/); }
|
#define VBDE { v = (*ip)-start-VDELTA; start = *ip++; TEMPLATE2(_vbput, USIZE)(op, v, ;); b |= (v /*^ x*/); }
|
||||||
for(ip = in; ip != in + (n&~(UN-1)); ) { VBDE;VBDE;VBDE;VBDE;
|
for(ip = in; ip != in + (n&~(UN-1)); ) { VBDE;VBDE;VBDE;VBDE;
|
||||||
#if UN > 4
|
#if UN > 4
|
||||||
|
Reference in New Issue
Block a user