From 6e6e7581b4c8575dd379f20a786108ce4edcd9c8 Mon Sep 17 00:00:00 2001 From: Sam Anthony Date: Wed, 1 Feb 2023 19:50:32 -0330 Subject: refactor --- src/lib.rs | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) (limited to 'src/lib.rs') diff --git a/src/lib.rs b/src/lib.rs index e08796d..79210fc 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,5 +1,40 @@ +mod input; pub mod ui; +#[derive(Default)] +pub struct Calculator { + stack: Vec, + input_buffer: String, +} + +impl Calculator { + fn push_buffer_to_stack(&mut self) { + self.stack.push(self.input_buffer.parse::().unwrap()); + self.input_buffer = String::new(); + } + + fn perform_operation(&mut self, op: Operator) { + let rhs = match self.stack.pop() { + Some(f) => f, + None => { + return; + } + }; + let lhs = match self.stack.pop() { + Some(f) => f, + None => { + return; + } + }; + match op { + Operator::Add => self.stack.push(lhs + rhs), + Operator::Sub => self.stack.push(lhs - rhs), + Operator::Mul => self.stack.push(lhs * rhs), + Operator::Div => self.stack.push(lhs / rhs), + } + } +} + pub enum Operator { Add, Sub, @@ -20,3 +55,8 @@ impl Operator { } pub struct ParseOperatorError(char); + +pub enum Signal { + None, + Exit, +} -- cgit v1.2.3