122add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao//===- CommandAction.cpp --------------------------------------------------===//
222add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao//
322add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao//                     The MCLinker Project
422add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao//
522add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao// This file is distributed under the University of Illinois Open Source
622add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao// License. See LICENSE.TXT for details.
722add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao//
822add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao//===----------------------------------------------------------------------===//
922add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao#include <mcld/MC/CommandAction.h>
1022add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao#include <mcld/MC/InputBuilder.h>
1122add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao#include <mcld/MC/SearchDirs.h>
1222add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao#include <mcld/MC/Attribute.h>
1322add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao#include <mcld/Support/MsgHandling.h>
1422add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao
1522add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liaousing namespace mcld;
1622add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao
1722add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao//===----------------------------------------------------------------------===//
1822add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao// Derived Positional Option
1922add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao//===----------------------------------------------------------------------===//
2022add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao// InputFileAction
2122add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao//===----------------------------------------------------------------------===//
2222add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei LiaoInputFileAction::InputFileAction(unsigned int pPosition,
2322add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao                                 const sys::fs::Path &pPath)
2422add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  : InputAction(pPosition), m_Path(pPath) {
2522add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao}
2622add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao
2722add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liaobool InputFileAction::activate(InputBuilder& pBuilder) const
2822add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao{
2922add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  pBuilder.createNode<InputTree::Positional>(path().stem().native(), path());
3022add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  return true;
3122add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao}
3222add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao
3322add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao//===----------------------------------------------------------------------===//
3422add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao// NamespecAction
3522add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao//===----------------------------------------------------------------------===//
3622add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei LiaoNamespecAction::NamespecAction(unsigned int pPosition,
3722add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao                               const std::string &pNamespec,
3822add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao                               SearchDirs& pSearchDirs)
3922add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  : InputAction(pPosition), m_Namespec(pNamespec), m_SearchDirs(pSearchDirs) {
4022add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao}
4122add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao
4222add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liaobool NamespecAction::activate(InputBuilder& pBuilder) const
4322add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao{
4422add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  sys::fs::Path* path = NULL;
4522add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  // find out the real path of the namespec.
4622add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  if (pBuilder.getConstraint().isSharedSystem()) {
4722add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao    // In the system with shared object support, we can find both archive
4822add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao    // and shared object.
4922add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao
5022add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao    if (pBuilder.getAttributes().isStatic()) {
5122add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao      // with --static, we must search an archive.
5222add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao      path = m_SearchDirs.find(namespec(), Input::Archive);
5322add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao    }
5422add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao    else {
5522add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao      // otherwise, with --Bdynamic, we can find either an archive or a
5622add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao      // shared object.
5722add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao      path = m_SearchDirs.find(namespec(), Input::DynObj);
5822add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao    }
5922add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  }
6022add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  else {
6122add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao    // In the system without shared object support, we only look for an archive
6222add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao    path = m_SearchDirs.find(namespec(), Input::Archive);
6322add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  }
6422add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao
6522add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  if (NULL == path) {
6622add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao    fatal(diag::err_cannot_find_namespec) << namespec();
6722add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao    return false;
6822add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  }
6922add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao
7022add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  pBuilder.createNode<InputTree::Positional>(namespec(), *path);
7122add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  return true;
7222add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao}
7322add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao
7422add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao//===----------------------------------------------------------------------===//
7522add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao// BitcodeAction
7622add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao//===----------------------------------------------------------------------===//
7722add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei LiaoBitcodeAction::BitcodeAction(unsigned int pPosition, const sys::fs::Path &pPath)
7822add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  : InputAction(pPosition), m_Path(pPath) {
7922add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao}
8022add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao
8122add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liaobool BitcodeAction::activate(InputBuilder& pBuilder) const
8222add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao{
8322add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  pBuilder.createNode<InputTree::Positional>("bitcode", path(), Input::External);
8422add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  return true;
8522add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao}
8622add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao
8722add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao//===----------------------------------------------------------------------===//
8822add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao// StartGroupAction
8922add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao//===----------------------------------------------------------------------===//
9022add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei LiaoStartGroupAction::StartGroupAction(unsigned int pPosition)
9122add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  : InputAction(pPosition) {
9222add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao}
9322add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao
9422add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liaobool StartGroupAction::activate(InputBuilder& pBuilder) const
9522add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao{
9622add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  if (pBuilder.isInGroup()) {
9722add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao    fatal(diag::fatal_forbid_nest_group);
9822add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao    return false;
9922add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  }
10022add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  pBuilder.enterGroup();
10122add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  return true;
10222add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao}
10322add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao
10422add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao//===----------------------------------------------------------------------===//
10522add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao// EndGroupAction
10622add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao//===----------------------------------------------------------------------===//
10722add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei LiaoEndGroupAction::EndGroupAction(unsigned int pPosition)
10822add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  : InputAction(pPosition) {
10922add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao}
11022add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao
11122add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liaobool EndGroupAction::activate(InputBuilder& pBuilder) const
11222add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao{
11322add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  pBuilder.exitGroup();
11422add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  return true;
11522add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao}
11622add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao
11722add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao//===----------------------------------------------------------------------===//
11822add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao// WholeArchiveAction
11922add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao//===----------------------------------------------------------------------===//
12022add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei LiaoWholeArchiveAction::WholeArchiveAction(unsigned int pPosition)
12122add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  : InputAction(pPosition) {
12222add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao}
12322add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao
12422add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liaobool WholeArchiveAction::activate(InputBuilder& pBuilder) const
12522add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao{
12622add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  pBuilder.getAttributes().setWholeArchive();
12722add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  return true;
12822add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao}
12922add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao
13022add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao//===----------------------------------------------------------------------===//
13122add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao// NoWholeArchiveAction
13222add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao//===----------------------------------------------------------------------===//
13322add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei LiaoNoWholeArchiveAction::NoWholeArchiveAction(unsigned int pPosition)
13422add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  : InputAction(pPosition) {
13522add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao}
13622add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao
13722add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liaobool NoWholeArchiveAction::activate(InputBuilder& pBuilder) const
13822add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao{
13922add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  pBuilder.getAttributes().unsetWholeArchive();
14022add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  return true;
14122add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao}
14222add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao
14322add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao//===----------------------------------------------------------------------===//
14422add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao// AsNeededAction
14522add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao//===----------------------------------------------------------------------===//
14622add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei LiaoAsNeededAction::AsNeededAction(unsigned int pPosition)
14722add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  : InputAction(pPosition) {
14822add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao}
14922add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao
15022add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liaobool AsNeededAction::activate(InputBuilder& pBuilder) const
15122add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao{
15222add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  pBuilder.getAttributes().setAsNeeded();
15322add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  return true;
15422add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao}
15522add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao
15622add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao//===----------------------------------------------------------------------===//
15722add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao// NoAsNeededAction
15822add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao//===----------------------------------------------------------------------===//
15922add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei LiaoNoAsNeededAction::NoAsNeededAction(unsigned int pPosition)
16022add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  : InputAction(pPosition) {
16122add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao}
16222add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao
16322add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liaobool NoAsNeededAction::activate(InputBuilder& pBuilder) const
16422add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao{
16522add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  pBuilder.getAttributes().unsetAsNeeded();
16622add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  return true;
16722add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao}
16822add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao
16922add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao//===----------------------------------------------------------------------===//
17022add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao// AddNeededAction
17122add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao//===----------------------------------------------------------------------===//
17222add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei LiaoAddNeededAction::AddNeededAction(unsigned int pPosition)
17322add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  : InputAction(pPosition) {
17422add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao}
17522add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao
17622add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liaobool AddNeededAction::activate(InputBuilder& pBuilder) const
17722add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao{
17822add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  pBuilder.getAttributes().setAddNeeded();
17922add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  return true;
18022add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao}
18122add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao
18222add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao//===----------------------------------------------------------------------===//
18322add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao// NoAddNeededAction
18422add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao//===----------------------------------------------------------------------===//
18522add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei LiaoNoAddNeededAction::NoAddNeededAction(unsigned int pPosition)
18622add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  : InputAction(pPosition) {
18722add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao}
18822add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao
18922add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liaobool NoAddNeededAction::activate(InputBuilder& pBuilder) const
19022add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao{
19122add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  pBuilder.getAttributes().unsetAddNeeded();
19222add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  return true;
19322add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao}
19422add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao
19522add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao//===----------------------------------------------------------------------===//
19622add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao// BDynamicAction
19722add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao//===----------------------------------------------------------------------===//
19822add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei LiaoBDynamicAction::BDynamicAction(unsigned int pPosition)
19922add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  : InputAction(pPosition) {
20022add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao}
20122add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao
20222add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liaobool BDynamicAction::activate(InputBuilder& pBuilder) const
20322add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao{
20422add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  pBuilder.getAttributes().setDynamic();
20522add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  return true;
20622add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao}
20722add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao
20822add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao//===----------------------------------------------------------------------===//
20922add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao// BStaticAction
21022add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao//===----------------------------------------------------------------------===//
21122add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei LiaoBStaticAction::BStaticAction(unsigned int pPosition)
21222add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  : InputAction(pPosition) {
21322add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao}
21422add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao
21522add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liaobool BStaticAction::activate(InputBuilder& pBuilder) const
21622add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao{
21722add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  pBuilder.getAttributes().setStatic();
21822add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  return true;
21922add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao}
22022add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao
221