# HG changeset patch # User jwe # Date 1196447075 0 # Node ID a760bd2630d547cc8e18d378cb1882033cfc24c7 # Parent 64d6f4dc37e0e98be981d05c541dcfd47c0cd050 [project @ 2007-11-30 18:24:35 by jwe] diff --git a/src/ChangeLog b/src/ChangeLog --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,9 @@ +2007-11-30 John W. Eaton + + * DLD-FUNCTIONS/sort.cc (ascending_compare, descending_compare, + operator < (const Complex&, const Complex&)): + Pass args by const reference, not value. + 2007-11-30 Moritz Borgmann * ls-mat5.h (mat5_data_type): Delete trailing comma in enum decl. diff --git a/src/DLD-FUNCTIONS/sort.cc b/src/DLD-FUNCTIONS/sort.cc --- a/src/DLD-FUNCTIONS/sort.cc +++ b/src/DLD-FUNCTIONS/sort.cc @@ -67,21 +67,21 @@ template bool -ascending_compare (vec_index *a, vec_index *b) +ascending_compare (const vec_index *a, const vec_index *b) { return (a->vec < b->vec); } template bool -descending_compare (vec_index *a, vec_index *b) +descending_compare (const vec_index *a, const vec_index *b) { return (a->vec > b->vec); } template static octave_value -mx_sort (ArrayN &m, int dim, sortmode mode = UNDEFINED) +mx_sort (ArrayN& m, int dim, sortmode mode = UNDEFINED) { octave_value retval; @@ -143,7 +143,7 @@ template static octave_value_list -mx_sort_indexed (ArrayN &m, int dim, sortmode mode = UNDEFINED) +mx_sort_indexed (ArrayN& m, int dim, sortmode mode = UNDEFINED) { octave_value_list retval; @@ -237,7 +237,7 @@ template static octave_value -mx_sort_sparse (Sparse &m, int dim, sortmode mode = UNDEFINED) +mx_sort_sparse (Sparse& m, int dim, sortmode mode = UNDEFINED) { octave_value retval; @@ -302,7 +302,7 @@ template static octave_value_list -mx_sort_sparse_indexed (Sparse &m, int dim, sortmode mode = UNDEFINED) +mx_sort_sparse_indexed (Sparse& m, int dim, sortmode mode = UNDEFINED) { octave_value_list retval; @@ -442,32 +442,28 @@ template <> bool -ascending_compare (uint64_t a, - uint64_t b) +ascending_compare (uint64_t a, uint64_t b) { return (a < b); } template <> bool -ascending_compare (vec_index *a, - vec_index *b) +ascending_compare (const vec_index *a, const vec_index *b) { return (a->vec < b->vec); } template <> bool -descending_compare (uint64_t a, - uint64_t b) +descending_compare (uint64_t a, uint64_t b) { return (a > b); } template <> bool -descending_compare (vec_index *a, - vec_index *b) +descending_compare (const vec_index *a, const vec_index *b) { return (a->vec > b->vec); } @@ -478,7 +474,7 @@ template <> octave_value -mx_sort (ArrayN &m, int dim, sortmode mode) +mx_sort (ArrayN& m, int dim, sortmode mode) { octave_value retval; @@ -620,7 +616,7 @@ // Should other overloaded functions have their static keywords removed? template <> octave_value_list -mx_sort_indexed (ArrayN &m, int dim, sortmode mode) +mx_sort_indexed (ArrayN& m, int dim, sortmode mode) { octave_value_list retval; @@ -776,19 +772,19 @@ #if !defined (CXX_NEW_FRIEND_TEMPLATE_DECL) static octave_value_list -mx_sort (ArrayN &m, int dim, sortmode mode); +mx_sort (ArrayN& m, int dim, sortmode mode); static octave_value_list -mx_sort_indexed (ArrayN &m, int dim, sortmode mode); +mx_sort_indexed (ArrayN& m, int dim, sortmode mode); #endif #endif #if !defined (CXX_NEW_FRIEND_TEMPLATE_DECL) static octave_value_list -mx_sort_sparse (Sparse &m, int dim, sortmode mode); +mx_sort_sparse (Sparse& m, int dim, sortmode mode); static octave_value_list -mx_sort_sparse_indexed (Sparse &m, int dim, sortmode mode); +mx_sort_sparse_indexed (Sparse& m, int dim, sortmode mode); #endif // std::abs(Inf) returns NaN!! @@ -800,37 +796,37 @@ template <> bool -ascending_compare (Complex a, Complex b) +ascending_compare (const Complex& a, const Complex& b) { - return (xisnan (b) || (xabs (a) < xabs (b)) || ((xabs (a) == xabs (b)) - && (arg (a) < arg (b)))); + return (xisnan (b) || (xabs (a) < xabs (b)) + || ((xabs (a) == xabs (b)) && (arg (a) < arg (b)))); } -bool -operator < (const Complex a, const Complex b) +static inline bool +operator < (const Complex& a, const Complex& b) { - return (xisnan (b) || (xabs (a) < xabs (b)) || ((xabs (a) == xabs (b)) - && (arg (a) < arg (b)))); + return (xisnan (b) || (xabs (a) < xabs (b)) + || ((xabs (a) == xabs (b)) && (arg (a) < arg (b)))); } template <> bool -descending_compare (Complex a, Complex b) +descending_compare (const Complex& a, const Complex& b) { - return (xisnan (a) || (xabs (a) > xabs (b)) || ((xabs (a) == xabs (b)) - && (arg (a) > arg (b)))); + return (xisnan (a) || (xabs (a) > xabs (b)) + || ((xabs (a) == xabs (b)) && (arg (a) > arg (b)))); } bool -operator > (const Complex a, const Complex b) +operator > (const Complex& a, const Complex& b) { - return (xisnan (a) || (xabs (a) > xabs (b)) || ((xabs (a) == xabs (b)) - && (arg (a) > arg (b)))); + return (xisnan (a) || (xabs (a) > xabs (b)) + || ((xabs (a) == xabs (b)) && (arg (a) > arg (b)))); } template <> bool -ascending_compare (vec_index *a, vec_index *b) +ascending_compare (const vec_index *a, const vec_index *b) { return (xisnan (b->vec) || (xabs (a->vec) < xabs (b->vec)) @@ -840,7 +836,7 @@ template <> bool -descending_compare (vec_index *a, vec_index *b) +descending_compare (const vec_index *a, const vec_index *b) { return (xisnan (a->vec) || (xabs (a->vec) > xabs (b->vec)) @@ -854,16 +850,16 @@ #if !defined (CXX_NEW_FRIEND_TEMPLATE_DECL) static octave_value_list -mx_sort (ArrayN &m, int dim, sortmode mode); +mx_sort (ArrayN& m, int dim, sortmode mode); static octave_value_list -mx_sort_indexed (ArrayN &m, int dim, sortmode mode); +mx_sort_indexed (ArrayN& m, int dim, sortmode mode); static octave_value_list -mx_sort_sparse (Sparse &m, int dim, sortmode mode); +mx_sort_sparse (Sparse& m, int dim, sortmode mode); static octave_value_list -mx_sort_sparse_indexed (Sparse &m, int dim, sortmode mode); +mx_sort_sparse_indexed (Sparse& m, int dim, sortmode mode); #endif template class octave_sort; @@ -884,10 +880,10 @@ descending_compare (vec_index *a, vec_index *b); static octave_value_list -mx_sort (ArrayN &m, int dim, sortmode mode); +mx_sort (ArrayN& m, int dim, sortmode mode); static octave_value_list -mx_sort_indexed (ArrayN &m, int dim, sortmode mode); +mx_sort_indexed (ArrayN& m, int dim, sortmode mode); #endif template class octave_sort; @@ -908,10 +904,10 @@ descending_compare (vec_index *a, vec_index *b); static octave_value_list -mx_sort (ArrayN &m, int dim, sortmode mode); +mx_sort (ArrayN& m, int dim, sortmode mode); static octave_value_list -mx_sort_indexed (ArrayN &m, int dim, sortmode mode); +mx_sort_indexed (ArrayN& m, int dim, sortmode mode); #endif template class octave_sort; @@ -932,10 +928,10 @@ descending_compare (vec_index *a, vec_index *b); static octave_value_list -mx_sort (ArrayN &m, int dim, sortmode mode); +mx_sort (ArrayN& m, int dim, sortmode mode); static octave_value_list -mx_sort_indexed (ArrayN &m, int dim, sortmode mode); +mx_sort_indexed (ArrayN& m, int dim, sortmode mode); #endif template class octave_sort; @@ -956,10 +952,10 @@ descending_compare (vec_index *a, vec_index *b); static octave_value_list -mx_sort (ArrayN &m, int dim, sortmode mode); +mx_sort (ArrayN& m, int dim, sortmode mode); static octave_value_list -mx_sort_indexed (ArrayN &m, int dim, sortmode mode); +mx_sort_indexed (ArrayN& m, int dim, sortmode mode); #endif template class octave_sort; @@ -980,10 +976,10 @@ descending_compare (vec_index *a, vec_index *b); static octave_value_list -mx_sort (ArrayN &m, int dim, sortmode mode); +mx_sort (ArrayN& m, int dim, sortmode mode); static octave_value_list -mx_sort_indexed (ArrayN &m, int dim, sortmode mode); +mx_sort_indexed (ArrayN& m, int dim, sortmode mode); #endif template class octave_sort; @@ -1004,10 +1000,10 @@ descending_compare (vec_index *a, vec_index *b); static octave_value_list -mx_sort (ArrayN &m, int dim, sortmode mode); +mx_sort (ArrayN& m, int dim, sortmode mode); static octave_value_list -mx_sort_indexed (ArrayN &m, int dim, sortmode mode); +mx_sort_indexed (ArrayN& m, int dim, sortmode mode); #endif template class octave_sort; @@ -1028,10 +1024,10 @@ descending_compare (vec_index *a, vec_index *b); static octave_value_list -mx_sort (ArrayN &m, int dim, sortmode mode); +mx_sort (ArrayN& m, int dim, sortmode mode); static octave_value_list -mx_sort_indexed (ArrayN &m, int dim, sortmode mode); +mx_sort_indexed (ArrayN& m, int dim, sortmode mode); #endif template class octave_sort; @@ -1052,10 +1048,10 @@ descending_compare (vec_index *a, vec_index *b); static octave_value_list -mx_sort (ArrayN &m, int dim, sortmode mode); +mx_sort (ArrayN& m, int dim, sortmode mode); static octave_value_list -mx_sort_indexed (ArrayN &m, int dim, sortmode mode); +mx_sort_indexed (ArrayN& m, int dim, sortmode mode); #endif template class octave_sort; @@ -1076,10 +1072,10 @@ descending_compare (vec_index *a, vec_index *b); static octave_value_list -mx_sort (ArrayN &m, int dim, sortmode mode); +mx_sort (ArrayN& m, int dim, sortmode mode); static octave_value_list -mx_sort_indexed (ArrayN &m, int dim, sortmode mode); +mx_sort_indexed (ArrayN& m, int dim, sortmode mode); #endif template <> @@ -1101,7 +1097,7 @@ #if !defined (CXX_NEW_FRIEND_TEMPLATE_DECL) static octave_value_list -mx_sort_indexed (ArrayN &m, int dim, sortmode mode); +mx_sort_indexed (ArrayN& m, int dim, sortmode mode); #endif DEFUN_DLD (sort, args, nargout,