changeset 23420:1fee389bd04b

Use std::copy_n rather than std::copy for clarity in liboctave/array. * Array.cc, Array.h, Sparse.cc, Sparse.h, boolSparse.cc, idx-vector.cc, idx-vector.h: Use std::copy_n rather than std::copy when clarity of code would be improved.
author Rik <rik@octave.org>
date Fri, 21 Apr 2017 08:35:17 -0700
parents 75a4b9a34999
children 0bfdfd5870d7
files liboctave/array/Array.cc liboctave/array/Array.h liboctave/array/Sparse.cc liboctave/array/Sparse.h liboctave/array/boolSparse.cc liboctave/array/idx-vector.cc liboctave/array/idx-vector.h
diffstat 7 files changed, 61 insertions(+), 65 deletions(-) [+]
line wrap: on
line diff
--- a/liboctave/array/Array.cc	Thu Apr 20 20:02:23 2017 -0700
+++ b/liboctave/array/Array.cc	Fri Apr 21 08:35:17 2017 -0700
@@ -416,7 +416,7 @@
         octave_idx_type len = dim[0];
         if (step == 1)
           {
-            std::copy (src, src + len, dest);
+            std::copy_n (src, len, dest);
             dest += len;
           }
         else
@@ -691,7 +691,7 @@
   {
     if (lev == 0)
       {
-        std::copy (src, src+cext[0], dest);
+        std::copy_n (src, cext[0], dest);
         std::fill_n (dest + cext[0], dext[0] - cext[0], rfv);
       }
     else
@@ -964,7 +964,7 @@
           Array<T> tmp (Array<T> (dim_vector (nn, 1)), dv, 0, n);
           T *dest = tmp.fortran_vec ();
 
-          std::copy (data (), data () + nx, dest);
+          std::copy_n (data (), nx, dest);
           dest[nx] = rfv;
 
           *this = tmp;
@@ -977,7 +977,7 @@
 
       octave_idx_type n0 = std::min (n, nx);
       octave_idx_type n1 = n - n0;
-      std::copy (data (), data () + n0, dest);
+      std::copy_n (data (), n0, dest);
       std::fill_n (dest + n0, n1, rfv);
 
       *this = tmp;
@@ -1005,14 +1005,14 @@
       const T *src = data ();
       if (r == rx)
         {
-          std::copy (src, src + r * c0, dest);
+          std::copy_n (src, r * c0, dest);
           dest += r * c0;
         }
       else
         {
           for (octave_idx_type k = 0; k < c0; k++)
             {
-              std::copy (src, src + r0, dest);
+              std::copy_n (src, r0, dest);
               src += rx;
               dest += r0;
               std::fill_n (dest, r1, rfv);
@@ -1433,7 +1433,7 @@
           Array<T> tmp (dim_vector (col_vec ? m : 1, ! col_vec ? m : 1));
           const T *src = data ();
           T *dest = tmp.fortran_vec ();
-          std::copy (src, src + l, dest);
+          std::copy_n (src, l, dest);
           std::copy (src + u, src + n, dest + l);
           *this = tmp;
         }
@@ -1482,7 +1482,7 @@
           l *= dl; u *= dl; n *= dl;
           for (octave_idx_type k = 0; k < du; k++)
             {
-              std::copy (src, src + l, dest);
+              std::copy_n (src, l, dest);
               dest += l;
               std::copy (src + u, src + n, dest);
               dest += n - u;
--- a/liboctave/array/Array.h	Thu Apr 20 20:02:23 2017 -0700
+++ b/liboctave/array/Array.h	Fri Apr 21 08:35:17 2017 -0700
@@ -140,14 +140,14 @@
     ArrayRep (T *d, octave_idx_type l)
       : data (new T [l]), len (l), count (1)
     {
-      std::copy (d, d+l, data);
+      std::copy_n (d, l, data);
     }
 
     template <typename U>
     ArrayRep (U *d, octave_idx_type l)
       : data (new T [l]), len (l), count (1)
     {
-      std::copy (d, d+l, data);
+      std::copy_n (d, l, data);
     }
 
     // Use new instead of setting data to 0 so that fortran_vec and
@@ -167,7 +167,7 @@
     ArrayRep (const ArrayRep& a)
       : data (new T [a.len]), len (a.len), count (1)
     {
-      std::copy (a.data, a.data + a.len, data);
+      std::copy_n (a.data, a.len, data);
     }
 
     ~ArrayRep (void) { delete [] data; }
--- a/liboctave/array/Sparse.cc	Thu Apr 20 20:02:23 2017 -0700
+++ b/liboctave/array/Sparse.cc	Fri Apr 21 08:35:17 2017 -0700
@@ -170,13 +170,13 @@
       octave_idx_type min_nzmx = std::min (nz, nzmx);
 
       octave_idx_type * new_ridx = new octave_idx_type [nz];
-      std::copy (r, r + min_nzmx, new_ridx);
+      std::copy_n (r, min_nzmx, new_ridx);
 
       delete [] r;
       r = new_ridx;
 
       T * new_data = new T [nz];
-      std::copy (d, d + min_nzmx, new_data);
+      std::copy_n (d, min_nzmx, new_data);
 
       delete [] d;
       d = new_data;
@@ -979,7 +979,7 @@
   if (c != rep->ncols)
     {
       octave_idx_type *new_cidx = new octave_idx_type [c+1];
-      std::copy (rep->c, rep->c + std::min (c, rep->ncols) + 1, new_cidx);
+      std::copy_n (rep->c, std::min (c, rep->ncols) + 1, new_cidx);
       delete [] rep->c;
       rep->c = new_cidx;
 
@@ -1176,8 +1176,8 @@
           // Copy data and adjust indices.
           octave_idx_type nz_new = nz - (ui - li);
           *this = Sparse<T> (nr - (ub - lb), 1, nz_new);
-          std::copy (tmp.data (), tmp.data () + li, data ());
-          std::copy (tmp.ridx (), tmp.ridx () + li, xridx ());
+          std::copy_n (tmp.data (), li, data ());
+          std::copy_n (tmp.ridx (), li, xridx ());
           std::copy (tmp.data () + ui, tmp.data () + nz, xdata () + li);
           mx_inline_sub (nz - ui, xridx () + li, tmp.ridx () + ui, ub - lb);
           xcidx (1) = nz_new;
@@ -1203,8 +1203,8 @@
             }
 
           *this = Sparse<T> (nr - sl, 1, nz_new);
-          std::copy (ridx_new, ridx_new + nz_new, ridx ());
-          std::copy (data_new, data_new + nz_new, xdata ());
+          std::copy_n (ridx_new, nz_new, ridx ());
+          std::copy_n (data_new, nz_new, xdata ());
           xcidx (1) = nz_new;
         }
     }
@@ -1219,10 +1219,10 @@
           octave_idx_type ubi = tmp.cidx (ub);
           octave_idx_type new_nz = nz - (ubi - lbi);
           *this = Sparse<T> (1, nc - (ub - lb), new_nz);
-          std::copy (tmp.data (), tmp.data () + lbi, data ());
+          std::copy_n (tmp.data (), lbi, data ());
           std::copy (tmp.data () + ubi, tmp.data () + nz , xdata () + lbi);
           std::fill_n (ridx (), new_nz, static_cast<octave_idx_type> (0));
-          std::copy (tmp.cidx () + 1, tmp.cidx () + 1 + lb, cidx () + 1);
+          std::copy_n (tmp.cidx () + 1, lb, cidx () + 1);
           mx_inline_sub (nc - ub, xcidx () + 1, tmp.cidx () + ub + 1,
                          ubi - lbi);
         }
