1cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao//===- RegionFragment.h ---------------------------------------------------===//
2cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao//
3cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao//                     The MCLinker Project
4cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao//
5cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao// This file is distributed under the University of Illinois Open Source
6cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao// License. See LICENSE.TXT for details.
7cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao//
8cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao//===----------------------------------------------------------------------===//
9cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao#ifndef MCLD_LD_REGION_FRAGMENT_H
10cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao#define MCLD_LD_REGION_FRAGMENT_H
11cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao#ifdef ENABLE_UNITTEST
12cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao#include <gtest.h>
13cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao#endif
14cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao
1522add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao#include <mcld/Fragment/Fragment.h>
16cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao
1722add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liaonamespace mcld {
1822add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao
1922add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liaoclass MemoryRegion;
20cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao
21cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao/** \class RegionFragment
22cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao *  \brief RegionFragment is a kind of Fragment containing mcld::MemoryRegion
23cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao */
24cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liaoclass RegionFragment : public Fragment
25cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao{
26cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liaopublic:
27cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao  RegionFragment(MemoryRegion& pRegion, SectionData* pSD = NULL);
28cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao
29cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao  ~RegionFragment();
30cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao
3122add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  const MemoryRegion& getRegion() const { return m_Region; }
3222add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  MemoryRegion&       getRegion()       { return m_Region; }
33cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao
34cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao  static bool classof(const Fragment *F)
35cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao  { return F->getKind() == Fragment::Region; }
36cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao
37cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao  static bool classof(const RegionFragment *)
38cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao  { return true; }
39cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao
4022add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  size_t size() const;
4122add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao
42cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liaoprivate:
43cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao  MemoryRegion& m_Region;
44cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao};
45cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao
46cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao} // namespace of mcld
47cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao
48cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao#endif
49cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao
50