1#ifndef YAZE_APP_PLATFORM_WASM_WASM_PATCH_EXPORT_H_
2#define YAZE_APP_PLATFORM_WASM_WASM_PATCH_EXPORT_H_
11#include "absl/status/status.h"
12#include "absl/status/statusor.h"
35class WasmPatchExport {
50 static absl::Status
ExportBPS(
const std::vector<uint8_t>& original,
51 const std::vector<uint8_t>& modified,
52 const std::string& filename);
67 static absl::Status
ExportIPS(
const std::vector<uint8_t>& original,
68 const std::vector<uint8_t>& modified,
69 const std::string& filename);
82 const std::vector<uint8_t>& modified);
90 static void WriteVariableLength(std::vector<uint8_t>& output, uint64_t value);
91 static std::vector<uint8_t> GenerateBPSPatch(
const std::vector<uint8_t>& source,
92 const std::vector<uint8_t>& target);
95 static void WriteIPS24BitOffset(std::vector<uint8_t>& output, uint32_t offset);
96 static void WriteIPS16BitSize(std::vector<uint8_t>& output, uint16_t size);
97 static std::vector<uint8_t> GenerateIPSPatch(
const std::vector<uint8_t>& source,
98 const std::vector<uint8_t>& target);
101 static std::vector<std::pair<size_t, size_t>> FindChangedRegions(
102 const std::vector<uint8_t>& original,
103 const std::vector<uint8_t>& modified);
106 static absl::Status DownloadPatchFile(
const std::string& filename,
107 const std::vector<uint8_t>& data,
108 const std::string& mime_type);
128 static absl::Status
ExportBPS(
const std::vector<uint8_t>&,
129 const std::vector<uint8_t>&,
130 const std::string&) {
131 return absl::UnimplementedError(
"Patch export is only available in WASM builds");
134 static absl::Status
ExportIPS(
const std::vector<uint8_t>&,
135 const std::vector<uint8_t>&,
136 const std::string&) {
137 return absl::UnimplementedError(
"Patch export is only available in WASM builds");
141 const std::vector<uint8_t>&) {
uint32_t CalculateCRC32(const uint8_t *data, size_t size)