string_id.cpp 844 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. /*
  2. * Copyright (c) 2012-2015 Daniele Bartolini and individual contributors.
  3. * License: https://github.com/taylor001/crown/blob/master/LICENSE
  4. */
  5. #include "string_id.h"
  6. #include "murmur.h"
  7. #include "string_utils.h"
  8. #include <inttypes.h> // PRIx64
  9. namespace crown
  10. {
  11. StringId32::StringId32(const char* str)
  12. : _id(murmur32(str, strlen(str)))
  13. {
  14. }
  15. StringId32::StringId32(const char* str, uint32_t len)
  16. : _id(murmur32(str, len))
  17. {
  18. }
  19. const char* StringId32::to_string(char* buf)
  20. {
  21. snprintf(buf, STRING_LENGTH, "%.8x", _id);
  22. return buf;
  23. }
  24. StringId64::StringId64(const char* str)
  25. : _id(murmur64(str, strlen(str)))
  26. {
  27. }
  28. StringId64::StringId64(const char* str, uint32_t len)
  29. : _id(murmur64(str, len))
  30. {
  31. }
  32. const char* StringId64::to_string(char* buf)
  33. {
  34. snprintf(buf, STRING_LENGTH, "%.16" PRIx64, _id);
  35. return buf;
  36. }
  37. } // namespace crown