/***********************************************************
コマンドライン解析モジュール
【依存モジュール】
gm_record_str.hsp
***********************************************************/
#ifndef __M_CMDLINE_PARSER__
#define global __M_CMDLINE_PARSER__
#include "gm_record_str.hsp"
#module
#const TRUE 1
#const FALSE 0
#define CMDLINE_DELIMITER " "
#define CHAR_DQUOT "\""
#define CHAR_CODE_OPTION '/'
/**********************************************************/
// コマンドライン解析
/**********************************************************/
#deffunc parse_cmdline str cmdline
_argc = 0
_args = ""
_optchars = ""
/* コマンドライン項目を取得 */
sdim items,2,2
prms = cmdline,CMDLINE_DELIMITER,CHAR_DQUOT,RECORD_STR_ALL@ // RECORD_STR_ALL -> gm_record_str.hspを参照
split prms,items
/* 引数とオプション文字列を取得 */
i = 0
repeat length(items)
if peek(items(i), 0)=CHAR_CODE_OPTION {
getstr tmpstr, items(i) ,1 // オプション指定文字列を取得
_optchars += tmpstr
}
else {
break
}
i ++
loop
repeat length(items)-i
_args(cnt) = items(cnt+i)
_argc ++
loop
return
/**********************************************************/
// 任意のオプションが指定されているかチェック
/**********************************************************/
#defcfunc chkopt str optchar
if instr(_optchars, , optchar)>-1 {
return TRUE
}
return FALSE
/**********************************************************/
// 指定したインデックスの引数を取得(オプション文字列を除く)
/**********************************************************/
#defcfunc getarg int argi
if argi<_argc {
return _args(argi) }
return ""
/**********************************************************/
#global
parse_cmdline dir_cmdline
#endif
|