const thomsonreuters::ema::access::EmaString&  DataDictionaryImpl::toString() const
{	  
	if (!_pRsslDataDictionary->isInitialized)
	{
		_stringToString.clear().append("DataDictionary is not initialized");
		return _stringToString;
	}

	_stringToString.set(0, 2000000);

	_stringToString.append("Data Dictionary Dump: MinFid=").append(getMinFid()).append(" MaxFid=").append(getMaxFid()).
		append(" NumEntries ").append(_pRsslDataDictionary->numberOfEntries).append("\n\n");

	_stringToString.append("Tags:\n  DictionaryId=\"").append(getInfoDictionaryId()).append("\"\n\n");

	_stringToString.append("  [Field Dictionary Tags]\n").
		append("      Filename=\"").append(getFieldFilename()).append("\"\n").
		append("          Desc=\"").append(getFieldDescription()).append("\"\n").
		append("       Version=\"").append(getFieldVersion()).append("\"\n").
		append("         Build=\"").append(getFieldBuild()).append("\"\n").
		append("          Date=\"").append(getFieldDate()).append("\"\n\n");

	_stringToString.append("  [Enum Type Dictionary Tags]\n").
		append("      Filename=\"").append(getEnumFilename()).append("\"\n").
		append("          Desc=\"").append(getEnumDescription()).append("\"\n").
		append("    RT_Version=\"").append(getEnumRecordTemplateVersion()).append("\"\n").
		append("    DT_Version=\"").append(getEnumDisplayTemplateVersion()).append("\"\n").
		append("          Date=\"").append(getEnumDate()).append("\"\n\n");

	_stringToString.append("Field Dictionary:\n");

	RsslDictionaryEntry* rsslDictionaryEntry = 0;
	DictionaryEntry	dictionaryEntry;

	for (Int32 index = 0; index <= _pRsslDataDictionary->maxFid; index++)
	{
		rsslDictionaryEntry = *(_pRsslDataDictionary->entriesArray + index);

		if (rsslDictionaryEntry)
		{
			dictionaryEntry._pImpl->rsslDictionaryEntry(rsslDictionaryEntry);
			_stringToString.append("  Fid=").append(dictionaryEntry.getFid()).append(" '").append(dictionaryEntry.getAcronym()).
				append("' '").append(dictionaryEntry.getDDEAcronym()).
				append("' Type=").append(dictionaryEntry.getFieldType()).
				append(" RippleTo=").append(dictionaryEntry.getRippleToField()).append(" Len=").append(dictionaryEntry.getLength()).
				append(" EnumLen=").append(dictionaryEntry.getEnumLength()).
				append(" RwfType=").append(dictionaryEntry.getRwfType()).append(" RwfLen=").append(dictionaryEntry.getRwfLength()).append("\n");
		}
	}

	_stringToString.append("\nEnum Type Tables:\n");

	RsslEnumTypeTable* rsslEnumTypeTable = 0;
	EnumTypeTable enumTypeTable;

	for (UInt16 index = 0; index <= _pRsslDataDictionary->enumTableCount; index++)
	{
		rsslEnumTypeTable = *(_pRsslDataDictionary->enumTables + index);

		if ( rsslEnumTypeTable )
		{
			enumTypeTable._pImpl->rsslEnumTypeTable( rsslEnumTypeTable );

			_stringToString.append(enumTypeTable.toString());

			_stringToString.append("\n");
		}
	}

	return _stringToString;
}