in clicache/src/ReflectionBasedAutoSerializer.cpp [146:246]
void SerializeField(IPdxWriter^ w, Object^ value)
{
switch(m_fieldType)
{
case FieldType::BOOLEAN:
w->WriteBoolean(m_fieldName, (bool)value);
break;
case FieldType::BYTE:
w->WriteByte(m_fieldName, (SByte)value);
break;
case FieldType::CHAR:
w->WriteChar(m_fieldName, (Char)value);
break;
case FieldType::SHORT:
w->WriteShort(m_fieldName, (short)value);
break;
case FieldType::USHORT:
w->WriteShort(m_fieldName, (short)(UInt16)value);
break;
case FieldType::INT:
w->WriteInt(m_fieldName, (int)value);
break;
case FieldType::UINT:
w->WriteInt(m_fieldName, (int)(UInt32)value);
break;
case FieldType::LONG:
w->WriteLong(m_fieldName, (Int64)value);
break;
case FieldType::ULONG:
w->WriteLong(m_fieldName, (long)(UInt64)value);
break;
case FieldType::FLOAT:
w->WriteFloat(m_fieldName, (float)value);
break;
case FieldType::DOUBLE:
w->WriteDouble(m_fieldName, (double)value);
break;
case FieldType::DATE:
w->WriteDate(m_fieldName, (DateTime)value);
break;
case FieldType::STRING:
w->WriteString(m_fieldName, (String^)value);
break;
case FieldType::OBJECT:
w->WriteObject(m_fieldName, value);
break;
case FieldType::BOOLEAN_ARRAY:
w->WriteBooleanArray(m_fieldName, (array<bool>^)value);
break;
case FieldType::CHAR_ARRAY:
w->WriteCharArray(m_fieldName, (array<Char>^)value);
break;
case FieldType::BYTE_ARRAY:
w->WriteByteArray(m_fieldName, (array<Byte>^)value);
break;
case FieldType::SBYTE_ARRAY:
w->WriteByteArray(m_fieldName, (array<Byte>^)value);
break;
case FieldType::SHORT_ARRAY:
w->WriteShortArray(m_fieldName, (array<Int16>^)value);
break;
case FieldType::USHORT_ARRAY:
w->WriteShortArray(m_fieldName, (array<Int16>^)(array<UInt16>^)value);
break;
case FieldType::INT_ARRAY:
w->WriteIntArray(m_fieldName, (array<Int32>^)value);
break;
case FieldType::UINT_ARRAY:
w->WriteIntArray(m_fieldName, (array<Int32>^)(array<UInt32>^)value);
break;
case FieldType::LONG_ARRAY:
w->WriteLongArray(m_fieldName, (array<Int64>^)value);
break;
case FieldType::ULONG_ARRAY:
w->WriteLongArray(m_fieldName, (array<Int64>^)(array<UInt64>^)value);
break;
case FieldType::FLOAT_ARRAY:
w->WriteFloatArray(m_fieldName, (array<float>^)value);
break;
case FieldType::DOUBLE_ARRAY:
w->WriteDoubleArray(m_fieldName, (array<double>^)value);
break;
case FieldType::STRING_ARRAY:
w->WriteStringArray(m_fieldName, (array<String^>^)value);
break;
case FieldType::OBJECT_ARRAY:
w->WriteObjectArray(m_fieldName, safe_cast<System::Collections::Generic::List<Object^>^>(value));
break;
case FieldType::ARRAY_OF_BYTE_ARRAYS:
w->WriteArrayOfByteArrays(m_fieldName, (array<array<Byte>^>^)value);
break;
case FieldType::GUID:
w->WriteByteArray(m_fieldName, ((System::Guid)value).ToByteArray());
break;
case FieldType::DECIMAL:
w->WriteIntArray(m_fieldName, Decimal::GetBits((System::Decimal)value));
break;
default:
throw gcnew IllegalStateException("Not found FieldType: " + m_fieldType.ToString());
}
}