diff liboctave/oct-sort.h @ 8820:89b95972e178

fix previously introduced problem in octave_sort, improve design
author Jaroslav Hajek <highegg@gmail.com>
date Fri, 20 Feb 2009 07:08:09 +0100
parents de16ebeef93d
children eb63fbe60fab
line wrap: on
line diff
--- a/liboctave/oct-sort.h
+++ b/liboctave/oct-sort.h
@@ -171,6 +171,20 @@
   
   struct MergeState 
   {
+    MergeState (void) 
+      : a (0), ia (0), alloced (0) 
+      { reset (); }
+    
+    ~MergeState (void) 
+      { delete [] a; delete [] ia; }
+    
+    void reset (void) 
+      { min_gallop = MIN_GALLOP; n = 0; }
+
+    void getmem (octave_idx_type need);
+
+    void getmemi (octave_idx_type need);
+
     // This controls when we get *into* galloping mode.  It's
     // initialized to MIN_GALLOP.  merge_lo and merge_hi tend to nudge
     // it higher for random data, and lower for highly structured
@@ -219,14 +233,6 @@
   octave_idx_type gallop_right (T key, T *a, octave_idx_type n, octave_idx_type hint,
                                 Comp comp);
 
-  void merge_init (void);
-
-  void merge_freemem (void);
-
-  int merge_getmem (octave_idx_type need);
-
-  int merge_getmemi (octave_idx_type need);
-
   template <class Comp>
   int merge_lo (T *pa, octave_idx_type na, 
                 T *pb, octave_idx_type nb,