This repository was archived by the owner on Jan 21, 2021. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcodelength.h
30 lines (27 loc) · 1.47 KB
/
codelength.h
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
/* Project : miniupnp
* Author : Thomas BERNARD
* copyright (c) 2005-2008 Thomas Bernard
* This software is subjet to the conditions detailed in the
* provided LICENCE file. */
#ifndef __CODELENGTH_H__
#define __CODELENGTH_H__
/* Encode length by using 7bit per Byte :
* Most significant bit of each byte specifies that the
* following byte is part of the code */
#define DECODELENGTH(n, p) \
n = 0; \
do \
{ \
n = (n << 7) | (*p & 0x7f); \
} while (*(p++) & 0x80);
#define CODELENGTH(n, p) \
if (n >= 268435456) \
*(p++) = (n >> 28) | 0x80; \
if (n >= 2097152) \
*(p++) = (n >> 21) | 0x80; \
if (n >= 16384) \
*(p++) = (n >> 14) | 0x80; \
if (n >= 128) \
*(p++) = (n >> 7) | 0x80; \
*(p++) = n & 0x7f;
#endif