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:
parent
79f867238a
commit
ccb482d1a7
10 changed files with 611 additions and 0 deletions
46
Applications/Calculator/Calculator.h
Normal file
46
Applications/Calculator/Calculator.h
Normal 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 };
|
||||
};
|
Loading…
Add table
Add a link
Reference in a new issue