/* demo_info_options.h */

/* File autogenerated by gengetopt version 2.3  */

#ifndef _demo_info_options_h
#define _demo_info_options_h

#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */

/* Don't define PACKAGE and VERSION if we use automake.  */
#if defined PACKAGE
#  undef PACKAGE
#endif
#define PACKAGE "id3info"
#ifndef VERSION
/* ******* WRITE THE VERSION OF YOUR PROGRAM HERE ******* */
#define VERSION ""
#endif

struct gengetopt_args_info {
  int assign_flag;	/* Test the assignment operator (default=off).  */
  int warning_flag;	/* Turn on warnings (for debugging) (default=off).  */
  int notice_flag;	/* Turn on notices (for debugging) (default=off).  */

  int help_given ;	/* Whether help was given.  */
  int version_given ;	/* Whether version was given.  */
  int assign_given ;	/* Whether assign was given.  */
  int warning_given ;	/* Whether warning was given.  */
  int notice_given ;	/* Whether notice was given.  */

  char **inputs ; /* unamed options */
  unsigned inputs_num ; /* unamed options number */
} ;

int cmdline_parser (int argc, char * const *argv, struct gengetopt_args_info *args_info);

void cmdline_parser_print_help(void);
void cmdline_parser_print_version(void);

#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif /* _demo_info_options_h */
