/**
 * @file
 * @brief Interprétation des arguments (options et opérandes) passés
 * au programme
 */

#ifndef __HUFFMAN_ARGUMENTS_H_INCLUDED__
#define __HUFFMAN_ARGUMENTS_H_INCLUDED__

#include <stdio.h>
#include <argp.h>

/**
 * @brief Valeurs des arguments (options et opérandes) passés au programme.
 */
typedef struct Args {
    /**
     * Lance-t-on le programme en mode verbeux ? (informations de débogage)
     */
    int verbose;

    /**
     * Compresse-t-on la source ou bien la décompresse-t-on ?
     */
    int compress;

    /**
     * Fichier source de l'opération à effectuer
     */
    FILE* source;

    /**
     * Fichier de sortie de l'opération effectuée
     */
    FILE* dest;
} Args;

/**
 * @brief Interpréter l'argument @p key de valeur @p arg dans
 * la structure argp d'état @p state
 *
 * @param key Clé de l'option, ou clé spéciale pour indiquer une opérande
 * @param arg Valeur de l'option ou de l'opérande
 * @param state État actuel de argp
 */
error_t parseArgument(int key, char* arg, struct argp_state* state);

#endif // __HUFFMAN_ARGUMENTS_H_INCLUDED__
