diff options
Diffstat (limited to 'generateFind.go')
| -rw-r--r-- | generateFind.go | 68 |
1 files changed, 46 insertions, 22 deletions
diff --git a/generateFind.go b/generateFind.go index 121ed06..6f799e5 100644 --- a/generateFind.go +++ b/generateFind.go @@ -12,31 +12,55 @@ import ( func (msg *MsgName) generateFindBy(w io.Writer, FUNCNAME, STRUCT string, sortvals *Sort, childVar *MsgVar) string { LOCK := msg.getLockname("x") - if childVar.VarType != "string" { - return "" - } VARNAME := sortvals.VarName VARTYPE := sortvals.VarType COLOR := childVar.VarName - funcdef := "func (x *" + STRUCT + ") " + FUNCNAME + "(s string) *" + VARTYPE - fmt.Fprintln(w, "// lookup a", STRUCT, "by the ", COLOR) - fmt.Fprintln(w, funcdef, "{") - fmt.Fprintln(w, " if x == nil {") - fmt.Fprintln(w, " return nil") - fmt.Fprintln(w, " }") - fmt.Fprintln(w, "") - fmt.Fprintln(w, " "+LOCK+".RLock()") - fmt.Fprintln(w, " defer "+LOCK+".RUnlock()") - fmt.Fprintln(w, "") - fmt.Fprintln(w, " for i, _ := range x."+VARNAME+" {") - fmt.Fprintln(w, " if x."+VARNAME+"[i]."+COLOR+" == s {") - fmt.Fprintln(w, " return x."+VARNAME+"[i]") - fmt.Fprintln(w, " }") - fmt.Fprintln(w, " }") - fmt.Fprintln(w, " return nil") - fmt.Fprintln(w, "}") - fmt.Fprintln(w, "") + if childVar.VarType == "string" { + funcdef := "func (x *" + STRUCT + ") " + FUNCNAME + "(s string) *" + VARTYPE + + fmt.Fprintln(w, "// lookup a", STRUCT, "by the ", COLOR) + fmt.Fprintln(w, funcdef, "{") + fmt.Fprintln(w, " if x == nil {") + fmt.Fprintln(w, " return nil") + fmt.Fprintln(w, " }") + fmt.Fprintln(w, "") + fmt.Fprintln(w, " "+LOCK+".RLock()") + fmt.Fprintln(w, " defer "+LOCK+".RUnlock()") + fmt.Fprintln(w, "") + fmt.Fprintln(w, " for i, _ := range x."+VARNAME+" {") + fmt.Fprintln(w, " if x."+VARNAME+"[i]."+COLOR+" == s {") + fmt.Fprintln(w, " return x."+VARNAME+"[i]") + fmt.Fprintln(w, " }") + fmt.Fprintln(w, " }") + fmt.Fprintln(w, " return nil") + fmt.Fprintln(w, "}") + fmt.Fprintln(w, "") + return funcdef + } + + if childVar.VarType == "int64" { + funcdef := "func (x *" + STRUCT + ") " + FUNCNAME + "(y int64) *" + VARTYPE + + fmt.Fprintln(w, "// lookup a", STRUCT, "by the ", COLOR) + fmt.Fprintln(w, funcdef, "{") + fmt.Fprintln(w, " if x == nil {") + fmt.Fprintln(w, " return nil") + fmt.Fprintln(w, " }") + fmt.Fprintln(w, "") + fmt.Fprintln(w, " "+LOCK+".RLock()") + fmt.Fprintln(w, " defer "+LOCK+".RUnlock()") + fmt.Fprintln(w, "") + fmt.Fprintln(w, " for i, _ := range x."+VARNAME+" {") + fmt.Fprintln(w, " if x."+VARNAME+"[i]."+COLOR+" == y {") + fmt.Fprintln(w, " return x."+VARNAME+"[i]") + fmt.Fprintln(w, " }") + fmt.Fprintln(w, " }") + fmt.Fprintln(w, " return nil") + fmt.Fprintln(w, "}") + fmt.Fprintln(w, "") + return funcdef + } - return funcdef + return "" } |
