Skip to content

Commit

Permalink
commentaires
Browse files Browse the repository at this point in the history
  • Loading branch information
valerierx committed May 26, 2024
1 parent 4d938cf commit 123f45a
Show file tree
Hide file tree
Showing 2 changed files with 49 additions and 24 deletions.
65 changes: 45 additions & 20 deletions json/json.c
Original file line number Diff line number Diff line change
Expand Up @@ -69,13 +69,13 @@ char * parserChaineJSON(char **str) {
}
(*str)++;
char *start = *str;
while (**str != '\0' && **str != '"') {
while (**str != '\0' && **str != '"') { // parcoure toute la chaine
(*str)++;
}
if (**str != '"') {
return NULL;
}
int length = *str - start;
int length = *str - start; // longueur de la chaine

char * result = NULL;
result = malloc(length + 1);
Expand All @@ -98,7 +98,7 @@ int parserEntierJSON(char **str, int sign) {
if(verif != 1) {
logMessage(CRITICAL, "erreur sscanf parserEntierJSON");
}
while(isdigit(**str)) { // déplace le curseur
while(isdigit(**str)) { // parcoure tout le nombre
(*str)++;
}
if (!sign) { // passage au négatif si présence d'un - avant le nombre
Expand Down Expand Up @@ -138,6 +138,10 @@ JSONArray * parserTabJSON(char **str) {
JSONCleValeurCouple pair; //creation du couple clé-valeur
pair.value = parserValeurJSON(str);
array->values = realloc(array->values, sizeof(JSONCleValeurCouple) * (array->length + 1)); // agrandit l'allocation mémoire des valeurs
if(array->values == NULL) {
logMessage(CRITICAL, "erreur realloc array parserTabJSON");
exit(1);
}
array->values[array->length++] = pair;
chercheChar(str, ','); // avance à la virgule suivante
}
Expand All @@ -146,7 +150,7 @@ JSONArray * parserTabJSON(char **str) {

}

JSONValeur parserValeurJSON(char **str) {
JSONValeur parserValeurJSON(char **str) { // parse une valeur JSON
*str = sauteEspaces(*str);
JSONValeur v;
if (**str == '"') {
Expand Down Expand Up @@ -178,11 +182,11 @@ JSONValeur parserValeurJSON(char **str) {


JSONObjet * parserObjetJSON(char ** str) {
if (!chercheChar(str, '{')) {
if (!chercheChar(str, '{')) { // vérifie la présence de l'accolade
logMessage(CRITICAL, "erreur parserObjetJSON, { manquant");
exit(1); // Erreur
}
JSONObjet * object = NULL;
JSONObjet * object = NULL; // creation de l'objet
object = malloc(sizeof(JSONObjet));
if(object == NULL) {
logMessage(CRITICAL, "erreur malloc object parserObjetJSON");
Expand All @@ -201,15 +205,19 @@ JSONObjet * parserObjetJSON(char ** str) {
}
pair.value = parserValeurJSON(str);
object->pairs = realloc(object->pairs, sizeof(JSONCleValeurCouple) * (object->length + 1)); // agrandit l'allocation mémoire des couples clé-valeur
if(object->pairs == NULL) {
logMessage(CRITICAL, "erreur realloc object parserObjetJSON");
exit(1);
}
object->pairs[object->length++] = pair;
chercheChar(str, ','); // avance à la virgule suivante
}
return object;
}

char * serializeChaineJSON(JSONValeur str) {
char * result = NULL;
result = malloc(strlen(str.stringValue) + 3);
char * result = NULL; // chaine de caractères finale
result = malloc(strlen(str.stringValue) + 3); // + guillemets et \0
if (result == NULL) {
logMessage(CRITICAL, "erreur malloc result serializeChaineJSON");
exit(1);
Expand All @@ -219,7 +227,7 @@ char * serializeChaineJSON(JSONValeur str) {
}

char * serializeEntierJSON(JSONValeur i) {
char * result = NULL;
char * result = NULL; // chaine de caractères finale
result = malloc(sizeof(char) * longueurInt(i.numberValue) + 1);
if (result == NULL) {
logMessage(CRITICAL, "erreur malloc result serializeEntierJSON");
Expand All @@ -230,8 +238,8 @@ char * serializeEntierJSON(JSONValeur i) {
}

char * serializeBooleenJSON(JSONValeur b) {
char * result = NULL;
result = malloc(sizeof(char) * 6);
char * result = NULL; // chaine de caractères finale
result = malloc(sizeof(char) * 6); // true ou false
if (result == NULL) {
logMessage(CRITICAL, "erreur malloc result serializeBooleenJSON");
exit(1);
Expand All @@ -245,9 +253,9 @@ char * serializeBooleenJSON(JSONValeur b) {
}

char * serializeTabJSON(JSONArray a) {
char * result = NULL;
char * finalString = NULL;
char * value = NULL;
char * result = NULL; // chaine de caractères finale
char * finalString = NULL; // chaine de caractères finale avec les crochets
char * value = NULL; // chaine de caractères temporaire

result = malloc(sizeof(char));
if (result == NULL) {
Expand All @@ -256,7 +264,7 @@ char * serializeTabJSON(JSONArray a) {
}
result[0] = '\0';
for (int i = 0; i < a.length; i++) {
switch (a.values[i].value.type) {
switch (a.values[i].value.type) { // assigne la valeur en fonction du type
case JSON_CHAINE:
value = serializeChaineJSON(a.values[i].value);
break;
Expand All @@ -277,19 +285,27 @@ char * serializeTabJSON(JSONArray a) {
exit(1);
}
result = realloc(result, strlen(result) + strlen(value) + 2);
if(result == NULL) {
logMessage(CRITICAL, "erreur realloc result serializeTabJSON");
exit(1);
}
strcat(result, value);
if (i < a.length - 1) {
result = realloc(result, strlen(result) + 2); // agrandit l'allocation suivant les données restantes
if(result == NULL) {
logMessage(CRITICAL, "erreur realloc result serializeTabJSON");
exit(1);
}
strcat(result, ",");
}
free(value);
}
finalString = malloc(strlen(result) + 3);
finalString = malloc(strlen(result) + 3); // + crochets et \0
if (finalString == NULL) {
logMessage(CRITICAL, "erreur malloc finalResult serializeTabJSON");
exit(1);
}
sprintf(finalString, "[%s]", result);
sprintf(finalString, "[%s]", result); // ajoute les crochets
free(result);
return finalString;
}
Expand All @@ -306,7 +322,7 @@ char * serializeObjetJSON(JSONObjet o) {
}
result[0] = '\0';
for (int i = 0; i < o.length; i++) {
switch (o.pairs[i].value.type) {
switch (o.pairs[i].value.type) { // assigne la valeur en fonction du type
case JSON_CHAINE:
value = serializeChaineJSON(o.pairs[i].value);
break;
Expand All @@ -322,17 +338,26 @@ char * serializeObjetJSON(JSONObjet o) {
case JSON_TABLEAU:
value = serializeTabJSON(*o.pairs[i].value.arrayValue);
break;
default:
default: // type non reconnu
logMessage(CRITICAL, "erreur serializeObjetJSON");
exit(1);
}
result = realloc(result, strlen(result) + strlen(o.pairs[i].key) + strlen(value) + 5);
if(result == NULL) {
logMessage(CRITICAL, "erreur realloc result serializeObjetJSON");
exit(1);
}
// ajout de la clé / formattage
strcat(result, "\"");
strcat(result, o.pairs[i].key);
strcat(result, "\":");
strcat(result, value);
strcat(result, value); // ajout de la valeur
if (i < o.length - 1) {
result = realloc(result, strlen(result) + 2);
if(result == NULL) {
logMessage(CRITICAL, "erreur realloc result serializeObjetJSON");
exit(1);
}
strcat(result, ",");
}
free(value);
Expand Down
8 changes: 4 additions & 4 deletions sauvegarde.c
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ Joueur * joueurVersJSON(JSONObjet joueurJSON) {
exit(1);
}
joueur->nom = NULL;
joueur->nom = malloc(sizeof(char) * strlen(joueurJSON.pairs[0].value.stringValue) + 1);
joueur->nom = malloc(sizeof(char) * strlen(joueurJSON.pairs[0].value.stringValue) + 1); // +1 pour le \0
joueur->nom = strcpy(joueur->nom, joueurJSON.pairs[0].value.stringValue);
joueur->x = joueurJSON.pairs[1].value.numberValue;
joueur->y = joueurJSON.pairs[2].value.numberValue;
Expand Down Expand Up @@ -165,10 +165,10 @@ Salle * salleDepuisJSON(JSONObjet salleJSON) {
logMessage(ERROR, "erreur malloc salleDepuisJSON salle.portes");
exit(1);
}
for(int i = 0; i < salle->nportes; i++) {
for(int i = 0; i < salle->nportes; i++) { // portes
salle->portes[i] = porteDepuisJSON(*salleJSON.pairs[4].value.arrayValue->values[i].value.objectValue);
}
for(int i = 0; i < 3; i++) {
for(int i = 0; i < 3; i++) { // objets (3 par salle)
salle->objets[i] = objetDepuisJSON(*salleJSON.pairs[5].value.arrayValue->values[i].value.objectValue);
}
salle->disp = malloc(sizeof(int *) * salle->hauteur);
Expand All @@ -186,7 +186,7 @@ Salle * salleDepuisJSON(JSONObjet salleJSON) {
salle->disp[i][j] = salleJSON.pairs[6].value.arrayValue->values[i].value.arrayValue->values[j].value.numberValue;
}
}
if(salleJSON.pairs[9].value.objectValue->length == 0) {
if(salleJSON.pairs[9].value.objectValue->length == 0) { // ennemi
salle->ennemi = NULL;
} else {
salle->ennemi = ennemiDepuisJSON(*salleJSON.pairs[9].value.objectValue);
Expand Down

0 comments on commit 123f45a

Please sign in to comment.