From d5da179aaca5340d2d6872a0e9c6055cfb0652d3 Mon Sep 17 00:00:00 2001 From: Mick Jordan <mick.jordan@oracle.com> Date: Mon, 18 Aug 2014 10:22:27 -0700 Subject: [PATCH] String -> RAbstractStringVector fix --- .../r/nodes/builtin/base/GrepFunctions.java | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/GrepFunctions.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/GrepFunctions.java index 2c4962bbb5..5f6799aa6d 100644 --- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/GrepFunctions.java +++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/GrepFunctions.java @@ -267,10 +267,10 @@ public class GrepFunctions { } @Specialization - public Object regexp(String patternArg, RAbstractStringVector vector, byte ignoreCase, byte perl, byte fixed, byte useBytes) { + public Object regexp(RAbstractStringVector patternArg, RAbstractStringVector vector, byte ignoreCase, byte perl, byte fixed, byte useBytes) { controlVisibility(); checkExtraArgs(ignoreCase, perl, fixed, useBytes, RRuntime.LOGICAL_FALSE); - String pattern = RegExp.checkPreDefinedClasses(patternArg); + String pattern = RegExp.checkPreDefinedClasses(patternArg.getDataAt(0)); int[] result = new int[vector.getLength()]; for (int i = 0; i < vector.getLength(); i++) { result[i] = findIndex(pattern, vector.getDataAt(i)).get(0); @@ -310,10 +310,10 @@ public class GrepFunctions { @Specialization @Override - public Object regexp(String patternArg, RAbstractStringVector vector, byte ignoreCase, byte perl, byte fixed, byte useBytes) { + public Object regexp(RAbstractStringVector patternArg, RAbstractStringVector vector, byte ignoreCase, byte perl, byte fixed, byte useBytes) { controlVisibility(); checkExtraArgs(ignoreCase, perl, fixed, useBytes, RRuntime.LOGICAL_FALSE); - String pattern = RegExp.checkPreDefinedClasses(patternArg); + String pattern = RegExp.checkPreDefinedClasses(patternArg.getDataAt(0)); Object[] result = new Object[vector.getLength()]; for (int i = 0; i < vector.getLength(); i++) { int[] data = toIntArray(findIndex(pattern, vector.getDataAt(i))); @@ -345,7 +345,7 @@ public class GrepFunctions { @SuppressWarnings("unused") @Specialization - public Object aGrep(String patternArg, RAbstractStringVector vector, byte ignoreCase, byte value, RIntVector costs, RDoubleVector bounds, byte useBytes, byte fixed) { + public Object aGrep(RAbstractStringVector patternArg, RAbstractStringVector vector, byte ignoreCase, byte value, RIntVector costs, RDoubleVector bounds, byte useBytes, byte fixed) { // TODO implement properly, this only supports strict equality! controlVisibility(); checkExtraArgs(ignoreCase, RRuntime.LOGICAL_FALSE, RRuntime.LOGICAL_FALSE, useBytes, RRuntime.LOGICAL_FALSE); @@ -355,8 +355,9 @@ public class GrepFunctions { } int[] tmp = new int[vector.getLength()]; int numMatches = 0; + String pattern = patternArg.getDataAt(0); for (int i = 0; i < vector.getLength(); i++) { - if (patternArg.equals(vector.getDataAt(i))) { + if (pattern.equals(vector.getDataAt(i))) { tmp[i] = i + 1; numMatches++; } @@ -383,13 +384,14 @@ public class GrepFunctions { @SuppressWarnings("unused") @Specialization - public Object aGrep(String patternArg, RAbstractStringVector vector, byte ignoreCase, RIntVector costs, RDoubleVector bounds, byte useBytes, byte fixed) { + public Object aGrep(RAbstractStringVector patternArg, RAbstractStringVector vector, byte ignoreCase, RIntVector costs, RDoubleVector bounds, byte useBytes, byte fixed) { // TODO implement properly, this only supports strict equality! controlVisibility(); checkExtraArgs(ignoreCase, RRuntime.LOGICAL_FALSE, RRuntime.LOGICAL_FALSE, useBytes, RRuntime.LOGICAL_FALSE); byte[] data = new byte[vector.getLength()]; + String pattern = patternArg.getDataAt(0); for (int i = 0; i < vector.getLength(); i++) { - data[i] = RRuntime.asLogical(patternArg.equals(vector.getDataAt(i))); + data[i] = RRuntime.asLogical(pattern.equals(vector.getDataAt(i))); } return RDataFactory.createLogicalVector(data, RDataFactory.COMPLETE_VECTOR); } -- GitLab