summaryrefslogtreecommitdiff
path: root/generateSort.go
diff options
context:
space:
mode:
Diffstat (limited to 'generateSort.go')
-rw-r--r--generateSort.go15
1 files changed, 15 insertions, 0 deletions
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 {"