xref: /llvm-project/llvm/include/llvm/ObjCopy/MultiFormatConfig.h (revision 61835d19a848ecd3530d9b86deb6b15f336ae6d6)
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