Interoperability of C++ Types When Using PDX Serialization

This topic table lists the mapping between C++ types and other language types when using PDX serialization.

In addition, the table lists which PdxReader and PdxWriter C++ APIs to use when serializing and deserializing the types.

C++ Type .NET Type Java Type PdxReader/PdxWriter API
CacheableHashTable System::Collections::Hashtable java.util.Hashtable readObject/writeObject
CacheableHashMap System::Collections ::Generic::IDictionary<Object, Object> java.util.HashMap readObject/writeObject
CacheableVector System::Collections::ArrayList java.util.Vector readObject/writeObject
CacheableArrayList System::Collections:: Generic::IList<Object> java.util.ArrayList readObject/writeObject
bool bool boolean readBoolean/writeBoolean
int8_t sbyte Byte readByte/writeByte
wchar_t/char1 Char Char readChar/writeChar
wchar_t*/char*1 string string readString/writeString
double Double double readDouble/writeDouble
float float float readFloat/writeFloat
int16_t short short readShort/writeShort
int32_t Int32/int int readInt/writeInt
int64_t Int64/long long readLong/writeLong
int8_t* System.Byte[ ]/System.SByte[ ] Byte[ ]2 readByteArray/writeByteArray
double* System.Double[ ] Double[ ] readDoubleArray/writeDoubleArray
float* System.float[ ] Float[ ] readFloatArray/writeFloatArray
CacheableHashSet CacheableHashSet java.util.HashSet readObject/writeObject
CacheableLinkedHashSet CacheableLinkedHashSet java.util.LinkedHashSet readObject/writeObject
int16_t* System.Int16[ ] Short[ ] readShortArray/writeShortArray
int32_t* System.Int32[ ] Int[ ] readIntArray/writeIntArray
int64_t* System.Int64[ ] Long[ ] readLongArray/writeLongArray
bool* System.Boolean[ ] Boolean[ ] readBooleanArray/writeBooleanArray
wchar_t*/char*1 System.Char[ ] char[ ] readCharArray/writeCharArray
enum3 enum Enum readObject/writeObject
int8_t** byte[ ][ ]/Sbyte[ ][ ] Byte[ ][ ] readArrayOfByteArrays/writeArrayOfByteArrays
wchar_t**/char**1 System.String[ ] String[ ] readStringArray/writeStringArray
CacheableDate System.DateTime (UTC) readDate/writeDate
CacheableObjectArray object[ ]/System.Object[ ] Object[ ] readObjectArray/writeObjectArray
Cacheable/Serializable object/System.Object Object readObject/writeObject

1C++ allows unicode and non-unicode characters, so C++ PDX will support both wchar_t/char and wchar_t*/char*.

2 For Pdx, only SByte is used, as Java Byte is signed. But for DataSerializable, Byte[ ] array is used as a data container.

3C++ allows explicit setting of ordinal numbers, but it is up to the developer to map the Java enumNames with C++ enumNames. See Using C++ Enum Type with PDX Serialization.