1 // Copyright 2017 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #ifndef COMPONENTS_ZUCCHINI_DISASSEMBLER_NO_OP_H_
6 #define COMPONENTS_ZUCCHINI_DISASSEMBLER_NO_OP_H_
7 
8 #include <memory>
9 #include <string>
10 #include <vector>
11 
12 #include "components/zucchini/buffer_view.h"
13 #include "components/zucchini/disassembler.h"
14 #include "components/zucchini/image_utils.h"
15 
16 namespace zucchini {
17 
18 // This disassembler works on any file and does not look for reference.
19 class DisassemblerNoOp : public Disassembler {
20  public:
21   static constexpr uint16_t kVersion = 1;
22 
23   DisassemblerNoOp();
24   DisassemblerNoOp(const DisassemblerNoOp&) = delete;
25   const DisassemblerNoOp& operator=(const DisassemblerNoOp&) = delete;
26   ~DisassemblerNoOp() override;
27 
28   // Disassembler:
29   ExecutableType GetExeType() const override;
30   std::string GetExeTypeString() const override;
31   std::vector<ReferenceGroup> MakeReferenceGroups() const override;
32 
33  private:
34   friend Disassembler;
35 
36   bool Parse(ConstBufferView image) override;
37 };
38 
39 }  // namespace zucchini
40 
41 #endif  // COMPONENTS_ZUCCHINI_DISASSEMBLER_NO_OP_H_
42