1f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines//===- AssertCmd.cpp ------------------------------------------------------===//
2f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines//
3f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines//                     The MCLinker Project
4f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines//
5f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines// This file is distributed under the University of Illinois Open Source
6f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines// License. See LICENSE.TXT for details.
7f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines//
8f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines//===----------------------------------------------------------------------===//
937b74a387bb3993387029859c2d9d051c41c724eStephen Hines#include "mcld/Script/AssertCmd.h"
10f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines
1137b74a387bb3993387029859c2d9d051c41c724eStephen Hines#include "mcld/LinkerScript.h"
1237b74a387bb3993387029859c2d9d051c41c724eStephen Hines#include "mcld/Module.h"
1337b74a387bb3993387029859c2d9d051c41c724eStephen Hines#include "mcld/Script/RpnExpr.h"
1437b74a387bb3993387029859c2d9d051c41c724eStephen Hines#include "mcld/Support/raw_ostream.h"
1537b74a387bb3993387029859c2d9d051c41c724eStephen Hines
1637b74a387bb3993387029859c2d9d051c41c724eStephen Hinesnamespace mcld {
17f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines
18f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines//===----------------------------------------------------------------------===//
19f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines// AssertCmd
20f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines//===----------------------------------------------------------------------===//
21f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen HinesAssertCmd::AssertCmd(RpnExpr& pRpnExpr, const std::string& pMessage)
2237b74a387bb3993387029859c2d9d051c41c724eStephen Hines    : ScriptCommand(ScriptCommand::ASSERT),
2337b74a387bb3993387029859c2d9d051c41c724eStephen Hines      m_RpnExpr(pRpnExpr),
2437b74a387bb3993387029859c2d9d051c41c724eStephen Hines      m_Message(pMessage) {
25f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines}
26f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines
2737b74a387bb3993387029859c2d9d051c41c724eStephen HinesAssertCmd::~AssertCmd() {
28f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines}
29f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines
3037b74a387bb3993387029859c2d9d051c41c724eStephen HinesAssertCmd& AssertCmd::operator=(const AssertCmd& pAssertCmd) {
31f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines  return *this;
32f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines}
33f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines
3437b74a387bb3993387029859c2d9d051c41c724eStephen Hinesvoid AssertCmd::dump() const {
35f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines  mcld::outs() << "Assert ( ";
36f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines
37f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines  m_RpnExpr.dump();
38f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines
39f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines  mcld::outs() << " , " << m_Message << " )\n";
40f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines}
41f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines
4237b74a387bb3993387029859c2d9d051c41c724eStephen Hinesvoid AssertCmd::activate(Module& pModule) {
43f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines  pModule.getScript().assertions().push_back(*this);
44f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines}
4537b74a387bb3993387029859c2d9d051c41c724eStephen Hines
4637b74a387bb3993387029859c2d9d051c41c724eStephen Hines}  // namespace mcld
47