편집
552
번
편집 요약 없음 |
편집 요약 없음 |
||
53번째 줄: | 53번째 줄: | ||
# argv can be called via sys.argv | # argv can be called via sys.argv | ||
</syntaxhighlight>python 도 ''getopt'' 활용 가능 (''import getopt, 활용방법은 별도 검색'') | </syntaxhighlight>python 도 ''getopt'' 활용 가능 (''import getopt, 활용방법은 별도 검색'') | ||
==== 예시 ==== | |||
C++ 예시 코드는 다음과 같습니다. (https://github.com/Isaac-Kwon/apv/) getopt_long 을 활용하였습니다. 본 코드에는 입력 및 출력파일, 입력 숫자가 적용되어 있습니다. 실제 작업인 ''Analysis'' 함수는 첨부되지 않았습니다. <syntaxhighlight lang="c++"> | |||
#include "iostream" | |||
#include "string" | |||
#include "TTree.h" | |||
#include "stdlib.h" | |||
#include "getopt.h" | |||
struct Arguments{ | |||
std::string ifilename = ""; | |||
std::string ofilename = ""; | |||
int startn = 0; | |||
int endn = -1; | |||
short threshold = 0; | |||
bool b_ifilename = false; | |||
bool b_ofilename = false; | |||
bool b_startn = false; | |||
bool b_endn = false; | |||
bool b_threshold = false; | |||
Arguments(): ifilename(""),ofilename(""),startn(0), endn(-1), threshold(100), | |||
b_ifilename(false), b_ofilename(false), b_startn(false), b_endn(false), b_threshold(false){;} | |||
}; | |||
int main(int argc, char** argv){ | |||
char c; // option | |||
Arguments args; | |||
static struct option long_options[] = | |||
{ | |||
{"in" , required_argument, 0, 'i'}, | |||
{"out" , required_argument, 0, 'o'}, | |||
{"start" , required_argument, 0, 's'}, | |||
{"end" , required_argument, 0, 'e'}, | |||
{"threshold" , required_argument, 0, 't'}, | |||
{"help" , no_argument, 0, 'h'}, | |||
{0, 0, 0, 0} | |||
}; | |||
int option_index = 0; | |||
while( (c = getopt_long(argc, argv, "i:o:s:e:t:h", long_options, &option_index)) != -1){ | |||
switch(c){ | |||
case 'i': | |||
args.ifilename = std::string(optarg); | |||
args.b_ifilename = true; | |||
break; | |||
case 'o': | |||
args.ofilename = std::string(optarg); | |||
args.b_ofilename = true; | |||
break; | |||
case 's': | |||
args.startn = std::stoi(optarg); | |||
args.b_startn = true; | |||
break; | |||
case 'e': | |||
args.endn = std::stoi(optarg); | |||
args.b_endn = true; | |||
break; | |||
case 't': | |||
args.threshold = std::stoi(optarg); | |||
args.b_threshold = true; | |||
break; | |||
case 'h': | |||
std::cout<<"Single Run with Stert/End Entry"<<std::endl; | |||
std::cout<<"Available Options" <<std::endl; | |||
std::cout<<"-i, --in \t input file(txt) \t [REQUIRED]" <<std::endl; | |||
std::cout<<"-o, --out \t output file(root) \t [REQUIRED]" <<std::endl; | |||
std::cout<<"-s, --start\t start entry number \t [default=0]" <<std::endl; | |||
std::cout<<"-s, --end \t end entry number \t [default=all]" <<std::endl; | |||
std::cout<<"-t, --threshold\t threshold \t [default=100]" <<std::endl; | |||
std::cout<<"-h, --help \t this message" <<std::endl; | |||
return 0; | |||
case '?': | |||
printf("Unknown flag : %c", optopt); | |||
return 1; | |||
} | |||
} | |||
if (!(args.b_ifilename && args.b_ofilename)){ | |||
std::cout<<"Input file name and output file name are necessary!"<<std::endl; | |||
return 1; | |||
} | |||
return Analysis(args.ifilename, args.ofilename, args.startn, args.endn, args.threshold);; | |||
} | |||
</syntaxhighlight> | |||
== 작업 과정 구상 == | == 작업 과정 구상 == |