diff options
Diffstat (limited to 'generate.go')
| -rw-r--r-- | generate.go | 51 |
1 files changed, 32 insertions, 19 deletions
diff --git a/generate.go b/generate.go index dc07fa8..b22b3f7 100644 --- a/generate.go +++ b/generate.go @@ -20,12 +20,14 @@ func (pb *Files) makeNewSortfile(pf *File) error { header(wSort, pf) - pf.Base.iterTop(wSort) - pf.Base.iterNext(wSort) - pf.selectAllFunc(wSort) - pf.iterSelect(wSort) + // pf.Base.iterTop(wSort) + // pf.Base.iterNext(wSort) + // pf.selectAllFunc(wSort) + // pf.iterSelect(wSort) - pf.sortByFunc(wSort, pf.Bases, pf.Base) + // pf.sortByFunc(wSort, pf.Bases, pf.Base) + pf.newGenerateSort(wSort, pf.Bases) + pf.newGenerateSort(wSort, pf.Base) /* pf.appendUnique(wFind) // Append() enforce no unique keys @@ -55,23 +57,34 @@ func (pf *File) newGenerateSort(w io.Writer, parent *MsgName) error { var FRUIT string = parent.Name var LOCK string = parent.Lockname - for _, v := range parent.Vars { - if v.IsRepeated { - var APPLES string = v.VarName - var APPLE string = v.VarType - newIter(w, FRUIT, APPLE, APPLES, LOCK) - msg := pf.findMsg(APPLE) - if msg == nil { - return fmt.Errorf("failed to find struct %s", APPLE) - } - for _, v := range msg.Vars { - if v.HasSort { - var COLOR string = v.VarName - newSortBy(w, FRUIT, APPLE, COLOR) - } + var allLen bool + for _, v := range parent.Vars { + if !v.IsRepeated { + continue + } + var APPLES string = v.VarName + var APPLE string = v.VarType + if !allLen { + // only can run these once for now + addAllFunc(w, FRUIT, APPLE, LOCK) + addLenFunc(w, FRUIT, APPLES, LOCK) + allLen = true + } + addSelectAll(w, FRUIT, APPLE, APPLES, LOCK) + newIter(w, FRUIT, APPLE, APPLES, LOCK) + msg := pf.findMsg(APPLE) + if msg == nil { + return fmt.Errorf("failed to find struct %s", APPLE) + } + for _, v := range msg.Vars { + if !v.HasSort { + continue } + var COLOR string = v.VarName + newSortBy(w, FRUIT, APPLE, APPLES, COLOR) } + } return nil } |
