varint.h 848 B

1234567891011121314151617181920212223242526272829303132333435
  1. #pragma once
  2. #include <stdint.h>
  3. #include <stdlib.h>
  4. #ifdef __cplusplus
  5. extern "C" {
  6. #endif
  7. /**
  8. * Pack uint32 to varint
  9. * @param value value from UINT32_MIN to UINT32_MAX
  10. * @param output output array, need to be at least 5 bytes long
  11. * @return size_t
  12. */
  13. size_t varint_uint32_pack(uint32_t value, uint8_t* output);
  14. size_t varint_uint32_unpack(uint32_t* value, const uint8_t* input, size_t input_size);
  15. size_t varint_uint32_length(uint32_t value);
  16. /**
  17. * Pack int32 to varint
  18. * @param value value from (INT32_MIN / 2 + 1) to INT32_MAX
  19. * @param output output array, need to be at least 5 bytes long
  20. * @return size_t
  21. */
  22. size_t varint_int32_pack(int32_t value, uint8_t* output);
  23. size_t varint_int32_unpack(int32_t* value, const uint8_t* input, size_t input_size);
  24. size_t varint_int32_length(int32_t value);
  25. #ifdef __cplusplus
  26. }
  27. #endif