Interoperability of C++ Types When Using PDX Serialization
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.DateTime4 | 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 Using Pdx we use sByte only as java byte is signed. But for DataSerializable we have kept Byte[] array only as this is use as data container.
3C++ allows explicit setting of ordinal number, but it is up to the user to map java enumName with that of C++ enumName. See Using C++ Enum Type with PDX Serialization.
4Now we put UTC time from .NET .