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//===----------------------------------------------------------------------===// 9f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines#ifndef MCLD_SCRIPT_RPNEVALUATOR_H 10f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines#define MCLD_SCRIPT_RPNEVALUATOR_H 11f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines 12f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hinesnamespace mcld { 13f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines 14f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hinesclass RpnExpr; 15f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hinesclass Module; 16f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hinesclass TargetLDBackend; 17f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines 18f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines/** \class RpnEvaluator 19f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines * \brief RpnEvaluator evaluate a rpn expression 20f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines */ 21f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hinesclass RpnEvaluator 22f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines{ 23f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hinespublic: 24f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines RpnEvaluator(const Module& pModule, const TargetLDBackend& pBackend); 25f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines 26f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines // evaluate a valid expression and set the value in the second parameter 27f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines bool eval(const RpnExpr& pExpr, uint64_t& pResult); 28f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines 29f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hinesprivate: 30f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines const Module& m_Module; 31f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines const TargetLDBackend& m_Backend; 32f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines}; 33f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines 34f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines} // mcld 35f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines 36f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines#endif 37