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.
69 lines
1.9 KiB
69 lines
1.9 KiB
//===- SectionsCmd.h ------------------------------------------------------===//
|
|
//
|
|
// The MCLinker Project
|
|
//
|
|
// This file is distributed under the University of Illinois Open Source
|
|
// License. See LICENSE.TXT for details.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
#ifndef MCLD_SCRIPT_SECTIONSCMD_H_
|
|
#define MCLD_SCRIPT_SECTIONSCMD_H_
|
|
|
|
#include "mcld/Script/ScriptCommand.h"
|
|
|
|
#include <llvm/Support/DataTypes.h>
|
|
|
|
#include <vector>
|
|
|
|
namespace mcld {
|
|
|
|
class Module;
|
|
|
|
/** \class SectionsCmd
|
|
* \brief This class defines the interfaces to SECTIONS command.
|
|
*/
|
|
|
|
class SectionsCmd : public ScriptCommand {
|
|
public:
|
|
typedef std::vector<ScriptCommand*> SectionCommands;
|
|
typedef SectionCommands::const_iterator const_iterator;
|
|
typedef SectionCommands::iterator iterator;
|
|
typedef SectionCommands::const_reference const_reference;
|
|
typedef SectionCommands::reference reference;
|
|
|
|
public:
|
|
SectionsCmd();
|
|
~SectionsCmd();
|
|
|
|
const_iterator begin() const { return m_SectionCommands.begin(); }
|
|
iterator begin() { return m_SectionCommands.begin(); }
|
|
const_iterator end() const { return m_SectionCommands.end(); }
|
|
iterator end() { return m_SectionCommands.end(); }
|
|
|
|
const_reference front() const { return m_SectionCommands.front(); }
|
|
reference front() { return m_SectionCommands.front(); }
|
|
const_reference back() const { return m_SectionCommands.back(); }
|
|
reference back() { return m_SectionCommands.back(); }
|
|
|
|
size_t size() const { return m_SectionCommands.size(); }
|
|
|
|
bool empty() const { return m_SectionCommands.empty(); }
|
|
|
|
void dump() const;
|
|
|
|
static bool classof(const ScriptCommand* pCmd) {
|
|
return pCmd->getKind() == ScriptCommand::SECTIONS;
|
|
}
|
|
|
|
void activate(Module& pModule);
|
|
|
|
void push_back(ScriptCommand* pCommand);
|
|
|
|
private:
|
|
SectionCommands m_SectionCommands;
|
|
};
|
|
|
|
} // namespace mcld
|
|
|
|
#endif // MCLD_SCRIPT_SECTIONSCMD_H_
|