- Treballant en la lectura de arxius de dades

This commit is contained in:
2024-05-31 14:00:39 +02:00
parent 3ae52e1306
commit eb34fcd41a
3 changed files with 92 additions and 25 deletions

View File

@@ -261,17 +261,21 @@ namespace file
}
// 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)
char *getFileBuffer(const std::string resourcename, int &filesize)
char *getFileBuffer(const std::string resourcename, int &filesize, const bool zeroTerminated)
{
// Usem la funció anterior per a obtinde un FILE*, independentment de on pillem els recursos
FILE *f = getFilePointer(resourcename, filesize, true);
// Reservem memòria per al buffer
char *buffer = (char *)malloc(filesize);
// Si afegim el 0 al final, el tamany del buffer es 1 byte mes gran
char *buffer = (char *)malloc(filesize + zeroTerminated ? 1 : 0);
// llegim el contingut del arxiu i el fiquem en el buffer
fread(buffer, filesize, 1, f);
// Afegim el 0 al final si toca (i augmentem en 1 la variable filesize que tornem)
if (zeroTerminated) buffer[filesize++] = 0;
// Tanquem l'arxiu
fclose(f);
@@ -419,4 +423,44 @@ namespace file
config.push_back({key, value});
saveConfigValues();
}
void ignoreWhitespace(const char **buffer, const bool stopOnLineEnd=false)
{
if (!stopOnLineEnd)
while (**buffer!=0 && **buffer<=32) (*buffer)++;
else
while (**buffer!='\n' && **buffer!=0 && **buffer<=32) (*buffer)++;
}
// Llig una cadena de l'arxiu especificat. En cas de no poder, torna nullptr.
const char *readString(const char **buffer, const bool stopOnLineEnd=false)
{
ignoreWhitespace(buffer);
}
// Llig un enter de l'arxiu especificat. En cas de no poder, torna 0.
int readInt(const char **buffer)
{
ignoreWhitespace(buffer);
return atoi(readString(buffer));
}
// Escriu una cadena a l'arxiu especificat.
void writeString(const char **buffer, const char* str)
{
}
// Escriu un enter a l'arxiu especificat.
void writeInt(const char **buffer, const int value)
{
}
// Escriu un salt de linea a l'arxiu especificat.
void jumpLine(const char **buffer)
{
}
}