calculator/src/CalcManager/ExpressionCommandInterface.h
Howard Wolosky c13b8a099e Hello GitHub
2019-01-28 16:24:37 -08:00

56 lines
1.5 KiB
C++

// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
#pragma once
#include "CalculatorVector.h"
#include "Command.h"
class ISerializeCommandVisitor;
class IExpressionCommand
{
public:
virtual CalculationManager::CommandType GetCommandType() const = 0;
virtual void Accept(_In_ ISerializeCommandVisitor &commandVisitor) = 0;
};
class IOperatorCommand : public IExpressionCommand
{
public:
virtual void SetCommand(int command) = 0;
};
class IUnaryCommand : public IOperatorCommand
{
public:
virtual const std::shared_ptr<CalculatorVector<int>> & GetCommands() const = 0;
virtual void SetCommands(int command1, int command2) = 0;
};
class IBinaryCommand : public IOperatorCommand
{
public:
virtual void SetCommand(int command) = 0;
virtual int GetCommand() const = 0;
};
class IOpndCommand : public IExpressionCommand
{
public:
virtual const std::shared_ptr<CalculatorVector<int>> & GetCommands() const= 0;
virtual void AppendCommand(int command) = 0;
virtual void ToggleSign() = 0;
virtual void RemoveFromEnd() = 0;
virtual bool IsNegative() const = 0;
virtual bool IsSciFmt() const = 0;
virtual bool IsDecimalPresent() const = 0;
virtual const std::wstring & GetToken(wchar_t decimalSymbol) = 0;
virtual void SetCommands(std::shared_ptr<CalculatorVector<int>> const& commands) = 0;
};
class IParenthesisCommand : public IExpressionCommand
{
public:
virtual int GetCommand() const = 0;
};