summaryrefslogtreecommitdiff
path: root/sort.go
diff options
context:
space:
mode:
Diffstat (limited to 'sort.go')
-rw-r--r--sort.go32
1 files changed, 18 insertions, 14 deletions
diff --git a/sort.go b/sort.go
index 29d795a..6eb5d34 100644
--- a/sort.go
+++ b/sort.go
@@ -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, "}")