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