[M108 Migration][HBBTV] Implement ewk_context_register_jsplugin_mime_types API
[platform/framework/web/chromium-efl.git] / courgette / program_detector.h
1 // Copyright 2016 The Chromium Authors
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 COURGETTE_PROGRAM_DETECTOR_H_
6 #define COURGETTE_PROGRAM_DETECTOR_H_
7
8 #include <stddef.h>
9 #include <stdint.h>
10
11 #include <memory>
12
13 #include "courgette/courgette.h"
14
15 namespace courgette {
16
17 class Disassembler;
18
19 // Returns a new instance of Disassembler inherited class if binary data given
20 // in |buffer| and |length| match a known binary format, otherwise null.
21 std::unique_ptr<Disassembler> DetectDisassembler(const uint8_t* buffer,
22                                                  size_t length);
23
24 // Detects the type of an executable file, and it's length. The length may be
25 // slightly smaller than some executables (like ELF), but will include all bytes
26 // the courgette algorithm has special benefit for.
27 // On success:
28 //   Fills in |type| and |detected_length|, and returns C_OK.
29 // On failure:
30 //   Fills in |type| with UNKNOWN, |detected_length| with 0, and returns
31 //   C_INPUT_NOT_RECOGNIZED.
32 Status DetectExecutableType(const uint8_t* buffer,
33                             size_t length,
34                             ExecutableType* type,
35                             size_t* detected_length);
36
37 }  // namespace courgette
38
39 #endif  // COURGETTE_PROGRAM_DETECTOR_H_