summaryrefslogtreecommitdiff
path: root/generateAppend.go
diff options
context:
space:
mode:
authorJeff Carr <[email protected]>2025-01-11 04:27:45 -0600
committerJeff Carr <[email protected]>2025-01-11 04:27:45 -0600
commit0edc28106a070e7dbb07079c51a3e84da137bfae (patch)
treed0e65c784576784b666f00ac0e96d948a5b913b4 /generateAppend.go
parent1f9e4a682d3acf36aa7ee1279f1f9cc928bcd5fd (diff)
working on LOCK
Diffstat (limited to 'generateAppend.go')
-rw-r--r--generateAppend.go68
1 files changed, 68 insertions, 0 deletions
diff --git a/generateAppend.go b/generateAppend.go
new file mode 100644
index 0000000..5c70316
--- /dev/null
+++ b/generateAppend.go
@@ -0,0 +1,68 @@
+package main
+
+import (
+ "fmt"
+ "io"
+
+ "go.wit.com/log"
+)
+
+// generates Append()
+
+// I like these functions the best.
+func (msg *MsgName) simpleAppend(w io.Writer, FRUIT, APPLES, APPLE string) {
+ LOCK := msg.getLockname("x")
+
+ log.Printf("\t\t(x %s) APPEND(%s)\n", FRUIT, APPLE)
+ // append -- no check at all
+ fmt.Fprintln(w, "// just a simple Append() shortcut (but still uses the mutex lock)")
+ fmt.Fprintln(w, "func (x *"+FRUIT+") Append(y *"+APPLE+") {")
+ fmt.Fprintln(w, " "+LOCK+".Lock()")
+ fmt.Fprintln(w, " defer "+LOCK+".Unlock()")
+ fmt.Fprintln(w, "")
+ fmt.Fprintln(w, " x."+APPLES+" = append(x."+APPLES+", y)")
+ fmt.Fprintln(w, "}")
+ fmt.Fprintln(w, "")
+}
+
+func (msg *MsgName) appendUnique(w io.Writer, FRUIT, APPLES, APPLE string, COLORS []string) {
+ LOCK := msg.getLockname("x")
+
+ fmt.Fprintln(w, "// enforces "+APPLE+" is unique in "+FRUIT+"."+APPLES)
+ fmt.Fprintln(w, "func (x *"+FRUIT+") AppendUnique(newP *"+APPLE+") bool {")
+ fmt.Fprintln(w, " "+LOCK+".Lock()")
+ fmt.Fprintln(w, " defer "+LOCK+".Unlock()")
+ fmt.Fprintln(w, "")
+ fmt.Fprintln(w, " for _, p := range x."+APPLES+" {")
+ for _, COLOR := range COLORS {
+ fmt.Fprintln(w, " if p."+COLOR+" == newP."+COLOR+" {")
+ fmt.Fprintln(w, " return false")
+ fmt.Fprintln(w, " }")
+ }
+ fmt.Fprintln(w, " }")
+ fmt.Fprintln(w, "")
+ fmt.Fprintln(w, " x."+APPLES+" = append(x."+APPLES+", newP)")
+ fmt.Fprintln(w, " return true")
+ fmt.Fprintln(w, "}")
+ fmt.Fprintln(w, "")
+}
+
+func (msg *MsgName) appendUniqueCOLOR(w io.Writer, FRUIT, APPLES, APPLE, COLOR string) {
+ LOCK := msg.getLockname("x")
+
+ fmt.Fprintln(w, "// enforces "+APPLE+"."+COLOR+" is unique in "+FRUIT+"."+APPLES)
+ fmt.Fprintln(w, "func (x *"+FRUIT+") AppendUnique"+COLOR+"(newP *"+APPLE+") bool {")
+ fmt.Fprintln(w, " "+LOCK+".Lock()")
+ fmt.Fprintln(w, " defer "+LOCK+".Unlock()")
+ fmt.Fprintln(w, "")
+ fmt.Fprintln(w, " for _, p := range x."+APPLES+" {")
+ fmt.Fprintln(w, " if p."+COLOR+" == newP."+COLOR+" {")
+ fmt.Fprintln(w, " return false")
+ fmt.Fprintln(w, " }")
+ fmt.Fprintln(w, " }")
+ fmt.Fprintln(w, "")
+ fmt.Fprintln(w, " x."+APPLES+" = append(x."+APPLES+", newP)")
+ fmt.Fprintln(w, " return true")
+ fmt.Fprintln(w, "}")
+ fmt.Fprintln(w, "")
+}