summaryrefslogtreecommitdiff
path: root/generate.go
diff options
context:
space:
mode:
authorJeff Carr <[email protected]>2025-01-12 02:38:17 -0600
committerJeff Carr <[email protected]>2025-01-12 02:38:17 -0600
commit47d2a95bc5b6990de924e66b37dbb5affb4c3cd4 (patch)
treecf299e7e6020b7c6b46a01bf9a98231885dd09d6 /generate.go
parentcfd9ec5ccddded628f4f9bf95beefc11dcfeb51b (diff)
it compiled the test. sort seems to be working
Diffstat (limited to 'generate.go')
-rw-r--r--generate.go72
1 files changed, 70 insertions, 2 deletions
diff --git a/generate.go b/generate.go
index 418513f..876e4be 100644
--- a/generate.go
+++ b/generate.go
@@ -19,6 +19,9 @@ func (pb *Files) makeNewSortfile(pf *File) error {
header(wSort, pf)
pf.syncLock(wSort)
+ fmt.Fprintf(wSort, "// START SORT\n")
+ fmt.Fprintf(wSort, "\n")
+
log.Printf("START ITERATORS\n")
// add iterators for all the structs to be used
for i, msg := range pf.allMsg() {
@@ -38,6 +41,10 @@ func (pb *Files) makeNewSortfile(pf *File) error {
if !v.HasSort {
continue
}
+ if v.IsRepeated {
+ // can't work against slices
+ continue
+ }
VARNAME := v.VarName
funcdef := newSortType(wSort, PARENT, VARNAME)
log.Printf("TYPE: %-2d %20s %20s %20s %10s %s\n", i, PARENT, "", "", "", funcdef)
@@ -58,6 +65,7 @@ func (pb *Files) makeNewSortfile(pf *File) error {
}
log.Printf("\n")
+ log.Printf("START SELECT\n")
// make the sort iterators selectAll()
for i, s := range pf.ToSort {
PARENT := s.MsgName
@@ -68,8 +76,66 @@ func (pb *Files) makeNewSortfile(pf *File) error {
funcdef := addSelectAll(wSort, PARENT, CHILD, VARNAME, LOCK)
log.Printf("SORT: %-2d %20s %20s %20s %20s %s\n", i, PARENT, CHILD, VARNAME, LOCK, funcdef)
}
+ log.Printf("END SELECT\n")
+ log.Printf("\n")
+
+ log.Printf("START SORT\n")
+ // make the SortBy() functions
+ for i, s := range pf.ToSort {
+ // var funcname string
+ PARENT := s.MsgName
+ CHILD := s.VarType
+ VARNAME := s.VarName
+
+ log.Printf("SORT: %-2d %20s %20s %20s %20s %s\n", i, PARENT, CHILD, VARNAME, "", "")
+
+ msg := pf.findMsg(s.VarType)
+ if msg == nil {
+ return fmt.Errorf("failed to find struct %s", s.VarType)
+ }
+
+ var FUNCTYPE string
+ if PARENT == VARNAME {
+ FUNCTYPE = PARENT
+ } else {
+ FUNCTYPE = VARNAME
+ }
+
+ for _, v := range msg.Vars {
+ if v.IsRepeated {
+ // can't work against slices
+ continue
+ }
+ if v.HasSort {
+ // funcname := "func (x *" + FUNCTYPE + ") SortBy" + v.VarName + "(" + v.VarType + ") *[]iter" + s.VarType
+ // log.Printf(" %-2s %20s %20s %20s %s %s\n", "", "", "fix", "", "", funcname)
+ // funcdef := "func (x *"+FRUIT+") SortBy"+COLOR+"() *"+APPLE+"Iterator"
+
+ if v.VarType == "string" {
+ var sortby string
+ // func newSortBy(w io.Writer, STRUCT, ITER, SORTNAME, SORTBY, SELECT string) string {
+ if PARENT == VARNAME {
+ sortby = "SortBy" + v.VarName
+ } else {
+ sortby = "Sort" + VARNAME + "By" + v.VarName
+ }
+ sortname := s.VarType + v.VarName
+ selectName := "selectAll" + VARNAME
+ funcdef := newSortBy(wSort, PARENT, s.VarType, sortname, sortby, selectName)
+ log.Printf(" %-2s %20s %20s %20s %s %s\n", "", "", "", "", "", funcdef)
+ } else {
+ funcname := "func (x *" + FUNCTYPE + ") SortBy" + v.VarName + "(" + v.VarType + ") *[]iter" + s.VarType + " # can not do this yet"
+ log.Printf(" %-2s %20s %20s %20s %s %s\n", "", "", "", "", "", funcname)
+ }
+ }
+ }
+ }
+ log.Printf("END SORT\n")
log.Printf("\n")
+ fmt.Fprintf(wSort, "\n")
+ fmt.Fprintf(wSort, "// END SORT\n")
+
// make Len()
for _, msg := range pf.allMsg() {
PARENT := msg.Name
@@ -131,8 +197,8 @@ func (pb *Files) makeNewSortfile(pf *File) error {
// funcdef := "func (x *"+FRUIT+") SortBy"+COLOR+"() *"+APPLE+"Iterator"
if v.VarType == "string" {
- funcdef := newSortBy(wSort, FUNCTYPE, CHILD, VARNAME, v.VarName)
- log.Printf(" %-2s %20s %20s %20s %s %s\n", "", "", "", "", "", funcdef)
+ // funcdef := newSortBy(wSort, FUNCTYPE, CHILD, VARNAME, v.VarName)
+ // log.Printf(" %-2s %20s %20s %20s %s %s\n", "", "", "", "", "", funcdef)
} else {
funcname := "func (x *" + FUNCTYPE + ") SortBy" + v.VarName + "(" + v.VarType + ") *[]iter" + s.VarType + " # can not do this yet"
log.Printf(" %-2s %20s %20s %20s %s %s\n", "", "", "", "", "", funcname)
@@ -257,6 +323,7 @@ func addIterNew(w io.Write, msg *MsgName {
}
*/
+/*
func (pf *File) newGenerateSort(w io.Writer, parent *MsgName) error {
var FRUIT string = parent.Name
var LOCK string = parent.Lockname
@@ -296,6 +363,7 @@ func (pf *File) newGenerateSort(w io.Writer, parent *MsgName) error {
}
return nil
}
+*/
func (pf *File) findMsg(s string) *MsgName {
if pf.Bases.Name == s {