void CObjectOStreamXml::WriteEnum(const CEnumeratedTypeValues& values, TEnumValueType value, const string& valueName) { bool skipname = valueName.empty() || (m_WriteNamedIntegersByValue && values.IsInteger()); if ( !values.GetName().empty() ) { // global enum OpenTagStart(); m_Output.PutString(values.GetName()); if ( !skipname ) { m_Output.PutString(" value=\""); m_Output.PutString(valueName); m_Output.PutChar('\"'); } if ( values.IsInteger() ) { OpenTagEnd(); m_Output.PutInt4(value); CloseTagStart(); m_Output.PutString(values.GetName()); CloseTagEnd(); } else { _ASSERT(!valueName.empty()); SelfCloseTagEnd(); m_LastTagAction = eTagClose; } } else { // local enum (member, variant or element) if ( skipname ) { _ASSERT(values.IsInteger()); m_Output.PutInt4(value); } else { if (m_LastTagAction == eAttlistTag) { m_Output.PutString(valueName); } else { OpenTagEndBack(); m_Output.PutString(" value=\""); m_Output.PutString(valueName); m_Output.PutChar('"'); if ( values.IsInteger() ) { OpenTagEnd(); m_Output.PutInt4(value); } else { SelfCloseTagEnd(); } } } } }
void CObjectOStreamAsn::WriteEnum( const CEnumeratedTypeValues& values, TEnumValueType value, const string& valueName) { if (valueName.empty() || (m_WriteNamedIntegersByValue && values.IsInteger())) { m_Output.PutInt4(value); } else { m_Output.PutString(valueName); } }
void CObjectOStreamAsn::CopyEnum(const CEnumeratedTypeValues& values, CObjectIStream& in) { TEnumValueType value = in.ReadEnum(values); WriteEnum(values, value, values.FindName(value, values.IsInteger())); }
void CObjectOStreamAsn::WriteEnum(const CEnumeratedTypeValues& values, TEnumValueType value) { WriteEnum(values,value,values.FindName(value, values.IsInteger())); }