# HG changeset patch # User jwe # Date 1202072292 0 # Node ID d98dea7d16b0ec4711ac2166afc37e35589db19c # Parent da006c2fe55cd5ff68709e3b0b86a09c5a55da7f [project @ 2008-02-03 20:58:12 by jwe] diff -r da006c2fe55c -r d98dea7d16b0 liboctave/Array-d.cc --- a/liboctave/Array-d.cc Sun Feb 03 19:34:26 2008 +0000 +++ b/liboctave/Array-d.cc Sun Feb 03 20:58:12 2008 +0000 @@ -344,30 +344,30 @@ template <> bool -Array::ascending_compare (double a, double b) const +ascending_compare (double a, double b) { return (xisnan (b) || (a < b)); } template <> bool -Array::ascending_compare (vec_index *a, - vec_index *b) const +ascending_compare (vec_index *a, + vec_index *b) { return (xisnan (b->vec) || (a->vec < b->vec)); } template <> bool -Array::descending_compare (double a, double b) const +descending_compare (double a, double b) { return (xisnan (a) || (a > b)); } template <> bool -Array::descending_compare (vec_index *a, - vec_index *b) const +descending_compare (vec_index *a, + vec_index *b) { return (xisnan (b->vec) || (a->vec > b->vec)); } diff -r da006c2fe55c -r d98dea7d16b0 liboctave/Array.cc --- a/liboctave/Array.cc Sun Feb 03 19:34:26 2008 +0000 +++ b/liboctave/Array.cc Sun Feb 03 20:58:12 2008 +0000 @@ -2629,6 +2629,25 @@ return m; } +#if defined (HAVE_IEEE754_DATA_FORMAT) + +template <> +extern bool ascending_compare (double, double); +template <> +extern bool ascending_compare (vec_index*, vec_index*); +template <> +extern bool descending_compare (double, double); +template <> +extern bool descending_compare (vec_index*, vec_index*); + +template <> +Array Array::sort (octave_idx_type dim, sortmode mode) const; +template <> +Array Array::sort (Array &sidx, + octave_idx_type dim, sortmode mode) const; + +#endif + // FIXME -- this is a mess. template diff -r da006c2fe55c -r d98dea7d16b0 liboctave/ChangeLog --- a/liboctave/ChangeLog Sun Feb 03 19:34:26 2008 +0000 +++ b/liboctave/ChangeLog Sun Feb 03 20:58:12 2008 +0000 @@ -1,3 +1,11 @@ +2008-02-03 Michael Goffioul + + * Array.cc (ascending_compare, descending_compare, + Array::sort): Declare explicit specialization for T=double to + avoid symbol duplication error at link time. + * Array-d.cc (ascending_compare, descending_compare): Declare and + define as nonmember functions, not member functions of Array. + 2008-02-03 John W. Eaton * Array-i.cc: Also instantiate Arrays for long long type if it exists.