int parse_command_line (flott_object *op, flott_user_output *output, int argc, char *argv[]) { int ret_val = FLOTT_SUCCESS; int input_count = 0; int letter; bool quiet_flag = false; bool buffer_input_flag = false; flott_getopt_object options; /* set allowed command line switches and parse input arguments */ flott_init_options (&options, "-hqv:dDcierxnkpolI:S:b:jzmo:O:F:u:g:L", argv, argc); /* parse and process command line arguments */ while (ret_val == FLOTT_SUCCESS) { letter = flott_get_options (&options); if (letter == -1) break; switch (letter) { case 'h': help (); flott_destroy (op); exit(0); case 'v': { if (quiet_flag == false) { op->verbosity_level = set_int_argument(options.optarg, FLOTT_VL_QUIET, FLOTT_VL_DEBUG, FLOTT_VL_FATAL /* default */); } } break; case 'q': { quiet_flag = true; op->verbosity_level = set_int_argument("0" /* FLOTT_VL_QUIET */, FLOTT_VL_QUIET, FLOTT_VL_DEBUG, FLOTT_VL_QUIET /* default */); } break; case 'S': if (options.optarg != NULL) input_count++; break; case 'I': { if (options.optarg != NULL && flott_file_exists (options.optarg)) { input_count++; } } break; case 'd': output->options |= FLOTT_OUT_NTI_DIST; break; case 'D': output->options |= FLOTT_OUT_NTC_DIST; op->input.append_termchar = true; break; case 'c': output->options |= FLOTT_OUT_T_COMPLEXITY; break; case 'i': output->options |= FLOTT_OUT_T_INFORMATION; break; case 'e': output->options |= FLOTT_OUT_AVE_T_ENTROPY; break; case 'r': output->options |= FLOTT_OUT_INST_T_ENTROPY; break; case 'x': output->options |= FLOTT_OUT_INPUT_OFFSET; break; case 'n': output->options |= FLOTT_OUT_T_AUG_LEVEL; break; case 'k': output->options |= FLOTT_OUT_CF; break; case 'p': output->options |= FLOTT_OUT_CP_STRING ; break; case 'o': output->options |= FLOTT_OUT_CP_OFFSET; break; case 'l': output->options |= FLOTT_OUT_CP_LENGTH; break; case 'b': set_symbol_type (&(op->input.symbol_type), options.optarg); break; case 'j': output->options |= FLOTT_OUT_CONCAT_INPUT; break; case 'z': op->input.append_termchar = true; break; case 'm': buffer_input_flag = true; break; case 'O': { output->storage_type = FLOTT_DEV_FILE; output->path = options.optarg; } break; case 'F': set_column_format (&(output->options), options.optarg); break; case 'u': set_output_units (&(output->options), options.optarg); break; case 'g': set_int_argument(options.optarg, 0, 300, 2 /* default */); break; case 'L': output->options |= FLOTT_OUT_HEADERS; break; case 1 : break; case '?': { /* TODO differentiate: no parameter error */ ret_val = flott_set_status (op, FLOTT_ERR_INVALID_OPT, FLOTT_VL_FATAL, options.optopt); help (); return ret_val; } break; default: { /* we should never get here */ ret_val = flott_set_status (op, FLOTT_ERROR, FLOTT_VL_FATAL); return ret_val; } break; } /* debug message */ flott_set_status (op, FLOTT_CMD_OPTION_PARAM, FLOTT_VL_DEBUG, letter, letter, options.optarg); } if (flott_bitset_M(output->options, FLOTT_OUT_CP_STRING) && op->input.symbol_type == FLOTT_SYMBOL_BIT) { output->options &= ~FLOTT_OUT_CP_STRING; } /* now that we know how many inputs we have, load all input data */ if (ret_val == FLOTT_SUCCESS) { if (input_count == 1) output->options |= FLOTT_OUT_CONCAT_INPUT; if (flott_bitset_M (output->options, FLOTT_OUT_NTC_DIST)) { input_count++; } op->input.count = input_count; ret_val = set_input_sources (op, argv, argc, buffer_input_flag); if (ret_val != FLOTT_SUCCESS) { return ret_val; } } return ret_val; }
/*! \brief Constructor -- make a new object of class convert_units \param units_in_i \param units_out_i */ convert_units::convert_units (int units_in_i, int units_out_i) { set_input_units (units_in_i); set_output_units (units_out_i); }