// Copyright 2017 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef COMPONENTS_ZUCCHINI_ZUCCHINI_H_ #define COMPONENTS_ZUCCHINI_ZUCCHINI_H_ #include #include "components/zucchini/buffer_view.h" #include "components/zucchini/patch_reader.h" #include "components/zucchini/patch_writer.h" // Core Zucchini library, consisting of: // - Global constants. // - Patch gen and apply functions, where "old" and "new" data are represented // as buffers, and patch data represented as EnsemblePatchWriter or // EnsemblePatchReader. namespace zucchini { namespace status { // Zucchini status code, which can also be used as process exit code. Therefore // success is explicitly 0. enum Code { kStatusSuccess = 0, kStatusInvalidParam = 1, kStatusFileReadError = 2, kStatusFileWriteError = 3, kStatusPatchReadError = 4, kStatusPatchWriteError = 5, kStatusInvalidOldImage = 6, kStatusInvalidNewImage = 7, kStatusFatal = 8, }; } // namespace status // Generates ensemble patch from |old_image| to |new_image| using the default // element detection and matching heuristics, writes the results to // |patch_writer|, and returns a status::Code. status::Code GenerateBuffer(ConstBufferView old_image, ConstBufferView new_image, EnsemblePatchWriter* patch_writer); // Same as GenerateEnsemble(), but if |imposed_matches| is non-empty, then // overrides default element detection and matching heuristics with custom // element matching encoded in |imposed_matches|, which should be formatted as: // "#+#=#+#,#+#=#+#,..." (e.g., "1+2=3+4", "1+2=3+4,5+6=7+8"), // where "#+#=#+#" encodes a match as 4 unsigned integers: // [offset in "old", size in "old", offset in "new", size in "new"]. status::Code GenerateBufferImposed(ConstBufferView old_image, ConstBufferView new_image, std::string imposed_matches, EnsemblePatchWriter* patch_writer); // Generates raw patch from |old_image| to |new_image|, and writes it to // |patch_writer|. status::Code GenerateBufferRaw(ConstBufferView old_image, ConstBufferView new_image, EnsemblePatchWriter* patch_writer); // Applies |patch_reader| to |old_image| to build |new_image|, which refers to // preallocated memory of sufficient size. status::Code ApplyBuffer(ConstBufferView old_image, const EnsemblePatchReader& patch_reader, MutableBufferView new_image); } // namespace zucchini #endif // COMPONENTS_ZUCCHINI_ZUCCHINI_H_