Example #1
0
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;
}
Example #2
0
 /*!
   \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);
 }