@JRubyMethod(required=1, optional=1, name = {"at", "[]"}) public IRubyObject index(ThreadContext context, IRubyObject[] args) { if (args.length == 1){ IRubyObject arg = args[0]; if (Utils.isRubyNum(arg)) { /* standard case */ int arrIndex = normalizeArrayIndex(arg); if (arrIndex < 0 || arrIndex >= this.storage.size()) { return context.runtime.getNil(); } return this.storage.eltInternal(arrIndex); } else if (arg instanceof RubyRange) { RubyRange range = ((RubyRange) arg); int beg = RubyNumeric.num2int(range.first(context)); int to = RubyNumeric.num2int(range.last(context)); int len = to - beg + 1; return this.storage.subseq(beg, len); } } /* assume 2 arguments */ int beg = RubyNumeric.num2int(args[0]); int len = RubyNumeric.num2int(args[1]); if (beg < 0) { beg += this.storage.size(); } if (beg >= this.storage.size()) { return context.runtime.getNil(); } return this.storage.subseq(beg, len); }
/** rb_ary_subseq * */ public IRubyObject subseqLight(long beg, long len) { return subseq(getMetaClass(), beg, len, true); }
/** rb_ary_subseq * */ public IRubyObject subseq(long beg, long len) { return subseq(getMetaClass(), beg, len, true); }
/** rb_ary_subseq * */ public IRubyObject subseq(long beg, long len) { return subseq(getMetaClass(), beg, len, true); }
/** rb_ary_subseq * */ public IRubyObject subseqLight(long beg, long len) { return subseq(getMetaClass(), beg, len, true); }
public List subList(int fromIndex, int toIndex) { if (fromIndex < 0 || toIndex > size() || fromIndex > toIndex) { throw new IndexOutOfBoundsException(); } IRubyObject subList = subseq(fromIndex, toIndex - fromIndex); return subList.isNil() ? null : (List) subList; }
public List subList(int fromIndex, int toIndex) { if (fromIndex < 0 || toIndex > size() || fromIndex > toIndex) { throw new IndexOutOfBoundsException(); } IRubyObject subList = subseq(fromIndex, toIndex - fromIndex); return subList.isNil() ? null : (List) subList; }
public List subList(int fromIndex, int toIndex) { if (fromIndex < 0 || toIndex > size() || fromIndex > toIndex) { throw new IndexOutOfBoundsException(); } IRubyObject subList = subseq(fromIndex, toIndex - fromIndex); return subList.isNil() ? null : (List) subList; }
private IRubyObject arefCommon(IRubyObject arg0, IRubyObject arg1) { long beg = RubyNumeric.num2long(arg0); if (beg < 0) beg += realLength; return subseq(beg, RubyNumeric.num2long(arg1)); }
private IRubyObject arefCommon(IRubyObject arg0, IRubyObject arg1) { long beg = RubyNumeric.num2long(arg0); if (beg < 0) beg += realLength; return subseq(beg, RubyNumeric.num2long(arg1)); }
private IRubyObject arefCommon(IRubyObject arg0, IRubyObject arg1) { long beg = RubyNumeric.num2long(arg0); if (beg < 0) beg += realLength; return subseq(beg, RubyNumeric.num2long(arg1)); }
/** rb_ary_take * */ @JRubyMethod(name = "take") public IRubyObject take(ThreadContext context, IRubyObject n) { Ruby runtime = context.runtime; long len = RubyNumeric.num2long(n); if (len < 0) throw runtime.newArgumentError("attempt to take negative size"); return subseq(0, len); }
/** rb_ary_take * */ @JRubyMethod(name = "take") public IRubyObject take(ThreadContext context, IRubyObject n) { Ruby runtime = context.runtime; long len = RubyNumeric.num2long(n); if (len < 0) throw runtime.newArgumentError("attempt to take negative size"); return subseq(0, len); }
public static RubyArray viewArgsArray(ThreadContext context, RubyArray rubyArray, int preArgsCount, int postArgsCount) { int n = rubyArray.getLength(); if (preArgsCount + postArgsCount >= n) { return RubyArray.newEmptyArray(context.runtime); } return (RubyArray)rubyArray.subseq(context.runtime.getArray(), preArgsCount, n - preArgsCount - postArgsCount, true); }
public static RubyArray viewArgsArray(ThreadContext context, RubyArray rubyArray, int preArgsCount, int postArgsCount) { int n = rubyArray.getLength(); if (preArgsCount + postArgsCount >= n) { return RubyArray.newEmptyArray(context.runtime); } return (RubyArray)rubyArray.subseq(context.runtime.getArray(), preArgsCount, n - preArgsCount - postArgsCount, true); }
/** rb_ary_take * */ @JRubyMethod(name = "take") public IRubyObject take(ThreadContext context, IRubyObject n) { Ruby runtime = context.runtime; long len = RubyNumeric.num2long(n); if (len < 0) throw runtime.newArgumentError("attempt to take negative size"); return subseq(0, len); }
/** rb_ary_take * */ @JRubyMethod(name = "take") public IRubyObject take(ThreadContext context, IRubyObject n) { Ruby runtime = context.runtime; long len = RubyNumeric.num2long(n); if (len < 0) throw runtime.newArgumentError("attempt to take negative size"); return subseq(0, len); }
/** rb_ary_take * */ @JRubyMethod(name = "drop") public IRubyObject drop(ThreadContext context, IRubyObject n) { Ruby runtime = context.runtime; long pos = RubyNumeric.num2long(n); if (pos < 0) throw runtime.newArgumentError("attempt to drop negative size"); IRubyObject result = subseq(pos, realLength); return result.isNil() ? runtime.newEmptyArray() : result; }
private IRubyObject arefCommon(IRubyObject arg0) { if (arg0 instanceof RubyRange) { long[] beglen = ((RubyRange) arg0).begLen(realLength, 0); return beglen == null ? getRuntime().getNil() : subseq(beglen[0], beglen[1]); } return entry(RubyNumeric.num2long(arg0)); }
/** rb_ary_take * */ @JRubyMethod(name = "drop") public IRubyObject drop(ThreadContext context, IRubyObject n) { Ruby runtime = context.runtime; long pos = RubyNumeric.num2long(n); if (pos < 0) throw runtime.newArgumentError("attempt to drop negative size"); IRubyObject result = subseq(pos, realLength); return result.isNil() ? runtime.newEmptyArray() : result; }