]> Cypherpunks repositories - gostls13.git/commitdiff
- Remove IntVector methods that are "inherited" with correct type
authorRobert Griesemer <gri@golang.org>
Fri, 15 May 2009 17:43:00 +0000 (10:43 -0700)
committerRobert Griesemer <gri@golang.org>
Fri, 15 May 2009 17:43:00 +0000 (10:43 -0700)
- Faster vector.Delete, removed result value (easy to get via At(i))

R=r
DELTA=40  (6 added, 30 deleted, 4 changed)
OCL=28866
CL=28897

src/lib/container/vector/intvector.go
src/lib/container/vector/vector.go
src/lib/container/vector/vector_test.go

index c85d983605fec0d3b447d1d84d40e14c94fb2954..e2dd5e04aed219788998c0badc922458570aa0ae 100644 (file)
@@ -8,7 +8,6 @@ import "container/vector"
 
 // IntVector is a specialization of Vector that hides the wrapping of Elements around ints.
 type IntVector struct {
-       // TODO do not export field
        vector.Vector;
 }
 
@@ -34,38 +33,12 @@ func (p *IntVector) At(i int) int {
 }
 
 
-// Set sets the i'th element of the vector to value x.
-func (p *IntVector) Set(i int, x int) {
-       p.Vector.Set(i, x)
-}
-
-
 // Last returns the element in the vector of highest index.
 func (p *IntVector) Last() int {
        return p.Vector.Last().(int)
 }
 
 
-// Insert inserts into the vector an element of value x before
-// the current element at index i.
-func (p *IntVector) Insert(i int, x int) {
-       p.Vector.Insert(i, x)
-}
-
-
-// Delete deletes the i'th element of the vector.  The gap is closed so the old
-// element at index i+1 has index i afterwards.
-func (p *IntVector) Delete(i int) int {
-       return p.Vector.Delete(i).(int)
-}
-
-
-// Push appends x to the end of the vector.
-func (p *IntVector) Push(x int) {
-       p.Vector.Push(x)
-}
-
-
 // Pop deletes and returns the last element of the vector.
 func (p *IntVector) Pop() int {
        return p.Vector.Pop().(int)
index 392e5e596d2317b1cdf5d3b73256916cbe4d2d01..30bbbab2a75fe5c3942fb8e3ca24c74fdc0c97d0 100644 (file)
@@ -127,16 +127,13 @@ func (p *Vector) Insert(i int, x Element) {
 
 // Delete deletes the i'th element of the vector.  The gap is closed so the old
 // element at index i+1 has index i afterwards.
-func (p *Vector) Delete(i int) Element {
+func (p *Vector) Delete(i int) {
        a := p.a;
        n := len(a);
 
-       x := a[i];
        copy(a[i : n-1], a[i+1 : n]);
        a[n-1] = nil;  // support GC, nil out entry
        p.a = a[0 : n-1];
-
-       return x
 }
 
 
@@ -189,9 +186,13 @@ func (p *Vector) Push(x Element) {
 }
 
 
-// Push deletes the last element of the vector.
+// Pop deletes the last element of the vector.
 func (p *Vector) Pop() Element {
-       return p.Delete(len(p.a) - 1)
+       i := len(p.a) - 1;
+       x := p.a[i];
+       p.a[i] = nil;  // support GC, nil out entry
+       p.a = p.a[0 : i];
+       return x;
 }
 
 
@@ -230,6 +231,7 @@ func (p *Vector) iterate(c chan Element) {
        close(c);
 }
 
+
 // Channel iterator for range.
 func (p *Vector) Iter() chan Element {
        c := make(chan Element);
index 21c4dfe327ffcdc4a33a4d1248c2c6ac2edc2669..385513264b834947a527f43cc0040ae0f6b73f59 100644 (file)
@@ -53,7 +53,8 @@ func TestInsertDeleteClear(t *testing.T) {
        }
        for i := n-1; i >= 0; i-- {
                if a.Last().(int) != val(0) { t.Error("C") }
-               if a.Delete(0).(int) != val(i) { t.Error("D") }
+               if a.At(0).(int) != val(i) { t.Error("D") }
+               a.Delete(0);
                if a.Len() != i { t.Errorf("E) wrong len %d (expected %d)", a.Len(), i) }
        }