Quellcode durchsuchen

Debut JSON Encodeur

Arthur Brandao vor 6 Jahren
Ursprung
Commit
581aff76f9
2 geänderte Dateien mit 98 neuen und 0 gelöschten Zeilen
  1. 29 0
      Serveur/json.h
  2. 69 0
      Serveur/json_encoder.c

+ 29 - 0
Serveur/json.h

@@ -21,6 +21,8 @@
 #define JSON_OBJECT 5
 
 /* --- Structure --- */
+typedef JsonNode JsonNode;
+
 typedef struct{
     char* str; //La chaine de carac json
     int elt; //Le nombre d'element
@@ -31,8 +33,23 @@ typedef struct{
     int* type; //Le type des valeurs
 }JsonParser;
 
+typedef struct{
+    JsonNode* head;
+    JsonNode* tail;
+    int length;
+}JsonEncoder;
+
+struct JsonNode{
+    JsonNode* prev;
+    JsonNode* next;
+    char* key;
+    char* val;
+};
+
 /* --- Fonctions ---- */
 
+//JsonParser
+
 /**
  * Parse une chaine JSON en JsonParser
  * Initialise ou écrase les données du JsonParser
@@ -128,5 +145,17 @@ JsonParser* get_object(JsonParser*, char*);
  */
 void clean_json_parser(JsonParser*);
 
+//Json Encoder
+
+void ini_encoder(JsonEncoder*);
+int add_value(JsonEncoder*, char*, char*);
+int add_number(JsonEncoder*, char*, double);
+int add_integer(JsonEncoder*, char*, int);
+int add_boolean(JsonEncoder*, char*, boolean);
+int add_array(JsonEncoder*, char*, char*);
+int add_object(JsonEncoder*, char*, JsonEncoder);
+char* json_encode(JsonEncoder*);
+void clean_json_encoder(JsonEncoder*);
+
 #endif /* JSON_H */
 

+ 69 - 0
Serveur/json_encoder.c

@@ -8,3 +8,72 @@
 #include <stdlib.h>
 #include "json.h"
 
+/* --- Fonctions privée --- */
+
+void add_node(JsonEncoder* this, char* key, char* val){
+    //Création node
+    JsonNode* node;
+    node = malloc(sizeof(JsonNode));
+    //Allocation node
+    node->key = malloc(strlen(key) * sizeof(char));
+    node->val = malloc(strlen(val) * sizeof(char));
+    //Initialisation node
+    strcpy(node->key, key);
+    strcpy(node->val, val);
+    //Si 1er node
+    if(this->head == NULL){
+        this->head = node;
+        node->prev = NULL;
+    } else {
+        node->prev = this->tail;
+        node->prev->next = node;
+    }
+    this->tail = node;
+    node->next = NULL;
+}
+
+void delete_node(JsonNode* node){
+    free(node->key);
+    free(node->val);
+    free(node);
+}
+
+/* --- Fonctions publique --- */
+
+void ini_encoder(JsonEncoder* this){
+    this->head = NULL;
+    this->tail = NULL;
+    this->length = 0;
+}
+
+int add_value(JsonEncoder* this, char* key, char* val){
+    
+}
+
+int add_number(JsonEncoder*, double){
+    
+}
+
+int add_integer(JsonEncoder*, int){
+    
+}
+
+int add_boolean(JsonEncoder*, boolean){
+    
+}
+
+int add_array(JsonEncoder*, char*){
+    
+}
+
+int add_object(JsonEncoder*, JsonEncoder){
+    
+}
+
+char* json_encode(JsonEncoder*){
+    
+}
+
+void clean_json_encoder(JsonEncoder* this){
+    
+}