<commit_before>#ifndef _SANEOPT_H
#define _SANEOPT_H

struct saneopt__alias {
  char* option;
  char* alias;
} typedef saneopt__alias_t;

struct saneopt {
  int argc;
  char** argv;

  saneopt__alias_t** aliases;
  unsigned int alias_count;
} typedef saneopt_t;

/*
 * Create a new `saneopt` parser.
 */
saneopt_t* saneopt_init(int argc, char** argv);

/*
 * Set an alias from `option` to `alias`.
 */
void saneopt_alias(saneopt_t* opt, char* option, char* alias);

/*
 * Get option called `option`.
 */
char* saneopt_get(saneopt_t* opt, char* option);

#endif<commit_msg>[api] Sketch out arguments API<commit_after>#ifndef _SANEOPT_H
#define _SANEOPT_H

struct saneopt__alias {
  char* option;
  char* alias;
} typedef saneopt__alias_t;

struct saneopt {
  int argc;
  char** argv;

  saneopt__alias_t** aliases;
  unsigned int alias_count;
} typedef saneopt_t;

/*
 * Create a new `saneopt` parser.
 */
saneopt_t* saneopt_init(int argc, char** argv);

/*
 * Set an alias from `option` to `alias`.
 */
void saneopt_alias(saneopt_t* opt, char* option, char* alias);

/*
 * Get option called `option`.
 */
char* saneopt_get(saneopt_t* opt, char* option);

/*
 * Get command line arguments, that is: any arguments not being an argument
 * value and all arguments after "--".
 *
 * For example, parsing:
 *
 *   ./app --option value foo bar -- --not-option baz
 *
 * Will result in this function returning ["foo", "bar", "--not-option", "baz"].
 */
char** saneopt_arguments(saneopt_t* opt);

#endif
{'fraction_non_alphanumeric': 0.1331103678929766, 'fraction_numerical': 0.0, 'mean_word_length': 4.037037037037037, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '5065388', 'n_tokens_mistral': 559, 'n_tokens_neox': 534, 'n_words': 161}