From 90f39d3d62b4e6227c169edd87d9f276a27f9cb0 Mon Sep 17 00:00:00 2001 From: Martin Vajnar Date: Sat, 2 May 2015 14:36:28 +0200 Subject: [PATCH] JORTE: move common stuff to getString() function Create getString() function, that first determines size of char pointer, then fetches the appropriate number of bytes from the helper buffer and stores them in an appropriate Java primitive data type. When the pointer is retrieved native get_string() function is passed the pointer and it returns Java String object encapsulating the requested C string. --- .../src/org/ocera/orte/types/RecvInfo.java | 65 +++++++------------ 1 file changed, 24 insertions(+), 41 deletions(-) diff --git a/orte/java/src/org/ocera/orte/types/RecvInfo.java b/orte/java/src/org/ocera/orte/types/RecvInfo.java index 0829b8b..6ddec53 100644 --- a/orte/java/src/org/ocera/orte/types/RecvInfo.java +++ b/orte/java/src/org/ocera/orte/types/RecvInfo.java @@ -93,50 +93,12 @@ public class RecvInfo public String getTopic() { - long topic_pointer; - - switch(helper_buffer.getInt(Integer.SIZE*2/8)) { - case 4: - topic_pointer = info_buffer.getInt(helper_buffer.getInt(Integer.SIZE*4/8)); - break; - case 8: - topic_pointer = info_buffer.getLong(helper_buffer.getInt(Integer.SIZE*4/8)); - break; - case 1: - topic_pointer = info_buffer.get(helper_buffer.getInt(Integer.SIZE*4/8)); - break; - case 2: - topic_pointer = info_buffer.getShort(helper_buffer.getInt(Integer.SIZE*4/8)); - break; - default: - return null; - } - - return get_string(topic_pointer); + return getString(Integer.SIZE*4/8); } public String getTypeName() { - long type_pointer; - - switch(helper_buffer.getInt(Integer.SIZE*2/8)) { - case 4: - type_pointer = info_buffer.getInt(helper_buffer.getInt(Integer.SIZE*5/8)); - break; - case 8: - type_pointer = info_buffer.getLong(helper_buffer.getInt(Integer.SIZE*5/8)); - break; - case 1: - type_pointer = info_buffer.get(helper_buffer.getInt(Integer.SIZE*5/8)); - break; - case 2: - type_pointer = info_buffer.getShort(helper_buffer.getInt(Integer.SIZE*5/8)); - break; - default: - return null; - } - - return get_string(type_pointer); + return getString(Integer.SIZE*5/8); } public GUID_RTPS getSenderGuid() @@ -190,7 +152,28 @@ public class RecvInfo { return this.info_buffer; } - + + private String getString(int offset) { + long string_pointer; + + switch(helper_buffer.getInt(Integer.SIZE*2/8)) { + case 4: + string_pointer = info_buffer.getInt(helper_buffer.getInt(offset)); + break; + case 8: + string_pointer = info_buffer.getLong(helper_buffer.getInt(offset)); + break; + case 1: + string_pointer = info_buffer.get(helper_buffer.getInt(offset)); + break; + case 2: + string_pointer = info_buffer.getShort(helper_buffer.getInt(offset)); + break; + } + + return get_string(string_pointer); + } + /* NATIVE FUNCTIONS */ static native String get_string(long string_pointer); -- 2.39.2