comparison liboctave/array/Array.h @ 19576:af41e41ad28e

replace oct-mem.h inline indirections by standard function calls. * Array.h: replaced copy_or_memcpy, fill_or_memset, and no_ctor_new * Array.cc: replaced copy_or_memcpy, and fill_or_memset * idx-vector.h: replaced copy_or_memcpy, and fill_or_memset * idx-vector.cc: replaced copy_or_memcpy * boolSparse.cc: replaced copy_or_memcpy, and fill_or_memset * Sparse.h: replaced copy_or_memcpy * Sparse.cc: replaced copy_or_memcpy, and fill_or_memset * oct-binmap.h: replaced copy_or_memcpy * mx-inlines.cc: new standard header dependency * module.mk: removed header entry * oct-mem.h: removed unused header
author Kai T. Ohlhus <k.ohlhus@gmail.com>
date Fri, 05 Dec 2014 13:08:36 +0100
parents 1f4455ff2329
children 4197fc428c7d
comparison
equal deleted inserted replaced
19575:5db5619fe54e 19576:af41e41ad28e
36 #include "idx-vector.h" 36 #include "idx-vector.h"
37 #include "lo-traits.h" 37 #include "lo-traits.h"
38 #include "lo-utils.h" 38 #include "lo-utils.h"
39 #include "oct-sort.h" 39 #include "oct-sort.h"
40 #include "quit.h" 40 #include "quit.h"
41 #include "oct-mem.h"
42 #include "oct-refcount.h" 41 #include "oct-refcount.h"
43 42
44 //!Handles the reference counting for all the derived classes. 43 //!Handles the reference counting for all the derived classes.
45 template <class T> 44 template <class T>
46 class 45 class
56 T *data; 55 T *data;
57 octave_idx_type len; 56 octave_idx_type len;
58 octave_refcount<int> count; 57 octave_refcount<int> count;
59 58
60 ArrayRep (T *d, octave_idx_type l) 59 ArrayRep (T *d, octave_idx_type l)
61 : data (no_ctor_new<T> (l)), len (l), count (1) 60 : data (new T [l]), len (l), count (1)
62 {
63 copy_or_memcpy (l, d, data);
64 }
65
66 template <class U>
67 ArrayRep (U *d, octave_idx_type l)
68 : data (no_ctor_new<T> (l)), len (l), count (1)
69 { 61 {
70 std::copy (d, d+l, data); 62 std::copy (d, d+l, data);
71 } 63 }
72 64
65 template <class U>
66 ArrayRep (U *d, octave_idx_type l)
67 : data (new T [l]), len (l), count (1)
68 {
69 std::copy (d, d+l, data);
70 }
71
73 ArrayRep (void) : data (0), len (0), count (1) { } 72 ArrayRep (void) : data (0), len (0), count (1) { }
74 73
75 explicit ArrayRep (octave_idx_type n) 74 explicit ArrayRep (octave_idx_type n)
76 : data (no_ctor_new<T> (n)), len (n), count (1) { } 75 : data (new T [n]), len (n), count (1) { }
77 76
78 explicit ArrayRep (octave_idx_type n, const T& val) 77 explicit ArrayRep (octave_idx_type n, const T& val)
79 : data (no_ctor_new<T> (n)), len (n), count (1) 78 : data (new T [n]), len (n), count (1)
80 { 79 {
81 fill_or_memset (n, val, data); 80 std::fill_n (data, n, val);
82 } 81 }
83 82
84 ArrayRep (const ArrayRep& a) 83 ArrayRep (const ArrayRep& a)
85 : data (no_ctor_new<T> (a.len)), len (a.len), count (1) 84 : data (new T [a.len]), len (a.len), count (1)
86 { 85 {
87 copy_or_memcpy (a.len, a.data, data); 86 std::copy (a.data, a.data + a.len, data);
88 } 87 }
89 88
90 ~ArrayRep (void) { no_ctor_delete<T> (data); } 89 ~ArrayRep (void) { delete [] data; }
91 90
92 octave_idx_type length (void) const { return len; } 91 octave_idx_type length (void) const { return len; }
93 92
94 private: 93 private:
95 94