// // 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"; } }