1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-27 17:57:35 +00:00

Calculator: Add a simple calculator app

Closes https://github.com/SerenityOS/serenity/issues/319
This commit is contained in:
Sergey Bugaev 2019-08-09 13:55:20 +03:00 committed by Andreas Kling
parent 79f867238a
commit ccb482d1a7
10 changed files with 611 additions and 0 deletions

View file

@ -0,0 +1,46 @@
#pragma once
// This type implements the regular calculator
// behavior, such as performing arithmetic
// operations and providing a memory cell.
// It does not deal with number input; you
// have to pass in already parsed double
// values.
class Calculator final {
public:
Calculator();
~Calculator();
enum class Operation {
None,
Add,
Subtract,
Multiply,
Divide,
Sqrt,
Inverse,
Percent,
ToggleSign,
MemClear,
MemRecall,
MemSave,
MemAdd
};
double begin_operation(Operation, double);
double finish_operation(double);
bool has_error() const { return m_has_error; }
void clear_operation();
void clear_error() { m_has_error = false; }
private:
Operation m_operation_in_progress { Operation::None };
double m_saved_argument { 0.0 };
double m_mem { 0.0 };
bool m_has_error { false };
};