@@ -1278,11 +1278,11 @@
               octave_idx_type new_nz = nz - (ubi - lbi);
 
               *this = Sparse<T> (nr, nc - (ub - lb), new_nz);
-              std::copy (tmp.data (), tmp.data () + lbi, data ());
-              std::copy (tmp.ridx (), tmp.ridx () + lbi, ridx ());
+              std::copy_n (tmp.data (), lbi, data ());
+              std::copy_n (tmp.ridx (), lbi, ridx ());
               std::copy (tmp.data () + ubi, tmp.data () + nz, xdata () + lbi);
               std::copy (tmp.ridx () + ubi, tmp.ridx () + nz, xridx () + lbi);
-              std::copy (tmp.cidx () + 1, tmp.cidx () + 1 + lb, cidx () + 1);
+              std::copy_n (tmp.cidx () + 1, lb, cidx () + 1);
               mx_inline_sub (nc - ub, xcidx () + lb + 1,
                              tmp.cidx () + ub + 1, ubi - lbi);
             }
@@ -1453,7 +1453,7 @@
           // Copy data and adjust indices.
           octave_idx_type nz_new = ui - li;
           retval = Sparse<T> (ub - lb, 1, nz_new);
-          std::copy (data () + li, data () + li + nz_new, retval.data ());
+          std::copy_n (data () + li, nz_new, retval.data ());
           mx_inline_sub (nz_new, retval.xridx (), ridx () + li, lb);
           retval.xcidx (1) = nz_new;
         }
