#include "components/zucchini/zucchini_gen.h"
#include <stddef.h>
#include <stdint.h>
#include <algorithm>
#include <map>
#include <memory>
#include <string>
#include <utility>
#include "base/logging.h"
#include "base/numerics/safe_conversions.h"
#include "components/zucchini/disassembler.h"
#include "components/zucchini/element_detection.h"
#include "components/zucchini/encoded_view.h"
#include "components/zucchini/ensemble_matcher.h"
#include "components/zucchini/equivalence_map.h"
#include "components/zucchini/heuristic_ensemble_matcher.h"
#include "components/zucchini/image_index.h"
#include "components/zucchini/imposed_ensemble_matcher.h"
#include "components/zucchini/patch_writer.h"
#include "components/zucchini/suffix_array.h"
#include "components/zucchini/targets_affinity.h"
namespace zucchini {
namespace {
constexpr double kMinEquivalenceSimilarity = …;
constexpr double kMinLabelAffinity = …;
}
std::vector<offset_t> FindExtraTargets(const TargetPool& projected_old_targets,
const TargetPool& new_targets) { … }
EquivalenceMap CreateEquivalenceMap(const ImageIndex& old_image_index,
const ImageIndex& new_image_index,
int num_iterations) { … }
bool GenerateEquivalencesAndExtraData(ConstBufferView new_image,
const EquivalenceMap& equivalence_map,
PatchElementWriter* patch_writer) { … }
bool GenerateRawDelta(
ConstBufferView old_image,
ConstBufferView new_image,
const EquivalenceMap& equivalence_map,
const ImageIndex& new_image_index,
const std::map<TypeTag, std::unique_ptr<ReferenceMixer>>& reference_mixers,
PatchElementWriter* patch_writer) { … }
bool GenerateReferencesDelta(const ReferenceSet& src_refs,
const ReferenceSet& dst_refs,
const TargetPool& projected_target_pool,
const OffsetMapper& offset_mapper,
const EquivalenceMap& equivalence_map,
ReferenceDeltaSink* reference_delta_sink) { … }
bool GenerateExtraTargets(const std::vector<offset_t>& extra_targets,
PoolTag pool_tag,
PatchElementWriter* patch_writer) { … }
bool GenerateRawElement(const std::vector<offset_t>& old_sa,
ConstBufferView old_image,
ConstBufferView new_image,
PatchElementWriter* patch_writer) { … }
bool GenerateExecutableElement(ExecutableType exe_type,
ConstBufferView old_image,
ConstBufferView new_image,
PatchElementWriter* patch_writer) { … }
status::Code GenerateBufferCommon(ConstBufferView old_image,
ConstBufferView new_image,
std::unique_ptr<EnsembleMatcher> matcher,
EnsemblePatchWriter* patch_writer) { … }
status::Code GenerateBuffer(ConstBufferView old_image,
ConstBufferView new_image,
EnsemblePatchWriter* patch_writer) { … }
status::Code GenerateBufferImposed(ConstBufferView old_image,
ConstBufferView new_image,
std::string imposed_matches,
EnsemblePatchWriter* patch_writer) { … }
status::Code GenerateBufferRaw(ConstBufferView old_image,
ConstBufferView new_image,
EnsemblePatchWriter* patch_writer) { … }
}