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//===----------------------------------------------------------------------===//
9f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines#include <mcld/Script/AssertCmd.h>
10f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines#include <mcld/Script/RpnExpr.h>
11f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines#include <mcld/Support/raw_ostream.h>
12f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines#include <mcld/Module.h>
13f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines#include <mcld/LinkerScript.h>
14f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines
15f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hinesusing namespace mcld;
16f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines
17f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines//===----------------------------------------------------------------------===//
18f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines// AssertCmd
19f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines//===----------------------------------------------------------------------===//
20f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen HinesAssertCmd::AssertCmd(RpnExpr& pRpnExpr, const std::string& pMessage)
21f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines  : ScriptCommand(ScriptCommand::ASSERT),
22f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines    m_RpnExpr(pRpnExpr),
23f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines    m_Message(pMessage)
24f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines{
25f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines}
26f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines
27f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen HinesAssertCmd::~AssertCmd()
28f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines{
29f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines}
30f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines
31f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen HinesAssertCmd& AssertCmd::operator=(const AssertCmd& pAssertCmd)
32f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines{
33f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines  return *this;
34f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines}
35f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines
36f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hinesvoid AssertCmd::dump() const
37f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines{
38f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines  mcld::outs() << "Assert ( ";
39f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines
40f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines  m_RpnExpr.dump();
41f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines
42f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines  mcld::outs() << " , " << m_Message << " )\n";
43f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines}
44f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines
45f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hinesvoid AssertCmd::activate(Module& pModule)
46f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines{
47f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines  pModule.getScript().assertions().push_back(*this);
48f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines}
49