1f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines//===- RpnEvaluator.h -----------------------------------------------------===// 2f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines// 3f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines// The MCLinker Project 4f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines// 5f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines// This file is distributed under the University of Illinois Open Source 6f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines// License. See LICENSE.TXT for details. 7f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines// 8f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines//===----------------------------------------------------------------------===// 937b74a387bb3993387029859c2d9d051c41c724eStephen Hines#ifndef MCLD_SCRIPT_RPNEVALUATOR_H_ 1037b74a387bb3993387029859c2d9d051c41c724eStephen Hines#define MCLD_SCRIPT_RPNEVALUATOR_H_ 1137b74a387bb3993387029859c2d9d051c41c724eStephen Hines 1237b74a387bb3993387029859c2d9d051c41c724eStephen Hines#include <cstdint> 13f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines 14f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hinesnamespace mcld { 15f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines 16f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hinesclass Module; 1737b74a387bb3993387029859c2d9d051c41c724eStephen Hinesclass RpnExpr; 18f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hinesclass TargetLDBackend; 19f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines 20f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines/** \class RpnEvaluator 21f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines * \brief RpnEvaluator evaluate a rpn expression 22f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines */ 2337b74a387bb3993387029859c2d9d051c41c724eStephen Hinesclass RpnEvaluator { 2437b74a387bb3993387029859c2d9d051c41c724eStephen Hines public: 25f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines RpnEvaluator(const Module& pModule, const TargetLDBackend& pBackend); 26f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines 27f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines // evaluate a valid expression and set the value in the second parameter 28f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines bool eval(const RpnExpr& pExpr, uint64_t& pResult); 29f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines 3037b74a387bb3993387029859c2d9d051c41c724eStephen Hines private: 31f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines const Module& m_Module; 32f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines const TargetLDBackend& m_Backend; 33f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines}; 34f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines 3537b74a387bb3993387029859c2d9d051c41c724eStephen Hines} // namespace mcld 36f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines 3737b74a387bb3993387029859c2d9d051c41c724eStephen Hines#endif // MCLD_SCRIPT_RPNEVALUATOR_H_ 38