blob: 98cb64f834cebdc83faa5226bac1786a2c12077d [file] [log] [blame]
Yifan Hong52165692016-08-12 18:06:40 -07001#ifndef CONSTANT_EXPRESSION_H_
2
3#define CONSTANT_EXPRESSION_H_
4
5#include <android-base/macros.h>
6#include <string>
7
8namespace android {
9
10
11/**
12 * A constant expression is represented by a tree.
13 */
14struct ConstantExpression {
15 /* Literals, identifiers */
16 ConstantExpression(const char *value);
17 /* binary operations */
18 ConstantExpression(const ConstantExpression *value1,
19 const char *op, const ConstantExpression* value2);
20 /* unary operations */
21 ConstantExpression(const char *op, const ConstantExpression *value);
22 /* ternary ?: */
23 ConstantExpression(const ConstantExpression *cond,
24 const ConstantExpression *trueVal,
25 const ConstantExpression *falseVal);
26
27 /* Original expression. */
28 const char *c_str() const;
29 /* Evaluated result. */
30 const char *value() const;
31
32private:
33 std::string mValue;
34
35 DISALLOW_COPY_AND_ASSIGN(ConstantExpression);
36};
37
38} // namespace android
39
40#endif // CONSTANT_EXPRESSION_H_