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 Marinolzma_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