@@ -1466,7 +1466,7 @@
               for (octave_idx_type j = 0; j < nz; j++)
                 retval.ridx (j) = nr - ridx (nz - j - 1) - 1;
 
-              std::copy (cidx (), cidx () + 2, retval.cidx ());
+              std::copy_n (cidx (), 2, retval.cidx ());
               std::reverse_copy (data (), data () + nz, retval.data ());
             }
           else
@@ -1541,7 +1541,7 @@
           octave_idx_type ubi = cidx (ub);
           octave_idx_type new_nz = ubi - lbi;
           retval = Sparse<T> (1, ub - lb, new_nz);
-          std::copy (data () + lbi, data () + lbi + new_nz, retval.data ());
+          std::copy_n (data () + lbi, new_nz, retval.data ());
           std::fill_n (retval.ridx (), new_nz, static_cast<octave_idx_type> (0));
           mx_inline_sub (ub - lb + 1, retval.cidx (), cidx () + lb, lbi);
         }
@@ -1627,8 +1627,8 @@
           octave_idx_type ubi = cidx (ub);
           octave_idx_type new_nz = ubi - lbi;
           retval = Sparse<T> (nr, ub - lb, new_nz);
-          std::copy (data () + lbi, data () + lbi + new_nz, retval.data ());
-          std::copy (ridx () + lbi, ridx () + lbi + new_nz, retval.ridx ());
+          std::copy_n (data () + lbi, new_nz, retval.data ());
+          std::copy_n (ridx () + lbi, new_nz, retval.ridx ());
           mx_inline_sub (ub - lb + 1, retval.cidx (), cidx () + lb, lbi);
         }
       else
@@ -1650,8 +1650,8 @@
               octave_idx_type lj = retval.xcidx (j);
               octave_idx_type nzj = retval.xcidx (j+1) - lj;
 
-              std::copy (data () + ljj, data () + ljj + nzj, retval.data () + lj);
-              std::copy (ridx () + ljj, ridx () + ljj + nzj, retval.ridx () + lj);
+              std::copy_n (data () + ljj, nzj, retval.data () + lj);
+              std::copy_n (ridx () + ljj, nzj, retval.ridx () + lj);
             }
         }
     }
@@ -1881,7 +1881,7 @@
                     }
 
                   // Copy data and adjust indices from rhs.
-                  std::copy (rhs.data (), rhs.data () + rnz, data () + li);
+                  std::copy_n (rhs.data (), rnz, data () + li);
                   mx_inline_add (rnz, ridx () + li, rhs.ridx (), lb);
                 }
               else
@@ -1892,11 +1892,11 @@
                   *this = Sparse<T> (nr, 1, new_nz);
 
                   // Head ...
-                  std::copy (tmp.data (), tmp.data () + li, data ());
-                  std::copy (tmp.ridx (), tmp.ridx () + li, ridx ());
+                  std::copy_n (tmp.data (), li, data ());
+                  std::copy_n (tmp.ridx (), li, ridx ());
 
                   // new stuff ...
-                  std::copy (rhs.data (), rhs.data () + rnz, data () + li);
+                  std::copy_n (rhs.data (), rnz, data () + li);
                   mx_inline_add (rnz, ridx () + li, rhs.ridx (), lb);
 
                   // ...tail
@@ -1938,8 +1938,8 @@
               // Disassembly our matrix...
               Array<octave_idx_type> new_ri (dim_vector (new_nz, 1));
               Array<T> new_data (dim_vector (new_nz, 1));
