20 #ifndef _MERGE_SORTED_RUNS_H
21 #define _MERGE_SORTED_RUNS_H
38 #include <tpie/file_stream.h>
72 template <
class T,
class M>
76 TPIE_OS_OFFSET cutoff=-1,
80 size_t arity = end-start;
91 for (i = 0; i < arity; i++) {
94 in_objects[i] = &
stream->read();
95 MergeHeap->insert( in_objects[i], i );
99 if (indicator) indicator->step();
106 MergeHeap->initialize ( );
111 while (MergeHeap->sizeofheap() > 0) {
112 i = MergeHeap->get_min_run_id ();
113 outStream->write(*in_objects[i]);
118 if ( (cutoff != -1) && (nread[i]>=cutoff))
122 if (
stream->can_read()) in_objects[i] = &
stream->read();
125 if (indicator) indicator->step();
129 MergeHeap->delete_min_and_insert(NULL);
132 MergeHeap->delete_min_and_insert (in_objects[i]);
150 template <
class T,
class CMPR>
182 template <
class T,
class CMPR>
204 #endif //_MERGE_SORTED_RUNS_H