- got rid of the remaining persistent std::strings in the file system.

This also uses the string pool now.
This commit is contained in:
Christoph Oelckers 2023-08-22 20:06:15 +02:00
parent 929cae2f41
commit 94c9ee4593
4 changed files with 13 additions and 9 deletions

View file

@ -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;

View file

@ -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
}

View file

@ -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)

View file

@ -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;
};