Toponaming: Fix save and restore of elementmaps

This commit is contained in:
bgbsww
2024-06-23 15:17:45 -04:00
parent 55515b1e7f
commit aa66518568
12 changed files with 226 additions and 42 deletions

View File

@@ -320,6 +320,10 @@ void Writer::decInd()
indBuf[indent] = '\0';
}
void Writer::putNextEntry(const char *file, const char *obj) {
ObjectName = obj?obj:file;
}
// ----------------------------------------------------------------------------
ZipWriter::ZipWriter(const char* FileName)
@@ -346,6 +350,12 @@ ZipWriter::ZipWriter(std::ostream& os)
ZipStream.setf(ios::fixed, ios::floatfield);
}
void ZipWriter::putNextEntry(const char *file, const char *obj) {
Writer::putNextEntry(file,obj);
ZipStream.putNextEntry(file);
}
void ZipWriter::writeFiles()
{
// use a while loop because it is possible that while
@@ -353,7 +363,9 @@ void ZipWriter::writeFiles()
size_t index = 0;
while (index < FileList.size()) {
FileEntry entry = FileList[index];
ZipStream.putNextEntry(entry.FileName);
putNextEntry(entry.FileName.c_str());
indent = 0;
indBuf[0] = 0;
entry.Object->SaveDocFile(*this);
index++;
}
@@ -372,8 +384,10 @@ FileWriter::FileWriter(const char* DirName)
FileWriter::~FileWriter() = default;
void FileWriter::putNextEntry(const char* file)
void FileWriter::putNextEntry(const char* file, const char *obj)
{
Writer::putNextEntry(file,obj);
std::string fileName = DirName + "/" + file;
this->FileStream.open(fileName.c_str(), std::ios::out | std::ios::binary);
}
@@ -402,8 +416,9 @@ void FileWriter::writeFiles()
fi.createDirectory();
}
std::string fileName = DirName + "/" + entry.FileName;
this->FileStream.open(fileName.c_str(), std::ios::out | std::ios::binary);
putNextEntry(entry.FileName.c_str());
indent = 0;
indBuf[0] = 0;
entry.Object->SaveDocFile(*this);
this->FileStream.close();
}