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;