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) | Java.util.date | 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.