187f34658dec9097d987d254a990ea7f311bfc95fStephen Hines//===- NullaryOp.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_NULLARYOP_H_ 1037b74a387bb3993387029859c2d9d051c41c724eStephen Hines#define MCLD_SCRIPT_NULLARYOP_H_ 1137b74a387bb3993387029859c2d9d051c41c724eStephen Hines 1237b74a387bb3993387029859c2d9d051c41c724eStephen Hines#include "mcld/Script/Operator.h" 1387f34658dec9097d987d254a990ea7f311bfc95fStephen Hines 1487f34658dec9097d987d254a990ea7f311bfc95fStephen Hines#include <cassert> 1587f34658dec9097d987d254a990ea7f311bfc95fStephen Hines 1637b74a387bb3993387029859c2d9d051c41c724eStephen Hinesnamespace mcld { 1787f34658dec9097d987d254a990ea7f311bfc95fStephen Hines 1887f34658dec9097d987d254a990ea7f311bfc95fStephen Hinesclass Operand; 1987f34658dec9097d987d254a990ea7f311bfc95fStephen Hinesclass IntOperand; 2087f34658dec9097d987d254a990ea7f311bfc95fStephen Hinesclass Module; 2187f34658dec9097d987d254a990ea7f311bfc95fStephen Hinesclass TargetLDBackend; 2287f34658dec9097d987d254a990ea7f311bfc95fStephen Hines 2387f34658dec9097d987d254a990ea7f311bfc95fStephen Hines/** \class NullaryOp 2487f34658dec9097d987d254a990ea7f311bfc95fStephen Hines * \brief This class defines the interfaces to an nullary operator token. 2587f34658dec9097d987d254a990ea7f311bfc95fStephen Hines */ 2687f34658dec9097d987d254a990ea7f311bfc95fStephen Hines 2737b74a387bb3993387029859c2d9d051c41c724eStephen Hinestemplate <Operator::Type TYPE> 2837b74a387bb3993387029859c2d9d051c41c724eStephen Hinesclass NullaryOp : public Operator { 2937b74a387bb3993387029859c2d9d051c41c724eStephen Hines private: 3087f34658dec9097d987d254a990ea7f311bfc95fStephen Hines friend class Operator; 3187f34658dec9097d987d254a990ea7f311bfc95fStephen Hines 3237b74a387bb3993387029859c2d9d051c41c724eStephen Hines NullaryOp() : Operator(Operator::NULLARY, TYPE) {} 3387f34658dec9097d987d254a990ea7f311bfc95fStephen Hines 3437b74a387bb3993387029859c2d9d051c41c724eStephen Hines public: 3537b74a387bb3993387029859c2d9d051c41c724eStephen Hines ~NullaryOp() {} 3687f34658dec9097d987d254a990ea7f311bfc95fStephen Hines 3787f34658dec9097d987d254a990ea7f311bfc95fStephen Hines IntOperand* eval(const Module& pModule, const TargetLDBackend& pBackend); 3887f34658dec9097d987d254a990ea7f311bfc95fStephen Hines 3937b74a387bb3993387029859c2d9d051c41c724eStephen Hines void appendOperand(Operand* pOperand) { assert(0); } 4087f34658dec9097d987d254a990ea7f311bfc95fStephen Hines}; 4187f34658dec9097d987d254a990ea7f311bfc95fStephen Hines 4237b74a387bb3993387029859c2d9d051c41c724eStephen Hinestemplate <> 4387f34658dec9097d987d254a990ea7f311bfc95fStephen HinesIntOperand* NullaryOp<Operator::SIZEOF_HEADERS>::eval(const Module&, 4487f34658dec9097d987d254a990ea7f311bfc95fStephen Hines const TargetLDBackend&); 4537b74a387bb3993387029859c2d9d051c41c724eStephen Hinestemplate <> 4687f34658dec9097d987d254a990ea7f311bfc95fStephen HinesIntOperand* NullaryOp<Operator::MAXPAGESIZE>::eval(const Module&, 4787f34658dec9097d987d254a990ea7f311bfc95fStephen Hines const TargetLDBackend&); 4887f34658dec9097d987d254a990ea7f311bfc95fStephen Hines 4937b74a387bb3993387029859c2d9d051c41c724eStephen Hinestemplate <> 5087f34658dec9097d987d254a990ea7f311bfc95fStephen HinesIntOperand* NullaryOp<Operator::COMMONPAGESIZE>::eval(const Module&, 5187f34658dec9097d987d254a990ea7f311bfc95fStephen Hines const TargetLDBackend&); 5287f34658dec9097d987d254a990ea7f311bfc95fStephen Hines 5337b74a387bb3993387029859c2d9d051c41c724eStephen Hines} // namespace mcld 5487f34658dec9097d987d254a990ea7f311bfc95fStephen Hines 5537b74a387bb3993387029859c2d9d051c41c724eStephen Hines#endif // MCLD_SCRIPT_NULLARYOP_H_ 56