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