xref: /dflybsd-src/contrib/xz/src/liblzma/common/vli_size.c (revision 86d7f5d305c6adaa56ff4582ece9859d73106103)
186d7f5d3SJohn Marino ///////////////////////////////////////////////////////////////////////////////
286d7f5d3SJohn Marino //
386d7f5d3SJohn Marino /// \file       vli_size.c
486d7f5d3SJohn Marino /// \brief      Calculates the encoded size of a variable-length integer
586d7f5d3SJohn Marino //
686d7f5d3SJohn Marino //  Author:     Lasse Collin
786d7f5d3SJohn Marino //
886d7f5d3SJohn Marino //  This file has been put into the public domain.
986d7f5d3SJohn Marino //  You can do whatever you want with this file.
1086d7f5d3SJohn Marino //
1186d7f5d3SJohn Marino ///////////////////////////////////////////////////////////////////////////////
1286d7f5d3SJohn Marino 
1386d7f5d3SJohn Marino #include "common.h"
1486d7f5d3SJohn Marino 
1586d7f5d3SJohn Marino 
1686d7f5d3SJohn Marino extern LZMA_API(uint32_t)
lzma_vli_size(lzma_vli vli)1786d7f5d3SJohn Marino lzma_vli_size(lzma_vli vli)
1886d7f5d3SJohn Marino {
1986d7f5d3SJohn Marino 	if (vli > LZMA_VLI_MAX)
2086d7f5d3SJohn Marino 		return 0;
2186d7f5d3SJohn Marino 
2286d7f5d3SJohn Marino 	uint32_t i = 0;
2386d7f5d3SJohn Marino 	do {
2486d7f5d3SJohn Marino 		vli >>= 7;
2586d7f5d3SJohn Marino 		++i;
2686d7f5d3SJohn Marino 	} while (vli != 0);
2786d7f5d3SJohn Marino 
2886d7f5d3SJohn Marino 	assert(i <= LZMA_VLI_BYTES_MAX);
2986d7f5d3SJohn Marino 	return i;
3086d7f5d3SJohn Marino }
31