MUSASHI C source: mssHeader.h


構造体、共用体、列挙体
struct mssFields struct mssFldInfo struct mssHeader


DEFINE,マクロ
MssFlds2length MssFlds2name MssFlds2num MssFlds2numFlg MssFlds2priority MssFlds2revFlg


0001: /** 
0002:  * # CHAPTER # 
0003:  * ============================================================================ 
0004:  * XMLtableのヘッダー関連のヘッダーファイル 
0005:  * ============================================================================ 
0006:  */ 
0007:  
0008: #include <mssOutput.h
0009: #include <mssOption.h
0010:  
0011: #ifndef __MSSHEADER_H 
0012: #define __MSSHEADER_H 1 
0013:  
0014: #include <mssInput.h
0015:  
0016: /** 
0017:  * # MACRO # 
0018:  * mssFields構造体に格納されたi番目の項目の項目番号を得る。 
0019:  */ 
0020: #define MssFlds2num(flds,i) ((*((flds)->fi+(i)))->num) 
0021:  
0022: /** 
0023:  * # MACRO # 
0024:  * mssFields構造体に格納されたi番目の項目の項目名を得る。 
0025:  */ 
0026: #define MssFlds2name(flds,i) ((*((flds)->fi+(i)))->name) 
0027:  
0028: /** 
0029:  * # MACRO # 
0030:  * mssFields構造体に格納されたi番目の項目のソート優先順位番号を得る。 
0031:  */ 
0032: #define MssFlds2priority(flds,i) ((*((flds)->fi+(i)))->priority) 
0033:  
0034: /** 
0035:  * # MACRO # 
0036:  * mssFields構造体に格納されたi番目の項目の逆順ソートフラグを得る。 
0037:  */ 
0038: #define MssFlds2revFlg(flds,i) ((*((flds)->fi+(i)))->revFlg) 
0039:  
0040: /** 
0041:  * # MACRO # 
0042:  * mssFields構造体に格納されたi番目の項目の数値ソートフラグを得る。 
0043:  */ 
0044: #define MssFlds2numFlg(flds,i) ((*((flds)->fi+(i)))->numFlg) 
0045:  
0046: /** 
0047:  * # MACRO # 
0048:  * mssFields構造体に格納されたi番目の項目の長さ(固定長時のみ)を得る。 
0049:  */ 
0050: #define MssFlds2length(flds,i) ((*((flds)->fi+(i)))->length) 
0051:  
0052: /** 
0053:  * # STRUCT # 
0054:  * xmlTablの項目に関する情報を格納する構造体 
0055:  */ 
0056: struct mssFldInfo { 
0057:   int    num;     /*項目番号(0から始まる)*/ 
0058:   char  *name;    /*項目名*/ 
0059:   int    priority;/*ソートのキー優先番号(1から始まる、無しは0)*/ 
0060:   int    revFlg;  /*逆順ソートフラグ(0 or 1)*/ 
0061:   int    numFlg;  /*数値ソートフラグ(0 or 1)*/ 
0062:   int    length;  /*固定長のときの項目長(情報なしの場合は0)*/ 
0063:   char  *comment; /*項目のコメント(情報なしの場合はNULL)*/ 
0064: }; 
0065:  
0066: /** 
0067:  * # STRUCT # 
0068:  * 複数項目を格納する構造体 
0069:  */ 
0070: struct mssFields { 
0071:   struct mssFldInfo **fi; /*mssFldInfoへのポインタ配列*/ 
0072:   int cnt;                /*項目の数*/ 
0073: }; 
0074:  
0075: /** 
0076:  * # STRUCT # 
0077:  * xmlTableのヘッダー情報を格納する構造体 
0078:  */ 
0079: struct mssHeader { 
0080:   struct mssFields * flds;  /*項目情報*/ 
0081:   char *             title;   /*タイトル文字列*/ 
0082:   char *             comment; /*コメント文字列(改行は保存される)*/ 
0083:   int                version; /*xmlTableのバージョン(1.0->10, 1.1->11)*/ 
0084:   char *             xmlver;  /*XMLバージョン*/ 
0085:   char *             xmlenc;  /*XMLエンコーディング*/ 
0086:   int                datTop;  /*実際のデータが始まるまでの文字数*/ 
0087:   int                recCnt;  /*レコード行数(情報なしの場合は-1)*/ 
0088: }; 
0089:  
0090: /** 
0091:  * # PROTOTYPE #  
0092:  */ 
0093: struct  mssFldInfo *mssInitFldInfo(); 
0094: void  mssFreeFldInfostruct mssFldInfo *fi); 
0095: void  mssShowFldInfo(struct mssFldInfo *fi); 
0096: struct mssFldInfo *     mssFldNum2Add(struct mssFields *flds, int num); 
0097: struct mssFldInfo * mssFldNam2Add(struct mssFields *flds, char *name); 
0098: struct mssFldInfo ** mssFldGlbNam2Add(struct mssFields *flds, char *name); 
0099: int  mssFldNam2Num(struct mssFields *flds, char *name); 
0100: int  mssFldNum2SrtPri(struct mssFields *flds, int num); 
0101: int  mssFldNum2SrtRev(struct mssFields *flds, int num); 
0102: int  mssFldNum2SrtNum(struct mssFields *flds, int num); 
0103: void  mssFreeHeader(struct mssHeader *hd); 
0104: struct mssHeader * mssInitHeader(char *title, char *comment); 
0105: struct mssHeader * mssInitCpyHeader(struct mssHeader *old); 
0106: struct mssHeader * mssInitSetHeader( char *title, char *comment, char *xmlver, char *xmlenc, int version); 
0107: void  mssSetHeaderRecCnt(struct mssHeader *hd, int recCnt); 
0108: struct mssFields * mssInitFields(); 
0109: void  mssFreeFields(struct mssFields *flds); 
0110: void  mssShowFields(struct mssFields *flds); 
0111: void mssUpdateFieldsSortPriority(struct mssFields *flds); 
0112: void mssSetFldInfoSort(struct mssFldInfo *fi, int prioriy, int revFlg,int numFlg); 
0113: void mssClearFieldsSort(struct mssFields *flds); 
0114: void mssSetFieldsSort(struct mssFields *flds, struct mssFields *sortFlds); 
0115: void mssSetFieldsSortPriority(struct mssFields *flds); 
0116: void mssSetFldInfoLength(struct mssFldInfo *fi, int length); 
0117: void mssSetFldInfoNum(struct mssFldInfo *fi, int num); 
0118: void mssSetFldInfoName(struct mssFldInfo *fi, char *name); 
0119: void mssSetFldInfoComment(struct mssFldInfo *fi, char *comment); 
0120: void  mssSetFieldsSequenceNum(struct mssFields *flds); 
0121: void   mssAddFieldsByStr(struct mssFields *flds, char *str); 
0122: void mssAddFieldsByStrList(struct mssFields *flds, char **str, int cnt); 
0123: void mssAddFieldsByFldInfo(struct mssFields *flds, struct mssFldInfo *fi); 
0124: void mssAddFieldsByFldInfoList(struct mssFields *flds, struct mssFldInfo **fi); 
0125: void mssAddFieldsByFields(struct mssFields *flds, struct mssFields *addFlds); 
0126: void mssAddHeadOrOptFields(struct mssFields *flds, struct mssHeader *hd, MssOptFLD *optFld); 
0127: void mssWriteFldInfo(struct mssFldInfo *fi, int version, struct mssFPW *fp); 
0128: void mssWriteHeaderstruct mssHeader *hd, struct mssFPW *fp); 
0129: void mssWriteFooter(struct mssFPW *fp); 
0130: void mssCreateBlankXtFile(char **fldName, int fldCnt, char *fname); 
0131: struct mssHeader * mssReadHeaderstruct mssFPR *fp); 
0132: void mssShowHeader(struct mssHeader *hd); 
0133: int mssChkSortedstruct mssFields *sf, struct mssHeader *hd); 
0134: void mssSetOptFld(MssOptFLD *optFLD, struct mssHeader *hd); 
0135: void mssSetOptKey(MssOptKEY *optKEY, struct mssHeader *hd); 
0136:  
0137: #endif /* _HEADER_H */ 
0138: