// Copyright 2016 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 COURGETTE_PROGRAM_DETECTOR_H_
#define COURGETTE_PROGRAM_DETECTOR_H_

#include <stddef.h>

#include <memory>

#include "courgette/courgette.h"

namespace courgette {

class AssemblyProgram;

// Detects the type of an executable file, and it's length. The length may be
// slightly smaller than some executables (like ELF), but will include all bytes
// the courgette algorithm has special benefit for.
// On success:
//   Fills in |type| and |detected_length|, and returns C_OK.
// On failure:
//   Fills in |type| with UNKNOWN, |detected_length| with 0, and returns
//   C_INPUT_NOT_RECOGNIZED.
Status DetectExecutableType(const void* buffer,
                            size_t length,
                            ExecutableType* type,
                            size_t* detected_length);

// Attempts to detect the type of executable, and parse it with the appropriate
// tools.
// On success:
//   Parses the executable into a new AssemblyProgram in |*output|, and returns
//   C_OK.
// On failure:
//   Returns an error status and assigns |*output| to null.
Status ParseDetectedExecutable(const void* buffer,
                               size_t length,
                               std::unique_ptr<AssemblyProgram>* output);

}  // namespace courgette

#endif  // COURGETTE_PROGRAM_DETECTOR_H_
