MCPcopy Create free account
hub / github.com/1a1a11a/libCacheSim / parse_opt

Function parse_opt

libCacheSim/bin/mrcProfiler/cli_parser.cpp:77–129  ·  view source on GitHub ↗

PARSER. Field 2 in ARGP. Order of parameters: KEY, ARG, STATE. */

Source from the content-addressed store, hash-verified

75 Order of parameters: KEY, ARG, STATE.
76*/
77static error_t parse_opt(int key, char *arg, struct argp_state *state) {
78 struct arguments *arguments =
79 reinterpret_cast<struct arguments *>(state->input);
80
81 switch (key) {
82 case OPTION_TRACE_TYPE_PARAMS:
83 arguments->trace_type_params = arg;
84 break;
85 case OPTION_OUTPUT_PATH:
86 strncpy(arguments->ofilepath, arg, OFILEPATH_LEN - 1);
87 arguments->ofilepath[OFILEPATH_LEN - 1] = '\0';
88 break;
89 case OPTION_NUM_REQ:
90 arguments->n_req = atoll(arg);
91 break;
92 case OPTION_CACHE_ALGORITHM:
93 arguments->cache_algorithm_str = arg;
94 break;
95 case OPTION_MRC_SIZE:
96 arguments->mrc_size_str = arg;
97 break;
98 case OPTION_PROFILER:
99 arguments->mrc_profiler_str = arg;
100 break;
101 case OPTION_PROFILER_PARAMS:
102 arguments->mrc_profiler_params_str = arg;
103 break;
104 case OPTION_IGNORE_OBJ_SIZE:
105 arguments->ignore_obj_size = true;
106 break;
107 case OPTION_VERBOSE:
108 arguments->verbose = is_true(arg) ? true : false;
109 break;
110 case ARGP_KEY_ARG:
111 if (state->arg_num >= N_ARGS) {
112 ERROR("found too many arguments, current %s\n", arg);
113 argp_usage(state);
114 exit(1);
115 }
116 arguments->args[state->arg_num] = arg;
117 break;
118 case ARGP_KEY_END:
119 if (state->arg_num < N_ARGS) {
120 ERROR("not enough arguments found\n");
121 argp_usage(state);
122 exit(1);
123 }
124 break;
125 default:
126 return ARGP_ERR_UNKNOWN;
127 }
128 return 0;
129}
130
131/*
132 ARGS_DOC. Field 3 in ARGP.

Callers

nothing calls this directly

Calls 1

is_trueFunction · 0.85

Tested by

no test coverage detected