summaryrefslogtreecommitdiffstats
path: root/searchlib/src/main/java/com/yahoo/searchlib/expression/FloatResultNodeVector.java
diff options
context:
space:
mode:
Diffstat (limited to 'searchlib/src/main/java/com/yahoo/searchlib/expression/FloatResultNodeVector.java')
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/expression/FloatResultNodeVector.java80
1 files changed, 80 insertions, 0 deletions
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/expression/FloatResultNodeVector.java b/searchlib/src/main/java/com/yahoo/searchlib/expression/FloatResultNodeVector.java
new file mode 100644
index 00000000000..ae57aeb6a7f
--- /dev/null
+++ b/searchlib/src/main/java/com/yahoo/searchlib/expression/FloatResultNodeVector.java
@@ -0,0 +1,80 @@
+// Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+package com.yahoo.searchlib.expression;
+
+import com.yahoo.vespa.objects.Deserializer;
+import com.yahoo.vespa.objects.Serializer;
+
+import java.util.ArrayList;
+
+/**
+ * This result holds nothing.
+ *
+ * @author <a href="mailto:balder@yahoo-inc.com">Henning Baldersheim</a>
+ * @author <a href="mailto:simon@yahoo-inc.com">Simon Thoresen</a>
+ */
+public class FloatResultNodeVector extends ResultNodeVector {
+
+ // The global class identifier shared with C++.
+ public static final int classId = registerClass(0x4000 + 110, FloatResultNodeVector.class);
+ private ArrayList<FloatResultNode> vector = new ArrayList<FloatResultNode>();
+
+ @Override
+ protected int onGetClassId() {
+ return classId;
+ }
+
+ public FloatResultNodeVector() {
+ }
+
+ public FloatResultNodeVector add(FloatResultNode v) {
+ vector.add(v);
+ return this;
+ }
+
+ public ResultNodeVector add(ResultNode r) {
+ return add((FloatResultNode)r);
+ }
+
+ public ArrayList<FloatResultNode> getVector() {
+ return vector;
+ }
+
+ @Override
+ protected void onSerialize(Serializer buf) {
+ super.onSerialize(buf);
+ buf.putInt(null, vector.size());
+ for (FloatResultNode node : vector) {
+ node.serialize(buf);
+ }
+ }
+
+ @Override
+ protected void onDeserialize(Deserializer buf) {
+ super.onDeserialize(buf);
+ int sz = buf.getInt(null);
+ vector = new ArrayList<FloatResultNode>();
+ for (int i = 0; i < sz; i++) {
+ FloatResultNode node = new FloatResultNode(0);
+ node.deserialize(buf);
+ vector.add(node);
+ }
+ }
+
+ @Override
+ protected int onCmp(ResultNode rhs) {
+ if (classId != rhs.getClassId()) {
+ return (classId - rhs.getClassId());
+ }
+ FloatResultNodeVector b = (FloatResultNodeVector)rhs;
+ int minLength = vector.size();
+ if (b.vector.size() < minLength) {
+ minLength = b.vector.size();
+ }
+ int diff = 0;
+ for (int i = 0; (diff == 0) && (i < minLength); i++) {
+ diff = vector.get(i).compareTo(b.vector.get(i));
+ }
+ return (diff == 0) ? (vector.size() - b.vector.size()) : diff;
+ }
+
+}