//===- llvm/BinaryFormat/Magic.h - File magic identification ----*- C++ -*-===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// #ifndef LLVM_BINARYFORMAT_MAGIC_H #define LLVM_BINARYFORMAT_MAGIC_H #include <system_error> namespace llvm { class StringRef; class Twine; /// file_magic - An "enum class" enumeration of file types based on magic (the /// first N bytes of the file). struct file_magic { … }; /// Identify the type of a binary file based on how magical it is. file_magic identify_magic(StringRef magic); /// Get and identify \a path's type based on its content. /// /// @param path Input path. /// @param result Set to the type of file, or file_magic::unknown. /// @returns errc::success if result has been successfully set, otherwise a /// platform-specific error_code. std::error_code identify_magic(const Twine &path, file_magic &result); } // namespace llvm #endif