94 lines
4.7 KiB
C++
94 lines
4.7 KiB
C++
#pragma once
|
|
#include <stdio.h>
|
|
#include <string>
|
|
|
|
#define SOURCE_FILE 0
|
|
#define SOURCE_FOLDER 1
|
|
|
|
// Unitat per a la gestió de l'acces a arxius
|
|
namespace file
|
|
{
|
|
// Funcions d'acces als recursos (gràfics, musiques...)
|
|
// -----------------------------------------------------------------------------------------------------------
|
|
|
|
/// @brief Estableix el nom de l'arxiu on estàn guardats els recursos (es "data.jf2" per defecte)
|
|
/// @param str nom de l'arxiu de recursos
|
|
void setResourceFilename(const std::string str);
|
|
|
|
/// @brief Estableix el nom de la carpeta on estàn guardats els recursos (es "data" per defecte)
|
|
/// @param str nom de la carpeta de recursos
|
|
void setResourceFolder(const std::string str);
|
|
|
|
/// @brief Estableix d'on s'han de obtenir els recursos (arxius individuals dins d'una carpeta o arxiu de recursos)
|
|
/// @param src SOURCE_FILE o SOURCE_FOLDER, si es vol que se pillen recursos de arxiu o de carpeta
|
|
void setSource(const int src);
|
|
|
|
/// @brief Comproba si un arxiu existeix.
|
|
/// @param resourcename el nom de l'arxiu que volem comprobar
|
|
bool fileExists(const std::string resourcename);
|
|
|
|
/// @brief Obté un "FILE*" al arxiu que se li demana, independentment de la font (arxius individual en carpeta, o arxiu de recursos). Recordar tancar-lo al acabar amb ell.
|
|
/// @param resourcename el nom de l'arxiu que volem obrir
|
|
/// @param filesize paràmetre de retorn. Ací es torna el tamany de l'arxiu
|
|
/// @param binary si volem obrir el arxiu en format binary
|
|
/// @return un punter FILE* al arxiu
|
|
FILE *getFilePointer(const std::string resourcename, int &filesize, const bool binary = false);
|
|
|
|
/// @brief Obté un buffer de memòria en format "char*" del arxiu que se li demana, independentment de la font (arxius individual en carpeta, o arxiu de recursos).
|
|
/// @brief Recordar alliberar la memoria del buffer amb free(buffer) al acabar amb ell.
|
|
/// @param resourcename el nom de l'arxiu del que volem obrindre el buffer
|
|
/// @param filesize paràmetre de retorn. Ací es torna el tamany de l'arxiu
|
|
/// @param zeroTerminated si afegim un caràcter 0 al final (per defecte no)
|
|
/// @return un array de "filesize" bytes amb el contingut del arxiu
|
|
char *getFileBuffer(const std::string resourcename, int &filesize, const bool zeroTerminated=false);
|
|
|
|
// Funcions d'access a la configuració (clau = valor)
|
|
// -----------------------------------------------------------------------------------------------------------
|
|
|
|
/// @brief Estableix el nom de la carpeta on es guardarà la configuració
|
|
/// @param foldername nom de la carpeta
|
|
void setConfigFolder(const std::string foldername);
|
|
|
|
/// @brief Obté el nom de la carpeta on es guardarà la configuració
|
|
/// @return nom de la carpeta
|
|
const std::string getConfigFolder();
|
|
|
|
/// @brief Obté un valor de l'arxiu de configuració per a la clau donada (o cadena buida si no existeix)
|
|
/// @param key clau de la que obtindre el valor
|
|
/// @return el valor de la clau especificada
|
|
const std::string getConfigValue(const std::string key);
|
|
|
|
/// @brief Estableix un valor en l'arxiu de configuració per a la clau donada
|
|
/// @param key clau a la que establir un valor
|
|
/// @param value valor a establir per a la clau
|
|
void setConfigValue(const std::string key, const std::string value);
|
|
|
|
// Funcions per a treballar amb arxius de text
|
|
// -----------------------------------------------------------------------------------------------------------
|
|
|
|
/// @brief Llig un enter de l'arxiu especificat. En cas de no poder, torna 0.
|
|
/// @param buffer punter a l'arxiu d'on llegir
|
|
/// @return el enter llegit de l'arxiu
|
|
int readInt(char **buffer);
|
|
|
|
/// @brief Llig una cadena de l'arxiu especificat. En cas de no poder, torna nullptr.
|
|
/// @param buffer punter a l'arxiu d'on llegir
|
|
/// @param stopOnLineEnd Si s'ha de parar la búsqueda (i tornar nullptr) al trobar un final de linea
|
|
/// @return cadena llegida de l'arxiu. No alliberar la seua memòria, pero usar-la abans de tornar a llegir altre valor
|
|
const char *readString(char **buffer, const bool stopOnLineEnd=false);
|
|
|
|
/// @brief Escriu una cadena a l'arxiu especificat.
|
|
/// @param buffer punter a l'arxiu on escriure
|
|
/// @param str la cadena a escriure
|
|
void writeString(FILE *f, const char* str);
|
|
|
|
/// @brief Escriu un enter a l'arxiu especificat.
|
|
/// @param buffer punter a l'arxiu on escriure
|
|
/// @param value L'enter a escriure
|
|
void writeInt(FILE *f, const int value);
|
|
|
|
/// @brief Escriu un salt de linea a l'arxiu especificat.
|
|
/// @param buffer punter a'larxiu on escriure
|
|
void jumpLine(FILE *f);
|
|
}
|