void TestReadExternalReference(void) { CXMLFile cXMLFile; CChars szDoc; int iLine; char szExpected[] = "<InputDevices>\n\ This is text < and doom stuff\n\ <RootInSecond>\n\ Hello\n\ </RootInSecond>\n\ Sweet > other stuff\n\ <ThirdsRoot>\n\ World\n\ </ThirdsRoot>\n\ </InputDevices>\n"; CMarkupTag* pcTag; CMarkupTag* pcSecondTag; CMarkupTag* pcThirdTag; CChars szText; cXMLFile.Init(); cXMLFile.Read("First.xml", "."); szDoc.Init(16); iLine = cXMLFile.mcMarkup.mpcDoc->ToString(&szDoc); AssertInt(10, iLine); AssertString(szExpected, szDoc.Text()); szDoc.Kill(); pcTag = cXMLFile.mcMarkup.mpcDoc->GetRootTag(); pcSecondTag = pcTag->GetTag("RootInSecond"); AssertNotNull(pcSecondTag); szText.Init(); pcSecondTag->GetText(&szText); szText.StripWhiteSpace(TRUE); AssertString("Hello", szText.Text()); szText.Kill(); pcTag = cXMLFile.mcMarkup.mpcDoc->GetRootTag(); pcThirdTag = pcTag->GetTag("ThirdsRoot"); AssertNotNull(pcThirdTag); szText.Init(); pcThirdTag->GetText(&szText); szText.StripWhiteSpace(TRUE); AssertString("World", szText.Text()); szText.Kill(); cXMLFile.Kill(); }
void CTranslationUnitFileArray::AddAllFiles(BOOL bLogInlucdes, BOOL bLogBlocks) { CChars szTemp; CArrayString aszTemp; int i; CChars* pszFile; int iIndex; int j; CChars* szFile; char* szExtension; int iBaseDirLen; CFileUtil cFileUtil; CArrayString aszFileNames; szTemp.Init("*.c;*.cpp"); aszTemp.Init(16); szTemp.Split(&aszTemp, ';'); iBaseDirLen = mpcLibrary->mszBaseDir.Length(); for (i = 0; i < aszTemp.NumElements(); i++) { pszFile = aszTemp.Get(i); pszFile->StripWhiteSpace(); iIndex = pszFile->Find(0, "."); szExtension = pszFile->Text(iIndex+1); aszFileNames.Init(32); cFileUtil.FindFilesWithExtension(mpcLibrary->mszBaseDir.Text(), szExtension, &aszFileNames); for (j = 0; j < aszFileNames.NumElements(); j++) { szFile = aszFileNames.Get(j); AddFile(szFile->Text(iBaseDirLen+1), bLogInlucdes, bLogBlocks); } aszFileNames.Kill(); } szTemp.Kill(); aszTemp.Kill(); }
int CCSVHelper::GetColumnIndex(char* szName) { SCSVRowImmutable* pcRow; int i; char* szHeader; CChars sz; pcRow = mcFile.Get(0); for (i = 0; i < pcRow->iNumFields; i++) { szHeader = pcRow->Get(i); sz.Init(szHeader); sz.StripWhiteSpace(); if (sz.EqualsIgnoreCase(szName)) { sz.Kill(); return i; } sz.Kill(); } return -1; }
void CConfig::AddDefines(char* szDefines) { CChars szTemp; CArrayString aszTemp; int i; CChars* pszDefine; szTemp.Init(szDefines); aszTemp.Init(16); szTemp.Split(&aszTemp, ';'); for (i = 0; i < aszTemp.NumElements(); i++) { pszDefine = aszTemp.Get(i); pszDefine->StripWhiteSpace(); AddDefine(pszDefine->Text()); } szTemp.Kill(); aszTemp.Kill(); }
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; }