diff options
Diffstat (limited to 'sortNew.go')
| -rw-r--r-- | sortNew.go | 71 |
1 files changed, 69 insertions, 2 deletions
@@ -23,13 +23,13 @@ func (msg *MsgName) appendUnique(w io.Writer, FRUIT, APPLES, APPLE string, COLOR 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, " 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, "") fmt.Fprintln(w, " x."+APPLES+" = append(x."+APPLES+", newP)") fmt.Fprintln(w, " return true") @@ -57,3 +57,70 @@ func (msg *MsgName) appendUniqueBy(w io.Writer, FRUIT, APPLES, APPLE, COLOR stri fmt.Fprintln(w, "}") fmt.Fprintln(w, "") } + +func (msg *MsgName) findBy(w io.Writer, FRUIT, APPLES, APPLE, COLOR string) { + LOCK := msg.getLockname("x") + + fmt.Fprintln(w, "// TESTING") + fmt.Fprintln(w, "// find a dependancy by the go path") + fmt.Fprintln(w, "func (x *"+FRUIT+") FindBy"+COLOR+"(s string) *"+APPLE+" {") + fmt.Fprintln(w, " if x == nil {") + fmt.Fprintln(w, " return nil") + fmt.Fprintln(w, " }") + fmt.Fprintln(w, "") + fmt.Fprintln(w, " "+LOCK+".RLock()") + fmt.Fprintln(w, " defer "+LOCK+".RUnlock()") + fmt.Fprintln(w, "") + fmt.Fprintln(w, " for i, _ := range x."+APPLES+" {") + fmt.Fprintln(w, " if x."+APPLES+"[i]."+COLOR+" == s {") + fmt.Fprintln(w, " return x."+APPLES+"[i]") + fmt.Fprintln(w, " }") + fmt.Fprintln(w, " }") + fmt.Fprintln(w, " return nil") + fmt.Fprintln(w, "}") + fmt.Fprintln(w, "") +} + +func (msg *MsgName) deleteBy(w io.Writer, FRUIT, APPLES, APPLE, COLOR string) { + LOCK := msg.getLockname("x") + + fmt.Fprintln(w, "// TESTING") + fmt.Fprintln(w, "func (x *"+FRUIT+") DeleteBy"+COLOR+"(s string) bool {") + fmt.Fprintln(w, " "+LOCK+".RLock()") + fmt.Fprintln(w, " defer "+LOCK+".RUnlock()") + fmt.Fprintln(w, "") + fmt.Fprintln(w, " for i, _ := range x."+APPLES+" {") + fmt.Fprintln(w, " if x."+APPLES+"[i]."+COLOR+" == s {") + fmt.Fprintln(w, " x."+APPLES+"[i] = x."+APPLES+"[len(x."+APPLES+")-1]") + fmt.Fprintln(w, " x."+APPLES+" = x."+APPLES+"[:len(x."+APPLES+")-1]") + fmt.Fprintln(w, " return true") + fmt.Fprintln(w, " }") + fmt.Fprintln(w, " }") + fmt.Fprintln(w, " return false") + fmt.Fprintln(w, "}") + fmt.Fprintln(w, "") +} + +// this tries to return the deleted one but is wrong/gives warning if mutex lock is in struct +func (msg *MsgName) deleteByWithCopy(w io.Writer, FRUIT, APPLES, APPLE, COLOR string) { + LOCK := msg.getLockname("x") + + fmt.Fprintln(w, "// TESTING") + fmt.Fprintln(w, "func (x *"+FRUIT+") DeleteBy"+COLOR+"(s string) *"+APPLE+" {") + fmt.Fprintln(w, " "+LOCK+".RLock()") + fmt.Fprintln(w, " defer "+LOCK+".RUnlock()") + fmt.Fprintln(w, "") + fmt.Fprintln(w, " var newr "+APPLE) + fmt.Fprintln(w, "") + fmt.Fprintln(w, " for i, _ := range x."+APPLES+" {") + fmt.Fprintln(w, " if x."+APPLES+"[i]."+COLOR+" == s {") + fmt.Fprintln(w, " newr = *x."+APPLES+"[i]") + fmt.Fprintln(w, " x."+APPLES+"[i] = x."+APPLES+"[len(x."+APPLES+")-1]") + fmt.Fprintln(w, " x."+APPLES+" = x."+APPLES+"[:len(x."+APPLES+")-1]") + fmt.Fprintln(w, " return &newr") + fmt.Fprintln(w, " }") + fmt.Fprintln(w, " }") + fmt.Fprintln(w, " return nil") + fmt.Fprintln(w, "}") + fmt.Fprintln(w, "") +} |
