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//===----------------------------------------------------------------------===// 937b74a387bb3993387029859c2d9d051c41c724eStephen Hines#ifndef MCLD_SCRIPT_SCRIPTCOMMAND_H_ 1037b74a387bb3993387029859c2d9d051c41c724eStephen Hines#define MCLD_SCRIPT_SCRIPTCOMMAND_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 */ 1937b74a387bb3993387029859c2d9d051c41c724eStephen Hinesclass ScriptCommand { 2037b74a387bb3993387029859c2d9d051c41c724eStephen Hines public: 2187f34658dec9097d987d254a990ea7f311bfc95fStephen Hines enum Kind { 2237b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSERT, 2337b74a387bb3993387029859c2d9d051c41c724eStephen Hines ASSIGNMENT, 2487f34658dec9097d987d254a990ea7f311bfc95fStephen Hines ENTRY, 2587f34658dec9097d987d254a990ea7f311bfc95fStephen Hines GROUP, 2637b74a387bb3993387029859c2d9d051c41c724eStephen Hines INPUT, 2737b74a387bb3993387029859c2d9d051c41c724eStephen Hines INPUT_SECT_DESC, 2887f34658dec9097d987d254a990ea7f311bfc95fStephen Hines OUTPUT, 2987f34658dec9097d987d254a990ea7f311bfc95fStephen Hines OUTPUT_ARCH, 3037b74a387bb3993387029859c2d9d051c41c724eStephen Hines OUTPUT_FORMAT, 3137b74a387bb3993387029859c2d9d051c41c724eStephen Hines SEARCH_DIR, 3287f34658dec9097d987d254a990ea7f311bfc95fStephen Hines OUTPUT_SECT_DESC, 3337b74a387bb3993387029859c2d9d051c41c724eStephen Hines SECTIONS 3487f34658dec9097d987d254a990ea7f311bfc95fStephen Hines }; 3587f34658dec9097d987d254a990ea7f311bfc95fStephen Hines 3637b74a387bb3993387029859c2d9d051c41c724eStephen Hines protected: 3737b74a387bb3993387029859c2d9d051c41c724eStephen Hines explicit ScriptCommand(Kind pKind) : m_Kind(pKind) {} 3887f34658dec9097d987d254a990ea7f311bfc95fStephen Hines 3937b74a387bb3993387029859c2d9d051c41c724eStephen Hines public: 4087f34658dec9097d987d254a990ea7f311bfc95fStephen Hines virtual ~ScriptCommand() = 0; 4187f34658dec9097d987d254a990ea7f311bfc95fStephen Hines 4287f34658dec9097d987d254a990ea7f311bfc95fStephen Hines virtual void dump() const = 0; 4387f34658dec9097d987d254a990ea7f311bfc95fStephen Hines 4487f34658dec9097d987d254a990ea7f311bfc95fStephen Hines virtual void activate(Module&) = 0; 4587f34658dec9097d987d254a990ea7f311bfc95fStephen Hines 4687f34658dec9097d987d254a990ea7f311bfc95fStephen Hines Kind getKind() const { return m_Kind; } 4787f34658dec9097d987d254a990ea7f311bfc95fStephen Hines 4837b74a387bb3993387029859c2d9d051c41c724eStephen Hines private: 4987f34658dec9097d987d254a990ea7f311bfc95fStephen Hines Kind m_Kind; 5087f34658dec9097d987d254a990ea7f311bfc95fStephen Hines}; 5187f34658dec9097d987d254a990ea7f311bfc95fStephen Hines 5237b74a387bb3993387029859c2d9d051c41c724eStephen Hines} // namespace mcld 5387f34658dec9097d987d254a990ea7f311bfc95fStephen Hines 5437b74a387bb3993387029859c2d9d051c41c724eStephen Hines#endif // MCLD_SCRIPT_SCRIPTCOMMAND_H_ 55