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.
public String getTopic()
{
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()
{
}
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()
}
public GUID_RTPS getSenderGuid()
{
return this.info_buffer;
}
{
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);
/* NATIVE FUNCTIONS */
static native String get_string(long string_pointer);