構造体、共用体、列挙体 DEFINE,マクロ
struct RBUQkey
struct RBUQnode
struct mssUnqDat
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 mssPreUnq( struct mssUnqDat *ud, struct mssFPR *iFile);
0073:
0074: #endif /*_MSSUNIQ_H*/