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