-              std::copy (tmp.ridx (), tmp.ridx () + nz, new_ri.fortran_vec ());
-              std::copy (tmp.data (), tmp.data () + nz, new_data.fortran_vec ());
+              std::copy_n (tmp.ridx (), nz, new_ri.fortran_vec ());
+              std::copy_n (tmp.data (), nz, new_data.fortran_vec ());
               // ... insert new data (densified) ...
               idx.copy_data (new_ri.fortran_vec () + nz);
               new_data.assign (idx_vector (nz, new_nz), rhs.array_value ());
@@ -2065,8 +2065,8 @@
                     }
 
                   // Copy data and indices from rhs.
-                  std::copy (rhs.data (), rhs.data () + rnz, data () + li);
-                  std::copy (rhs.ridx (), rhs.ridx () + rnz, ridx () + li);
+                  std::copy_n (rhs.data (), rnz, data () + li);
+                  std::copy_n (rhs.ridx (), rnz, ridx () + li);
                   mx_inline_add (ub - lb, cidx () + lb + 1, rhs.cidx () + 1,
                                  li);
 
@@ -2080,13 +2080,13 @@
                   *this = Sparse<T> (nr, nc, new_nz);
 
                   // Head...
-                  std::copy (tmp.data (), tmp.data () + li, data ());
-                  std::copy (tmp.ridx (), tmp.ridx () + li, ridx ());
-                  std::copy (tmp.cidx () + 1, tmp.cidx () + 1 + lb, cidx () + 1);
+                  std::copy_n (tmp.data (), li, data ());
+                  std::copy_n (tmp.ridx (), li, ridx ());
+                  std::copy_n (tmp.cidx () + 1, lb, cidx () + 1);
 
                   // new stuff...
-                  std::copy (rhs.data (), rhs.data () + rnz, data () + li);
-                  std::copy (rhs.ridx (), rhs.ridx () + rnz, ridx () + li);
+                  std::copy_n (rhs.data (), rnz, data () + li);
+                  std::copy_n (rhs.ridx (), rnz, ridx () + li);
                   mx_inline_add (ub - lb, cidx () + lb + 1, rhs.cidx () + 1,
                                  li);
 
@@ -2144,19 +2144,15 @@
                     {
                       // from rhs
                       octave_idx_type k = rhs.cidx (j);
-                      std::copy (rhs.data () + k, rhs.data () + k + u - l,
-                                 xdata () + l);
-                      std::copy (rhs.ridx () + k, rhs.ridx () + k + u - l,
-                                 xridx () + l);
+                      std::copy_n (rhs.data () + k, u - l, xdata () + l);
+                      std::copy_n (rhs.ridx () + k, u - l, xridx () + l);
                     }
                   else
                     {
                       // original
                       octave_idx_type k = tmp.cidx (i);
-                      std::copy (tmp.data () + k, tmp.data () + k + u - l,
-                                 xdata () + l);
-                      std::copy (tmp.ridx () + k, tmp.ridx () + k + u - l,
-                                 xridx () + l);
+                      std::copy_n (tmp.data () + k, u - l, xdata () + l);
+                      std::copy_n (tmp.ridx () + k, u - l, xridx () + l);
                     }
                 }
 
--- a/liboctave/array/Sparse.h	Thu Apr 20 20:02:23 2017 -0700
+++ b/liboctave/array/Sparse.h	Fri Apr 21 08:35:17 2017 -0700
@@ -202,9 +202,9 @@
     dimensions (a.dimensions)
   {
     octave_idx_type nz = a.nnz ();
-    std::copy (a.rep->d, a.rep->d + nz, rep->d);
-    std::copy (a.rep->r, a.rep->r + nz, rep->r);
-    std::copy (a.rep->c, a.rep->c + rep->ncols + 1, rep->c);
+    std::copy_n (a.rep->d, nz, rep->d);
+    std::copy_n (a.rep->r, nz, rep->r);
+    std::copy_n (a.rep->c, rep->ncols + 1, rep->c);
   }
 
   // No type conversion case.
