122add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao//===- FileAction.h -------------------------------------------------------===//
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#ifndef MCLD_MC_FILE_ACTION_H
1022add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao#define MCLD_MC_FILE_ACTION_H
1122add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao#ifdef ENABLE_UNITTEST
1222add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao#include <gtest.h>
1322add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao#endif
1422add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao#include <mcld/MC/InputAction.h>
1522add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao#include <mcld/Support/FileHandle.h>
1622add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao
1722add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liaonamespace mcld {
1822add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao
1922add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liaoclass ContextFactory;
2022add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liaoclass MemoryAreaFactory;
2122add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao
2222add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao/** \class ContextAction
2322add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao *  \brief ContextAction is a command object to create input's LDContext.
2422add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao */
2522add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liaoclass ContextAction : public InputAction
2622add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao{
2722add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liaopublic:
2822add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  explicit ContextAction(unsigned int pPosition);
2922add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao
3022add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  bool activate(InputBuilder& pBuilder) const;
3122add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao};
3222add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao
3322add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao/** \class MemoryAreaAction
3422add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao *  \brief MemoryAreaAction is a command object to create input's MemoryArea.
3522add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao */
3622add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liaoclass MemoryAreaAction : public InputAction
3722add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao{
3822add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liaopublic:
3922add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  MemoryAreaAction(unsigned int pPosition,
4022add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao                   FileHandle::OpenMode pMode,
4122add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao                   FileHandle::Permission pPerm = FileHandle::System);
4222add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao
4322add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  bool activate(InputBuilder& pBuilder) const;
4422add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao
4522add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liaoprivate:
4622add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  FileHandle::OpenMode m_Mode;
4722add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  FileHandle::Permission m_Permission;
4822add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao};
4922add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao
5022add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao} // end of namespace mcld
5122add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao
5222add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao#endif
5322add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao
54