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