1 //===- ObjectWriter.h -----------------------------------------------------===//
2 //
3 //                     The MCLinker Project
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9 #ifndef MCLD_LD_OBJECTWRITER_H_
10 #define MCLD_LD_OBJECTWRITER_H_
11 #include <system_error>
12 
13 namespace mcld {
14 
15 class FileOutputBuffer;
16 class Module;
17 
18 /** \class ObjectWriter
19  *  \brief ObjectWriter provides a common interface for object file writers.
20  */
21 class ObjectWriter {
22  protected:
23   ObjectWriter();
24 
25  public:
26   virtual ~ObjectWriter();
27 
28   virtual std::error_code writeObject(Module& pModule,
29                                       FileOutputBuffer& pOutput) = 0;
30 
31   virtual size_t getOutputSize(const Module& pModule) const = 0;
32 };
33 
34 }  // namespace mcld
35 
36 #endif  // MCLD_LD_OBJECTWRITER_H_
37