diff options
author | Chris Apers | 2004-03-17 14:10:51 +0000 |
---|---|---|
committer | Chris Apers | 2004-03-17 14:10:51 +0000 |
commit | 6e1200dc6788ee24e46f17d084254f6cd84bb95a (patch) | |
tree | 105ebc42e9766e757d30aad36097d13939ed013a /queen/resource.cpp | |
parent | 1ca917d81bef47379066d229142f8f86c1aae1e7 (diff) | |
download | scummvm-rg350-6e1200dc6788ee24e46f17d084254f6cd84bb95a.tar.gz scummvm-rg350-6e1200dc6788ee24e46f17d084254f6cd84bb95a.tar.bz2 scummvm-rg350-6e1200dc6788ee24e46f17d084254f6cd84bb95a.zip |
Added PalmOS support
svn-id: r13336
Diffstat (limited to 'queen/resource.cpp')
-rw-r--r-- | queen/resource.cpp | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/queen/resource.cpp b/queen/resource.cpp index 5c703c3dac..4b55824ec9 100644 --- a/queen/resource.cpp +++ b/queen/resource.cpp @@ -24,6 +24,9 @@ namespace Queen { +#ifdef __PALM_OS__ +static ResourceEntry *_resourceTablePEM10; +#endif const char *Resource::_tableFilename = "queen.tbl"; @@ -56,6 +59,7 @@ Resource::Resource(const Common::String &datafilePath) Resource::~Resource() { _resourceFile->close(); delete _resourceFile; + if(_resourceTable != _resourceTablePEM10) delete[] _resourceTable; } @@ -81,6 +85,7 @@ int32 Resource::resourceIndex(const char *filename) const { //Use simple binary search to locate file +#ifndef __PALM_OS__ for (;;) { uint32 cur = (low + high) / 2; int32 diff = strcmp(entryName, _resourceTable[cur].filename); @@ -96,6 +101,14 @@ int32 Resource::resourceIndex(const char *filename) const { else high = cur; } +#else + // Does work for me (????) use this instead + uint32 cur = 0; + do { + if (!strcmp(entryName, _resourceTable[cur].filename)) + return cur; + } while (cur++ <= high); +#endif debug(7, "Couldn't find file '%s'", entryName); return -1; @@ -113,8 +126,13 @@ uint8 *Resource::loadFile(const char *filename, uint32 skipBytes, byte *dstBuf) ResourceEntry *re = resourceEntry(filename); assert(re != NULL); uint32 size = re->size - skipBytes; +#ifndef __PALM_OS__ if (dstBuf == NULL) dstBuf = new byte[size]; +#else + if (dstBuf == NULL) + dstBuf = (byte *)calloc(size, sizeof(byte)); +#endif _resourceFile->seek(re->offset + skipBytes); _resourceFile->read(dstBuf, size); return dstBuf; @@ -272,3 +290,15 @@ char *LineReader::nextLine() { } // End of namespace Queen +#ifdef __PALM_OS__ +#include "scumm_globals.h" + +_GINIT(Queen_Restables) +_GSETPTR(Queen::_resourceTablePEM10, GBVARS_RESOURCETABLEPM10_INDEX, Queen::ResourceEntry, GBVARS_QUEEN) +_GEND + +_GRELEASE(Queen_Restables) +_GRELEASEPTR(GBVARS_RESOURCETABLEPM10_INDEX, GBVARS_QUEEN) +_GEND + +#endif |