aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSam Anthony <sam@samanthony.xyz>2024-02-05 11:47:07 -0500
committerSam Anthony <sam@samanthony.xyz>2024-02-05 11:47:07 -0500
commit8f62185202f18d969c6db0725e7024ad93d34564 (patch)
tree072c731a6834559c85d1d253d0094d16594cb08e
parent6ea734a324e3e5b33f9a7c7fe9882968a0657f85 (diff)
downloadpfc-8f62185202f18d969c6db0725e7024ad93d34564.zip
make functions that modify Calculator take pointer parameter
-rw-r--r--func.go16
-rw-r--r--ui.go2
2 files changed, 9 insertions, 9 deletions
diff --git a/func.go b/func.go
index 676e7a1..039cb4f 100644
--- a/func.go
+++ b/func.go
@@ -6,7 +6,7 @@ import (
)
// parseFunction returns nil is fn is not a valid function.
-func parseFunction(fn string) func(Calculator) {
+func parseFunction(fn string) func(*Calculator) {
switch fn {
case "sin", "cos", "tan":
return trig(fn)
@@ -24,8 +24,8 @@ func parseFunction(fn string) func(Calculator) {
// trig returns a closure that performs the trig function specified by fn.
// Panics if fn is not one of "sin", "cos" or "tan".
-func trig(fn string) func(Calculator) {
- return func(c Calculator) {
+func trig(fn string) func(*Calculator) {
+ return func(c *Calculator) {
if len(c.stack) <= 0 {
return
}
@@ -49,8 +49,8 @@ func trig(fn string) func(Calculator) {
// invTrig returns a closure that performs the inverse trig function specified
// by fn. Panics if fn is not one of "asin", "acos" or "atan".
-func invTrig(fn string) func(Calculator) {
- return func(c Calculator) {
+func invTrig(fn string) func(*Calculator) {
+ return func(c *Calculator) {
if len(c.stack) <= 0 {
return
}
@@ -72,21 +72,21 @@ func invTrig(fn string) func(Calculator) {
}
// Convert radians to degrees.
-func deg(c Calculator) {
+func deg(c *Calculator) {
if n, err := c.stack.pop(); err == nil {
c.stack.push(radToDeg(n))
}
}
// Convert degrees to radians.
-func rad(c Calculator) {
+func rad(c *Calculator) {
if n, err := c.stack.pop(); err == nil {
c.stack.push(degToRad(n))
}
}
// Factorial (!).
-func fac(c Calculator) {
+func fac(c *Calculator) {
n, err := c.stack.pop()
if err != nil {
return
diff --git a/ui.go b/ui.go
index 115df33..bd39eaf 100644
--- a/ui.go
+++ b/ui.go
@@ -63,7 +63,7 @@ func (ui UI) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
}
case "enter":
if fn := parseFunction(ui.calc.buf); fn != nil {
- fn(ui.calc)
+ fn(&ui.calc)
} else if v, err := ui.calc.parseBuffer(); err == nil {
ui.calc.stack.push(v)
}