diff options
Diffstat (limited to 'sort.go')
| -rw-r--r-- | sort.go | 32 |
1 files changed, 18 insertions, 14 deletions
@@ -142,20 +142,12 @@ func (pf *File) appendUnique(w io.Writer) { LOCK = pf.Bases.Lockname } - // append check for every key - fmt.Fprintln(w, "// enforces "+BASE+" is unique") - fmt.Fprintln(w, "func (all *"+MSG+") AppendUnique(newP *"+BASE+") bool {") + // append -- no check at all + fmt.Fprintln(w, "// just a simple Append() with no checking (but still uses the mutex lock)") + fmt.Fprintln(w, "func (all *"+MSG+") Append(newP *"+BASE+") bool {") fmt.Fprintln(w, " "+LOCK+".RLock()") fmt.Fprintln(w, " defer "+LOCK+".RUnlock()") fmt.Fprintln(w, "") - fmt.Fprintln(w, " for _, p := range all."+MSG+" {") - for _, KEY := range pf.Base.Unique { - fmt.Fprintln(w, " if p."+KEY+" == newP."+KEY+" {") - fmt.Fprintln(w, " return false") - fmt.Fprintln(w, " }") - } - fmt.Fprintln(w, " }") - fmt.Fprintln(w, "") fmt.Fprintln(w, " all."+MSG+" = append(all."+MSG+", newP)") fmt.Fprintln(w, " return true") fmt.Fprintln(w, "}") @@ -180,12 +172,24 @@ func (pf *File) appendUnique(w io.Writer) { fmt.Fprintln(w, "") } - // append -- no check at all - fmt.Fprintln(w, "// just a simple Append() with no checking (but still uses the mutex lock)") - fmt.Fprintln(w, "func (all *"+MSG+") Append(newP *"+BASE+") bool {") + // append check for every key + if len(pf.Base.Unique) == 0 { + // there are no keys defined + return + } + fmt.Fprintln(w, "// enforces "+BASE+" is unique") + fmt.Fprintln(w, "func (all *"+MSG+") AppendUnique(newP *"+BASE+") bool {") fmt.Fprintln(w, " "+LOCK+".RLock()") fmt.Fprintln(w, " defer "+LOCK+".RUnlock()") fmt.Fprintln(w, "") + fmt.Fprintln(w, " for _, p := range all."+MSG+" {") + for _, KEY := range pf.Base.Unique { + fmt.Fprintln(w, " if p."+KEY+" == newP."+KEY+" {") + fmt.Fprintln(w, " return false") + fmt.Fprintln(w, " }") + } + fmt.Fprintln(w, " }") + fmt.Fprintln(w, "") fmt.Fprintln(w, " all."+MSG+" = append(all."+MSG+", newP)") fmt.Fprintln(w, " return true") fmt.Fprintln(w, "}") |
