crc32.h 1.1 KB

1234567891011121314151617181920212223242526272829303132333435
  1. /*
  2. * Copyright 2012 The WebRTC Project Authors. All rights reserved.
  3. *
  4. * Use of this source code is governed by a BSD-style license
  5. * that can be found in the LICENSE file in the root of the source
  6. * tree. An additional intellectual property rights grant can be found
  7. * in the file PATENTS. All contributing project authors may
  8. * be found in the AUTHORS file in the root of the source tree.
  9. */
  10. #ifndef RTC_BASE_CRC32_H_
  11. #define RTC_BASE_CRC32_H_
  12. #include <stddef.h>
  13. #include <stdint.h>
  14. #include <string>
  15. namespace rtc {
  16. // Updates a CRC32 checksum with |len| bytes from |buf|. |initial| holds the
  17. // checksum result from the previous update; for the first call, it should be 0.
  18. uint32_t UpdateCrc32(uint32_t initial, const void* buf, size_t len);
  19. // Computes a CRC32 checksum using |len| bytes from |buf|.
  20. inline uint32_t ComputeCrc32(const void* buf, size_t len) {
  21. return UpdateCrc32(0, buf, len);
  22. }
  23. inline uint32_t ComputeCrc32(const std::string& str) {
  24. return ComputeCrc32(str.c_str(), str.size());
  25. }
  26. } // namespace rtc
  27. #endif // RTC_BASE_CRC32_H_