1cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao//===- Fragment.cpp -------------------------------------------------------===//
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
1022add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao#include <mcld/Fragment/Fragment.h>
11cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao
12cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao#include <llvm/Support/DataTypes.h>
13cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao
14cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao#include <mcld/LD/SectionData.h>
15cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao
16cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liaousing namespace mcld;
17cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao
18cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao//===----------------------------------------------------------------------===//
19cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao// Fragment
20cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao//===----------------------------------------------------------------------===//
21cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei LiaoFragment::Fragment()
2222add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  : m_Kind(Type(~0)), m_pParent(NULL), m_Offset(~uint64_t(0)) {
23cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao}
24cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao
25cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei LiaoFragment::Fragment(Type pKind, SectionData *pParent)
2622add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  : m_Kind(pKind), m_pParent(pParent), m_Offset(~uint64_t(0)) {
27cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao  if (NULL != m_pParent)
28cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao    m_pParent->getFragmentList().push_back(this);
29cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao}
30cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao
31cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei LiaoFragment::~Fragment()
32cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao{
33cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao}
34cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao
3522add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liaouint64_t Fragment::getOffset() const
3622add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao{
3722add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  assert(hasOffset() && "Cannot getOffset() before setting it up.");
3822add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  return m_Offset;
3922add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao}
4022add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao
4122add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liaobool Fragment::hasOffset() const
4222add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao{
4322add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao  return (m_Offset != ~uint64_t(0));
4422add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao}
4522add6ff3426df1a85089fe6a6e1597ee3b6f300Shih-wei Liao
46