public ArrayMemoryIO dup() { ArrayMemoryIO tmp = new ArrayMemoryIO(runtime, length); System.arraycopy(array(), arrayOffset(), tmp.array(), tmp.arrayOffset(), length); return tmp; }
public ArrayMemoryIO dup() { ArrayMemoryIO tmp = new ArrayMemoryIO(runtime, length); System.arraycopy(array(), arrayOffset(), tmp.array(), tmp.arrayOffset(), length); return tmp; }
public ArrayMemoryIO dup() { ArrayMemoryIO tmp = new ArrayMemoryIO(runtime, length); System.arraycopy(array(), arrayOffset(), tmp.array(), tmp.arrayOffset(), length); return tmp; }
public ArrayMemoryIO dup() { ArrayMemoryIO tmp = new ArrayMemoryIO(runtime, length); System.arraycopy(array(), arrayOffset(), tmp.array(), tmp.arrayOffset(), length); return tmp; }
public ArrayMemoryIO slice(long offset, long size) { checkBounds(offset, size); return offset == 0 && size == this.length ? this : new ArrayMemoryIO(runtime, array(), arrayOffset() + (int) offset, (int) size); }
public ArrayMemoryIO slice(long offset, long size) { checkBounds(offset, size); return offset == 0 && size == this.length ? this : new ArrayMemoryIO(runtime, array(), arrayOffset() + (int) offset, (int) size); }
public ArrayMemoryIO slice(long offset, long size) { checkBounds(offset, size); return offset == 0 && size == this.length ? this : new ArrayMemoryIO(runtime, array(), arrayOffset() + (int) offset, (int) size); }
public ArrayMemoryIO slice(long offset, long size) { checkBounds(offset, size); return offset == 0 && size == this.length ? this : new ArrayMemoryIO(runtime, array(), arrayOffset() + (int) offset, (int) size); }
public ArrayMemoryIO slice(long offset) { checkBounds(offset, 0); return offset == 0 ? this : new ArrayMemoryIO(runtime, array(), arrayOffset() + (int) offset, arrayLength() - (int) offset); }
public ArrayMemoryIO slice(long offset) { checkBounds(offset, 0); return offset == 0 ? this : new ArrayMemoryIO(runtime, array(), arrayOffset() + (int) offset, arrayLength() - (int) offset); }
public ArrayMemoryIO slice(long offset) { checkBounds(offset, 0); return offset == 0 ? this : new ArrayMemoryIO(runtime, array(), arrayOffset() + (int) offset, arrayLength() - (int) offset); }
public ArrayMemoryIO slice(long offset) { checkBounds(offset, 0); return offset == 0 ? this : new ArrayMemoryIO(runtime, array(), arrayOffset() + (int) offset, arrayLength() - (int) offset); }
public final IRubyObject invoke(ThreadContext context, Function function, HeapInvocationBuffer args) { int size = info.getStructLayout().getSize(); Buffer buf = new Buffer(context.runtime, size); MemoryIO mem = buf.getMemoryIO(); byte[] array; int arrayOffset; if (mem instanceof ArrayMemoryIO) { ArrayMemoryIO arrayMemoryIO = (ArrayMemoryIO) mem; array = arrayMemoryIO.array(); arrayOffset = arrayMemoryIO.arrayOffset(); } else { array = new byte[size]; arrayOffset = 0; } invoker.invokeStruct(function, args, array, arrayOffset); if (!(mem instanceof ArrayMemoryIO)) { mem.put(0, array, 0, array.length); } return info.getStructClass().newInstance(context, buf, Block.NULL_BLOCK); } }
public final IRubyObject invoke(ThreadContext context, Function function, HeapInvocationBuffer args) { int size = info.getStructLayout().getSize(); Buffer buf = new Buffer(context.runtime, size); MemoryIO mem = buf.getMemoryIO(); byte[] array; int arrayOffset; if (mem instanceof ArrayMemoryIO) { ArrayMemoryIO arrayMemoryIO = (ArrayMemoryIO) mem; array = arrayMemoryIO.array(); arrayOffset = arrayMemoryIO.arrayOffset(); } else { array = new byte[size]; arrayOffset = 0; } invoker.invokeStruct(function, args, array, arrayOffset); if (!(mem instanceof ArrayMemoryIO)) { mem.put(0, array, 0, array.length); } return info.getStructClass().newInstance(context, buf, Block.NULL_BLOCK); } }
public final IRubyObject invoke(ThreadContext context, Function function, HeapInvocationBuffer args) { int size = info.getStructLayout().getSize(); Buffer buf = new Buffer(context.runtime, size); MemoryIO mem = buf.getMemoryIO(); byte[] array; int arrayOffset; if (mem instanceof ArrayMemoryIO) { ArrayMemoryIO arrayMemoryIO = (ArrayMemoryIO) mem; array = arrayMemoryIO.array(); arrayOffset = arrayMemoryIO.arrayOffset(); } else { array = new byte[size]; arrayOffset = 0; } invoker.invokeStruct(function, args, array, arrayOffset); if (!(mem instanceof ArrayMemoryIO)) { mem.put(0, array, 0, array.length); } return info.getStructClass().newInstance(context, buf, Block.NULL_BLOCK); } }
public final IRubyObject invoke(ThreadContext context, Function function, HeapInvocationBuffer args) { int size = info.getStructLayout().getSize(); Buffer buf = new Buffer(context.runtime, size); MemoryIO mem = buf.getMemoryIO(); byte[] array; int arrayOffset; if (mem instanceof ArrayMemoryIO) { ArrayMemoryIO arrayMemoryIO = (ArrayMemoryIO) mem; array = arrayMemoryIO.array(); arrayOffset = arrayMemoryIO.arrayOffset(); } else { array = new byte[size]; arrayOffset = 0; } invoker.invokeStruct(function, args, array, arrayOffset); if (!(mem instanceof ArrayMemoryIO)) { mem.put(0, array, 0, array.length); } return info.getStructClass().newInstance(context, buf, Block.NULL_BLOCK); } }
public final void marshal(ThreadContext context, InvocationBuffer buffer, IRubyObject parameter) { if (!(parameter instanceof Struct)) { throw context.runtime.newTypeError("wrong argument type " + parameter.getMetaClass().getName() + " (expected instance of FFI::Struct)"); } final AbstractMemory memory = ((Struct) parameter).getMemory(); if (memory.getSize() < layout.getSize()) { throw context.runtime.newArgumentError("struct memory too small for parameter"); } final MemoryIO io = memory.getMemoryIO(); if (io.isDirect()) { if (io.isNull()) { throw context.runtime.newRuntimeError("Cannot use a NULL pointer as a struct by value argument"); } buffer.putStruct(io.address()); } else if (io instanceof ArrayMemoryIO) { ArrayMemoryIO aio = (ArrayMemoryIO) io; buffer.putStruct(aio.array(), aio.arrayOffset()); } else { throw context.runtime.newRuntimeError("invalid struct memory"); } } }
public final void marshal(ThreadContext context, InvocationBuffer buffer, IRubyObject parameter) { if (!(parameter instanceof Struct)) { throw context.runtime.newTypeError("wrong argument type " + parameter.getMetaClass().getName() + " (expected instance of FFI::Struct)"); } final AbstractMemory memory = ((Struct) parameter).getMemory(); if (memory.getSize() < layout.getSize()) { throw context.runtime.newArgumentError("struct memory too small for parameter"); } final MemoryIO io = memory.getMemoryIO(); if (io.isDirect()) { if (io.isNull()) { throw context.runtime.newRuntimeError("Cannot use a NULL pointer as a struct by value argument"); } buffer.putStruct(io.address()); } else if (io instanceof ArrayMemoryIO) { ArrayMemoryIO aio = (ArrayMemoryIO) io; buffer.putStruct(aio.array(), aio.arrayOffset()); } else { throw context.runtime.newRuntimeError("invalid struct memory"); } } }
public final void marshal(ThreadContext context, InvocationBuffer buffer, IRubyObject parameter) { if (!(parameter instanceof Struct)) { throw context.runtime.newTypeError("wrong argument type " + parameter.getMetaClass().getName() + " (expected instance of FFI::Struct)"); } final AbstractMemory memory = ((Struct) parameter).getMemory(); if (memory.getSize() < layout.getSize()) { throw context.runtime.newArgumentError("struct memory too small for parameter"); } final MemoryIO io = memory.getMemoryIO(); if (io.isDirect()) { if (io.isNull()) { throw context.runtime.newRuntimeError("Cannot use a NULL pointer as a struct by value argument"); } buffer.putStruct(io.address()); } else if (io instanceof ArrayMemoryIO) { ArrayMemoryIO aio = (ArrayMemoryIO) io; buffer.putStruct(aio.array(), aio.arrayOffset()); } else { throw context.runtime.newRuntimeError("invalid struct memory"); } } }
public final void marshal(ThreadContext context, InvocationBuffer buffer, IRubyObject parameter) { if (!(parameter instanceof Struct)) { throw context.runtime.newTypeError("wrong argument type " + parameter.getMetaClass().getName() + " (expected instance of FFI::Struct)"); } final AbstractMemory memory = ((Struct) parameter).getMemory(); if (memory.getSize() < layout.getSize()) { throw context.runtime.newArgumentError("struct memory too small for parameter"); } final MemoryIO io = memory.getMemoryIO(); if (io.isDirect()) { if (io.isNull()) { throw context.runtime.newRuntimeError("Cannot use a NULL pointer as a struct by value argument"); } buffer.putStruct(io.address()); } else if (io instanceof ArrayMemoryIO) { ArrayMemoryIO aio = (ArrayMemoryIO) io; buffer.putStruct(aio.array(), aio.arrayOffset()); } else { throw context.runtime.newRuntimeError("invalid struct memory"); } } }