FileAction.cpp revision 37b74a387bb3993387029859c2d9d051c41c724e
1//===- FileAction.cpp -----------------------------------------------------===// 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#include "mcld/MC/FileAction.h" 10 11#include "mcld/MC/Input.h" 12#include "mcld/MC/InputBuilder.h" 13 14namespace mcld { 15 16//===----------------------------------------------------------------------===// 17// ContextAction 18//===----------------------------------------------------------------------===// 19ContextAction::ContextAction(unsigned int pPosition) : InputAction(pPosition) { 20} 21 22bool ContextAction::activate(InputBuilder& pBuilder) const { 23 Input* input = *pBuilder.getCurrentNode(); 24 25 if (input->hasContext()) 26 return false; 27 28 // already got type - for example, bitcode 29 if (input->type() == Input::Script || input->type() == Input::Object || 30 input->type() == Input::DynObj || input->type() == Input::Archive) 31 return false; 32 33 return pBuilder.setContext(*input); 34} 35 36//===----------------------------------------------------------------------===// 37// MemoryAreaAction 38//===----------------------------------------------------------------------===// 39MemoryAreaAction::MemoryAreaAction(unsigned int pPosition, 40 FileHandle::OpenModeEnum pMode, 41 FileHandle::PermissionEnum pPerm) 42 : InputAction(pPosition), m_Mode(pMode), m_Permission(pPerm) { 43} 44 45bool MemoryAreaAction::activate(InputBuilder& pBuilder) const { 46 Input* input = *pBuilder.getCurrentNode(); 47 48 if (input->hasMemArea()) 49 return false; 50 51 // already got type - for example, bitcode 52 if (input->type() == Input::Script || input->type() == Input::Object || 53 input->type() == Input::DynObj || input->type() == Input::Archive) 54 return false; 55 56 return pBuilder.setMemory(*input, m_Mode, m_Permission); 57} 58 59} // namespace mcld 60