MUSASHI C source: mssBase.h


構造体、共用体、列挙体
struct mssAllocInf struct mssComHelp struct mssGlobalVariables struct mssStrList struct mssStrings


DEFINE,マクロ
mssErrorNoDefault mssExitSuccess


0001: /** 
0002:  * # CHAPTER # 
0003:  * ============================================================================ 
0004:  * MUSASHIで用いられる基本的な関数用のヘッダーファイル 
0005:  * ============================================================================ 
0006:  */ 
0007:  
0008: #include <mssConfig.h
0009:  
0010: #include <stdlib.h> 
0011: #include <time.h> 
0012:  
0013: #ifndef __MSSBASE_H 
0014: #define __MSSBASE_H 1 
0015:  
0016:  
0017: /** 
0018:  * # DEFINE # 
0019:  * 正常終了時辺値 
0020:  */ 
0021: #define mssExitSuccess EXIT_SUCCESS /*正常終了時辺値*/ 
0022:  
0023: /** 
0024:  * # DEFINE # 
0025:  *デフォルトのエラー終了番号 
0026:  */ 
0027: #define mssErrorNoDefault 1 
0028:  
0029: /** 
0030:  * # STRUCT # 
0031:  * コマンドヘルプの型 
0032:  */ 
0033: struct mssComHelp { 
0034:   char *name;      /*コマンド名*/ 
0035:   char *version;   /*バージョン*/ 
0036:   char *title;     /*タイトル*/ 
0037:   char *summary;   /*要約*/ 
0038:   char *example;   /*利用例*/ 
0039:   char *reference; /*参照コマンド*/ 
0040:   char *author;    /*作者*/ 
0041:   char *bugReport; /*バグレポート先E-mail*/ 
0042:   char *homepage;  /*コマンドに関するHP*/ 
0043: }; 
0044:  
0045: /** 
0046:  * # STRUCT # 
0047:  * MUSASHIが利用するグローバル変数構造体(base.cにて定義) 
0048:  */ 
0049: struct mssGlobalVariables { 
0050:   struct mssComHelp *comHelp; /*コマンドヘルプ*/ 
0051:   int    inCnt;    /*データ入力行数*/ 
0052:   int    outCnt;   /*データ出力行数*/ 
0053:   int    keyNo;    /*現在処理中のキー番号*/ 
0054:   int    keyCnt;   /*現在処理中のキーの行数*/ 
0055:   int    keyLine;  /*現在処理中のキーのなかでの行番号*/ 
0056:                    /*上記の各種件数は、APIでは一切更新しないので、各コマンドの 
0057:                      プログラムの中で設定する。 
0058:                      inCnt,outCntは、コマンド終了メッセージ(mssShowEndMsg関数) 
0059:                      の一部として出力される。*/ 
0060:   int    inFldCnt; /*入力データの項目数(cal_prior関数で設定)*/ 
0061:   int    quiet;    /*メッセージ出力をしないフラグ(mssInit,setOption関数で設定)*/ 
0062:   int    argc;     /*コマンドライン引数(mssInit関数で設定)*/ 
0063:   char **argv;     /*コマンドライン引数(mssInit関数で設定)*/ 
0064:   char *tmpPath;   /*一時ファイル用ディレクトリパス名*/ 
0065:   char *xmlDefVer; /*XMLのデフォルトバージョン*/ 
0066:   char *xmlDefEnc; /*XMLのデフォルトエンコーディング*/ 
0067:   char *xtDefVer;  /*XMLtableのデフォルトバージョン*/ 
0068:   int    txtFlg;   /*XMLtableでなく、plain textデータを使うフラグ(mssSetOption関数で設定*/ 
0069:   int    allocDeb; /*領域確保変数のデバッグフラグ*/ 
0070:   struct mssAllocInf *allocInf; 
0071:   int    allocCnt;   /*{M,C,Re}allocで領域確保した回数*/ 
0072:   int    allocFreeCnt; /*{M,C,Re}alloc-Freeで領域確保されている数(全て開放していれば最後には0になるはず)*/ 
0073:   int    writeHeaderFlg; /*ヘッダーを既に出力していたら1、さもなければ0(mssWriteHeader関数でセット)*/ 
0074:   int    writeFooterFlg; /*フッターを既に出力していたら1、さもなければ0*/ 
0075:   int    usedTempFileFlg;   /*一時ファイルを利用しているフラグ*/ 
0076: }; 
0077:  
0078: /** 
0079:  * # STRUCT # 
0080:  * 動的メモリ確保のデバッグ用情報 
0081:  */ 
0082: struct mssAllocInf { 
0083:   int func;  /*0:free,1:calloc,2:malloc,3:realloc,4:reallocLim,5:strdup*/ 
0084:   void *add; /*アドレス*/ 
0085:   int cnt;   /*AllocCnt*/ 
0086:   char *msg; /*メッセージ*/ 
0087:   int refNo; /*allocに対するfree,freeに対するallocの番号*/ 
0088: }; 
0089:  
0090: /** 
0091:  * # STRUCT # 
0092:  * 文字列をConcatenateし、一つの文字列領域を作成する構造体 
0093:  */ 
0094: struct mssStrings { 
0095:   char *str;    /*先頭文字*/ 
0096:   int   cnt;    /*文字数*/ 
0097: }; 
0098:  
0099: /** 
0100:  * # STRUCT # 
0101:  * 文字列を配列リストとして登録する構造体 
0102:  * 登録されたn番目の文字列へのポインタによるアクセスが可能 
0103:  */ 
0104: struct mssStrList { 
0105:   char *str;     /*文字列リストの先頭*/ 
0106:   int  *pointer; /*各文字列の相対的位置(先頭からの文字数)が入る*/ 
0107:   int   cnt;     /*登録された文字列数*/ 
0108:   int   chrCnt;  /*登録された総文字数*/ 
0109: }; 
0110:  
0111: /** 
0112:  * # PROTOTYPE #  
0113:  */ 
0114: void  mssSetSignalHandler(); 
0115: void mssInit(int argc, char **argv, struct mssComHelp *comHelp); 
0116: void mssEnd(int status); 
0117: void  mssShowStartMsg(); 
0118: void  mssShowEndMsg(); 
0119: void  mssShowErrMsg(char *msg, ...); 
0120: void * mssCalloc(int size, char *errMsg); 
0121: void * mssMalloc(int size, char *errMsg); 
0122: void * mssRealloc(void *ptr, int size, char *errMsg); 
0123: void * mssReallocLim(void *ptr,int size,int lim,char *errMsg); 
0124: char * mssStrdup(char *s); 
0125: void mssFree(void *add); 
0126: void mssShowAllocInf(void); 
0127: struct mssStrings * mssInitStrings(); 
0128: void  mssFreeStrings(struct mssStrings *s); 
0129: void  mssCatStrings(struct mssStrings *s, char *str); 
0130: void mssCatnStrings(struct mssStrings *s, char *str, int n); 
0131: struct mssStrList * mssInitStrList(); 
0132: void  mssFreeStrList(struct mssStrList *s); 
0133: void  mssPutStrList(struct mssStrList *s, char *str); 
0134: char * mssGetStrList(struct mssStrList *s,int n); 
0135: char *                  mssCatTwoStrings(char *str1, char *str2); 
0136: char * mssSkipStrBlock(char *str, char startChr, char endChr); 
0137: void mssSwapInt(int *x, int *y); 
0138: void mssSwapLng(long *x, long *y); 
0139: void mssSwapDbl(double *x, double *y); 
0140: char ** mssTokByChr(char *string, char tok, int *cnt, int dup); 
0141: int mssIsValidStr(char *str); 
0142: char * mssItoA(int num); 
0143: char * mssFtoA(double num); 
0144: time_t mssStrToTime(char *str); 
0145: int mssInitRand(int seed); 
0146: int mssGenRand(int from, int to); 
0147: double mssGenRand01(); 
0148:  
0149: #endif /* _FP_H */