dwscr/LoadFile/LoadFile.cc
josh 68d41e9c63 moved files to trunk directory
git-svn-id: svn://anubis/dwscr/trunk@83 5bef9df8-b654-44bb-925b-0ff18baa8f8c
2008-09-22 17:27:40 +00:00

43 lines
1.1 KiB
C++

#include <map>
#include <string>
#include "LoadFile.h"
typedef struct {
const char * filename;
unsigned char * data;
int length;
} fileref_t;
/* The data section is generated by a perl script. The contents of the
* included file are part of this logical program unit, which is why it
* is directly included instead of compiling it separately.
*/
#include "LoadFile-gen.inc"
const static int numFiles = sizeof(LoadFileData)/sizeof(fileref_t);
static std::map< std::string, fileref_t * > * LoadFileMap = NULL;
void * LoadFile(const char * filename, unsigned int * length)
{
if (LoadFileMap == NULL)
{
LoadFileMap = new std::map< std::string, fileref_t * >();
for (int i = 0; i < numFiles; i++)
{
(*LoadFileMap)[std::string(LoadFileData[i].filename)] = &LoadFileData[i];
}
}
std::map< std::string, fileref_t * >::iterator it =
LoadFileMap->find(std::string(filename));
if (it == LoadFileMap->end())
return NULL;
*length = it->second->length;
return it->second->data;
}