protected JavaArray asJavaObject(final Object array) { return new JavaArray(getRuntime(), array); }
public static RubyClass createJavaArrayClass(final Ruby runtime, final RubyModule Java) { return createJavaArrayClass(runtime, Java, Java.getClass("JavaObject")); }
public void fillWithExceptionHandling(int intIndex, int intEndIndex, Object javaObject) { try { for ( ; intIndex < intEndIndex; intIndex++) { Array.set(getValue(), intIndex, javaObject); } } catch (IndexOutOfBoundsException e) { throw getRuntime().newArgumentError( "index out of bounds for java array (" + intIndex + " for length " + getLength() + ")"); } catch (ArrayStoreException e) { throw getRuntime().newArgumentError( "wrong element type " + javaObject.getClass() + "(array is " + getValue().getClass() + ")"); } } }
public final void fillWithExceptionHandling(int start, int end, Object javaValue) { final Ruby runtime = getRuntime(); final Object array = getValue(); for (int i = start; i < end; i++) { ArrayUtils.setWithExceptionHandlingDirect(runtime, array, i, javaValue); } } }
public RubyFixnum length() { return getRuntime().newFixnum(getLength()); }
public static void copyDataToJavaArray( ThreadContext context, RubyArray rubyArray, int src, JavaArray javaArray, int dest, int length) { Class targetType = javaArray.getComponentType(); int destLength = (int)javaArray.length().getLongValue(); int srcLength = rubyArray.getLength(); for (int i = 0; src + i < srcLength && dest + i < destLength && i < length; i++) { javaArray.setWithExceptionHandling(dest + i, rubyArray.entry(src + i).toJava(targetType)); } } }
@JRubyMethod(name = "copy_data") public static IRubyObject copy_data(final ThreadContext context, final IRubyObject fromRuby, final IRubyObject toJava, final IRubyObject fillValue) { JavaArray javaArray = (JavaArray) toJava.dataGetStruct(); final int javaLength = javaArray.getLength(); final Class<?> targetType = javaArray.getComponentType(); Object fillJavaObject = null; if ( ! fillValue.isNil() ) fillJavaObject = fillValue.toJava(targetType); RubyArray rubyArray = null; if (fromRuby instanceof RubyArray) { rubyArray = (RubyArray) fromRuby; } else { fillJavaObject = fromRuby.toJava(targetType); } int i = 0; if ( rubyArray != null ) { final int rubyLength = rubyArray.getLength(); for (; i < rubyLength && i < javaLength; i++) { javaArray.setWithExceptionHandling(i, rubyArray.eltInternal(i).toJava(targetType)); } } if ( i < javaLength && fillJavaObject != null ) { javaArray.fillWithExceptionHandling(i, javaLength, fillJavaObject); } return toJava; }
JavaArray javaArrayJavaObj = (JavaArray)javaArray.dataGetStruct(); Object fillJavaObject = null; int javaLength = (int)javaArrayJavaObj.length().getLongValue(); Class targetType = javaArrayJavaObj.getComponentType(); javaArrayJavaObj.setWithExceptionHandling(i, array.entry(i).toJava(targetType)); javaArrayJavaObj.fillWithExceptionHandling(i, javaLength, fillJavaObject);
private static void copyDataToJavaArray( final RubyArray rubyArray, final JavaArray javaArray, int offset) { int length = javaArray.getLength(); if ( length > rubyArray.getLength() ) length = rubyArray.getLength(); final Class<?> targetType = javaArray.getComponentType(); for ( int i = offset; i < length; i++ ) { javaArray.setWithExceptionHandling(i, rubyArray.eltInternal(i).toJava(targetType)); } }
public IRubyObject afill(IRubyObject beginIndex, IRubyObject endIndex, IRubyObject value) { if (! (beginIndex instanceof RubyInteger)) { throw getRuntime().newTypeError(beginIndex, getRuntime().getInteger()); } int intIndex = (int) ((RubyInteger) beginIndex).getLongValue(); if (! (endIndex instanceof RubyInteger)) { throw getRuntime().newTypeError(endIndex, getRuntime().getInteger()); } int intEndIndex = (int) ((RubyInteger) endIndex).getLongValue(); if (! (value instanceof JavaObject)) { throw getRuntime().newTypeError("not a java object:" + value); } Object javaValue = ((JavaObject) value).getValue(); fillWithExceptionHandling(intIndex, intEndIndex, javaValue); return value; }
public IRubyObject aset(IRubyObject index, IRubyObject value) { if (! (index instanceof RubyInteger)) { throw getRuntime().newTypeError(index, getRuntime().getInteger()); } int intIndex = (int) ((RubyInteger) index).getLongValue(); if (! (value instanceof JavaObject)) { throw getRuntime().newTypeError("not a java object:" + value); } Object javaObject = ((JavaObject) value).getValue(); ArrayUtils.setWithExceptionHandlingDirect(getRuntime(), javaObject, intIndex, javaObject); return value; }
public static void copyDataToJavaArray( ThreadContext context, RubyArray rubyArray, int src, JavaArray javaArray, int dest, int length) { Class targetType = javaArray.getComponentType(); int destLength = (int)javaArray.length().getLongValue(); int srcLength = rubyArray.getLength(); for (int i = 0; src + i < srcLength && dest + i < destLength && i < length; i++) { javaArray.setWithExceptionHandling(dest + i, rubyArray.entry(src + i).toJava(targetType)); } } }
@JRubyMethod(name = "copy_data") public static IRubyObject copy_data(final ThreadContext context, final IRubyObject fromRuby, final IRubyObject toJava, final IRubyObject fillValue) { JavaArray javaArray = (JavaArray) toJava.dataGetStruct(); final int javaLength = javaArray.getLength(); final Class<?> targetType = javaArray.getComponentType(); Object fillJavaObject = null; if ( ! fillValue.isNil() ) fillJavaObject = fillValue.toJava(targetType); RubyArray rubyArray = null; if (fromRuby instanceof RubyArray) { rubyArray = (RubyArray) fromRuby; } else { fillJavaObject = fromRuby.toJava(targetType); } int i = 0; if ( rubyArray != null ) { final int rubyLength = rubyArray.getLength(); for (; i < rubyLength && i < javaLength; i++) { javaArray.setWithExceptionHandling(i, rubyArray.eltInternal(i).toJava(targetType)); } } if ( i < javaLength && fillJavaObject != null ) { javaArray.fillWithExceptionHandling(i, javaLength, fillJavaObject); } return toJava; }
JavaArray javaArrayJavaObj = (JavaArray)javaArray.dataGetStruct(); Object fillJavaObject = null; int javaLength = (int)javaArrayJavaObj.length().getLongValue(); Class targetType = javaArrayJavaObj.getComponentType(); javaArrayJavaObj.setWithExceptionHandling(i, array.entry(i).toJava(targetType)); javaArrayJavaObj.fillWithExceptionHandling(i, javaLength, fillJavaObject);
public final void fillWithExceptionHandling(int start, int end, Object javaValue) { final Ruby runtime = getRuntime(); final Object array = getValue(); for (int i = start; i < end; i++) { ArrayUtils.setWithExceptionHandlingDirect(runtime, array, i, javaValue); } } }
private static void copyDataToJavaArray( final RubyArray rubyArray, final JavaArray javaArray, int offset) { int length = javaArray.getLength(); if ( length > rubyArray.getLength() ) length = rubyArray.getLength(); final Class<?> targetType = javaArray.getComponentType(); for ( int i = offset; i < length; i++ ) { javaArray.setWithExceptionHandling(i, rubyArray.eltInternal(i).toJava(targetType)); } }
public RubyFixnum length() { return getRuntime().newFixnum(getLength()); }
public IRubyObject afill(IRubyObject beginIndex, IRubyObject endIndex, IRubyObject value) { if (! (beginIndex instanceof RubyInteger)) { throw getRuntime().newTypeError(beginIndex, getRuntime().getInteger()); } int intIndex = (int) ((RubyInteger) beginIndex).getLongValue(); if (! (endIndex instanceof RubyInteger)) { throw getRuntime().newTypeError(endIndex, getRuntime().getInteger()); } int intEndIndex = (int) ((RubyInteger) endIndex).getLongValue(); if (! (value instanceof JavaObject)) { throw getRuntime().newTypeError("not a java object:" + value); } Object javaObject = ((JavaObject) value).getValue(); fillWithExceptionHandling(intIndex, intEndIndex, javaObject); return value; }