From 017e42fbc74582d37bb4924496a8ef69f5b06a67 Mon Sep 17 00:00:00 2001
From: Damon Kohler <damonkohler@google.com>
Date: Wed, 25 Jul 2012 14:39:25 +0200
Subject: [PATCH] Changes xxxArrayField to stop relying on FieldTypes for
 deserialization. This avoids unnecessary auto(un)boxing which hurts
 performance.

---
 .../java/org/ros/internal/message/field/BooleanArrayField.java  | 2 +-
 .../java/org/ros/internal/message/field/ByteArrayField.java     | 2 +-
 .../java/org/ros/internal/message/field/DoubleArrayField.java   | 2 +-
 .../java/org/ros/internal/message/field/FloatArrayField.java    | 2 +-
 .../java/org/ros/internal/message/field/IntegerArrayField.java  | 2 +-
 .../java/org/ros/internal/message/field/LongArrayField.java     | 2 +-
 .../java/org/ros/internal/message/field/ShortArrayField.java    | 2 +-
 7 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/rosjava_bootstrap/src/main/java/org/ros/internal/message/field/BooleanArrayField.java b/rosjava_bootstrap/src/main/java/org/ros/internal/message/field/BooleanArrayField.java
index f0017f6d..75a9fe17 100644
--- a/rosjava_bootstrap/src/main/java/org/ros/internal/message/field/BooleanArrayField.java
+++ b/rosjava_bootstrap/src/main/java/org/ros/internal/message/field/BooleanArrayField.java
@@ -71,7 +71,7 @@ public class BooleanArrayField extends Field {
     }
     value = new boolean[currentSize];
     for (int i = 0; i < currentSize; i++) {
-      value[i] = (Boolean) type.deserialize(buffer);
+      value[i] = buffer.readByte() == 1;
     }
   }
 
diff --git a/rosjava_bootstrap/src/main/java/org/ros/internal/message/field/ByteArrayField.java b/rosjava_bootstrap/src/main/java/org/ros/internal/message/field/ByteArrayField.java
index 7f5a543b..02e08bfb 100644
--- a/rosjava_bootstrap/src/main/java/org/ros/internal/message/field/ByteArrayField.java
+++ b/rosjava_bootstrap/src/main/java/org/ros/internal/message/field/ByteArrayField.java
@@ -71,7 +71,7 @@ public class ByteArrayField extends Field {
     }
     value = new byte[currentSize];
     for (int i = 0; i < currentSize; i++) {
-      value[i] = (Byte) type.deserialize(buffer);
+      value[i] = buffer.readByte();
     }
   }
 
diff --git a/rosjava_bootstrap/src/main/java/org/ros/internal/message/field/DoubleArrayField.java b/rosjava_bootstrap/src/main/java/org/ros/internal/message/field/DoubleArrayField.java
index 8b4ad794..a0c3945f 100644
--- a/rosjava_bootstrap/src/main/java/org/ros/internal/message/field/DoubleArrayField.java
+++ b/rosjava_bootstrap/src/main/java/org/ros/internal/message/field/DoubleArrayField.java
@@ -71,7 +71,7 @@ public class DoubleArrayField extends Field {
     }
     value = new double[currentSize];
     for (int i = 0; i < currentSize; i++) {
-      value[i] = (Double) type.deserialize(buffer);
+      value[i] = buffer.readDouble();
     }
   }
 
diff --git a/rosjava_bootstrap/src/main/java/org/ros/internal/message/field/FloatArrayField.java b/rosjava_bootstrap/src/main/java/org/ros/internal/message/field/FloatArrayField.java
index 23786e7a..fcbf50c2 100644
--- a/rosjava_bootstrap/src/main/java/org/ros/internal/message/field/FloatArrayField.java
+++ b/rosjava_bootstrap/src/main/java/org/ros/internal/message/field/FloatArrayField.java
@@ -71,7 +71,7 @@ public class FloatArrayField extends Field {
     }
     value = new float[currentSize];
     for (int i = 0; i < currentSize; i++) {
-      value[i] = (Float) type.deserialize(buffer);
+      value[i] = buffer.readFloat();
     }
   }
 
diff --git a/rosjava_bootstrap/src/main/java/org/ros/internal/message/field/IntegerArrayField.java b/rosjava_bootstrap/src/main/java/org/ros/internal/message/field/IntegerArrayField.java
index d40982d2..adb0753f 100644
--- a/rosjava_bootstrap/src/main/java/org/ros/internal/message/field/IntegerArrayField.java
+++ b/rosjava_bootstrap/src/main/java/org/ros/internal/message/field/IntegerArrayField.java
@@ -71,7 +71,7 @@ public class IntegerArrayField extends Field {
     }
     value = new int[currentSize];
     for (int i = 0; i < currentSize; i++) {
-      value[i] = (Integer) type.deserialize(buffer);
+      value[i] = buffer.readInt();
     }
   }
 
diff --git a/rosjava_bootstrap/src/main/java/org/ros/internal/message/field/LongArrayField.java b/rosjava_bootstrap/src/main/java/org/ros/internal/message/field/LongArrayField.java
index 8f44677f..8c2a611b 100644
--- a/rosjava_bootstrap/src/main/java/org/ros/internal/message/field/LongArrayField.java
+++ b/rosjava_bootstrap/src/main/java/org/ros/internal/message/field/LongArrayField.java
@@ -73,7 +73,7 @@ public class LongArrayField extends Field {
     }
     value = new long[currentSize];
     for (int i = 0; i < currentSize; i++) {
-      value[i] = (Long) type.deserialize(buffer);
+      value[i] = buffer.readLong();
     }
   }
 
diff --git a/rosjava_bootstrap/src/main/java/org/ros/internal/message/field/ShortArrayField.java b/rosjava_bootstrap/src/main/java/org/ros/internal/message/field/ShortArrayField.java
index 02dafafe..e77b72a3 100644
--- a/rosjava_bootstrap/src/main/java/org/ros/internal/message/field/ShortArrayField.java
+++ b/rosjava_bootstrap/src/main/java/org/ros/internal/message/field/ShortArrayField.java
@@ -71,7 +71,7 @@ public class ShortArrayField extends Field {
     }
     value = new short[currentSize];
     for (int i = 0; i < currentSize; i++) {
-      value[i] = (Short) type.deserialize(buffer);
+      value[i] = buffer.readShort();
     }
   }
 
-- 
GitLab