]> git.llucax.com Git - z.facultad/75.06/emufs.git/blob - emufs/external_sort/extsort.h
Ejemplo de external sort andando aparentemente sin bugs. Falta generalizar un par...
[z.facultad/75.06/emufs.git] / emufs / external_sort / extsort.h
1 /* Filename:  extsort.h
2
3    Programmer:  Br. David Carlson
4
5    Date:  April 18, 2003
6
7    This header file sets up the constants, types, and function prototypes used by the
8    ExtSort program.
9 */
10
11 #include <iostream>
12 #include <fstream>
13 #include <string>
14 using namespace std;
15
16
17 // Comment off the following line if you do not want to see debugging information.
18 //#define DEBUG
19
20 enum { MaxString = 32, BufSize = 2048, _MAX_PATH = 64 };
21
22
23 typedef char StringType[MaxString];
24
25 typedef StringType BufType[BufSize];   // A buffer will hold 2048 strings, for a total of 64K bytes.
26
27 typedef char PathType[_MAX_PATH];
28
29
30 void Error(const string & Msg);
31
32 void Error(const string & MsgA, const string & MsgB);
33
34 int MakeSortedRuns(fstream & DataFile, PathType FileName);
35
36 bool LessThan(StringType First, StringType Second);
37
38 void QuickSort(BufType Buf, int Lower, int Upper);
39
40 void Swap(StringType First, StringType Second);
41
42 int Partition(BufType Buf, int Lower, int Upper);
43
44 void Merge(StringType InFileName1, StringType InFileName2, StringType OutFileName);
45
46 int FillBuffer(fstream & InFile, BufType Buffer, bool & HaveData, StringType NextWord);
47
48 void Copy(StringType Word, BufType Buffer, int & Index, fstream & OutFile);
49
50 void HandleMerges(int NumFiles, PathType FileName);
51