Référence des fonctions
Cette page fournit une référence complète pour toutes les fonctions de l'API cargs. Ces fonctions vous permettent d'initialiser la bibliothèque, d'analyser les arguments, d'accéder aux valeurs et de gérer les ressources.
Aperçu
L'API cargs est organisée en plusieurs groupes de fonctions :
- Initialisation et analyse - Fonctions de base pour la configuration et l'analyse
- Accès aux valeurs - Fonctions pour récupérer les valeurs des options
- Accès aux collections - Fonctions pour travailler avec les tableaux et les mappages
- Gestion des sous-commandes - Fonctions pour gérer les sous-commandes
- Fonctions d'affichage - Fonctions pour générer le texte d'aide et d'utilisation
- Gestion des erreurs - Fonctions pour gérer et signaler les erreurs
Initialisation et analyse
cargs_init
Initialise un contexte cargs avec les informations du programme et les options.
Paramètres :
- options : Tableau d'options de ligne de commande définies avec CARGS_OPTIONS
- program_name : Nom du programme (utilisé dans les messages d'aide/d'erreur)
- version : Chaîne de version
Retourne :
- Une structure cargs_t initialisée
Exemple :
cargs_t cargs = cargs_init(options, "my_program", "1.0.0");
cargs.description = "Description de mon programme génial";
Tip
Après l'initialisation, vous pouvez définir des champs supplémentaires comme description et env_prefix avant l'analyse.
cargs_parse
Analyse les arguments de la ligne de commande selon les options définies.
Paramètres :
- cargs : Pointeur vers un contexte cargs initialisé
- argc : Nombre d'arguments (de main)
- argv : Valeurs des arguments (de main)
Retourne :
- CARGS_SUCCESS (0) en cas de succès
- Un code d'erreur non nul en cas d'échec
Exemple :
cargs_free
Libère les ressources allouées pendant l'analyse.
Paramètres :
- cargs : Pointeur vers le contexte cargs à libérer
Exemple :
Warning
Appelez toujours cargs_free() lorsque vous avez terminé avec un contexte cargs pour éviter les fuites de mémoire.
Accès aux valeurs
cargs_get
Récupère la valeur d'une option.
Paramètres :
- cargs : Le contexte cargs
- option_path : Chemin vers l'option (format nom ou sous-commande.nom)
Retourne :
- La valeur de l'option sous forme d'union cargs_value_t, ou {.raw = 0} si non trouvée
Exemple :
const char *output = cargs_get(cargs, "output").as_string;
int port = cargs_get(cargs, "port").as_int;
bool verbose = cargs_get(cargs, "verbose").as_bool;
cargs_is_set
Vérifie si une option a été explicitement définie sur la ligne de commande.
Paramètres :
- cargs : Le contexte cargs
- option_path : Chemin vers l'option (format nom ou sous-commande.nom)
Retourne :
- true si l'option a été définie, false sinon
Exemple :
cargs_count
Obtient le nombre de valeurs pour une option (pour les collections).
Paramètres :
- cargs : Le contexte cargs
- option_path : Chemin vers l'option (format nom ou sous-commande.nom)
Retourne : - Nombre de valeurs pour l'option, ou 0 si non trouvée ou pas une collection
Exemple :
Accès aux collections
cargs_array_get
Récupère un élément d'une option de tableau à l'indice spécifié.
Paramètres :
- cargs : Le contexte cargs
- option_path : Chemin vers l'option de tableau
- index : Indice de l'élément à récupérer
Retourne :
- La valeur à l'indice spécifié, ou {.raw = 0} si non trouvée ou indice hors limites
Exemple :
cargs_map_get
Récupère une valeur d'une option de mapping avec la clé spécifiée.
Paramètres :
- cargs : Le contexte cargs
- option_path : Chemin vers l'option de mapping
- key : Clé à rechercher dans le mapping
Retourne :
- La valeur associée à la clé, ou {.raw = 0} si non trouvée
Exemple :
const char *user = cargs_map_get(cargs, "env", "USER").as_string;
int http_port = cargs_map_get(cargs, "ports", "http").as_int;
cargs_array_it
Crée un itérateur pour parcourir efficacement une option de tableau.
Paramètres :
- cargs : Le contexte cargs
- option_path : Chemin vers l'option de tableau
Retourne :
- Structure d'itérateur pour le tableau, avec count=0 si l'option n'est pas trouvée
Exemple :
cargs_array_next
Obtient l'élément suivant d'un itérateur de tableau.
Paramètres :
- it : Itérateur de tableau
Retourne :
- true si une valeur a été récupérée, false si fin du tableau
Exemple :
cargs_array_it_t it = cargs_array_it(cargs, "tags");
while (cargs_array_next(&it)) {
printf("Tag : %s\n", it.value.as_string);
}
cargs_array_reset
Réinitialise un itérateur de tableau au début.
Paramètres :
- it : Itérateur de tableau à réinitialiser
Exemple :
cargs_map_it
Crée un itérateur pour parcourir efficacement une option de mapping.
Paramètres :
- cargs : Le contexte cargs
- option_path : Chemin vers l'option de mapping
Retourne :
- Structure d'itérateur pour le mapping, avec count=0 si l'option n'est pas trouvée
Exemple :
cargs_map_next
Obtient la paire clé-valeur suivante d'un itérateur de mapping.
Paramètres :
- it : Itérateur de mapping
Retourne :
- true si une paire a été récupérée, false si fin du mapping
Exemple :
cargs_map_it_t it = cargs_map_it(cargs, "env");
while (cargs_map_next(&it)) {
printf("%s = %s\n", it.key, it.value.as_string);
}
cargs_map_reset
Réinitialise un itérateur de mapping au début.
Paramètres :
- it : Itérateur de mapping à réinitialiser
Exemple :
Gestion des sous-commandes
cargs_has_command
Vérifie si une sous-commande a été spécifiée sur la ligne de commande.
Paramètres :
- cargs : Le contexte cargs
Retourne :
- true si une sous-commande a été spécifiée, false sinon
Exemple :
if (cargs_has_command(cargs)) {
// Une sous-commande a été spécifiée
} else {
printf("Aucune commande spécifiée. Utilisez --help pour voir les commandes disponibles.\n");
}
cargs_exec
Exécute l'action associée à la sous-commande spécifiée.
Paramètres :
- cargs : Pointeur vers le contexte cargs
- data : Données optionnelles à passer à l'action de la sous-commande
Retourne :
- Code de statut retourné par l'action de la sous-commande
- CARGS_ERROR_NO_COMMAND si aucune commande n'a été spécifiée
- CARGS_ERROR_INVALID_HANDLER si la commande n'a pas d'action
Exemple :
Fonctions d'affichage
cargs_print_help
Affiche un message d'aide formaté basé sur les options définies.
Paramètres :
- cargs : Le contexte cargs
Exemple :
cargs_print_usage
Affiche un résumé court de l'utilisation.
Paramètres :
- cargs : Le contexte cargs
Exemple :
cargs_print_version
Affiche les informations de version.
Paramètres :
- cargs : Le contexte cargs
Exemple :
Gestion des erreurs
cargs_print_error_stack
Affiche toutes les erreurs dans la pile d'erreurs.
Paramètres :
- cargs : Le contexte cargs
Exemple :
cargs_strerror
Obtient une description textuelle d'un code d'erreur.
Paramètres :
- error : Code d'erreur
Retourne : - Description textuelle de l'erreur
Exemple :
Exemple complet
Voici un exemple complet montrant le schéma d'utilisation de la fonction principale :
#include "cargs.h"
#include <stdio.h>
// Définir les options
CARGS_OPTIONS(
options,
HELP_OPTION(FLAGS(FLAG_EXIT)),
VERSION_OPTION(FLAGS(FLAG_EXIT)),
OPTION_FLAG('v', "verbose", HELP("Activer la sortie verbeuse")),
OPTION_STRING('o', "output", HELP("Fichier de sortie"), DEFAULT("output.txt")),
POSITIONAL_STRING("input", HELP("Fichier d'entrée"))
)
int main(int argc, char **argv)
{
// Initialiser cargs
cargs_t cargs = cargs_init(options, "example", "1.0.0");
cargs.description = "Programme exemple utilisant cargs";
// Analyser les arguments
int status = cargs_parse(&cargs, argc, argv);
if (status != CARGS_SUCCESS) {
cargs_print_error_stack(&cargs);
return status;
}
// Accéder aux valeurs
const char *input = cargs_get(cargs, "input").as_string;
const char *output = cargs_get(cargs, "output").as_string;
bool verbose = cargs_get(cargs, "verbose").as_bool;
// Logique de l'application
if (verbose) {
printf("Entrée : %s\n", input);
printf("Sortie : %s\n", output);
}
// Libérer les ressources
cargs_free(&cargs);
return 0;
}
Catégories de fonctions
Pour faciliter la référence, voici un résumé des catégories de fonctions :
| Catégorie | Fonctions |
|---|---|
| Initialisation | cargs_init, cargs_parse, cargs_free |
| Accès aux valeurs | cargs_get, cargs_is_set, cargs_count |
| Fonctions de tableau | cargs_array_get, cargs_array_it, cargs_array_next, cargs_array_reset |
| Fonctions de mapping | cargs_map_get, cargs_map_it, cargs_map_next, cargs_map_reset |
| Fonctions de sous-commande | cargs_has_command, cargs_exec |
| Fonctions d'affichage | cargs_print_help, cargs_print_usage, cargs_print_version |
| Fonctions d'erreur | cargs_print_error_stack, cargs_strerror |
Documentation associée
- Référence des types - Informations détaillées sur les types de données
- Référence des macros - Liste complète des macros de définition d'options
- Aperçu de l'API - Aperçu de haut niveau de l'API cargs