X-Git-Url: https://rtime.felk.cvut.cz/gitweb/orte.git/blobdiff_plain/9c65c6f11528c6428b1452a85c8290787874c5d2..afca0b463679956e5a25825ee97ae04ad190d180:/orte/libjorte/JORTERecvInfoHelpers.c diff --git a/orte/libjorte/JORTERecvInfoHelpers.c b/orte/libjorte/JORTERecvInfoHelpers.c index da68b48..fe377b7 100644 --- a/orte/libjorte/JORTERecvInfoHelpers.c +++ b/orte/libjorte/JORTERecvInfoHelpers.c @@ -2,6 +2,7 @@ #include #include #include +#include // library header file's path #include "orte_all.h" @@ -18,36 +19,51 @@ * Method: c_helper * Signature: (Ljava/nio/ByteBuffer;)V */ -JNIEXPORT void JNICALL Java_org_ocera_orte_types_RecvInfo_c_1helper - (JNIEnv *env, jclass cls, jobject b_buffer) { +JNIEXPORT void JNICALL +Java_org_ocera_orte_types_RecvInfo_c_1helper + (JNIEnv *env, jclass cls, jobject b_buffer) +{ - int32_t* buffer = (*env)->GetDirectBufferAddress(env, b_buffer); - - buffer[0] = (int32_t)sizeof(ORTERecvInfo); - buffer[1] = (int32_t)sizeof(ORTERecvStatus); - buffer[2] = (int32_t)sizeof(char*); - buffer[3] = (int32_t)offsetof(ORTERecvInfo,status); - buffer[4] = (int32_t)offsetof(ORTERecvInfo,topic); - buffer[5] = (int32_t)offsetof(ORTERecvInfo,type); - buffer[6] = (int32_t)offsetof(ORTERecvInfo,senderGUID); - buffer[7] = (int32_t)offsetof(ORTERecvInfo,localTimeReceived); - buffer[8] = (int32_t)offsetof(ORTERecvInfo,remoteTimePublished); - buffer[9] = (int32_t)offsetof(ORTERecvInfo,sn); - buffer[10] = (int32_t)offsetof(GUID_RTPS,hid); - buffer[11] = (int32_t)offsetof(GUID_RTPS,aid); - buffer[12] = (int32_t)offsetof(GUID_RTPS,oid); - buffer[13] = (int32_t)offsetof(NtpTime,seconds); - buffer[14] = (int32_t)offsetof(NtpTime,fraction); - buffer[15] = (int32_t)offsetof(SequenceNumber,high); - buffer[16] = (int32_t)offsetof(SequenceNumber,low); - } + _Static_assert(sizeof(char *) == 1 || \ + sizeof(char *) == 2 || \ + sizeof(char *) == 4 || \ + sizeof(char *) == 8, \ + "char* has incompatible size"); + _Static_assert(sizeof(ORTERecvStatus) == 1 || \ + sizeof(ORTERecvStatus) == 2 || \ + sizeof(ORTERecvStatus) == 4 || \ + sizeof(ORTERecvStatus) == 8, \ + "ORTERecvStatus has incompatible size"); + + int32_t *buffer = (*env)->GetDirectBufferAddress(env, b_buffer); + + buffer[0] = (int32_t)sizeof(ORTERecvInfo); + buffer[1] = (int32_t)sizeof(ORTERecvStatus); + buffer[2] = (int32_t)sizeof(char *); + buffer[3] = (int32_t)offsetof(ORTERecvInfo, status); + buffer[4] = (int32_t)offsetof(ORTERecvInfo, topic); + buffer[5] = (int32_t)offsetof(ORTERecvInfo, type); + buffer[6] = (int32_t)offsetof(ORTERecvInfo, senderGUID); + buffer[7] = (int32_t)offsetof(ORTERecvInfo, localTimeReceived); + buffer[8] = (int32_t)offsetof(ORTERecvInfo, remoteTimePublished); + buffer[9] = (int32_t)offsetof(ORTERecvInfo, sn); + buffer[10] = (int32_t)offsetof(GUID_RTPS, hid); + buffer[11] = (int32_t)offsetof(GUID_RTPS, aid); + buffer[12] = (int32_t)offsetof(GUID_RTPS, oid); + buffer[13] = (int32_t)offsetof(NtpTime, seconds); + buffer[14] = (int32_t)offsetof(NtpTime, fraction); + buffer[15] = (int32_t)offsetof(SequenceNumber, high); + buffer[16] = (int32_t)offsetof(SequenceNumber, low); +} /* * Class: org_ocera_orte_types_RecvInfo * Method: get_string * Signature: (J)Ljava/lang/String; */ -JNIEXPORT jstring JNICALL Java_org_ocera_orte_types_RecvInfo_get_1string - (JNIEnv *env, jclass cls, jlong string_ptr) { - return (*env)->NewStringUTF(env, (char*) string_ptr); - } +JNIEXPORT jstring JNICALL +Java_org_ocera_orte_types_RecvInfo_get_1string + (JNIEnv *env, jclass cls, jlong string_ptr) +{ + return (*env)->NewStringUTF(env, (char *)string_ptr); +}