comparison liboctave/Array.cc @ 9780:6dafc60dde31

rename oct-mem functions
author Jaroslav Hajek <highegg@gmail.com>
date Thu, 05 Nov 2009 21:13:31 +0100
parents 01f897d8a130
children 3e8b4c80ae63
comparison
equal deleted inserted replaced
9779:2941c1daf509 9780:6dafc60dde31
75 --rep->count; 75 --rep->count;
76 rep = new ArrayRep (length (), val); 76 rep = new ArrayRep (length (), val);
77 slice_data = rep->data; 77 slice_data = rep->data;
78 } 78 }
79 else 79 else
80 octave_fill (slice_len, val, slice_data); 80 fill_or_memset (slice_len, val, slice_data);
81 } 81 }
82 82
83 template <class T> 83 template <class T>
84 void 84 void
85 Array<T>::clear (void) 85 Array<T>::clear (void)
567 if (lev == 0) 567 if (lev == 0)
568 { 568 {
569 octave_idx_type step = stride[0], len = dim[0]; 569 octave_idx_type step = stride[0], len = dim[0];
570 if (step == 1) 570 if (step == 1)
571 { 571 {
572 octave_ucopy (len, src, dest); 572 copy_or_memcpy (len, src, dest);
573 dest += len; 573 dest += len;
574 } 574 }
575 else 575 else
576 { 576 {
577 for (octave_idx_type i = 0, j = 0; i < len; i++, j += step) 577 for (octave_idx_type i = 0, j = 0; i < len; i++, j += step)
830 template <class T> 830 template <class T>
831 void do_resize_fill (const T* src, T *dest, const T& rfv, int lev) const 831 void do_resize_fill (const T* src, T *dest, const T& rfv, int lev) const
832 { 832 {
833 if (lev == 0) 833 if (lev == 0)
834 { 834 {
835 octave_ucopy (cext[0], src, dest); 835 copy_or_memcpy (cext[0], src, dest);
836 octave_fill (dext[0] - cext[0], rfv, dest + cext[0]); 836 fill_or_memset (dext[0] - cext[0], rfv, dest + cext[0]);
837 } 837 }
838 else 838 else
839 { 839 {
840 octave_idx_type sd = sext[lev-1], dd = dext[lev-1], k; 840 octave_idx_type sd = sext[lev-1], dd = dext[lev-1], k;
841 for (k = 0; k < cext[lev]; k++) 841 for (k = 0; k < cext[lev]; k++)
842 do_resize_fill (src + k * sd, dest + k * dd, rfv, lev - 1); 842 do_resize_fill (src + k * sd, dest + k * dd, rfv, lev - 1);
843 843
844 octave_fill (dext[lev] - k * dd, rfv, dest + k * dd); 844 fill_or_memset (dext[lev] - k * dd, rfv, dest + k * dd);
845 } 845 }
846 } 846 }
847 public: 847 public:
848 template <class T> 848 template <class T>
849 void resize_fill (const T* src, T *dest, const T& rfv) const 849 void resize_fill (const T* src, T *dest, const T& rfv) const
1115 static const octave_idx_type max_stack_chunk = 1024; 1115 static const octave_idx_type max_stack_chunk = 1024;
1116 octave_idx_type nn = n + std::min (nx, max_stack_chunk); 1116 octave_idx_type nn = n + std::min (nx, max_stack_chunk);
1117 Array<T> tmp (Array<T> (nn), dv, 0, n); 1117 Array<T> tmp (Array<T> (nn), dv, 0, n);
1118 T *dest = tmp.fortran_vec (); 1118 T *dest = tmp.fortran_vec ();
1119 1119
1120 octave_ucopy (nx, data (), dest); 1120 copy_or_memcpy (nx, data (), dest);
1121 dest[nx] = rfv; 1121 dest[nx] = rfv;
1122 1122
1123 *this = tmp; 1123 *this = tmp;
1124 } 1124 }
1125 } 1125 }
1127 { 1127 {
1128 Array<T> tmp = Array<T> (dv); 1128 Array<T> tmp = Array<T> (dv);
1129 T *dest = tmp.fortran_vec (); 1129 T *dest = tmp.fortran_vec ();
1130 1130
1131 octave_idx_type n0 = std::min (n, nx), n1 = n - n0; 1131 octave_idx_type n0 = std::min (n, nx), n1 = n - n0;
1132 octave_ucopy (n0, data (), dest); 1132 copy_or_memcpy (n0, data (), dest);
1133 octave_fill (n1, rfv, dest + n0); 1133 fill_or_memset (n1, rfv, dest + n0);
1134 1134
1135 *this = tmp; 1135 *this = tmp;
1136 } 1136 }
1137 } 1137 }
1138 } 1138 }
1155 octave_idx_type r0 = std::min (r, rx), r1 = r - r0; 1155 octave_idx_type r0 = std::min (r, rx), r1 = r - r0;
1156 octave_idx_type c0 = std::min (c, cx), c1 = c - c0; 1156 octave_idx_type c0 = std::min (c, cx), c1 = c - c0;
1157 const T *src = data (); 1157 const T *src = data ();
1158 if (r == rx) 1158 if (r == rx)
1159 { 1159 {
1160 octave_ucopy (r * c0, src, dest); 1160 copy_or_memcpy (r * c0, src, dest);
1161 dest += r * c0; 1161 dest += r * c0;
1162 } 1162 }
1163 else 1163 else
1164 { 1164 {
1165 for (octave_idx_type k = 0; k < c0; k++) 1165 for (octave_idx_type k = 0; k < c0; k++)
1166 { 1166 {
1167 octave_ucopy (r0, src, dest); 1167 copy_or_memcpy (r0, src, dest);
1168 src += rx; 1168 src += rx;
1169 dest += r0; 1169 dest += r0;
1170 octave_fill (r1, rfv, dest); 1170 fill_or_memset (r1, rfv, dest);
1171 dest += r1; 1171 dest += r1;
1172 } 1172 }
1173 } 1173 }
1174 1174
1175 octave_fill (r * c1, rfv, dest); 1175 fill_or_memset (r * c1, rfv, dest);
1176 1176
1177 *this = tmp; 1177 *this = tmp;
1178 } 1178 }
1179 } 1179 }
1180 else 1180 else
1555 // Special case deleting a contiguous range. 1555 // Special case deleting a contiguous range.
1556 octave_idx_type m = n + l - u; 1556 octave_idx_type m = n + l - u;
1557 Array<T> tmp (dim_vector (col_vec ? m : 1, !col_vec ? m : 1)); 1557 Array<T> tmp (dim_vector (col_vec ? m : 1, !col_vec ? m : 1));
1558 const T *src = data (); 1558 const T *src = data ();
1559 T *dest = tmp.fortran_vec (); 1559 T *dest = tmp.fortran_vec ();
1560 octave_ucopy (l, src, dest); 1560 copy_or_memcpy (l, src, dest);
1561 octave_ucopy (n - u, src + u, dest + l); 1561 copy_or_memcpy (n - u, src + u, dest + l);
1562 *this = tmp; 1562 *this = tmp;
1563 } 1563 }
1564 else 1564 else
1565 { 1565 {
1566 // Use index. 1566 // Use index.
1607 const T *src = data (); 1607 const T *src = data ();
1608 T *dest = tmp.fortran_vec (); 1608 T *dest = tmp.fortran_vec ();
1609 l *= dl; u *= dl; n *= dl; 1609 l *= dl; u *= dl; n *= dl;
1610 for (octave_idx_type k = 0; k < du; k++) 1610 for (octave_idx_type k = 0; k < du; k++)
1611 { 1611 {
1612 octave_ucopy (l, src, dest); 1612 copy_or_memcpy (l, src, dest);
1613 dest += l; 1613 dest += l;
1614 octave_ucopy (n - u, src + u, dest); 1614 copy_or_memcpy (n - u, src + u, dest);
1615 dest += n - u; 1615 dest += n - u;
1616 src += n; 1616 src += n;
1617 } 1617 }
1618 1618
1619 *this = tmp; 1619 *this = tmp;