Mercurial > hg > octave-nkf
diff liboctave/Array.h @ 2108:2b67abb63030
[project @ 1996-04-30 10:44:17 by jwe]
author | jwe |
---|---|
date | Tue, 30 Apr 1996 10:44:44 +0000 |
parents | 468a96dd03fc |
children | 356f70c8fcbd |
line wrap: on
line diff
--- a/liboctave/Array.h +++ b/liboctave/Array.h @@ -164,16 +164,15 @@ int capacity (void) const { return rep->length (); } int length (void) const { return rep->length (); } + // No checking, even for multiple references, ever. + + T& xelem (int n) { return rep->elem (n); } + T xelem (int n) const { return rep->elem (n); } + // XXX FIXME XXX -- would be nice to fix this so that we don't // unnecessarily force a copy, but that is not so easy, and I see no // clean way to do it. - T& elem (int n) - { - make_unique (); - return rep->elem (n); - } - T& Array<T>::checkelem (int n) { if (n < 0 || n >= rep->length ()) @@ -183,35 +182,39 @@ return foo; } else - return elem (n); + { + make_unique (); + return xelem (n); + } } -#if defined (NO_BOUNDS_CHECKING) - T& operator () (int n) { return elem (n); } +#if defined (BOUNDS_CHECKING) + T& elem (int n) { return checkelem (n); } #else - T& operator () (int n) { return checkelem (n); } + T& elem (int n) + { + make_unique (); + return xelem (); + } #endif - T Array<T>::elem (int n) const { return rep->elem (n); } + T& operator () (int n) { return elem (n); } T Array<T>::checkelem (int n) const { if (n < 0 || n >= rep->length ()) return range_error (); else - return elem (n); + return xelem (n); } -#if defined (NO_BOUNDS_CHECKING) - T Array<T>::operator () (int n) const { return elem (n); } +#if defined (BOUNDS_CHECKING) + T Array<T>::elem (int n) const { return checkelem (n); } #else - T Array<T>::operator () (int n) const { return checkelem (n); } + T Array<T>::elem (int n) const { return xelem (n); } #endif - // No checking, even for multiple references, ever. - - T& xelem (int n) { return rep->elem (n); } - T xelem (int n) const { return rep->elem (n); } + T Array<T>::operator () (int n) const { return elem (n); } void resize (int n); void resize (int n, const T& val);