vli_size.c 561 B

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