Mercurial > hg > octave-lyh
comparison liboctave/Array.cc @ 11210:b79924abf776
Array.cc: use comparisons to sortmode values instead of testing mode directly
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Tue, 09 Nov 2010 01:28:45 -0500 |
parents | f7f26094021b |
children | 80e01d79cf80 |
comparison
equal
deleted
inserted
replaced
11209:94d9d412a2a0 | 11210:b79924abf776 |
---|---|
1709 T *v = m.fortran_vec (); | 1709 T *v = m.fortran_vec (); |
1710 const T *ov = data (); | 1710 const T *ov = data (); |
1711 | 1711 |
1712 octave_sort<T> lsort; | 1712 octave_sort<T> lsort; |
1713 | 1713 |
1714 if (mode) | 1714 if (mode != UNSORTED) |
1715 lsort.set_compare (mode); | 1715 lsort.set_compare (mode); |
1716 else | 1716 else |
1717 return m; | 1717 return m; |
1718 | 1718 |
1719 if (stride == 1) | 1719 if (stride == 1) |
1831 octave_sort<T> lsort; | 1831 octave_sort<T> lsort; |
1832 | 1832 |
1833 sidx = Array<octave_idx_type> (dv); | 1833 sidx = Array<octave_idx_type> (dv); |
1834 octave_idx_type *vi = sidx.fortran_vec (); | 1834 octave_idx_type *vi = sidx.fortran_vec (); |
1835 | 1835 |
1836 if (mode) | 1836 if (mode != UNSORTED) |
1837 lsort.set_compare (mode); | 1837 lsort.set_compare (mode); |
1838 else | 1838 else |
1839 return m; | 1839 return m; |
1840 | 1840 |
1841 if (stride == 1) | 1841 if (stride == 1) |
1968 octave_idx_type n = numel (); | 1968 octave_idx_type n = numel (); |
1969 | 1969 |
1970 if (n <= 1) | 1970 if (n <= 1) |
1971 return mode ? mode : ASCENDING; | 1971 return mode ? mode : ASCENDING; |
1972 | 1972 |
1973 if (! mode) | 1973 if (mode == UNSORTED) |
1974 { | 1974 { |
1975 // Auto-detect mode. | 1975 // Auto-detect mode. |
1976 compare_fcn_type compare | 1976 compare_fcn_type compare |
1977 = safe_comparator (ASCENDING, *this, false); | 1977 = safe_comparator (ASCENDING, *this, false); |
1978 | 1978 |
1980 mode = DESCENDING; | 1980 mode = DESCENDING; |
1981 else | 1981 else |
1982 mode = ASCENDING; | 1982 mode = ASCENDING; |
1983 } | 1983 } |
1984 | 1984 |
1985 if (mode) | 1985 if (mode != UNSORTED) |
1986 { | 1986 { |
1987 lsort.set_compare (safe_comparator (mode, *this, false)); | 1987 lsort.set_compare (safe_comparator (mode, *this, false)); |
1988 | 1988 |
1989 if (! lsort.is_sorted (data (), n)) | 1989 if (! lsort.is_sorted (data (), n)) |
1990 mode = UNSORTED; | 1990 mode = UNSORTED; |
2021 octave_idx_type r = rows (), c = cols (); | 2021 octave_idx_type r = rows (), c = cols (); |
2022 | 2022 |
2023 if (r <= 1 || c == 0) | 2023 if (r <= 1 || c == 0) |
2024 return mode ? mode : ASCENDING; | 2024 return mode ? mode : ASCENDING; |
2025 | 2025 |
2026 if (! mode) | 2026 if (mode == UNSORTED) |
2027 { | 2027 { |
2028 // Auto-detect mode. | 2028 // Auto-detect mode. |
2029 compare_fcn_type compare | 2029 compare_fcn_type compare |
2030 = safe_comparator (ASCENDING, *this, false); | 2030 = safe_comparator (ASCENDING, *this, false); |
2031 | 2031 |
2052 } | 2052 } |
2053 else | 2053 else |
2054 mode = DESCENDING; | 2054 mode = DESCENDING; |
2055 } | 2055 } |
2056 } | 2056 } |
2057 if (! mode && i == cols ()) | 2057 if (mode == UNSORTED && i == cols ()) |
2058 mode = ASCENDING; | 2058 mode = ASCENDING; |
2059 } | 2059 } |
2060 | 2060 |
2061 if (mode) | 2061 if (mode != UNSORTED) |
2062 { | 2062 { |
2063 lsort.set_compare (safe_comparator (mode, *this, false)); | 2063 lsort.set_compare (safe_comparator (mode, *this, false)); |
2064 | 2064 |
2065 if (! lsort.is_sorted_rows (data (), r, c)) | 2065 if (! lsort.is_sorted_rows (data (), r, c)) |
2066 mode = UNSORTED; | 2066 mode = UNSORTED; |