--- a/liboctave/array/boolSparse.cc	Thu Apr 20 20:02:23 2017 -0700
+++ b/liboctave/array/boolSparse.cc	Fri Apr 21 08:35:17 2017 -0700
@@ -176,7 +176,7 @@
       else
         {
           Array<octave_idx_type> tmp (dim_vector (nz, 1));
-          std::copy (ridx (), ridx () + nz, tmp.fortran_vec ());
+          std::copy_n (ridx (), nz, tmp.fortran_vec ());
           retval = Sparse<bool> (Array<bool> (dim_vector (1, 1), true),
                                  idx_vector (tmp),
                                  idx_vector (static_cast<octave_idx_type> (0)),
@@ -227,7 +227,7 @@
       else
         {
           Array<octave_idx_type> tmp (dim_vector (nz, 1));
-          std::copy (ridx (), ridx () + nz, tmp.fortran_vec ());
+          std::copy_n (ridx (), nz, tmp.fortran_vec ());
           retval = Sparse<double> (Array<double> (dim_vector (1, 1), 1.0),
                                    idx_vector (tmp),
                                    idx_vector (static_cast<octave_idx_type> (0)),
--- a/liboctave/array/idx-vector.cc	Thu Apr 20 20:02:23 2017 -0700
+++ b/liboctave/array/idx-vector.cc	Fri Apr 21 08:35:17 2017 -0700
@@ -475,7 +475,7 @@
       octave_idx_type *new_data = new octave_idx_type [len];
       new_rep->data = new_data;
 
-      std::copy (data, data + len, new_data);
+      std::copy_n (data, len, new_data);
       octave_sort<octave_idx_type> lsort;
       lsort.set_compare (ASCENDING);
       lsort.sort (new_data, len);
@@ -552,7 +552,7 @@
 
       octave_idx_type *new_data = new octave_idx_type [len];
       new_rep->data = new_data;
-      std::copy (data, data + len, new_data);
+      std::copy_n (data, len, new_data);
 
       octave_sort<octave_idx_type> lsort;
       lsort.set_compare (ASCENDING);
@@ -1082,7 +1082,7 @@
       {
         idx_vector_rep * r = dynamic_cast<idx_vector_rep *> (rep);
         const octave_idx_type *rdata = r->get_data ();
-        std::copy (rdata, rdata + len, data);
+        std::copy_n (rdata, len, data);
       }
       break;
 
--- a/liboctave/array/idx-vector.h	Thu Apr 20 20:02:23 2017 -0700
+++ b/liboctave/array/idx-vector.h	Fri Apr 21 08:35:17 2017 -0700
@@ -631,7 +631,7 @@
     switch (rep->idx_class ())
       {
       case class_colon:
-        std::copy (src, src + len, dest);
+        std::copy_n (src, len, dest);
         break;
 
       case class_range:
@@ -641,7 +641,7 @@
           octave_idx_type step = r->get_step ();
           const T *ssrc = src + start;
           if (step == 1)
-            std::copy (ssrc, ssrc + len, dest);
+            std::copy_n (ssrc, len, dest);
           else if (step == -1)
             std::reverse_copy (ssrc - len + 1, ssrc + 1, dest);
           else if (step == 0)
@@ -705,7 +705,7 @@
     switch (rep->idx_class ())
       {
       case class_colon:
-        std::copy (src, src + len, dest);
+        std::copy_n (src, len, dest);
         break;
 
       case class_range:
@@ -715,7 +715,7 @@
           octave_idx_type step = r->get_step ();
           T *sdest = dest + start;
           if (step == 1)
-            std::copy (src, src + len, sdest);
+            std::copy_n (src, len, sdest);
           else if (step == -1)
             std::reverse_copy (src, src + len, sdest - len + 1);
           else
@@ -777,7 +777,7 @@
     switch (rep->idx_class ())
       {
       case class_colon:
-        std::fill (dest, dest + len, val);
+        std::fill_n (dest, len, val);
         break;
 
       case class_range:
@@ -787,7 +787,7 @@
           octave_idx_type step = r->get_step ();
           T *sdest = dest + start;
           if (step == 1)
-            std::fill (sdest, sdest + len, val);
+            std::fill_n (sdest, len, val);
           else if (step == -1)
             std::fill (sdest - len + 1, sdest + 1, val);
           else