////////////////////////////////////////////////////////////////////////// // // // // ////////////////////////////////////////////////////////////////////////// CMemoryFile* MemoryFile(void* pvInitialMem, int iInitialLength) { CMemoryFile* pcMemoryFile; pcMemoryFile = NewMalloc<CMemoryFile>(); pcMemoryFile->Init(pvInitialMem, iInitialLength); pcMemoryFile->mbBasicFileMustFree = TRUE; return pcMemoryFile; }
////////////////////////////////////////////////////////////////////////// // // // // ////////////////////////////////////////////////////////////////////////// CMemoryFile* MemoryFile(void) { CMemoryFile* pcMemoryFile; pcMemoryFile = NewMalloc<CMemoryFile>(); pcMemoryFile->Init(); pcMemoryFile->mbBasicFileMustFree = TRUE; return pcMemoryFile; }
BOOL CTileMapXML::ImportTiles(CMarkupTag* pcTag, CTileLayer* pcLayer) { CChars szCSV; CCSVFileImmutable cCSVFile; CMemoryFile cMemoryFile; int iRow; SCSVRowImmutable* psRow; int i; char* szCelIndex; CTextParser cTextParser; TRISTATE tResult; int iCelIndex; CChars szError; CTile* pcTile; szCSV.Init(128); pcTag->GetText(&szCSV); if (szCSV.Empty()) { szCSV.Kill(); CMarkupTextParser::LogErrorTagWasEmpty(pcTag); return FALSE; } szCSV.StripWhiteSpace(TRUE); //szCSV.Replace(" ", ""); //Write a test for this, why does it not work? cMemoryFile.Init(szCSV.Text(), szCSV.Length()); cCSVFile.Init(','); cCSVFile.Open(&cMemoryFile); cCSVFile.ReadAllLines(); for (iRow = 0; iRow < cCSVFile.NumRows(); iRow++) { psRow = cCSVFile.Get(iRow); for (i = 0; i < psRow->iNumFields; i++) { szCelIndex = psRow->Get(i); cTextParser.Init(szCelIndex); tResult = cTextParser.GetInteger(&iCelIndex); if (tResult != TRITRUE) { szError.Init("CSV cell ["); szError.Append(i); szError.Append(", "); szError.Append(iRow); szError.Append("] could not be parsed as an integer."); CMarkupTextParser::LogError(pcTag, szError.Text()); szError.Kill(); cCSVFile.Close(); cMemoryFile.Kill(); szCSV.Kill(); return FALSE; } pcTile = pcLayer->mpcTileType->Get(iCelIndex); if (pcTile) { pcLayer->Set(i, iRow, pcTile); } } } cCSVFile.Close(); cMemoryFile.Kill(); szCSV.Kill(); return TRUE; }