1f75da0c8SAlexey Lapshin //===- MultiFormatConfig.h --------------------------------------*- C++ -*-===// 2f75da0c8SAlexey Lapshin // 3f75da0c8SAlexey Lapshin // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4f75da0c8SAlexey Lapshin // See https://llvm.org/LICENSE.txt for license information. 5f75da0c8SAlexey Lapshin // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6f75da0c8SAlexey Lapshin // 7f75da0c8SAlexey Lapshin //===----------------------------------------------------------------------===// 8f75da0c8SAlexey Lapshin 9f75da0c8SAlexey Lapshin #ifndef LLVM_OBJCOPY_MULTIFORMATCONFIG_H 10f75da0c8SAlexey Lapshin #define LLVM_OBJCOPY_MULTIFORMATCONFIG_H 11f75da0c8SAlexey Lapshin 12f75da0c8SAlexey Lapshin #include "llvm/Support/Error.h" 13f75da0c8SAlexey Lapshin 14f75da0c8SAlexey Lapshin namespace llvm { 15f75da0c8SAlexey Lapshin namespace objcopy { 16f75da0c8SAlexey Lapshin 17f75da0c8SAlexey Lapshin struct CommonConfig; 18f75da0c8SAlexey Lapshin struct ELFConfig; 19f75da0c8SAlexey Lapshin struct COFFConfig; 20f75da0c8SAlexey Lapshin struct MachOConfig; 21f75da0c8SAlexey Lapshin struct WasmConfig; 22*61835d19Sesmeyi struct XCOFFConfig; 23f75da0c8SAlexey Lapshin 24f75da0c8SAlexey Lapshin class MultiFormatConfig { 25f75da0c8SAlexey Lapshin public: ~MultiFormatConfig()26f75da0c8SAlexey Lapshin virtual ~MultiFormatConfig() {} 27f75da0c8SAlexey Lapshin 28f75da0c8SAlexey Lapshin virtual const CommonConfig &getCommonConfig() const = 0; 29f75da0c8SAlexey Lapshin virtual Expected<const ELFConfig &> getELFConfig() const = 0; 30f75da0c8SAlexey Lapshin virtual Expected<const COFFConfig &> getCOFFConfig() const = 0; 31f75da0c8SAlexey Lapshin virtual Expected<const MachOConfig &> getMachOConfig() const = 0; 32f75da0c8SAlexey Lapshin virtual Expected<const WasmConfig &> getWasmConfig() const = 0; 33*61835d19Sesmeyi virtual Expected<const XCOFFConfig &> getXCOFFConfig() const = 0; 34f75da0c8SAlexey Lapshin }; 35f75da0c8SAlexey Lapshin 36f75da0c8SAlexey Lapshin } // namespace objcopy 37f75da0c8SAlexey Lapshin } // namespace llvm 38f75da0c8SAlexey Lapshin 39f75da0c8SAlexey Lapshin #endif // LLVM_OBJCOPY_MULTIFORMATCONFIG_H 40