Merge "Expose PatchWriter for consumption" am: c1c7b9eaa7 am: 5ecdc7df3c

Original change: https://android-review.googlesource.com/c/platform/external/bsdiff/+/1768592

Change-Id: I0d15c369c10ac628112d2d45329ba0b58bdba9fe
diff --git a/compressor_interface.h b/include/bsdiff/compressor_interface.h
similarity index 100%
rename from compressor_interface.h
rename to include/bsdiff/compressor_interface.h
diff --git a/include/bsdiff/control_entry.h b/include/bsdiff/control_entry.h
index 2c849f6..3d2d96c 100644
--- a/include/bsdiff/control_entry.h
+++ b/include/bsdiff/control_entry.h
@@ -8,23 +8,24 @@
 #include <stdint.h>
 
 struct ControlEntry {
-  ControlEntry(uint64_t diff_size,
-               uint64_t extra_size,
-               int64_t offset_increment)
+  constexpr ControlEntry(uint64_t diff_size,
+                         uint64_t extra_size,
+                         int64_t offset_increment)
       : diff_size(diff_size),
         extra_size(extra_size),
         offset_increment(offset_increment) {}
+  constexpr ControlEntry() = default;
 
   // The number of bytes to copy from the source and diff stream.
-  uint64_t diff_size;
+  uint64_t diff_size{0};
 
   // The number of bytes to copy from the extra stream.
-  uint64_t extra_size;
+  uint64_t extra_size{0};
 
   // The value to add to the source pointer after patching from the diff stream.
-  int64_t offset_increment;
+  int64_t offset_increment{0};
 
-  bool operator==(const ControlEntry& o) const {
+  [[nodiscard]] bool operator==(const ControlEntry& o) const {
     return diff_size == o.diff_size && extra_size == o.extra_size &&
            offset_increment == o.offset_increment;
   }
diff --git a/patch_writer.h b/include/bsdiff/patch_writer.h
similarity index 94%
rename from patch_writer.h
rename to include/bsdiff/patch_writer.h
index 8ad4cde..6d2bcf5 100644
--- a/patch_writer.h
+++ b/include/bsdiff/patch_writer.h
@@ -14,6 +14,15 @@
 
 namespace bsdiff {
 
+
+constexpr void EncodeInt64(int64_t x, uint8_t* buf) {
+  uint64_t y = x < 0 ? (1ULL << 63ULL) - x : x;
+  for (int i = 0; i < 8; ++i) {
+    buf[i] = y & 0xff;
+    y /= 256;
+  }
+}
+
 // A PatchWriterInterface class with three compressors and a 32-byte header.
 class BsdiffPatchWriter : public PatchWriterInterface {
  public:
diff --git a/patch_writer.cc b/patch_writer.cc
index 52982e0..b7d9b08 100644
--- a/patch_writer.cc
+++ b/patch_writer.cc
@@ -15,13 +15,6 @@
 
 namespace {
 
-void EncodeInt64(int64_t x, uint8_t* buf) {
-  uint64_t y = x < 0 ? (1ULL << 63ULL) - x : x;
-  for (int i = 0; i < 8; ++i) {
-    buf[i] = y & 0xff;
-    y /= 256;
-  }
-}
 
 }  // namespace