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