xref: /openbmc/entity-manager/src/entity_manager/expression.hpp (revision 4e1142d6f418f48ea260132ebb5a4995b2310c90)
1 // SPDX-License-Identifier: Apache-2.0
2 // SPDX-FileCopyrightText: Copyright 2017 Intel Corporation, 2022 IBM Corp.
3 
4 #pragma once
5 
6 #include <optional>
7 #include <string>
8 #include <vector>
9 
10 namespace expression
11 {
12 enum class Operation
13 {
14     addition,
15     division,
16     multiplication,
17     subtraction,
18     modulo,
19 };
20 
21 std::optional<Operation> parseOperation(const std::string& op);
22 int evaluate(int a, Operation op, int b);
23 int evaluate(int substitute, std::vector<std::string>::iterator curr,
24              std::vector<std::string>::iterator& end);
25 } // namespace expression
26