summaryrefslogtreecommitdiff
path: root/generateAppend.go
diff options
context:
space:
mode:
authorJeff Carr <[email protected]>2025-01-12 03:59:59 -0600
committerJeff Carr <[email protected]>2025-01-12 03:59:59 -0600
commitfb8e44d36c4e1b56fde089dffcaffdc3bb0384c5 (patch)
tree0e0e9dfdf5252af1a959959cdc213663d8e00b56 /generateAppend.go
parentc956babe1b8fe57ad83d9294d79729bb1d104f76 (diff)
almost have Delete()
Diffstat (limited to 'generateAppend.go')
-rw-r--r--generateAppend.go26
1 files changed, 26 insertions, 0 deletions
diff --git a/generateAppend.go b/generateAppend.go
index 5c70316..cd34a4e 100644
--- a/generateAppend.go
+++ b/generateAppend.go
@@ -66,3 +66,29 @@ func (msg *MsgName) appendUniqueCOLOR(w io.Writer, FRUIT, APPLES, APPLE, COLOR s
fmt.Fprintln(w, "}")
fmt.Fprintln(w, "")
}
+
+// Unique Append. rejects Append() if value is already defined
+// compares the field 'COLOR' in the STRUCT with VARNAME
+// that's not the right description above, but whatever, you get the idea
+func (msg *MsgName) addAppendBy(w io.Writer, STRUCT, FUNCNAME, STRUCTVAR, VARNAME, VARTYPE string) string {
+ LOCK := msg.getLockname("x")
+
+ funcdef := "func (x *" + STRUCT + ") " + FUNCNAME + "(y *" + VARTYPE + ") bool"
+
+ fmt.Fprintln(w, funcdef, "{")
+ fmt.Fprintln(w, " "+LOCK+".Lock()")
+ fmt.Fprintln(w, " defer "+LOCK+".Unlock()")
+ fmt.Fprintln(w, "")
+ fmt.Fprintln(w, " for _, p := range x."+STRUCTVAR+" {")
+ fmt.Fprintln(w, " if p."+VARNAME+" == y."+VARNAME+" {")
+ fmt.Fprintln(w, " return false")
+ fmt.Fprintln(w, " }")
+ fmt.Fprintln(w, " }")
+ fmt.Fprintln(w, "")
+ fmt.Fprintln(w, " x."+STRUCTVAR+" = append(x."+STRUCTVAR+", y)")
+ fmt.Fprintln(w, " return true")
+ fmt.Fprintln(w, "}")
+ fmt.Fprintln(w, "")
+
+ return funcdef
+}