]> Cypherpunks repositories - gostls13.git/commitdiff
container/vector: remove Iter() from interface
authorRobert Griesemer <gri@golang.org>
Mon, 12 Jul 2010 20:51:42 +0000 (13:51 -0700)
committerRobert Griesemer <gri@golang.org>
Mon, 12 Jul 2010 20:51:42 +0000 (13:51 -0700)
(Iter() is almost never the right mechanism to call.
Per discussion with rsc.)

R=rsc
CC=golang-dev
https://golang.org/cl/1771043

src/pkg/container/vector/Makefile
src/pkg/container/vector/intvector.go
src/pkg/container/vector/intvector_test.go
src/pkg/container/vector/stringvector.go
src/pkg/container/vector/stringvector_test.go
src/pkg/container/vector/vector.go
src/pkg/container/vector/vector_test.go
src/pkg/nntp/nntp.go

index c456c6a6c1358b54165175fdfc8d8ad9b70e3560..f664b43f947696fd386da6341825bf707d8e2a6e 100644 (file)
@@ -42,7 +42,6 @@ generate: vector.go vector_test.go
        | gofmt -r='make_vector -> make_vectorInt'\
        | gofmt -r='TestInsertVector -> TestIntInsertVector'\
        | gofmt -r='TestDo -> TestIntDo'\
-       | gofmt -r='TestIter -> TestIntIter'\
        | gofmt -r='TestVectorData -> TestIntVectorData'\
        | gofmt -r='interface{} -> int'\
        > intvector_test.go\
@@ -65,7 +64,6 @@ generate: vector.go vector_test.go
        | gofmt -r='make_vector -> make_vectorStr'\
        | gofmt -r='TestInsertVector -> TestStrInsertVector'\
        | gofmt -r='TestDo -> TestStrDo'\
-       | gofmt -r='TestIter -> TestStrIter'\
        | gofmt -r='TestVectorData -> TestStrVectorData'\
        | gofmt -r='interface{} -> string'\
        > stringvector_test.go
index 6aad358e3d3d805d7d1ab7282685efa886b58edd..5f4d6fa3d73eab9299f7e7e5616a6e078f6361e5 100644 (file)
@@ -199,23 +199,6 @@ func (p *IntVector) Swap(i, j int) {
 }
 
 
