You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
67 lines
1.9 KiB
67 lines
1.9 KiB
//===- GroupReader.h ------------------------------------------------------===//
|
|
//
|
|
// The MCLinker Project
|
|
//
|
|
// This file is distributed under the University of Illinois Open Source
|
|
// License. See LICENSE.TXT for details.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
#ifndef MCLD_LD_GROUPREADER_H_
|
|
#define MCLD_LD_GROUPREADER_H_
|
|
|
|
#include "mcld/Module.h"
|
|
|
|
namespace mcld {
|
|
class Archive;
|
|
class ArchiveReader;
|
|
class BinaryReader;
|
|
class DynObjReader;
|
|
class InputBuilder;
|
|
class LinkerConfig;
|
|
class ObjectReader;
|
|
|
|
/** \class GroupReader
|
|
* \brief GroupReader handles the Group Node in InputTree
|
|
*
|
|
* Group Node is the root of sub-tree in InputTree which includes the iputs in
|
|
* the command line options --start-group and --end-group options
|
|
*/
|
|
class GroupReader {
|
|
public:
|
|
GroupReader(Module& pModule,
|
|
ObjectReader& pObjectReader,
|
|
DynObjReader& pDynObjReader,
|
|
ArchiveReader& pArchiveReader,
|
|
BinaryReader& pBinaryReader);
|
|
|
|
~GroupReader();
|
|
|
|
/// readGroup - handle the input sub-tree wich its root is pRoot
|
|
/// @param pRoot - the root Group node of the sub-tree
|
|
bool readGroup(Module::input_iterator pRoot,
|
|
Module::input_iterator pEnd,
|
|
InputBuilder& pBuilder,
|
|
const LinkerConfig& pConfig);
|
|
|
|
private:
|
|
/// ArchiveListEntry - record the Archive and the corresponding input iterator
|
|
/// of the archive node
|
|
struct ArchiveListEntry {
|
|
ArchiveListEntry(Archive& pArchive, Module::input_iterator pIterator)
|
|
: archive(pArchive), input(pIterator) {}
|
|
Archive& archive;
|
|
Module::input_iterator input;
|
|
};
|
|
|
|
private:
|
|
Module& m_Module;
|
|
ObjectReader& m_ObjectReader;
|
|
DynObjReader& m_DynObjReader;
|
|
ArchiveReader& m_ArchiveReader;
|
|
BinaryReader& m_BinaryReader;
|
|
};
|
|
|
|
} // namespace mcld
|
|
|
|
#endif // MCLD_LD_GROUPREADER_H_
|