mirror of
https://github.com/ZDoom/gzdoom.git
synced 2025-03-13 22:42:07 +00:00
- got rid of the remaining persistent std::strings in the file system.
This also uses the string pool now.
This commit is contained in:
parent
929cae2f41
commit
94c9ee4593
4 changed files with 13 additions and 9 deletions
|
@ -35,6 +35,7 @@
|
|||
*/
|
||||
|
||||
#include "resourcefile.h"
|
||||
#include "fs_stringpool.h"
|
||||
#include "fs_swap.h"
|
||||
|
||||
using namespace fs_private;
|
||||
|
@ -47,7 +48,7 @@ using namespace fs_private;
|
|||
|
||||
class FWHResFile : public FUncompressedFile
|
||||
{
|
||||
std::string basename;
|
||||
const char* BaseName;
|
||||
public:
|
||||
FWHResFile(const char * filename, FileReader &file, StringPool* sp);
|
||||
bool Open(LumpFilterInfo* filter);
|
||||
|
@ -63,7 +64,7 @@ public:
|
|||
FWHResFile::FWHResFile(const char *filename, FileReader &file, StringPool* sp)
|
||||
: FUncompressedFile(filename, file, sp)
|
||||
{
|
||||
basename = ExtractBaseName(filename, false);
|
||||
BaseName = stringpool->Strdup(ExtractBaseName(filename, false).c_str());
|
||||
}
|
||||
|
||||
//==========================================================================
|
||||
|
@ -91,7 +92,8 @@ bool FWHResFile::Open(LumpFilterInfo*)
|
|||
if (length == 0) break;
|
||||
char num[5];
|
||||
snprintf(num, 5, "/%04d", k);
|
||||
std::string synthname = basename + num;
|
||||
std::string synthname = BaseName;
|
||||
synthname += num;
|
||||
Lumps[i].LumpNameSetup(synthname.c_str(), stringpool);
|
||||
Lumps[i].Owner = this;
|
||||
Lumps[i].Position = offset;
|
||||
|
|
|
@ -307,7 +307,7 @@ void FileSystem::AddLump(FResourceLump *lump)
|
|||
|
||||
int FileSystem::AddExternalFile(const char *filename)
|
||||
{
|
||||
FResourceLump *lump = new FExternalLump(filename);
|
||||
FResourceLump *lump = new FExternalLump(filename, -1, stringpool);
|
||||
AddLump(lump);
|
||||
return (int)FileInfo.size() - 1; // later
|
||||
}
|
||||
|
|
|
@ -692,9 +692,10 @@ FUncompressedFile::FUncompressedFile(const char *filename, FileReader &r, String
|
|||
//
|
||||
//==========================================================================
|
||||
|
||||
FExternalLump::FExternalLump(const char *_filename, int filesize)
|
||||
: Filename(_filename)
|
||||
FExternalLump::FExternalLump(const char *_filename, int filesize, StringPool* stringpool)
|
||||
{
|
||||
FileName = stringpool->Strdup(_filename);
|
||||
|
||||
if (filesize == -1)
|
||||
{
|
||||
FileReader f;
|
||||
|
@ -727,7 +728,7 @@ int FExternalLump::FillCache()
|
|||
Cache = new char[LumpSize];
|
||||
FileReader f;
|
||||
|
||||
if (f.OpenFile(Filename.c_str()))
|
||||
if (f.OpenFile(FileName))
|
||||
{
|
||||
auto read = f.Read(Cache, LumpSize);
|
||||
if (read != LumpSize)
|
||||
|
|
|
@ -218,11 +218,12 @@ protected:
|
|||
};
|
||||
|
||||
|
||||
// should only be used internally.
|
||||
struct FExternalLump : public FResourceLump
|
||||
{
|
||||
std::string Filename;
|
||||
const char* FileName;
|
||||
|
||||
FExternalLump(const char *_filename, int filesize = -1);
|
||||
FExternalLump(const char *_filename, int filesize, StringPool* sp);
|
||||
virtual int FillCache() override;
|
||||
|
||||
};
|
||||
|
|
Loading…
Reference in a new issue