File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / miniupnpc / codelength.h
Revision 1.1.1.2 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Mon Jul 22 00:36:10 2013 UTC (10 years, 10 months ago) by misho
Branches: miniupnpc, elwix, MAIN
CVS tags: v1_8p0, v1_8, HEAD
1.8

    1: /* $Id: codelength.h,v 1.1.1.2 2013/07/22 00:36:10 misho Exp $ */
    2: /* Project : miniupnp
    3:  * Author : Thomas BERNARD
    4:  * copyright (c) 2005-2011 Thomas Bernard
    5:  * This software is subjet to the conditions detailed in the
    6:  * provided LICENCE file. */
    7: #ifndef CODELENGTH_H_INCLUDED
    8: #define CODELENGTH_H_INCLUDED
    9: 
   10: /* Encode length by using 7bit per Byte :
   11:  * Most significant bit of each byte specifies that the
   12:  * following byte is part of the code */
   13: #define DECODELENGTH(n, p) n = 0; \
   14:                            do { n = (n << 7) | (*p & 0x7f); } \
   15:                            while((*(p++)&0x80) && (n<(1<<25)));
   16: 
   17: #define DECODELENGTH_CHECKLIMIT(n, p, p_limit) \
   18: 	n = 0; \
   19: 	do { \
   20: 		if((p) >= (p_limit)) break; \
   21: 		n = (n << 7) | (*(p) & 0x7f); \
   22: 	} while((*((p)++)&0x80) && (n<(1<<25)));
   23: 
   24: #define CODELENGTH(n, p) if(n>=268435456) *(p++) = (n >> 28) | 0x80; \
   25:                          if(n>=2097152) *(p++) = (n >> 21) | 0x80; \
   26:                          if(n>=16384) *(p++) = (n >> 14) | 0x80; \
   27:                          if(n>=128) *(p++) = (n >> 7) | 0x80; \
   28:                          *(p++) = n & 0x7f;
   29: 
   30: #endif
   31: 

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>