summaryrefslogtreecommitdiff
path: root/main.go
diff options
context:
space:
mode:
Diffstat (limited to 'main.go')
-rw-r--r--main.go30
1 files changed, 27 insertions, 3 deletions
diff --git a/main.go b/main.go
index fb2ea38..8224f4d 100644
--- a/main.go
+++ b/main.go
@@ -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, "}")
+}