#pragma once
#include <stdio.h>
#include <vector>
#include <string>

#define SOURCE_FILE         0
#define SOURCE_FOLDER       1

void file_setconfigfolder(const char *foldername);
const char *file_getconfigfolder();

void file_setresourcefilename(const char *str);
void file_setresourcefolder(const char *str);
void file_setsource(const int src);

FILE *file_getfilepointer(const char *resourcename, int& filesize, const bool binary=false);
char *file_getfilebuffer(const char *resourcename, int& filesize, const bool zero_terminate=false);

FILE *file_getfilepointerex(const char *filename, int& filesize, const bool binary=false);
char *file_getfilebufferex(const char *filename, int& filesize, const bool zero_terminate=false);

const char* file_getconfigvalue(const char *key);
void file_setconfigvalue(const char* key, const char* value);

bool file_createFolder(const char* name);
std::vector<std::string> file_listdir(const char *folder, const char *extension=NULL);