Le parser permet de lire un fichier YAML et de le transcrire dans une structure avec laquelle on peut intéragir facilement en C. Il vient avec un nombre important de fonctions pour manipuler la structure.
Un noeud est representé par cette structure :
struct Node {
NodeType type;
char *key;
char *value;
Node *children;
int childrenNumber;
};
Description :
- NodeType (enum) :
VALUE
,SEQUENCE
,SEQUENCE_VALUE
,MAP
,UNDEFINED
- key : la clé
- value : la valeur
- children : tableau de Node, utilisé par les séquences et les maps qui sont des collections
- childrenNumber : nombre d'enfants du noeud
Un noeud correspond globalement à une paire de clé/valeur dans une fichier YAML.
Tout simplement une clé et une valeur.
key: value
Description :
- NodeType :
VALUE
- key : "key"
- value : "value"
- children : NULL
- childrenNumber : 0
Une liste de liste.
sequence:
- key: value
key2: value2
- key3: value3
key4: value4
Description :
- NodeType :
SEQUENCE
- key : "sequence"
- value : ""
- children : 2 noeuds de type
SEQUENCE_VALUE
- childrenNumber : 2
Les SEQUENCE_VALUE
sont les éléments d'une séquence, ils contiennent eux même des noeuds de nimporte quel type.
- key: value
key2: value2
map:
key3: value3
Description :
- NodeType :
SEQUENCE_VALUE
- key : ""
- value : ""
- children : 3 noeuds
- childrenNumber : 3
Un noeud de type MAP
contient une liste de nimporte quel type de noeud.
map:
key1: value1
key2: value2
map:
key3: value3
Description :
- NodeType :
MAP
- key : "map"
- value : ""
- children : 3 noeuds
- childrenNumber : 3
Valeur par défaut d'un noeud avant d'être rempli.
Il faut inclure api.h
.
#include "chemin/vers/api.h"
Ci-dessous une liste de toutes les fonctions présente dans l'API. Le but est d'utiliser le plus possible les fonctions fournit et de ne pas manipuler soit même la structure. Lire les fichiers sources ou headers pour avoir une description détaillée des fonctions.
Lit un fichier et retourne la structure correspondante.
Transforme une structure au format YAML dans un fichier.
Imprime une structure au format YAML dans la console.
Vérifie si un noeud est une collection, càd de type SEQUENCE
, SEQUENCE_VALUE
ou MAP
.
Vérifie si un noeud est de type SEQUENCE
.
Vérifie si un noeud est de type SEQUENCE_VALUE
.
Vérifie si un noeud est de type MAP
.
Vérifie si un noeud est de type UNDEFINED
.
Vérifie si un noeud est de type VALUE
.
Récupére le type d'un noeud.
Fixe le type d'un noeud.
Libère la mémoire utilisée par le noeud. Fonction à executer avant de ne plus se servir de ce noeud.
Libère la mémoire du noeud en question, mais pas de ses enfants.
Récupère un noeud map prêt à être utilisé.
Récupère un noeud sequence prêt à être utilisé.
Récupère un noeud sequence value prêt à être utilisé.
Récupère un noeud value prêt à être utilisé.
Récupère la valeur du noeud.
Fixe la valeur du noeud.
Récupére la valeur de la clé.
Fixe la valeur de la clé.
Faire une copie deep d'un noeud YAML. Une deep copy permet d'avoir un nouveau noeud qui a les même valeurs que l'autre mais sur des emplacements mémoires différents.
Récupère la nombre d'enfants du noeud.
Récupère un noeud enfant d'un noeud à un index.
Récupère un noeud enfant par sa clé.
Récupère un noeud enfant par sa valeur.
Ajoute un noeud enfant à un noeud parent en dernière position.
Ajoute un noeud value à un parent avec des strings key/value.
Retire un enfant d'un noeud à un index.
Ajoute un noeud enfant à un noeud parent à un index.
Retire et free les enfants d'un noeud parent.
Ajoute des noeuds enfants à un noeud parent.
- Free
3;