Blame tools/cmdopt.h

Packit de3218
#ifndef MARISA_CMDOPT_H_
Packit de3218
#define MARISA_CMDOPT_H_
Packit de3218
Packit de3218
#ifdef __cplusplus
Packit de3218
extern "C" {
Packit de3218
#endif
Packit de3218
Packit de3218
typedef struct cmdopt_option_ {
Packit de3218
  // `name' specifies the name of this option.
Packit de3218
  // An array of options must be terminated with an option whose name == NULL.
Packit de3218
  const char *name;
Packit de3218
Packit de3218
  // `has_name' specifies whether an option takes an argument or not.
Packit de3218
  // 0 specifies that this option does not have any argument.
Packit de3218
  // 1 specifies that this option has an argument.
Packit de3218
  // 2 specifies that this option may have an argument.
Packit de3218
  int  has_arg;
Packit de3218
Packit de3218
  // `flag' specifies an integer variable which is overwritten by cmdopt_next()
Packit de3218
  // with its return value.
Packit de3218
  int *flag;
Packit de3218
Packit de3218
  // `val' specifies a return value of cmdopt_next(). This value is returned
Packit de3218
  // when cmdopt_next() finds this option.
Packit de3218
  int  val;
Packit de3218
} cmdopt_option;
Packit de3218
Packit de3218
typedef struct cmdopt_t_ {
Packit de3218
  // Command line arguments.
Packit de3218
  int    argc;
Packit de3218
  char **argv;
Packit de3218
Packit de3218
  // Option settings.
Packit de3218
  const cmdopt_option *longopts;
Packit de3218
  const char          *optstring;
Packit de3218
Packit de3218
  int   optind;     // Index of the next argument.
Packit de3218
  char *nextchar;   // Next character.
Packit de3218
  char *optarg;     // Argument of the last option.
Packit de3218
  int   optopt;     // Label of the last option.
Packit de3218
  char *optlong;    // Long option.
Packit de3218
  int   opterr;     // Warning level (0: nothing, 1: warning, 2: all).
Packit de3218
  int   longindex;  // Index of the last long option.
Packit de3218
  int   optnum;     // Number of options.
Packit de3218
} cmdopt_t;
Packit de3218
Packit de3218
// cmdopt_init() initializes a cmdopt_t for successive cmdopt_next()s.
Packit de3218
void cmdopt_init(cmdopt_t *h, int argc, char **argv,
Packit de3218
    const char *optstring, const cmdopt_option *longopts);
Packit de3218
Packit de3218
// cmdopt_get() analyzes command line arguments and gets the next option.
Packit de3218
int cmdopt_get(cmdopt_t *h);
Packit de3218
Packit de3218
#ifdef  __cplusplus
Packit de3218
}  // extern "C"
Packit de3218
#endif
Packit de3218
Packit de3218
#endif  // MARISA_CMDOPT_H_