pw_checksum: CRC classes; Update CRC-16-CCITT name

- Rename CcittCrc16 and related functions to Crc16Ccitt, which matches
  the algorithm's full standard name (CRC-16-CCITT).
- Create classes for calculating the CRC-16-CCITT and CRC-32. Use the
  function names, which were nouns, as the class names (Crc16Ccitt and
  Crc32) and provide the functions as class static functions
  (Crc16Ccitt::Calculate and Crc32::Calculate).

Change-Id: I625ed715935de3f1000d3119c21a2f6d01245173
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/17403
Reviewed-by: Keir Mierle <keir@google.com>
diff --git a/pw_checksum/ccitt_crc16_test.cc b/pw_checksum/ccitt_crc16_test.cc
index e78f0e9..49a4d3f 100644
--- a/pw_checksum/ccitt_crc16_test.cc
+++ b/pw_checksum/ccitt_crc16_test.cc
@@ -35,33 +35,48 @@
 constexpr uint16_t kStringCrc = 0xC184;
 
 TEST(Crc16, Empty) {
-  EXPECT_EQ(CcittCrc16(std::span<std::byte>()), kCcittCrc16DefaultInitialValue);
+  EXPECT_EQ(Crc16Ccitt::Calculate(std::span<std::byte>()),
+            Crc16Ccitt::kInitialValue);
 }
 
 TEST(Crc16, ByteByByte) {
-  uint16_t crc = kCcittCrc16DefaultInitialValue;
+  uint16_t crc = Crc16Ccitt::kInitialValue;
   for (size_t i = 0; i < sizeof(kBytes); i++) {
-    crc = CcittCrc16(std::byte{kBytes[i]}, crc);
+    crc = Crc16Ccitt::Calculate(std::byte{kBytes[i]}, crc);
   }
   EXPECT_EQ(crc, kBufferCrc);
 }
 
 TEST(Crc16, Buffer) {
-  EXPECT_EQ(CcittCrc16(std::as_bytes(std::span(kBytes))), kBufferCrc);
+  EXPECT_EQ(Crc16Ccitt::Calculate(std::as_bytes(std::span(kBytes))),
+            kBufferCrc);
 }
 
 TEST(Crc16, String) {
-  EXPECT_EQ(CcittCrc16(std::as_bytes(std::span(kString))), kStringCrc);
+  EXPECT_EQ(Crc16Ccitt::Calculate(std::as_bytes(std::span(kString))),
+            kStringCrc);
 }
 
-extern "C" uint16_t CallChecksumCcittCrc16(const void* data, size_t size_bytes);
+TEST(Crc16Class, Buffer) {
+  Crc16Ccitt crc16;
+  crc16.Update(std::as_bytes(std::span(kBytes)));
+  EXPECT_EQ(crc16.value(), kBufferCrc);
+}
+
+TEST(Crc16Class, String) {
+  Crc16Ccitt crc16;
+  crc16.Update(std::as_bytes(std::span(kString)));
+  EXPECT_EQ(crc16.value(), kStringCrc);
+}
+
+extern "C" uint16_t CallChecksumCrc16Ccitt(const void* data, size_t size_bytes);
 
 TEST(Crc16FromC, Buffer) {
-  EXPECT_EQ(CallChecksumCcittCrc16(kBytes, sizeof(kBytes)), kBufferCrc);
+  EXPECT_EQ(CallChecksumCrc16Ccitt(kBytes, sizeof(kBytes)), kBufferCrc);
 }
 
 TEST(Crc16FromC, String) {
-  EXPECT_EQ(CallChecksumCcittCrc16(kString.data(), kString.size()), kStringCrc);
+  EXPECT_EQ(CallChecksumCrc16Ccitt(kString.data(), kString.size()), kStringCrc);
 }
 
 }  // namespace