Beispiel #1
0
//
// Dump to string
//
void DumpData(UINT_32 iLevel, const CDT & oData, std::string &sResult)
{
	CHAR_8 szBuf[512 + 1];

	++iLevel;
	switch (oData.GetType())
	{
		case CDT::UNDEF:
		case CDT::INT_VAL:
		case CDT::REAL_VAL:
		case CDT::STRING_VAL:
		case CDT::POINTER_VAL:
			sResult += "\"" + oData.GetString() + "\"\n";
			break;

		case CDT::ARRAY_VAL:
			{
				sResult += "\n";
				for (UINT_32 iI = 0; iI < oData.Size(); ++iI)
				{
					for (UINT_32 iJ = 0; iJ < iLevel; iJ++) { sResult += "      "; }
					snprintf(szBuf, 512, "%u", iI);
					sResult += szBuf;
					sResult += " : ";
					DumpData(iLevel, oData.GetCDT(iI), sResult);
				}
			}
			break;

		case CDT::HASH_VAL:
			{
				sResult += "\n";
				CDT::ConstIterator itHash = oData.Begin();
				while (itHash != oData.End())
				{
					for (UINT_32 iJ = 0; iJ < iLevel; iJ++) { sResult += "      "; }
					sResult += itHash -> first;
					sResult += " => ";
					DumpData(iLevel, itHash -> second, sResult);
					++itHash;
				}
			}
			break;

		default:
			sResult += "Invalid type";
	}
}