MUSASHI C source: mssUniq.h


構造体、共用体、列挙体
struct RBUQkey struct RBUQnode struct mssUnqDat


DEFINE,マクロ
MaxMemU PWayU


0001: /** 
0002:  * # CHAPTER # 
0003:  * ============================================================================ 
0004:  * ユニーク(unique)処理関連のヘッダーファイル 
0005:  * ============================================================================ 
0006:  */ 
0007:  
0008: #include <mssConfig.h
0009: #include <mssOption.h
0010: #include <mssOutput.h
0011:  
0012: #ifndef _MSSUNIQ_H 
0013: #define _MSSUNIQ_H 
0014:  
0015: /** 
0016:  * # DEFINE # 
0017:  * マージソートユニークを行う際に、何個までのファイルを同時に併合させるか 
0018:  */ 
0019: #define PWayU 25 
0020:  
0021: /** 
0022:  * # DEFINE # 
0023:  * 赤黒木で使用するメモリ量上限値 
0024:  */ 
0025: #define MaxMemU 2048000 
0026:  
0027: /** 
0028:  * # STRUCT # 
0029:  * 赤黒木で集計するための構造体 
0030:  */ 
0031: struct mssUnqDat { 
0032:   int              fldCnt;        /*データ一行の項目数*/ 
0033:   MssOptKEY *      optKey;        /*キー項目オプション*/ 
0034:   int              procType;      /*0:シーケンシャル集計,1:RBtree*/ 
0035:   struct RBUQnode *rb;            /*赤黒木プライオリティキュー*/ 
0036:   struct mssFPR   *iFile[PWayU];  /*入力ワークファイルポインタ(text部)*/ 
0037:   char             prefixTxt[MssFileNameMaxLen]; /*一時Fileのプレフィックス(text部)*/ 
0038:   struct mssFldRec *fr[PWayU];      /*入力ワークファイル読み込みバッファ*/ 
0039:   char            *tmpDir;         /*ワークファイルのパス*/ 
0040:   int              iStart;         /*開始入力ファイル番号*/ 
0041:   int              iEnd;           /*終了入力ファイル番号*/ 
0042:   int             *inCnt;          /*入力データのカウンタへのポインタ*/ 
0043: }; 
0044:  
0045: /** 
0046:  * # STRUCT # 
0047:  * 赤黒木のノードで利用するキー構造体 
0048:  */ 
0049: struct RBUQkey { 
0050:   char    *str;    /*項目が\0で区切られた一レコード*/ 
0051:   char   **fld;    /*strの各項目へのポインタ*/ 
0052:   int     *bkt;    /*集計されたバケットの番号*/ 
0053:   int      bktCnt; /*その時までに集計されたバケットの数*/ 
0054: }; 
0055:    
0056: /** 
0057:  * # STRUCT # 
0058:  * 赤黒木のノード構造体 
0059:  */ 
0060: struct RBUQnode { 
0061:   struct RBUQkey  *key; /*このキーの大小によってプライオリティが決まる*/ 
0062:   struct RBUQnode *parent, *left, *right; 
0063:   int    rank; 
0064: }; 
0065:  
0066: /** 
0067:  * # PROTOTYPE # 
0068:  */ 
0069: struct mssUnqDat * mssInitUnqDat(int fldCnt, MssOptKEY *optKey, char *tmpDir, int *inCnt); 
0070: int mssReadWriteUnq(struct mssUnqDat *ud, struct mssFPW *fpw); 
0071: void mssFreeUnqDat(struct mssUnqDat *ud); 
0072: void mssPreUnqstruct mssUnqDat *ud, struct mssFPR *iFile); 
0073:  
0074: #endif /*_MSSUNIQ_H*/