xref: /freebsd/contrib/xz/src/liblzma/common/vli_size.c (revision dd41de95a84d979615a2ef11df6850622bf6184e)
1 ///////////////////////////////////////////////////////////////////////////////
2 //
3 /// \file       vli_size.c
4 /// \brief      Calculates the encoded size of a variable-length integer
5 //
6 //  Author:     Lasse Collin
7 //
8 //  This file has been put into the public domain.
9 //  You can do whatever you want with this file.
10 //
11 ///////////////////////////////////////////////////////////////////////////////
12 
13 #include "common.h"
14 
15 
16 extern LZMA_API(uint32_t)
17 lzma_vli_size(lzma_vli vli)
18 {
19 	if (vli > LZMA_VLI_MAX)
20 		return 0;
21 
22 	uint32_t i = 0;
23 	do {
24 		vli >>= 7;
25 		++i;
26 	} while (vli != 0);
27 
28 	assert(i <= LZMA_VLI_BYTES_MAX);
29 	return i;
30 }
31