diff options
| author | Jeff Carr <[email protected]> | 2025-10-08 02:13:09 -0500 | 
|---|---|---|
| committer | Jeff Carr <[email protected]> | 2025-10-08 02:13:09 -0500 | 
| commit | 0c313d9cc066af084b93b28e1320b502d93dbda6 (patch) | |
| tree | d374a476d8fcbdc07f143db5008c3a53b24babf1 | |
| parent | 4627d89c4c189869055ac645ce183502c3f035cd (diff) | |
add sort in place functionsv0.5.18
| -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 {"  | 
