diff options
| -rw-r--r-- | generate.go | 6 | ||||
| -rw-r--r-- | generateSort.go | 15 |
2 files changed, 21 insertions, 0 deletions
diff --git a/generate.go b/generate.go index 7ab5b07..2665c81 100644 --- a/generate.go +++ b/generate.go @@ -132,6 +132,12 @@ func (pb *Files) makeNewSortfile(pf *File) error { BRAND := v.VarName funcdef = pmsg.addIterBy(wSort, FRUITS, FRUIT, BRAND, SORTNAME) log.Printf("Adding %s\n", funcdef) + + funcname := "Sort" + v.VarName + STRUCT := PARENT + LOCK := s.Lockname + funcdef = pmsg.newSort(wSort, STRUCT, funcname, sortname, LOCK) + log.Printf("Adding %s\n", funcdef) } else { // deprecate this THIS DOES NOT MAKE SENSE TO DO sortby = "Sort" + VARNAME + "By" + v.VarName diff --git a/generateSort.go b/generateSort.go index bf72795..305896e 100644 --- a/generateSort.go +++ b/generateSort.go @@ -99,6 +99,7 @@ func (msg *MsgName) newSortType(w io.Writer, STRUCT, VARNAME string) string { return "type " + STRUCT + VARNAME + " []*" + STRUCT + " // { return a[i]." + VARNAME + " < a[j]." + VARNAME + " }" } +// provdes a sorted iter. Does not modify the protobuf func (msg *MsgName) newSortBy(w io.Writer, STRUCT, ITER, SORTNAME, SORTBY, SELECT, VARNAME string) string { funcdef := "func (x *" + STRUCT + ") " + SORTBY + "() *" + ITER + "Scanner" @@ -119,6 +120,20 @@ func (msg *MsgName) newSortBy(w io.Writer, STRUCT, ITER, SORTNAME, SORTBY, SELEC return funcdef } +// sorts the protobuf in place. +func (msg *MsgName) newSort(w io.Writer, STRUCT, FUNCNAME, SORTNAME, LOCK string) string { + funcdef := "func (pb *" + STRUCT + ") " + FUNCNAME + "() " + + fmt.Fprintln(w, funcdef, "{") + fmt.Fprintln(w, " "+LOCK+".Lock()") + fmt.Fprintln(w, " defer "+LOCK+".Unlock()") + fmt.Fprintln(w, "") + fmt.Fprintln(w, " sort.Sort("+SORTNAME+"(pb."+STRUCT+"))") + fmt.Fprintln(w, "}") + + return funcdef +} + func (msg *MsgName) addIterAllFunc(w io.Writer, FRUIT, APPLE, APPLES string) string { funcdef := "func (x *" + FRUIT + ") All() *" + APPLE + "Scanner {" |
