added temp implementation of resource manager
This commit is contained in:
parent
cd37c95e7c
commit
cc847eb79e
64
resource/main.cpp
Normal file
64
resource/main.cpp
Normal file
@ -0,0 +1,64 @@
|
||||
#include <cstdio>
|
||||
#include <string>
|
||||
|
||||
using namespace std;
|
||||
|
||||
#define NB_VAL_PER_LINE 256
|
||||
|
||||
bool addFile(const string &inFile, FILE *out)
|
||||
{
|
||||
static unsigned int n = 0;
|
||||
FILE *in = fopen(inFile.c_str(), "r");
|
||||
if(in == NULL)
|
||||
{
|
||||
fprintf(stderr, "can't open \"%s\" for readingn", inFile.c_str());
|
||||
return false;
|
||||
}
|
||||
fprintf(out, "\n\tunsigned char data%d[] = {\n", n);
|
||||
unsigned char ptr[NB_VAL_PER_LINE];
|
||||
size_t nbRead;
|
||||
do
|
||||
{
|
||||
nbRead = fread(ptr, sizeof(unsigned char), NB_VAL_PER_LINE, in);
|
||||
for(unsigned int i=0; i<nbRead; ++i)
|
||||
fprintf(out, i ? ",0x%x" : "\t\t0x%x", ptr[i]);
|
||||
fprintf(out, "\n\t");
|
||||
}
|
||||
while(nbRead == NB_VAL_PER_LINE);
|
||||
fprintf(out, "};\n\tresourceFilesData[std::string(\"%s\")] = data%d;\n", inFile.c_str(), n);
|
||||
++n;
|
||||
fclose(in);
|
||||
return true;
|
||||
}
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
if(argc < 3)
|
||||
{
|
||||
printf("usage : %s RESOURCE_FILE.cpp [LIST_OF_FILES_TO_BAKE]\n", argv[0]);
|
||||
return EXIT_SUCCESS;
|
||||
}
|
||||
|
||||
FILE *out = fopen(argv[1], "w");
|
||||
if(out == NULL)
|
||||
{
|
||||
fprintf(stderr, "can't open \"%s\" for writing\n", argv[1]);
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
fprintf(out, "#include <string>\n#include <unordered_map>\n\nnamespace Resource {\nstd::unordered_map<std::string, unsigned char*> *resourceFilesData;\n\nvoid initResourceData()\n{\n\tresourceFilesData = new std::unordered_map<std::string, unsigned char*>();\n");
|
||||
for(int i=2; i<argc; ++i)
|
||||
{
|
||||
if(!addFile(argv[i], out))
|
||||
{
|
||||
fclose(out);
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
else
|
||||
printf("successfully added \"%s\" to \"%s\".\n", argv[i], argv[1]);
|
||||
}
|
||||
fprintf(out, "\n}\n\nunsigned char* get(std::string fileName)\n{\n\tif(resourceFilesData->count(fileName) > 0)\n\t\treturn (*resourceFilesData)[fileName];\n\telse\n\t\treturn NULL;\n}\n}\n");
|
||||
fclose(out);
|
||||
printf("successfully created resource file \"%s\".\n", argv[1]);
|
||||
return EXIT_SUCCESS;
|
||||
}
|
13
resource/resource.h
Normal file
13
resource/resource.h
Normal file
@ -0,0 +1,13 @@
|
||||
#ifndef RES_H
|
||||
#define RES_H
|
||||
|
||||
#include <string>
|
||||
#include <unordered_map>
|
||||
|
||||
namespace Resource {
|
||||
extern void initResourceData();
|
||||
extern unsigned char *get();
|
||||
}
|
||||
|
||||
|
||||
#endif // RES_H
|
Loading…
x
Reference in New Issue
Block a user