MCPcopy Create free account
hub / github.com/BohemiaInteractive/CWR / Load

Method Load

engine/Poseidon/UI/Locale/Stringtable/Stringtable.cpp:256–327  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

254}
255
256static void MergeSurplusLegacyCsvCells(std::vector<std::string>& row, int expectedColumns, int mergeColumn)
257{
258 if (expectedColumns <= 0 || mergeColumn < 0 || mergeColumn >= expectedColumns ||
259 static_cast<int>(row.size()) <= expectedColumns)
260 {
261 return;
262 }
263
264 const int cellsToMerge = static_cast<int>(row.size()) - expectedColumns + 1;
265 if (mergeColumn + cellsToMerge > static_cast<int>(row.size()))
266 {
267 return;
268 }
269
270 std::string merged = row[mergeColumn];
271 for (int i = 1; i < cellsToMerge; i++)
272 {
273 merged += ",";
274 merged += row[mergeColumn + i];
275 }
276
277 row[mergeColumn] = std::move(merged);
278 row.erase(row.begin() + mergeColumn + 1, row.begin() + mergeColumn + cellsToMerge);
279}
280
281void StringTableDynamic::Load(const char* filename, std::set<std::string>& appliedInBatch)
282{
283 QIFStreamB f;
284 f.AutoOpen(filename);
285 bool fileIsUtf8 = HasUtf8CsvSuffix(filename);
286 int column = -1;
287 int headerColumns = 0;
288 int legacyCommaColumn = -1;
289 Poseidon::Codepage columnCp = Poseidon::Codepage::CP1252;
290 std::set<std::string> seenNames;
291 while (true)
292 {
293 if (f.eof())
294 {
295 return;
296 }
297
298 std::vector<std::string> row;
299 if (!Poseidon::Asset::Formats::CsvReadRow(f, row))
300 {
301 return;
302 }
303
304 if (!row.empty() && stricmp(row[0].c_str(), "LANGUAGE") == 0)
305 {
306 headerColumns = static_cast<int>(row.size());
307 for (int c = 1; c < static_cast<int>(row.size()); c++)
308 {
309 if (!fileIsUtf8 && legacyCommaColumn < 0 && stricmp(row[c].c_str(), "French") == 0)
310 {
311 legacyCommaColumn = c;
312 }
313 if (stricmp(row[c].c_str(), (const char*)GLanguage) == 0)

Callers 1

LoadStringtableFunction · 0.45

Calls 15

CsvReadRowFunction · 0.85
CodepageForLanguageFunction · 0.85
DecodeLegacyTextToUtf8Function · 0.85
AddClass · 0.85
AutoOpenMethod · 0.80
sizeMethod · 0.80
HasUtf8CsvSuffixFunction · 0.70
LowerAsciiFunction · 0.70
stricmpFunction · 0.50
RStringClass · 0.50
eofMethod · 0.45

Tested by

no test coverage detected