void TestReadExternalReference(void)
{
	CXMLFile	cXMLFile;
	CChars		szDoc;
	int			iLine;
	char		szExpected[] = "<InputDevices>\n\
  This is text &lt; and doom stuff\n\
  <RootInSecond>\n\
    Hello\n\
  </RootInSecond>\n\
  Sweet &gt; 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;
}
Example #4
0
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;
}