Arthur Brandao 6 years ago
parent
commit
76b45af4f5
2 changed files with 131 additions and 1 deletions
  1. 84 1
      Serveur/json.h
  2. 47 0
      Serveur/json_parser.c

+ 84 - 1
Serveur/json.h

@@ -2,7 +2,7 @@
  * File:   json.h
  * Author: Arthur Brandao
  *
- * Created on 28 octobre 2018, 17:53
+ * Created on 28 octobre 2018
  */
 #ifndef JSON_H
 #define JSON_H
@@ -32,17 +32,100 @@ typedef struct{
 }JsonParser;
 
 /* --- Fonctions ---- */
+
+/**
+ * Parse une chaine JSON en JsonParser
+ * Initialise ou écrase les données du JsonParser
+ * @param JsonParser* La structure de resultat (doit être alloué)
+ * @param char* La chaine en JSON
+ * @return int JSON_ERROR en cas d'erreur sinon JSON_OK
+ */
 int json_parse(JsonParser*, char*);
+
+/**
+ * Donne la clef à un index donné
+ * @param JsonParser* Le resultat de json_parse
+ * @param int La position à regarder
+ * @return char* La clef
+ */
 char* key_index(JsonParser*, int);
+
+/**
+ * Donne la valeur à un index donné
+ * @param JsonParser* Le resultat de json_parse
+ * @param int La position à regarder
+ * @return char* La valeur
+ */
 char* get_index(JsonParser*, int);
+
+/**
+ * Donne la positon d'une valeur dans le JsonParser
+ * @param JsonParser* Le resultat de json_parse
+ * @param char* La clef lié à la valeur
+ * @return int La position
+ */
 int get_pos(JsonParser*, char*);
+
+/**
+ * Retourne le type de la vl=aleur
+ * @param JsonParser* Le resultat de json_parse
+ * @param char* La clef lié à la valeur
+ * @return int constante JSON_XXXX du type de la valeur
+ */
 int get_type(JsonParser*, char*);
+
+/**
+ * Retourne la valeur d'un element
+ * @param JsonParser* Le resultat de json_parse
+ * @param char* La clef lié à la valeur
+ * @return char* La valeur, NULL en cas d'erreur (clef introuvable)
+ */
 char* get_value(JsonParser*, char*);
+
+/**
+ * Retourne la valeur d'un element de type number
+ * @param JsonParser* Le resultat de json_parse
+ * @param char* La clef lié à la valeur
+ * @return double La valeur, JSON_ERROR en cas d'erreur (type incorrect, clef introuvable)
+ */
 double get_number(JsonParser*, char*);
+
+/**
+ * Retourne la valeur d'un element de type number
+ * @param JsonParser* Le resultat de json_parse
+ * @param char* La clef lié à la valeur
+ * @return int La valeur, JSON_ERROR en cas d'erreur (type incorrect, clef introuvable)
+ */
 int get_integer(JsonParser*, char*);
+
+/**
+ * Retourne la valeur d'un element de type boolean
+ * @param JsonParser* Le resultat de json_parse
+ * @param char* La clef lié à la valeur
+ * @return boolean La valeur, false en cas d'erreur (type incorrect, clef introuvable)
+ */
 boolean get_boolean(JsonParser*, char*);
+
+/**
+ * Retourne la valeur d'un element de type array
+ * @param JsonParser* Le resultat de json_parse
+ * @param char* La clef lié à la valeur
+ * @return char* La valeur, NULL en cas d'erreur (type incorrect, clef introuvable)
+ */
 char* get_array(JsonParser*, char*);
+
+/**
+ * Retourne la valeur d'un element de type object
+ * @param JsonParser* Le resultat de json_parse
+ * @param char* La clef lié à la valeur
+ * @return JsonParser* L'object json analysé, NULL en cas d'erreur (type incorrect, clef introuvable, ...)
+ */
 JsonParser* get_object(JsonParser*, char*);
+
+/**
+ * Supprime un JsonParser
+ * @param JsonParser* Le JsonParser à supprimer
+ */
 void clean_json_parser(JsonParser*);
 
 #endif /* JSON_H */

+ 47 - 0
Serveur/json_parser.c

@@ -1,9 +1,20 @@
+/* 
+ * File:   json_parser.c
+ * Author: Arthur Brandao
+ *
+ * Created on 28 octobre 2018
+ */
 #include <stdio.h>
 #include <stdlib.h>
 #include "json.h"
 
 /* --- Fonctions privées --- */
 
+/**
+ * Passe un objet json dans une chaine json
+ * @param char* La chaine json
+ * @return int Le nombre de caractères à passer
+ */
 int skip_object(char* json) {
     int compteur = 1;
     json++;
@@ -19,6 +30,11 @@ int skip_object(char* json) {
     return compteur;
 }
 
+/**
+ * Passe un tableau json dans une chaine json
+ * @param char* La chaine json
+ * @return int Le nombre de caractères à passer
+ */
 int skip_array(char* json) {
     int compteur = 1;
     json++;
@@ -30,6 +46,11 @@ int skip_array(char* json) {
     return compteur;
 }
 
+/**
+ * Compte le nombre de clef d'une chaine json
+ * @param char* La chaine json 
+ * @return int Le nombre de clef
+ */
 int key_counter(char* json){
     //Declaration variable
     int compteur = 0;
@@ -60,6 +81,13 @@ int key_counter(char* json){
     return compteur;
 }
 
+/**
+ * Extraction d'une clef
+ * @param JsonParser* La structure pour sauvegarder l'extraction
+ * @param int La position dans la structure
+ * @param char* La chaine json
+ * @return int JSON_ERROR ou le nombre de caractère de la clef
+ */
 int parse_key(JsonParser* this, int index, char* json) {
     //Declaration variable
     int compteur = 0;
@@ -80,6 +108,13 @@ int parse_key(JsonParser* this, int index, char* json) {
     return ++compteur;
 }
 
+/**
+ * Extraction d'une valeur
+ * @param JsonParser* La structure pour sauvegarder l'extraction
+ * @param int La position dans la structure
+ * @param char* La chaine json
+ * @return int JSON_ERROR ou le nombre de caractère de la valeur
+ */
 int parse_val(JsonParser* this, int index, char* json){
     //Declaration variable
     int compteur = 0;
@@ -163,11 +198,23 @@ int parse_val(JsonParser* this, int index, char* json){
     return ++compteur;
 }
 
+/**
+ * Erreur lors du la procedure de parse
+ * Supprime la structure et retourne un code d'erreur
+ * @param JsonParser* structure traitée pendant l'erreur
+ * @return int JSON_ERROR
+ */
 int parse_error(JsonParser* this){
     clean_json_parser(this);
     return JSON_ERROR;
 }
 
+/**
+ * Cherche l'index d'une clef
+ * @param JsonParser* La structure initialisé par json_parse
+ * @param char* La clef à rechercher
+ * @return int La position
+ */
 int search_index(JsonParser* this, char* key){
     int length = strlen(key);
     //Cherche la clef