summaryrefslogtreecommitdiff
path: root/generate.go
diff options
context:
space:
mode:
Diffstat (limited to 'generate.go')
-rw-r--r--generate.go186
1 files changed, 64 insertions, 122 deletions
diff --git a/generate.go b/generate.go
index e50a18d..bfacb07 100644
--- a/generate.go
+++ b/generate.go
@@ -187,6 +187,34 @@ func (pb *Files) makeNewSortfile(pf *File) error {
*/
}
+ // make delete()
+ /*
+ for _, msg := range pf.allMsg() {
+ PARENT := msg.Name
+
+ for _, v := range msg.Vars {
+ if !v.HasUnique {
+ continue
+ }
+ funcname := "func (x *" + PARENT + ") Delete" + msg.Name + "By" + v.VarName + "(" + v.VarType + ") bool"
+ log.Printf(" %-2s %20s %20s %20s %s %s\n", "", "", "", "", "", funcname)
+ FRUIT := PARENT
+ APPLES := msg.Name
+ APPLE := v.VarName
+ COLOR := v.VarType
+ FUNCNAME := "Delete" + msg.Name + "By" + v.VarName
+
+ var funcdef string
+ if argv.Delete {
+ funcdef = msg.deleteByWithCopy(wSort, FRUIT, APPLES, APPLE, COLOR, FUNCNAME)
+ } else {
+ funcdef = msg.deleteBy(wSort, FRUIT, APPLES, APPLE, COLOR, FUNCNAME)
+ }
+ log.Printf(" %-2s %20s %20s %20s %s %s\n", "", "", "", "done", "", funcdef)
+ }
+ }
+ */
+
// add Find() Delete() Append() Insert()
log.Printf(" %-2s %20s %20s %20s %20s\n", "", "PARENT STRUCT", "VAR STRUCT TYPE", "VAR NAME", "LOCK")
for i, s := range pf.ToSort {
@@ -204,19 +232,43 @@ func (pb *Files) makeNewSortfile(pf *File) error {
}
var ucount int
+ // append() functions
for _, v := range msg.Vars {
- if v.HasUnique {
- ucount += 1
- funcname := "func (x *" + PARENT + ") Append" + VARNAME + "By" + v.VarName + "(" + v.VarType + ")"
- log.Printf(" %-2s %20s %20s %20s %s %s\n", "", "", "", "", "", funcname)
+ if v.IsRepeated {
+ continue
}
+ if !v.HasUnique {
+ continue
+ }
+ ucount += 1
+ // funcname := "func (x *" + PARENT + ") Append" + VARNAME + "By" + v.VarName + "(" + v.VarType + ")"
+ // log.Printf(" %-2s %20s %20s %20s %s %s\n", "", "", "", "", "", funcname)
+ // func (msg *MsgName) addAppendBy(w io.Writer, STRUCT, FUNCNAME, VARNAME, CHILD, COLOR string) string {
+ // func (msg *MsgName) addAppendBy(w io.Writer, STRUCT, FUNCNAME, STRUCTVAR, VARNAME, VARTYPE string) string {
+ FUNCNAME := "Append" + VARNAME + "By" + v.VarName
+ funcdef := msg.addAppendBy(wSort, PARENT, FUNCNAME, VARNAME, v.VarName, s.VarType)
+ log.Printf(" %-2s %20s %20s %20s %s %s\n", "", "", "", "done", "", funcdef)
}
- for _, v := range msg.Vars {
- if v.HasUnique {
+
+ /*
+ // delete() functions
+ for _, v := range msg.Vars {
+ if !v.HasUnique {
+ continue
+ }
funcname := "func (x *" + PARENT + ") Delete" + VARNAME + "By" + v.VarName + "(" + v.VarType + ") bool"
log.Printf(" %-2s %20s %20s %20s %s %s\n", "", "", "", "", "", funcname)
+ FRUIT := PARENT
+ APPLES := VARNAME
+ APPLE := v.VarName
+ COLOR := s.VarType
+ if argv.Delete {
+ msg.deleteByWithCopy(wSort, FRUIT, APPLES, APPLE, COLOR)
+ } else {
+ msg.deleteBy(wSort, FRUIT, APPLES, APPLE, COLOR)
+ }
}
- }
+ */
for _, v := range msg.Vars {
if v.HasUnique {
@@ -244,123 +296,8 @@ func (pb *Files) makeNewSortfile(pf *File) error {
}
}
-
- /*
- // everything struct used in here needs a sort iterator (but just one)
- for FRUIT, APPLE := range pf.IterMap {
- msg := pf.findMsg(FRUIT)
- if msg == nil {
- return fmt.Errorf("failed to find struct %s", FRUIT)
- }
- log.Printf("Add newIter() message %s\n", FRUIT)
- newIter(wSort, msg)
-
- child := pf.findMsg(APPLE)
- if child == nil {
- return fmt.Errorf("failed to find struct %s", APPLE)
- }
- log.Printf("Add newIter() message %s\n", APPLE)
- newIter(wSort, child)
-
- // now add the allKEY() functions
- msg.newIterAll(wSort, FRUIT, APPLE)
- }
- */
-
- /*
- log.Info("START")
- log.Printf("Add all() FRUIT=%s APPLE=%s\n", FRUIT, APPLE)
- addAllFunc(w, FRUIT, APPLE, LOCK)
- log.Printf("Add len() FRUIT=%s APPLES=%s\n", FRUIT, APPLES)
- addLenFunc(w, FRUIT, APPLES, LOCK)
- log.Printf("Add selectAll() FRUIT=%s APPLE=%s APPLES=%s\n", FRUIT, APPLE, APPLES)
- addSelectAll(w, FRUIT, APPLE, APPLES, LOCK)
- // newIter(w, FRUIT, APPLE, APPLES, LOCK)
- log.Info("END")
- */
-
- /*
- return nil
- pf.newGenerateSort(wSort, pf.Bases)
- pf.newGenerateSort(wSort, pf.Base)
- */
-
- /*
- pf.appendUnique(wFind) // Append() enforce no unique keys
- if argv.Delete {
- pf.deleteWithCopyFunc(wFind)
- } else {
- pf.deleteFunc(wFind)
- }
- pf.findFunc(wFind)
- */
-
- /*
- wFind, _ := os.OpenFile(pf.Filebase+".find.pb.go", os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0644)
- defer wFind.Close()
- header(wFind, pf)
- pf.specialBases(wFind)
-
- // attempt to add sort functions for pf.Base
- if err := pf.processMessage(pf.Bases, wSort, wFind); err != nil {
- return err
- }
- if err := pf.processMessage(pf.Base, wSort, wFind); err != nil {
- return err
- }
- */
- return nil
-}
-
-/*
-func addIterNew(w io.Write, msg *MsgName {
- var FRUIT string = parent.Name
- var LOCK string = parent.Lockname
- newIter(w, FRUIT, APPLE, APPLES, LOCK)
-}
-*/
-
-/*
-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 {
- continue
- }
- var APPLES string = v.VarName
- var APPLE string = v.VarType
- msg := pf.findMsg(APPLE)
- if msg == nil {
- return fmt.Errorf("failed to find struct %s", APPLE)
- }
- if msg.NeedIter {
- parent.NeedIter = false
- // only can run these once for now
- log.Info("START")
- log.Printf("Add all() FRUIT=%s APPLE=%s\n", FRUIT, APPLE)
- // addAllFunc(w, FRUIT, APPLE, LOCK)
- log.Printf("Add len() FRUIT=%s APPLES=%s\n", FRUIT, APPLES)
- addLenFunc(w, FRUIT, APPLES, LOCK)
- log.Printf("Add selectAll() FRUIT=%s APPLE=%s APPLES=%s\n", FRUIT, APPLE, APPLES)
- addSelectAll(w, FRUIT, APPLE, APPLES, LOCK)
- // newIter(w, FRUIT, APPLE, APPLES, LOCK)
- log.Info("END")
- }
-
- for _, v := range msg.Vars {
- if !v.HasSort {
- continue
- }
- var COLOR string = v.VarName
- newSortBy(w, FRUIT, APPLE, APPLES, COLOR)
- }
-
- }
return nil
}
-*/
func (pf *File) findMsg(s string) *MsgName {
if pf.Bases.Name == s {
@@ -396,6 +333,8 @@ func (pf *File) specialBases(wFind io.Writer) {
}
+/*
+
// to simplify being able to read the code, FRUIT, APPLES and APPLE are used
// FRUIT == the string name of the message in the protobuf file
// APPLE == the type of the repeated variable
@@ -442,6 +381,7 @@ func (pf *File) processMessage(parent *MsgName, wSort, wFind io.Writer) error {
}
return nil
}
+*/
func (parent *MsgName) addFindByMsg(w io.Writer, FRUIT, APPLES, APPLE, LOCK string) {
for _, v := range parent.Vars {
@@ -453,6 +393,7 @@ func (parent *MsgName) addFindByMsg(w io.Writer, FRUIT, APPLES, APPLE, LOCK stri
}
}
+/*
func (parent *MsgName) addDeleteByMsg(w io.Writer, FRUIT, APPLES, APPLE string) {
// log.Printf("\tDELETE: %s %s for %s\n", APPLES, APPLE, FRUIT)
var COLORS []string
@@ -471,6 +412,7 @@ func (parent *MsgName) addDeleteByMsg(w io.Writer, FRUIT, APPLES, APPLE string)
}
}
}
+*/
func (parent *MsgName) addInsertByMsg(w io.Writer, FRUIT, APPLES, APPLE string) {
// log.Printf("\tINSERT: %s %s for %s\n", APPLES, APPLE, FRUIT)