1 //===- AssertCmd.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_ASSERTCMD_H_ 10 #define MCLD_SCRIPT_ASSERTCMD_H_ 11 12 #include "mcld/Script/ScriptCommand.h" 13 14 #include <string> 15 16 namespace mcld { 17 18 class RpnExpr; 19 class Module; 20 21 /** \class AssertCmd 22 * \brief This class defines the interfaces to assert command. 23 */ 24 25 class AssertCmd : public ScriptCommand { 26 public: 27 AssertCmd(RpnExpr& pRpnExpr, const std::string& pMessage); 28 29 ~AssertCmd(); 30 31 AssertCmd& operator=(const AssertCmd& pAssertCmd); 32 getRpnExpr()33 const RpnExpr& getRpnExpr() const { return m_RpnExpr; } getRpnExpr()34 RpnExpr& getRpnExpr() { return m_RpnExpr; } 35 message()36 const std::string& message() const { return m_Message; } 37 38 void dump() const; 39 classof(const ScriptCommand * pCmd)40 static bool classof(const ScriptCommand* pCmd) { 41 return pCmd->getKind() == ScriptCommand::ASSERT; 42 } 43 44 void activate(Module& pModule); 45 46 private: 47 RpnExpr& m_RpnExpr; 48 std::string m_Message; 49 }; 50 51 } // namespace mcld 52 53 #endif // MCLD_SCRIPT_ASSERTCMD_H_ 54