MUSASHI C source: mssOption.h


構造体、共用体、列挙体
struct OptDBL struct OptDLS struct OptFLD struct OptFLG struct OptILS struct OptINF struct OptINT struct OptKEY struct OptOTF struct OptRNG struct OptSEL struct OptSLS struct OptSTR enum OptType


0001:  
0002: #ifndef __MSSOPTION_H 
0003: #define __MSSOPTION_H 1 
0004:  
0005: #include <mssBase.h
0006:  
0007: /** 
0008:  * # ENUM # 
0009:  * コマンドオプションの型 
0010:  */ 
0011: enum OptType { 
0012:   OSTR, /*文字列型      */ 
0013:   OSEL, /*文字列選択型  */ 
0014:   OSLS, /*文字列リスト型*/ 
0015:   OINT, /*int型         */ 
0016:   OILS, /*intリスト型   */ 
0017:   ORNG, /*int範囲型     */ 
0018:   ODBL, /*double型      */ 
0019:   ODLS, /*doubleリスト型*/ 
0020:   OINF, /*入力ファイル型*/ 
0021:   OOTF, /*出力ファイル型*/ 
0022:   OFLD, /*項目型        */ 
0023:   OKEY, /*key項目型     */ 
0024:   OFLG  /*フラグ型      */ 
0025: }; 
0026:  
0027: /** 
0028:  * # STRUCT # 
0029:  * 文字列型 
0030:  */ 
0031: struct OptSTR { 
0032:   enum OptType  type;    /*オプションタイプ*/ 
0033:   char         *keyWord; /*キーワード文字*/ 
0034:   int           must;    /*指定必須フラグ*/ 
0035:   char         *def;     /*デフォルト*/ 
0036:   int           minLen;  /*要素の最小文字数*/ 
0037:   int           maxLen;  /*要素の最大文字数*/ 
0038:   char         *title;   /*パラメータタイトル*/ 
0039:   char         *comment; /*パラメータコメント*/ 
0040:  
0041:   int           set;     /*コマンドライン上で指定されたよフラグ*/ 
0042:   char         *str;     /*オプション文字列:argvをstrdupしたもの*/ 
0043: }; 
0044:  
0045: /** 
0046:  * # TYPEDEF # 
0047:  */ 
0048: typedef struct OptSTR MssOptSTR
0049:  
0050: /** 
0051:  * # STRUCT # 
0052:  * 文字列選択型 
0053:  */ 
0054: struct OptSEL { 
0055:   enum OptType  type;    /*オプションタイプ*/ 
0056:   char         *keyWord; /*キーワード文字*/ 
0057:   int           must;    /*指定必須フラグ*/ 
0058:   char         *def;     /*デフォルト*/ 
0059:   char         *selList; /*文字列選択リスト*/ 
0060:   char         *title;   /*パラメータタイトル*/ 
0061:   char         *comment; /*パラメータコメント*/ 
0062:   char         *selListTitle; /*文字列選択リストタイトル*/ 
0063:  
0064:   int           set;     /*コマンドライン上で指定されたよフラグ*/ 
0065:   char         *str;     /*オプション文字列:argvをstrdupしたもの*/ 
0066: } OptSEL; 
0067:  
0068: /** 
0069:  * # TYPEDEF # 
0070:  */ 
0071: typedef struct OptSEL MssOptSEL
0072:  
0073: /** 
0074:  * # STRUCT # 
0075:  * 文字列型 
0076:  */ 
0077: struct OptSLS { 
0078:   enum OptType  type;    /*オプションタイプ*/ 
0079:   char         *keyWord; /*キーワード文字*/ 
0080:   int           must;    /*指定必須フラグ*/ 
0081:   char         *def;     /*デフォルト*/ 
0082:   int           maxCnt;  /*リスト要素の最大数*/ 
0083:   int           minLen;  /*要素の最小文字数*/ 
0084:   int           maxLen;  /*要素の最大文字数*/ 
0085:   int           colFlg;  /*要素内コロン指定可能フラグ ex) abc:xyz*/ 
0086:   char         *title;   /*パラメータタイトル*/ 
0087:   char         *comment; /*パラメータコメント*/ 
0088:  
0089:   int           set;     /*コマンドライン上で指定されたよフラグ*/ 
0090:   char         *str;     /*オプション文字列:argvをstrdupしたもの*/ 
0091:   char        **strList; /*実際の値*/ 
0092:   char        **colList; /*要素内コロン以下の文字列*/ 
0093:   int           cnt;     /*リストの個数*/ 
0094: }; 
0095:  
0096: /** 
0097:  * # TYPEDEF # 
0098:  */ 
0099: typedef struct OptSLS MssOptSLS
0100:  
0101: /** 
0102:  * # STRUCT # 
0103:  * 整数型 
0104:  */ 
0105: struct OptINT { 
0106:   enum OptType  type;    /*オプションタイプ*/ 
0107:   char         *keyWord; /*キーワード文字*/ 
0108:   int           must;    /*指定必須フラグ*/ 
0109:   int           def;     /*デフォルト*/ 
0110:   int           min;     /*要素の最小値*/ 
0111:   int           max;     /*要素の最大値*/ 
0112:   char         *title;   /*パラメータタイトル*/ 
0113:   char         *comment; /*パラメータコメント*/ 
0114:  
0115:   int           set;     /*コマンドライン上で指定されたよフラグ*/ 
0116:   char         *str;     /*オプション文字列:argvをstrdupしたもの*/ 
0117:   int           val;     /*実際の値*/ 
0118: }; 
0119:  
0120: /** 
0121:  * # TYPEDEF # 
0122:  */ 
0123: typedef struct OptINT MssOptINT
0124:  
0125: /** 
0126:  * # STRUCT # 
0127:  * 整数リスト型 
0128:  */ 
0129: struct OptILS { 
0130:   enum OptType  type;    /*オプションタイプ*/ 
0131:   char         *keyWord; /*キーワード文字*/ 
0132:   int           must;    /*指定必須フラグ*/ 
0133:   char         *def;     /*デフォルト(文字列で)*/ 
0134:   int           maxCnt;  /*リスト要素の最大数*/ 
0135:   int           min;     /*要素の最小値*/ 
0136:   int           max;     /*要素の最大値*/ 
0137:   char         *title;   /*パラメータタイトル*/ 
0138:   char         *comment; /*パラメータコメント*/ 
0139:  
0140:   int           set;     /*コマンドライン上で指定されたよフラグ*/ 
0141:   char         *str;     /*オプション文字列:argvをstrdupしたもの*/ 
0142:   int          *val;     /*実際の値*/ 
0143:   int           cnt;     /*リストの個数*/ 
0144: }; 
0145:  
0146: /** 
0147:  * # TYPEDEF # 
0148:  */ 
0149: typedef struct OptILS MssOptILS
0150:  
0151: /** 
0152:  * # STRUCT # 
0153:  * 整数範囲型 
0154:  */ 
0155: struct OptRNG { 
0156:   enum OptType  type;    /*オプションタイプ*/ 
0157:   char         *keyWord; /*キーワード文字*/ 
0158:   int           must;    /*指定必須フラグ*/ 
0159:   char         *def;     /*デフォルト(文字で)*/ 
0160:   int           maxCnt;  /*リスト要素の最大数*/ 
0161:   int           min;     /*要素の最小値*/ 
0162:   int           max;     /*要素の最大値*/ 
0163:   char         *title;   /*パラメータタイトル*/ 
0164:   char         *comment; /*パラメータコメント*/ 
0165:  
0166:   int           set;     /*コマンドライン上で指定されたよフラグ*/ 
0167:   char         *str;     /*オプション文字列:argvをstrdupしたもの*/ 
0168:   int          *from;    /*実際の値リスト(from)*/ 
0169:   int          *to;      /*実際の値リスト(to)*/ 
0170:   int           cnt;     /*リストの個数*/ 
0171: }; 
0172:  
0173: /** 
0174:  * # TYPEDEF # 
0175:  */ 
0176: typedef struct OptRNG MssOptRNG
0177:  
0178: /** 
0179:  * # STRUCT # 
0180:  * 実数型 
0181:  */ 
0182: struct OptDBL { 
0183:   enum OptType  type;    /*オプションタイプ*/ 
0184:   char         *keyWord; /*キーワード文字*/ 
0185:   int           must;    /*指定必須フラグ*/ 
0186:   double        def;     /*デフォルト*/ 
0187:   double        min;     /*要素の最小値*/ 
0188:   double        max;     /*要素の最大値*/ 
0189:   char         *title;   /*パラメータタイトル*/ 
0190:   char         *comment; /*パラメータコメント*/ 
0191:    
0192:   int           set;     /*コマンドライン上で指定されたよフラグ*/ 
0193:   char         *str;     /*オプション文字列:argvをstrdupしたもの*/ 
0194:   double        val;     /*実際の値*/ 
0195: }; 
0196:  
0197: /** 
0198:  * # TYPEDEF # 
0199:  */ 
0200: typedef struct OptDBL MssOptDBL
0201:  
0202: /** 
0203:  * # STRUCT # 
0204:  * 実数リスト型 
0205:  */ 
0206: struct OptDLS { 
0207:   enum OptType  type;    /*オプションタイプ*/ 
0208:   char         *keyWord; /*キーワード文字*/ 
0209:   int           must;    /*指定必須フラグ*/ 
0210:   char         *def;     /*デフォルト(文字列で)*/ 
0211:   int           maxCnt;  /*リスト要素の最大数*/ 
0212:   double        min;     /*要素の最小値*/ 
0213:   double        max;     /*要素の最大値*/ 
0214:   char         *title;   /*パラメータタイトル*/ 
0215:   char         *comment; /*パラメータコメント*/ 
0216:    
0217:   int           set;     /*コマンドライン上で指定されたよフラグ*/ 
0218:   char         *str;     /*オプション文字列:argvをstrdupしたもの*/ 
0219:   double       *val;     /*実際の値*/ 
0220:   int           cnt;     /*リストの個数*/ 
0221: }; 
0222:  
0223: /** 
0224:  * # TYPEDEF # 
0225:  */ 
0226: typedef struct OptDLS MssOptDLS
0227:  
0228: /** 
0229:  * # STRUCT # 
0230:  * 入力ファイル型 
0231:  */ 
0232: struct OptINF { 
0233:   enum OptType  type;    /*オプションタイプ*/ 
0234:   char         *keyWord; /*キーワード文字*/ 
0235:   int           must;    /*指定必須フラグ*/ 
0236:   int           maxCnt;  /*リスト要素の最大数*/ 
0237:   int           fnf;     /*1:file not foundのエラーで終了しない 0:する*/ 
0238:   char         *title;   /*パラメータタイトル*/ 
0239:   char         *comment; /*パラメータコメント*/ 
0240:    
0241:   int           set;     /*コマンドライン上で指定されたよフラグ*/ 
0242:   char         *str;     /*オプション文字列:argvをstrdupしたもの*/ 
0243:   char        **strList; /*実際の値*/ 
0244:   int           cnt;     /*リストの個数*/ 
0245: }; 
0246:  
0247: /** 
0248:  * # TYPEDEF # 
0249:  */ 
0250: typedef struct OptINF MssOptINF
0251:  
0252: /** 
0253:  * # STRUCT # 
0254:  * 出力ファイル型 
0255:  */ 
0256: struct OptOTF { 
0257:   enum OptType  type;    /*オプションタイプ*/ 
0258:   char         *keyWord; /*キーワード文字*/ 
0259:   int           must;    /*指定必須フラグ*/ 
0260:   char         *title;   /*パラメータタイトル*/ 
0261:   char         *comment; /*パラメータコメント*/ 
0262:    
0263:   int           set;     /*コマンドライン上で指定されたよフラグ*/ 
0264:   char         *str;     /*オプション文字列:argvをstrdupしたもの*/ 
0265: }; 
0266:  
0267: /** 
0268:  * # TYPEDEF # 
0269:  */ 
0270: typedef struct OptOTF MssOptOTF
0271:  
0272: /** 
0273:  * # STRUCT # 
0274:  * フラグ型 
0275:  */ 
0276: struct OptFLG { 
0277:   enum OptType  type;    /*オプションタイプ*/ 
0278:   char         *keyWord; /*キーワード文字*/ 
0279:   int           def;     /*基本的にはset(1). 常にonにしたいときの為*/ 
0280:   char         *title;   /*パラメータタイトル*/ 
0281:   char         *comment; /*パラメータコメント*/ 
0282:    
0283:   int           set;     /*コマンドライン上で指定されたよフラグ*/ 
0284: }; 
0285:  
0286: /** 
0287:  * # TYPEDEF # 
0288:  */ 
0289: typedef struct OptFLG MssOptFLG
0290:  
0291: /** 
0292:  * # STRUCT # 
0293:  * 項目型 
0294:  */ 
0295: struct OptFLD { 
0296:   enum OptType  type;        /*オプションタイプ*/ 
0297:   char         *keyWord;     /*キーワード文字*/ 
0298:   int           must;        /*指定必須フラグ*/ 
0299:   int           maxCnt;      /*リスト要素の最大数(正規表現展開後)*/ 
0300:   char         *inKeyWord;   /*対象とする入力データのキーワード(GUIで利用)*/ 
0301:   int           globFlg;     /*ワイルドカード許可フラグ*/ 
0302:   int           newFlg;      /*新項目名の指定可能フラグ*/ 
0303:   char         *fldOptSel;   /*項目オプション選択肢*/ 
0304:   char         *title;       /*パラメータタイトル*/ 
0305:   char         *comment;     /*パラメータコメント*/ 
0306:   char         *fldOptTitle; /*項目オプション選択肢*/ 
0307:    
0308:   int           set;     /*コマンドライン上で指定されたよフラグ*/ 
0309:   char         *str;     /*オプション文字列:argvをstrdupしたもの*/ 
0310:   char        **nam;     /*項目名リスト*/ 
0311:   char        **newNam;  /*新項目名リスト(指定がなければnamと同じ)*/ 
0312:   char        **fldOpt;  /*項目オプションリスト(指定がなければNULL)*/ 
0313:   int           cnt;     /*リストの個数*/ 
0314:  
0315:   struct mssFields *flds; 
0316:   int *fldNo2optNo; 
0317:  
0318: }; 
0319:  
0320: /** 
0321:  * # TYPEDEF # 
0322:  */ 
0323: typedef struct OptFLD MssOptFLD
0324:  
0325: /** 
0326:  * # STRUCT # 
0327:  * キー項目型 
0328:  */ 
0329: struct OptKEY { 
0330:   enum OptType  type;      /*オプションタイプ*/ 
0331:   char         *keyWord;   /*キーワード文字*/ 
0332:   int           must;      /*指定必須フラグ*/ 
0333:   int           maxCnt;    /*リスト要素の最大数(正規表現展開後)*/ 
0334:   char         *inKeyWord; /*対象とする入力データのキーワード(GUIで利用)*/ 
0335:   int           def;       /*1:diff,2:same */ 
0336:   char         *title;     /*パラメータタイトル*/ 
0337:   char         *comment;   /*パラメータコメント*/ 
0338:    
0339:   int           set;       /*コマンドライン上で指定されたよフラグ*/ 
0340:   char         *str;       /*オプション文字列:argvをstrdupしたもの*/ 
0341:   char        **nam;       /*項目名リスト*/ 
0342:   int           diffSame;  /*0:-kの指定有り,1:diff,2:same*/ 
0343:   int           cnt;       /*リストの個数*/ 
0344:  
0345:   struct mssFields *flds; 
0346:   int *fldNo2optNo; 
0347: }; 
0348:  
0349: /** 
0350:  * # TYPEDEF # 
0351:  */ 
0352: typedef struct OptKEY MssOptKEY
0353:  
0354:  
0355: /** 
0356:  * # PROTOTYPE #  
0357:  */ 
0358: void mssHelpDoc(void *opt[],struct mssComHelp *comHelp, int argc, char **argv); 
0359: void mssFreeOption(void *opt[]); 
0360: void mssSetOption(void *opt[], int argc, char *argv[]); 
0361: void mssShowOption(void *opt[]); 
0362: int mssIsFldOptOn(MssOptFLD *optFld,int i, char c ); 
0363: void mssCpyOptKey(MssOptKEY *to,MssOptKEY *from); 
0364: int mssIsInRange(MssOptRNG *optRNG,int val); 
0365:  
0366: #endif /* _OPTION_H */ 
0367: