# HG changeset patch # User Jaroslav Hajek # Date 1233759901 -3600 # Node ID 4238f2600a17f51134754f554c0f71c35698c833 # Parent af72c8137d6455ce93d30c17782fe259d54f5a16 fix string_vector::sort diff -r af72c8137d64 -r 4238f2600a17 liboctave/Array-str.cc --- a/liboctave/Array-str.cc Wed Feb 04 13:53:57 2009 +0100 +++ b/liboctave/Array-str.cc Wed Feb 04 16:05:01 2009 +0100 @@ -24,14 +24,14 @@ #include #endif +#include + // Instantiate Arrays of strings. #include "Array.h" #include "Array.cc" #include "oct-sort.cc" -#include - INSTANTIATE_ARRAY_SORT (std::string); INSTANTIATE_ARRAY (std::string, OCTAVE_API); diff -r af72c8137d64 -r 4238f2600a17 liboctave/ChangeLog --- a/liboctave/ChangeLog Wed Feb 04 13:53:57 2009 +0100 +++ b/liboctave/ChangeLog Wed Feb 04 16:05:01 2009 +0100 @@ -1,3 +1,9 @@ +2009-02-04 Jaroslav Hajek + + * str-vec.h (string_vector::sort): Remove implementation. + * str-vec.cc (string_vector::sort): Move here. Use in-place sorting. + * Array-str.cc: Fix order of header files. + 2009-02-04 Jaroslav Hajek * oct-locbuf.h: Specialize OCTAVE_LOCAL_BUFFER to use chunked diff -r af72c8137d64 -r 4238f2600a17 liboctave/str-vec.cc --- a/liboctave/str-vec.cc Wed Feb 04 13:53:57 2009 +0100 +++ b/liboctave/str-vec.cc Wed Feb 04 16:05:01 2009 +0100 @@ -84,6 +84,18 @@ } string_vector& +string_vector::sort (bool make_uniq) +{ + // Don't use Array::sort () to allow sorting in place. + octave_sort lsort; + lsort.sort (Array::fortran_vec (), length ()); + + if (make_uniq) + uniq (); + + return *this; +} +string_vector& string_vector::uniq (void) { octave_idx_type len = length (); diff -r af72c8137d64 -r 4238f2600a17 liboctave/str-vec.h --- a/liboctave/str-vec.h Wed Feb 04 13:53:57 2009 +0100 +++ b/liboctave/str-vec.h Wed Feb 04 16:05:01 2009 +0100 @@ -84,15 +84,7 @@ std::string operator[] (octave_idx_type i) const { return Array::elem (i); } - string_vector& sort (bool make_uniq = false) - { - Array::sort (); - - if (make_uniq) - uniq (); - - return *this; - } + string_vector& sort (bool make_uniq = false); string_vector& uniq (void);