1cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao//===- TargetFragment.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
10cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao#ifndef MCLD_LD_TARGET_FRAGMENT_H
11cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao#define MCLD_LD_TARGET_FRAGMENT_H
12cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao#ifdef ENABLE_UNITTEST
13cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao#include <gtest.h>
14cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao#endif
15cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao
16cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao#include <mcld/LD/Fragment.h>
17cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao
18cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liaonamespace mcld
19cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao{
20cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao
21cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liaoclass SectionData;
22cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao
23cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao/** \class TargetFragment
24cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao *  \brief TargetFragment is a kind of MCFragment inherited by
25cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao *  target-depedent Fragment.
26cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao */
27cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liaoclass TargetFragment : public Fragment
28cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao{
29cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liaoprotected:
30cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao  TargetFragment(Fragment::Type pKind, SectionData* pSD = NULL)
31cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao    : Fragment(pKind, pSD) {}
32cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao
33cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liaopublic:
34cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao  virtual ~TargetFragment() {}
35cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao
36cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao  virtual size_t getSize() const = 0;
37cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao
38cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liaopublic:
39cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao  static bool classof(const Fragment *F)
40cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao  { return F->getKind() == Fragment::Target; }
41cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao
42cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao  static bool classof(const TargetFragment *)
43cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao  { return true; }
44cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao};
45cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao
46cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao} // namespace of mcld
47cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao
48cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao#endif
49cedee4b38f4786845183be7f5916dd520a170ae0Shih-wei Liao
50