Chapitre 2. API du noyau

Table des matières
Fonction d'exportation
Compiler votre module
Sortie d'extensions
Internationalisation

Fonction d'exportation

L'interface de module d'exportation est très simple comparée à celle des modules d'ajustage. Chaque module d'exportation doit contenir seulement une fonction, appelée export_function(). Son seul but est de convertir les données enregistrées dans les structures de données du noyau en un flux de caractères et de l'enregistrer dans un ou plusieurs fichiers.

Chaque fois qu'un utilisateur lance tablix2_output avec les arguments appropriés, l'utilitaire charge le module d'exportation requis, analyse le fichier XML, initialise les structures de données du noyau et appelle la fonction export_function().

Le prototype de la fonction export_function() peut être trouvé dans le fichier output.h:

typedef int (*export_f)(table *tab, moduleoption *opt, char *filename);

tab est un pointeur vers la structure table . Cette structure décrit l'emploi du temps qui doit être exporté -elle contient les pointeurs vers les structures chromosomiques.

opt est un pointeur vers la liste chaînée des options du module . Ces options sont passées à l'utilitaire tablix2_output avec l'argument -s, sous la forme suivante :

-s option1=valeur,option2=valeur,...

Vous pouvez accéder à cette liste chaînée de la même manière que pour les modules d'ajustage, en utilisant les fonctions option_int(), option_str() et option_find().

Le dernier argument filename est une chaîne de caractère contenant le nom du fichier devant être écrit. L'utilitaire tablix2_output passe simplement ce nom de fichier, de la ligne de commande à la fonction d'exportation. L'utilitaire, en lui-même, ne se préoccupe pas de savoir si la fonction d'exportation écrira effectivement quelque chose dans ce fichier. Par exemple, si la fonction d'exportation a besoin d'écrire plus d'un fichier, elle peut utiliser cet argument comme nom du répertoire où écrire les fichiers.
filename peut aussi être l'emplacement, dans une base de données, où les données concernant l'emploi du temps doivent être insérées.

Note: La valeur de filename peut être NULL. La fonction d'exportation doit traiter ce cas comme une demande d'écrire sur la sortie standard. Si ce n'est pas possible (par exemple, si plusieurs fichiers doivent être produits), alors la fonction doit retourner un message d'erreur.

La fonction export_function() doit retourner 0 en cas de succès et -1 en cas d'erreur. Les fonctions error(), info() et debug() peuvent être utilisées pour rapporter des avertissements et des erreurs à l'utilisateur.