1//===- Fragment.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
10#include <mcld/Fragment/Fragment.h>
11
12#include <llvm/Support/DataTypes.h>
13
14#include <mcld/LD/SectionData.h>
15
16using namespace mcld;
17
18//===----------------------------------------------------------------------===//
19// Fragment
20//===----------------------------------------------------------------------===//
21Fragment::Fragment()
22  : m_Kind(Type(~0)), m_pParent(NULL), m_Offset(~uint64_t(0)) {
23}
24
25Fragment::Fragment(Type pKind, SectionData *pParent)
26  : m_Kind(pKind), m_pParent(pParent), m_Offset(~uint64_t(0)) {
27  if (NULL != m_pParent)
28    m_pParent->getFragmentList().push_back(this);
29}
30
31Fragment::~Fragment()
32{
33}
34
35uint64_t Fragment::getOffset() const
36{
37  assert(hasOffset() && "Cannot getOffset() before setting it up.");
38  return m_Offset;
39}
40
41bool Fragment::hasOffset() const
42{
43  return (m_Offset != ~uint64_t(0));
44}
45
46