Files
calculator-challenge/BinaryOperatorFactory.hpp
2024-03-13 01:55:14 +00:00

33 lines
941 B
C++

#ifndef CALCULATOR_CHALLENGE_BINARYOPERATORFACTORY_HPP
#define CALCULATOR_CHALLENGE_BINARYOPERATORFACTORY_HPP
#include <optional>
#include <string>
#include <string_view>
#include <unordered_map>
#include "Operand.hpp"
template<typename T>
class BinaryOperatorFactory
{
using Operator = BinaryOperatorType<T>;
public:
BinaryOperatorFactory() noexcept;
BinaryOperatorFactory(const BinaryOperatorFactory&) noexcept = delete;
BinaryOperatorFactory(BinaryOperatorFactory&&) noexcept = delete;
auto operator=(const BinaryOperatorFactory&) noexcept -> BinaryOperatorFactory& = delete;
auto operator=(BinaryOperatorFactory&&) noexcept -> BinaryOperatorFactory& = delete;
~BinaryOperatorFactory() noexcept = default;
auto make(std::string_view text) noexcept -> std::optional<Operator>;
private:
std::unordered_map<std::string, Operator> _binary_operations;
};
#include "BinaryOperatorFactory.tcc"
#endif