changeset 4998:3f3d6eec0a2c

[project @ 2004-09-15 21:00:01 by jwe]
author jwe
date Wed, 15 Sep 2004 21:00:13 +0000
parents d117a9fb83be
children 5538e4ceb616
files liboctave/ChangeLog liboctave/oct-sort.cc liboctave/oct-sort.h src/ChangeLog src/DLD-FUNCTIONS/sort.cc
diffstat 5 files changed, 29 insertions(+), 13 deletions(-) [+]
line wrap: on
line diff
--- a/liboctave/ChangeLog	Wed Sep 15 20:49:35 2004 +0000
+++ b/liboctave/ChangeLog	Wed Sep 15 21:00:13 2004 +0000
@@ -1,3 +1,8 @@
+2004-09-15  David Bateman  <dbateman@free.fr>
+
+	* oct-sort.h (octave_sort<T>::set_compare (bool (*comp) (T, T))):
+	New function to set the comparison function for the sort.
+
 2004-09-10  John W. Eaton  <jwe@octave.org>
 
 	* lo-mappers.cc (xround): Fix typo.
--- a/liboctave/oct-sort.cc	Wed Sep 15 20:49:35 2004 +0000
+++ b/liboctave/oct-sort.cc	Wed Sep 15 21:00:13 2004 +0000
@@ -92,14 +92,14 @@
 template <class T>
 octave_sort<T>::octave_sort (void) : compare (NULL) 
 { 
-  merge_init ( ); 
+  merge_init (); 
   merge_getmem (1024);
 }
 
 template <class T>
 octave_sort<T>::octave_sort (bool (*comp) (T, T)) : compare (comp) 
 { 
-  merge_init ( ); 
+  merge_init (); 
   merge_getmem (1024);
 }
   
--- a/liboctave/oct-sort.h	Wed Sep 15 20:49:35 2004 +0000
+++ b/liboctave/oct-sort.h	Wed Sep 15 21:00:13 2004 +0000
@@ -109,16 +109,20 @@
 class
 octave_sort
 {
- public:
+public:
+
   octave_sort (void);
 
   octave_sort (bool (*comp) (T, T));
   
-  ~octave_sort (void) { merge_freemem ( ); }
+  ~octave_sort (void) { merge_freemem (); }
+
+  void set_compare (bool (*comp) (T, T)) { compare = comp; }
 
   void sort (T *v, int elements);
 
- private:
+private:
+
   /* One MergeState exists on the stack per invocation of mergesort.  It's just
    * a convenient way to pass state around among the helper functions.
    *
--- a/src/ChangeLog	Wed Sep 15 20:49:35 2004 +0000
+++ b/src/ChangeLog	Wed Sep 15 21:00:13 2004 +0000
@@ -1,3 +1,8 @@
+2004-09-15  John W. Eaton  <jwe@octave.org>
+
+	* DLD-FUNCTIONS/sort.cc (mx_sort): Return octave_value, not
+	octave_value list.
+
 2004-09-15  David Bateman  <dbateman@free.fr>
 
 	* ov.cc (octave_value::octave_value (const ArrayN<char>&, bool)):
--- a/src/DLD-FUNCTIONS/sort.cc	Wed Sep 15 20:49:35 2004 +0000
+++ b/src/DLD-FUNCTIONS/sort.cc	Wed Sep 15 21:00:13 2004 +0000
@@ -1,4 +1,4 @@
-/*
+v/*
 
 Copyright (C) 1996, 1997 John W. Eaton
 Copyright (C) 2004 David Bateman
@@ -50,10 +50,10 @@
 };
 
 template <class T>
-static octave_value_list
+static octave_value
 mx_sort (ArrayN<T> &m, int dim, sortmode mode = UNDEFINED)
 {
-  octave_value_list retval;
+  octave_value retval;
 
   if (m.length () < 1)
     return retval;
@@ -105,7 +105,7 @@
 	}
     }
 
-  retval(0) = octave_value (m);
+  retval = m;
 
   return retval;
 }
@@ -219,7 +219,7 @@
 
 bool
 ascending_compare (unsigned EIGHT_BYTE_INT a, 
-		    unsigned EIGHT_BYTE_INT b)
+		   unsigned EIGHT_BYTE_INT b)
 {
   return (a < b);
 }
@@ -250,10 +250,10 @@
 template class octave_sort<vec_index<unsigned EIGHT_BYTE_INT> *>;
 
 template <>
-static octave_value_list
+static octave_value
 mx_sort (ArrayN<double> &m, int dim, sortmode mode)
 {
-  octave_value_list retval;
+  octave_value retval;
 
   if (m.length () < 1)
     return retval;
@@ -362,7 +362,8 @@
 	}
     }
 
-  retval(0) = m;
+  retval = m;
+
   return retval;
 }
 
@@ -459,6 +460,7 @@
 
   retval(1) = idx;
   retval(0) = m;
+
   return retval;
 }