comparison liboctave/DiagArray2.h @ 14630:9e4ad3f1f291

maint: periodic merge of stable to default
author John W. Eaton <jwe@octave.org>
date Sat, 12 May 2012 12:39:09 -0400
parents 13cc11418393 63ae976ac2e7
children 97e3d1769be0
comparison
equal deleted inserted replaced
14625:bb5ecda3b975 14630:9e4ad3f1f291
117 { return Array<T>::elem (i); } 117 { return Array<T>::elem (i); }
118 118
119 T& dgelem (octave_idx_type i) 119 T& dgelem (octave_idx_type i)
120 { return Array<T>::elem (i); } 120 { return Array<T>::elem (i); }
121 121
122 void check_idx (octave_idx_type r, octave_idx_type c) const; 122 T checkelem (octave_idx_type r, octave_idx_type c) const
123 {
124 return check_idx (r, c) ? elem (r, c) : T (0);
125 }
123 126
124 T operator () (octave_idx_type r, octave_idx_type c) const 127 T operator () (octave_idx_type r, octave_idx_type c) const
125 { 128 {
126 #if defined (BOUNDS_CHECKING) 129 #if defined (BOUNDS_CHECKING)
127 check_idx (r, c); 130 checkelem (r, c);
131 #else
132 return elem (r, c);
128 #endif 133 #endif
129 return elem (r, c); 134 }
135
136 T& checkelem (octave_idx_type r, octave_idx_type c)
137 {
138 static T zero (0);
139 return check_idx (r, c) ? elem (r, c) : zero;
130 } 140 }
131 141
132 T& operator () (octave_idx_type r, octave_idx_type c) 142 T& operator () (octave_idx_type r, octave_idx_type c)
133 { 143 {
134 #if defined (BOUNDS_CHECKING) 144 #if defined (BOUNDS_CHECKING)
135 check_idx (r, c); 145 return checkelem (r, c);
146 #else
147 return elem (r, c);
136 #endif 148 #endif
137 return elem (r, c);
138 } 149 }
139 150
140 // No checking. 151 // No checking.
141 152
142 T xelem (octave_idx_type r, octave_idx_type c) const 153 T xelem (octave_idx_type r, octave_idx_type c) const
167 178
168 T *fortran_vec (void) { return Array<T>::fortran_vec (); } 179 T *fortran_vec (void) { return Array<T>::fortran_vec (); }
169 180
170 void print_info (std::ostream& os, const std::string& prefix) const 181 void print_info (std::ostream& os, const std::string& prefix) const
171 { Array<T>::print_info (os, prefix); } 182 { Array<T>::print_info (os, prefix); }
183
184 private:
185
186 bool check_idx (octave_idx_type r, octave_idx_type c) const;
172 }; 187 };
173 188
174 #endif 189 #endif