187f34658dec9097d987d254a990ea7f311bfc95fStephen Hines//===- ScriptCommand.h ----------------------------------------------------===//
287f34658dec9097d987d254a990ea7f311bfc95fStephen Hines//
387f34658dec9097d987d254a990ea7f311bfc95fStephen Hines//                     The MCLinker Project
487f34658dec9097d987d254a990ea7f311bfc95fStephen Hines//
587f34658dec9097d987d254a990ea7f311bfc95fStephen Hines// This file is distributed under the University of Illinois Open Source
687f34658dec9097d987d254a990ea7f311bfc95fStephen Hines// License. See LICENSE.TXT for details.
787f34658dec9097d987d254a990ea7f311bfc95fStephen Hines//
887f34658dec9097d987d254a990ea7f311bfc95fStephen Hines//===----------------------------------------------------------------------===//
987f34658dec9097d987d254a990ea7f311bfc95fStephen Hines#ifndef MCLD_SCRIPT_COMMAND_H
1087f34658dec9097d987d254a990ea7f311bfc95fStephen Hines#define MCLD_SCRIPT_COMMAND_H
1187f34658dec9097d987d254a990ea7f311bfc95fStephen Hines
1287f34658dec9097d987d254a990ea7f311bfc95fStephen Hinesnamespace mcld {
1387f34658dec9097d987d254a990ea7f311bfc95fStephen Hines
1487f34658dec9097d987d254a990ea7f311bfc95fStephen Hinesclass Module;
1587f34658dec9097d987d254a990ea7f311bfc95fStephen Hines
1687f34658dec9097d987d254a990ea7f311bfc95fStephen Hines/** \class ScriptCommand
1787f34658dec9097d987d254a990ea7f311bfc95fStephen Hines *  \brief This class defines the interfaces to a script command.
1887f34658dec9097d987d254a990ea7f311bfc95fStephen Hines */
1987f34658dec9097d987d254a990ea7f311bfc95fStephen Hinesclass ScriptCommand
2087f34658dec9097d987d254a990ea7f311bfc95fStephen Hines{
2187f34658dec9097d987d254a990ea7f311bfc95fStephen Hinespublic:
2287f34658dec9097d987d254a990ea7f311bfc95fStephen Hines  enum Kind {
2387f34658dec9097d987d254a990ea7f311bfc95fStephen Hines    ENTRY,
2487f34658dec9097d987d254a990ea7f311bfc95fStephen Hines    OUTPUT_FORMAT,
2587f34658dec9097d987d254a990ea7f311bfc95fStephen Hines    GROUP,
2687f34658dec9097d987d254a990ea7f311bfc95fStephen Hines    OUTPUT,
2787f34658dec9097d987d254a990ea7f311bfc95fStephen Hines    SEARCH_DIR,
2887f34658dec9097d987d254a990ea7f311bfc95fStephen Hines    OUTPUT_ARCH,
2987f34658dec9097d987d254a990ea7f311bfc95fStephen Hines    ASSERT,
3087f34658dec9097d987d254a990ea7f311bfc95fStephen Hines    ASSIGNMENT,
3187f34658dec9097d987d254a990ea7f311bfc95fStephen Hines    SECTIONS,
3287f34658dec9097d987d254a990ea7f311bfc95fStephen Hines    OUTPUT_SECT_DESC,
3387f34658dec9097d987d254a990ea7f311bfc95fStephen Hines    INPUT_SECT_DESC
3487f34658dec9097d987d254a990ea7f311bfc95fStephen Hines  };
3587f34658dec9097d987d254a990ea7f311bfc95fStephen Hines
3687f34658dec9097d987d254a990ea7f311bfc95fStephen Hinesprotected:
3787f34658dec9097d987d254a990ea7f311bfc95fStephen Hines  ScriptCommand(Kind pKind)
3887f34658dec9097d987d254a990ea7f311bfc95fStephen Hines    : m_Kind(pKind)
3987f34658dec9097d987d254a990ea7f311bfc95fStephen Hines  {}
4087f34658dec9097d987d254a990ea7f311bfc95fStephen Hines
4187f34658dec9097d987d254a990ea7f311bfc95fStephen Hinespublic:
4287f34658dec9097d987d254a990ea7f311bfc95fStephen Hines  virtual ~ScriptCommand() = 0;
4387f34658dec9097d987d254a990ea7f311bfc95fStephen Hines
4487f34658dec9097d987d254a990ea7f311bfc95fStephen Hines  virtual void dump() const = 0;
4587f34658dec9097d987d254a990ea7f311bfc95fStephen Hines
4687f34658dec9097d987d254a990ea7f311bfc95fStephen Hines  virtual void activate(Module&) = 0;
4787f34658dec9097d987d254a990ea7f311bfc95fStephen Hines
4887f34658dec9097d987d254a990ea7f311bfc95fStephen Hines  Kind getKind() const { return m_Kind; }
4987f34658dec9097d987d254a990ea7f311bfc95fStephen Hines
5087f34658dec9097d987d254a990ea7f311bfc95fStephen Hinesprivate:
5187f34658dec9097d987d254a990ea7f311bfc95fStephen Hines  Kind m_Kind;
5287f34658dec9097d987d254a990ea7f311bfc95fStephen Hines};
5387f34658dec9097d987d254a990ea7f311bfc95fStephen Hines
5487f34658dec9097d987d254a990ea7f311bfc95fStephen Hines} // namespace of mcld
5587f34658dec9097d987d254a990ea7f311bfc95fStephen Hines
5687f34658dec9097d987d254a990ea7f311bfc95fStephen Hines#endif
5787f34658dec9097d987d254a990ea7f311bfc95fStephen Hines
58