diff options
Diffstat (limited to 'main.go')
| -rw-r--r-- | main.go | 30 |
1 files changed, 27 insertions, 3 deletions
@@ -8,12 +8,13 @@ import ( func main() { f, _ := os.OpenFile("test.sort.pb.go", os.O_WRONLY|os.O_CREATE, 0600) - header(f, "autogenpb") + header(f, "main") syncLock(f, "godeplock") + iterTop(f, "GoDep") } func header(w io.Writer, name string) { - fmt.Fprintln(w, "package " + name) + fmt.Fprintln(w, "package "+name) fmt.Fprintln(w, "") fmt.Fprintln(w, "// this is becoming a standard format") fmt.Fprintln(w, "// todo: autogenerate this from the .proto file?") @@ -29,6 +30,29 @@ func header(w io.Writer, name string) { func syncLock(w io.Writer, name string) { fmt.Fprintln(w, "// bad global lock until I figure out some other plan") - fmt.Fprintln(w, "var " + name + " sync.RWMutex") + fmt.Fprintln(w, "var "+name+" sync.RWMutex") fmt.Fprintln(w, "") } + +func iterTop(w io.Writer, name string) { + fmt.Fprintln(w, "type "+name+"Iterator struct {") + fmt.Fprintln(w, " sync.RWMutex") + fmt.Fprintln(w, "") + fmt.Fprintln(w, " packs []*"+name) + fmt.Fprintln(w, " index int") + fmt.Fprintln(w, "}") + fmt.Fprintln(w, "") + fmt.Fprintln(w, "// New"+name+"Iterator initializes a new iterator.") + fmt.Fprintln(w, "func New"+name+"Iterator(packs []*"+name+") *"+name+"Iterator {") + fmt.Fprintln(w, " return &"+name+"Iterator{packs: packs}") + fmt.Fprintln(w, "}") + fmt.Fprintln(w, "") + fmt.Fprintln(w, "// Scan moves to the next element and returns false if there are no more packs.") + fmt.Fprintln(w, "func (it *"+name+"Iterator) Scan() bool {") + fmt.Fprintln(w, " if it.index >= len(it.packs) {") + fmt.Fprintln(w, " return false") + fmt.Fprintln(w, " }") + fmt.Fprintln(w, " it.index++") + fmt.Fprintln(w, " return true") + fmt.Fprintln(w, "}") +} |
