blob: 8b99c23b905970686c906814e6fbc02d4a820fe3 [file] [log] [blame]
Kelvin Zhang4eae81e2021-12-09 17:07:17 -08001//
2// Copyright (C) 2021 The Android Open Source Project
3//
4// Licensed under the Apache License, Version 2.0 (the "License");
5// you may not use this file except in compliance with the License.
6// You may obtain a copy of the License at
7//
8// http://www.apache.org/licenses/LICENSE-2.0
9//
10// Unless required by applicable law or agreed to in writing, software
11// distributed under the License is distributed on an "AS IS" BASIS,
12// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13// See the License for the specific language governing permissions and
14// limitations under the License.
15//
16
17#ifndef UPDATE_ENGINE_LZ4DIFF_LZ4PATCH_H_
18#define UPDATE_ENGINE_LZ4DIFF_LZ4PATCH_H_
19
Kelvin Zhang893b3a12021-12-30 12:28:53 -080020#include "lz4diff/lz4diff_compress.h"
Kelvin Zhang4eae81e2021-12-09 17:07:17 -080021#include "lz4diff_format.h"
22
23namespace chromeos_update_engine {
Kelvin Zhang636ba2f2022-02-09 14:40:22 -080024
25bool Lz4Patch(std::string_view src_data,
26 std::string_view patch_data,
27 const SinkFunc& sink);
28
Kelvin Zhang4eae81e2021-12-09 17:07:17 -080029bool Lz4Patch(std::string_view src_data,
30 std::string_view patch_data,
31 Blob* output);
Kelvin Zhang893b3a12021-12-30 12:28:53 -080032bool Lz4Patch(const Blob& src_data, const Blob& patch_data, Blob* output);
Kelvin Zhang4eae81e2021-12-09 17:07:17 -080033
Kelvin Zhang8389dfe2022-01-13 12:47:11 -080034std::ostream& operator<<(std::ostream& out, const CompressionAlgorithm& info);
35
Kelvin Zhang4eae81e2021-12-09 17:07:17 -080036std::ostream& operator<<(std::ostream& out, const Lz4diffHeader&);
37
38template <typename T>
39std::ostream& operator<<(std::ostream& out,
40 const google::protobuf::RepeatedPtrField<T>& arr) {
41 if (arr.empty()) {
42 out << "[]";
43 return out;
44 }
45 out << "[";
46 auto begin = arr.begin();
47 out << *begin;
48 ++begin;
49 for (; begin != arr.end(); ++begin) {
50 out << ", " << *begin;
51 }
52 out << "]";
53
54 return out;
55}
56
57} // namespace chromeos_update_engine
58
59#endif