// 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. #include "components/zucchini/disassembler.h" #include "base/logging.h" namespace zucchini { /******** EmptyReferenceReader ********/ base::Optional EmptyReferenceReader::GetNext() { return base::nullopt; } /******** ReferenceGroup ********/ std::unique_ptr ReferenceGroup::GetReader( offset_t lower, offset_t upper, Disassembler* disasm) const { DCHECK_LE(lower, upper); DCHECK_LE(upper, disasm->size()); return (disasm->*reader_factory_)(lower, upper); } std::unique_ptr ReferenceGroup::GetReader( Disassembler* disasm) const { return (disasm->*reader_factory_)(0, static_cast(disasm->size())); } std::unique_ptr ReferenceGroup::GetWriter( MutableBufferView image, Disassembler* disasm) const { DCHECK_EQ(image.begin(), disasm->image().begin()); DCHECK_EQ(image.size(), disasm->size()); return (disasm->*writer_factory_)(image); } /******** Disassembler ********/ Disassembler::Disassembler(int num_equivalence_iterations) : num_equivalence_iterations_(num_equivalence_iterations) {} Disassembler::~Disassembler() = default; } // namespace zucchini