#ifndef JSONFILE_H #define JSONFILE_H #include /** * @brief Verifica se un file esiste sul disco. * @param fname Percorso del file da controllare. * @return 1 se il file esiste ed รจ accessibile, 0 altrimenti. */ int existsFile(const char *fname); /** * @brief Crea un nuovo file JSON inizializzandolo con un array vuoto ([]). * @param fname Percorso del file da creare. * @return 0 in caso di successo, -1 in caso di errore. */ int createFile(const char *fname); /** * @brief Rinomina o sposta un file esistente. * @param oldName Vecchio percorso/nome del file. * @param newName Nuovo percorso/nome del file. * @return 0 in caso di successo, -1 in caso di errore. */ int renameDataFile(const char *oldName, const char *newName); /** * @brief Carica un array JSON da file. Se il file non esiste, lo crea automaticamente. * @param fname Percorso del file JSON. * @return Puntatore all'oggetto JSON (array) caricato, oppure NULL in caso di errore. */ json_object *loadJsonArray(const char *fname); /** * @brief Salva un array JSON su file formattandolo in modo leggibile (indentato). * @param fname Percorso del file di destinazione. * @param arr L'oggetto JSON (array) da salvare. * @return 0 in caso di successo, -1 in caso di errore. */ int saveJsonArray(const char *fname, json_object *arr); /** * @brief Cerca un oggetto all'interno di un array JSON basandosi sul campo "name". * @param arr L'array JSON in cui effettuare la ricerca. * @param name La stringa del nome da cercare. * @return Puntatore all'oggetto JSON trovato, oppure NULL se non esiste. */ json_object *findItemByName(json_object *arr, const char *name); /** * @brief Rimuove un oggetto da un array JSON basandosi sul campo "name". * @param arr L'array JSON da cui rimuovere l'elemento. * @param name Il nome dell'elemento da eliminare. * @return 0 in caso di successo, 1 se l'elemento non viene trovato, -1 in caso di errore. */ int removeItemByName(json_object *arr, const char *name); /** * @brief Modifica il campo "name" di un elemento all'interno di un array JSON. * @param arr L'array JSON contenente l'elemento. * @param oldName Il nome attuale dell'elemento da rinominare. * @param newName Il nuovo nome da assegnare. * @return 0 in caso di successo, 1 se l'elemento non viene trovato, -1 in caso di errore. */ int renameItemByName(json_object *arr, const char *oldName, const char *newName); #endif