blob: 00b9cc0135a89443bd8feb90625e079dcceaa07f [file] [log] [blame]
Andrew Jefferya05437e2022-04-07 16:17:21 +09301/*
2// Copyright (c) 2017 Intel Corporation
3// Copyright (c) 2022 IBM Corp.
4//
5// Licensed under the Apache License, Version 2.0 (the "License");
6// you may not use this file except in compliance with the License.
7// You may obtain a copy of the License at
8//
9// http://www.apache.org/licenses/LICENSE-2.0
10//
11// Unless required by applicable law or agreed to in writing, software
12// distributed under the License is distributed on an "AS IS" BASIS,
13// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14// See the License for the specific language governing permissions and
15// limitations under the License.
16*/
17
18#pragma once
19
20#include <optional>
21#include <string>
Andrew Jeffery5ace4e42022-04-07 16:58:30 +093022#include <vector>
Andrew Jefferya05437e2022-04-07 16:17:21 +093023
24namespace expression
25{
26enum class Operation
27{
28 addition,
29 division,
30 multiplication,
31 subtraction,
32 modulo,
33};
34
35std::optional<Operation> parseOperation(std::string& op);
36int evaluate(int a, Operation op, int b);
Andrew Jeffery95559612022-04-07 17:22:47 +093037int evaluate(int substitute, std::vector<std::string>::iterator curr,
38 std::vector<std::string>::iterator& end);
Andrew Jefferya05437e2022-04-07 16:17:21 +093039} // namespace expression