Ejemplo n.º 1
0
/* Check the options: "multi" should be zero for wrapper tools that
 * only take one input file, or one for wrapper tools that take multiple
 * input files.  Returns zero for "--version" or "--help", or returns -1
 * if an error occurred.  Otherwise, it returns the number of args
 * that were successfully parsed. */
static int parse_check_options(int argc, char *argv[], int multi)
{
  int i;
  size_t j;
  char *cp;
  char c;

  options.NumberOfFiles = 0;
  options.Files = NULL;
  options.InputFileName = NULL;
  options.OutputFileName = NULL;
  options.IsAbstract = 0;
  options.IsConcrete = 0;
  options.IsVTKObject = 0;
  options.IsSpecialObject = 0;
  options.HierarchyFileName = 0;
  options.HintFileName = 0;

  for (i = 1; i < argc; i++)
    {
    if (strcmp(argv[i], "--help") == 0)
      {
      parse_print_help(stdout, argv[0], multi);
      return 0;
      }
    else if (strcmp(argv[i], "--version") == 0)
      {
      const char *ver = VTK_PARSE_VERSION;
      fprintf(stdout, "%s %s\n", parse_exename(argv[0]), ver);
      return 0;
      }
    else if (argv[i][0] != '-')
      {
      if (options.NumberOfFiles == 0)
        {
        options.Files = (char **)malloc(sizeof(char *));
        }
      else if ((options.NumberOfFiles & (options.NumberOfFiles - 1)) == 0)
        {
        options.Files = (char **)realloc(
          options.Files, 2*options.NumberOfFiles*sizeof(char *));
        }
      options.Files[options.NumberOfFiles++] = argv[i];
      }
    else if (argv[i][0] == '-' && isalpha(argv[i][1]))
      {
      c = argv[i][1];
      cp = &argv[i][2];
      if (*cp == '\0')
        {
        i++;
        if (i >= argc || argv[i][0] == '-')
          {
          return -1;
          }
        cp = argv[i];
        }

      if (c == 'o')
        {
        options.OutputFileName = cp;
        }
      else if (c == 'I')
        {
        vtkParse_IncludeDirectory(cp);
        }
      else if (c == 'D')
        {
        j = 0;
        while (cp[j] != '\0' && cp[j] != '=') { j++; }
        if (cp[j] == '=') { j++; }
        vtkParse_DefineMacro(cp, &cp[j]);
        }
      else if (c == 'U')
        {
        vtkParse_UndefineMacro(cp);
        }
      }
    else if (!multi && strcmp(argv[i], "--hints") == 0)
      {
      i++;
      if (i >= argc || argv[i][0] == '-')
        {
        return -1;
        }
      options.HintFileName = argv[i];
      }
    else if (!multi && strcmp(argv[i], "--types") == 0)
      {
      i++;
      if (i >= argc || argv[i][0] == '-')
        {
        return -1;
        }
      options.HierarchyFileName = argv[i];
      }
    else if (!multi && strcmp(argv[i], "--vtkobject") == 0)
      {
      options.IsVTKObject = 1;
      }
    else if (!multi && strcmp(argv[i], "--special") == 0)
      {
      options.IsSpecialObject = 1;
      }
    }

  return i;
}
Ejemplo n.º 2
0
/* Check the options */
static int check_options(int argc, char *argv[])
{
  int i;
  size_t j;

  options.InputFileName = NULL;
  options.OutputFileName = NULL;
  options.IsAbstract = 0;
  options.IsConcrete = 0;
  options.IsVTKObject = 0;
  options.IsSpecialObject = 0;
  options.HierarchyFileName = 0;
  options.HintFileName = 0;

  for (i = 1; i < argc && argv[i][0] == '-'; i++)
    {
    if (strcmp(argv[i], "--concrete") == 0)
      {
      options.IsConcrete = 1;
      }
    else if (strcmp(argv[i], "--abstract") == 0)
      {
      options.IsAbstract = 1;
      }
    else if (strcmp(argv[i], "--vtkobject") == 0)
      {
      options.IsVTKObject = 1;
      }
    else if (strcmp(argv[i], "--special") == 0)
      {
      options.IsSpecialObject = 1;
      }
    else if (strcmp(argv[i], "--hints") == 0)
      {
      i++;
      if (i >= argc || argv[i][0] == '-')
        {
        return -1;
        }
      options.HintFileName = argv[i];
      }
    else if (strcmp(argv[i], "--types") == 0)
      {
      i++;
      if (i >= argc || argv[i][0] == '-')
        {
        return -1;
        }
      options.HierarchyFileName = argv[i];
      }
    else if (strcmp(argv[i], "-I") == 0)
      {
      i++;
      if (i >= argc || argv[i][0] == '-')
        {
        return -1;
        }
      vtkParse_IncludeDirectory(argv[i]);
      }
    else if (strcmp(argv[i], "-D") == 0)
      {
      i++;
      j = 0;
      if (i >= argc || argv[i][0] == '-')
        {
        return -1;
        }
      while (argv[i][j] != '\0' && argv[i][j] != '=') { j++; }
      if (argv[i][j] == '=') { j++; }
      vtkParse_DefineMacro(argv[i], &argv[i][j]);
      }
    else if (strcmp(argv[i], "-U") == 0)
      {
      i++;
      if (i >= argc || argv[i][0] == '-')
        {
        return -1;
        }
      vtkParse_UndefineMacro(argv[i]);
      }
    }

  return i;
}