1 //===- ScriptCommand.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_SCRIPT_SCRIPTCOMMAND_H_ 10 #define MCLD_SCRIPT_SCRIPTCOMMAND_H_ 11 12 namespace mcld { 13 14 class Module; 15 16 /** \class ScriptCommand 17 * \brief This class defines the interfaces to a script command. 18 */ 19 class ScriptCommand { 20 public: 21 enum Kind { 22 ASSERT, 23 ASSIGNMENT, 24 ENTRY, 25 GROUP, 26 INPUT, 27 INPUT_SECT_DESC, 28 OUTPUT, 29 OUTPUT_ARCH, 30 OUTPUT_FORMAT, 31 SEARCH_DIR, 32 OUTPUT_SECT_DESC, 33 SECTIONS 34 }; 35 36 protected: ScriptCommand(Kind pKind)37 explicit ScriptCommand(Kind pKind) : m_Kind(pKind) {} 38 39 public: 40 virtual ~ScriptCommand() = 0; 41 42 virtual void dump() const = 0; 43 44 virtual void activate(Module&) = 0; 45 getKind()46 Kind getKind() const { return m_Kind; } 47 48 private: 49 Kind m_Kind; 50 }; 51 52 } // namespace mcld 53 54 #endif // MCLD_SCRIPT_SCRIPTCOMMAND_H_ 55