構造体、共用体、列挙体
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: