xref: /openbmc/entity-manager/src/entity_manager/expression.hpp (revision 4e1142d6f418f48ea260132ebb5a4995b2310c90)
1*4e1142d6SAlexander Hansen // SPDX-License-Identifier: Apache-2.0
2*4e1142d6SAlexander Hansen // SPDX-FileCopyrightText: Copyright 2017 Intel Corporation, 2022 IBM Corp.
359ef1e72SChristopher Meis 
459ef1e72SChristopher Meis #pragma once
559ef1e72SChristopher Meis 
659ef1e72SChristopher Meis #include <optional>
759ef1e72SChristopher Meis #include <string>
859ef1e72SChristopher Meis #include <vector>
959ef1e72SChristopher Meis 
1059ef1e72SChristopher Meis namespace expression
1159ef1e72SChristopher Meis {
1259ef1e72SChristopher Meis enum class Operation
1359ef1e72SChristopher Meis {
1459ef1e72SChristopher Meis     addition,
1559ef1e72SChristopher Meis     division,
1659ef1e72SChristopher Meis     multiplication,
1759ef1e72SChristopher Meis     subtraction,
1859ef1e72SChristopher Meis     modulo,
1959ef1e72SChristopher Meis };
2059ef1e72SChristopher Meis 
2159ef1e72SChristopher Meis std::optional<Operation> parseOperation(const std::string& op);
2259ef1e72SChristopher Meis int evaluate(int a, Operation op, int b);
2359ef1e72SChristopher Meis int evaluate(int substitute, std::vector<std::string>::iterator curr,
2459ef1e72SChristopher Meis              std::vector<std::string>::iterator& end);
2559ef1e72SChristopher Meis } // namespace expression
26