-// Iterate over all elements; driver for range
-func (p *IntVector) iterate(c chan<- int) {
-       for _, v := range *p {
-               c <- v
-       }
-       close(c)
-}
-
-
-// Channel iterator for range.
-func (p *IntVector) Iter() <-chan int {
-       c := make(chan int)
-       go p.iterate(c)
-       return c
-}
-
-
 // Do calls function f for each element of the vector, in order.
 // The behavior of Do is undefined if f changes *p.
 func (p *IntVector) Do(f func(elem int)) {
index c80dd52cca099f62c9757e045625c802a38e0954..2f853ebfacdead3b364bed93958f0560390f4c7c 100644 (file)
@@ -326,53 +326,6 @@ func TestIntDo(t *testing.T) {
 }
 
 
-func TestIntIter(t *testing.T) {
-       const Len = 100
-       x := new(IntVector).Resize(Len, 0)
-       for i := 0; i < Len; i++ {
-               x.Set(i, int2IntValue(i*i))
-       }
-       i := 0
-       for v := range x.Iter() {
-               if elem2IntValue(v) != int2IntValue(i*i) {
-                       t.Error(tname(x), "Iter expected", i*i, "got", elem2IntValue(v))
-               }
-               i++
-       }
-       if i != Len {
-               t.Error(tname(x), "Iter stopped at", i, "not", Len)
-       }
-       y := new(IntVector).Resize(Len, 0)
-       for i := 0; i < Len; i++ {
-               (*y)[i] = int2IntValue(i * i)
-       }
-       i = 0
-       for v := range y.Iter() {
-               if elem2IntValue(v) != int2IntValue(i*i) {
-                       t.Error(tname(y), "y, Iter expected", i*i, "got", elem2IntValue(v))
-               }
-               i++
-       }
-       if i != Len {
-               t.Error(tname(y), "y, Iter stopped at", i, "not", Len)
-       }
-       var z IntVector
-       z.Resize(Len, 0)
-       for i := 0; i < Len; i++ {
-               z[i] = int2IntValue(i * i)
-       }
-       i = 0
-       for v := range z.Iter() {
-               if elem2IntValue(v) != int2IntValue(i*i) {
-                       t.Error(tname(z), "z, Iter expected", i*i, "got", elem2IntValue(v))
-               }
-               i++
-       }
-       if i != Len {
-               t.Error(tname(z), "z, Iter stopped at", i, "not", Len)
-       }
-}
-
 func TestIntVectorData(t *testing.T) {
        // verify Data() returns a slice of a copy, not a slice of the original vector
        const Len = 10
index ddc030f817d5b3d1daf6fa6a95a337c129e4c4c4..a9b727a9083b857918674cbea086ee332b6fa15c 100644 (file)
@@ -199,23 +199,6 @@ func (p *StringVector) Swap(i, j int) {
 }
 
 
-// Iterate over all elements; driver for range
-func (p *StringVector) iterate(c chan<- string) {
-       for _, v := range *p {
-               c <- v
-       }
-       close(c)
-}
-
-
-// Channel iterator for range.
-func (p *StringVector) Iter() <-chan string {
-       c := make(chan string)
-       go p.iterate(c)
-       return c
-}
-
-
 // Do calls function f for each element of the vector, in order.
 // The behavior of Do is undefined if f changes *p.
 func (p *StringVector) Do(f func(elem string)) {
index 859dac2fde5ae969dd5c9ead2f280297bc984667..1c05145a24a61a7206ddaa65a8173001e5c3ea18 100644 (file)
@@ -326,53 +326,6 @@ func TestStrDo(t *testing.T) {
 }
 
 
-func TestStrIter(t *testing.T) {
-       const Len = 100
-       x := new(StringVector).Resize(Len, 0)
-       for i := 0; i < Len; i++ {
-               x.Set(i, int2StrValue(i*i))
-       }
-       i := 0
-       for v := range x.Iter() {
-               if elem2StrValue(v) != int2StrValue(i*i) {
-                       t.Error(tname(x), "Iter expected", i*i, "got", elem2StrValue(v))
-               }
-               i++
-       }
-       if i != Len {
-               t.Error(tname(x), "Iter stopped at", i, "not", Len)
-       }
-       y := new(StringVector).Resize(Len, 0)
-       for i := 0; i < Len; i++ {
-               (*y)[i] = int2StrValue(i * i)
-       }
-       i = 0
-       for v := range y.Iter() {
-               if elem2StrValue(v) != int2StrValue(i*i) {
-                       t.Error(tname(y), "y, Iter expected", i*i, "got", elem2StrValue(v))
-               }
-               i++
-       }
-       if i != Len {
-               t.Error(tname(y), "y, Iter stopped at", i, "not", Len)
-       }
-       var z StringVector
-       z.Resize(Len, 0)
-       for i := 0; i < Len; i++ {
-               z[i] = int2StrValue(i * i)
-       }
-       i = 0
-       for v := range z.Iter() {
-               if elem2StrValue(v) != int2StrValue(i*i) {
-                       t.Error(tname(z), "z, Iter expected", i*i, "got", elem2StrValue(v))
-               }
-               i++
-       }
-       if i != Len {
-               t.Error(tname(z), "z, Iter stopped at", i, "not", Len)
-       }
-}
-
 func TestStrVectorData(t *testing.T) {
        // verify Data() returns a slice of a copy, not a slice of the original vector
        const Len = 10
index 986321b14b7e13a6fc972fb46add619fc096f05c..f219cdcaafdbf4d96366cc08799baf4f6f136385 100644 (file)
@@ -199,23 +199,6 @@ func (p *Vector) Swap(i, j int) {
 }
 
 
-// Iterate over all elements; driver for range
-func (p *Vector) iterate(c chan<- interface{}) {
-       for _, v := range *p {
-               c <- v
-       }
-       close(c)
-}
-
-
-// Channel iterator for range.
-func (p *Vector) Iter() <-chan interface{} {
-       c := make(chan interface{})
-       go p.iterate(c)
-       return c
-}
-
-
 // Do calls function f for each element of the vector, in order.
 // The behavior of Do is undefined if f changes *p.
 func (p *Vector) Do(f func(elem interface{})) {
index 158b34479b1f63b5af8d0ad31a439165f3dc3ec8..ba15398c28c6a137681b6e0f507172d0dda2429b 100644 (file)
@@ -326,53 +326,6 @@ func TestDo(t *testing.T) {
 }
 
 
-func TestIter(t *testing.T) {
-       const Len = 100
-       x := new(Vector).Resize(Len, 0)
-       for i := 0; i < Len; i++ {
-               x.Set(i, int2Value(i*i))
-       }
-       i := 0
-       for v := range x.Iter() {
-               if elem2Value(v) != int2Value(i*i) {
-                       t.Error(tname(x), "Iter expected", i*i, "got", elem2Value(v))
-               }
-               i++
-       }
-       if i != Len {
-               t.Error(tname(x), "Iter stopped at", i, "not", Len)
-       }
-       y := new(Vector).Resize(Len, 0)
-       for i := 0; i < Len; i++ {
-               (*y)[i] = int2Value(i * i)
-       }
-       i = 0
-       for v := range y.Iter() {
-               if elem2Value(v) != int2Value(i*i) {
-                       t.Error(tname(y), "y, Iter expected", i*i, "got", elem2Value(v))
-               }
-               i++
-       }
-       if i != Len {
-               t.Error(tname(y), "y, Iter stopped at", i, "not", Len)
-       }
-       var z Vector
-       z.Resize(Len, 0)
-       for i := 0; i < Len; i++ {
-               z[i] = int2Value(i * i)
-       }
-       i = 0
-       for v := range z.Iter() {
-               if elem2Value(v) != int2Value(i*i) {
-                       t.Error(tname(z), "z, Iter expected", i*i, "got", elem2Value(v))
-               }
-               i++
-       }
-       if i != Len {
-               t.Error(tname(z), "z, Iter stopped at", i, "not", Len)
-       }
-}
-
 func TestVectorData(t *testing.T) {
        // verify Data() returns a slice of a copy, not a slice of the original vector
        const Len = 10
index e78b036f5495a2ff607ad79b1e1810f7f3cf65f8..8f343dc8f8cba262d6c8870c570623ea0e52d419 100644 (file)
@@ -361,10 +361,8 @@ func parseGroups(lines []string) ([]Group, os.Error) {
                res.Push(&Group{ss[0], high, low, ss[3]})
        }
        realres := make([]Group, res.Len())
-       i := 0
-       for v := range res.Iter() {
+       for i, v := range res {
                realres[i] = *v.(*Group)
-               i++
        }
        return realres, nil
 }