public final void marshal(ThreadContext context, InvocationBuffer buffer, IRubyObject parameter) { buffer.putByte(JITRuntime.boolValue32(parameter)); } }
public final void marshal(ThreadContext context, InvocationBuffer buffer, IRubyObject parameter) { buffer.putDouble(RubyNumeric.num2dbl(parameter)); } }
public final void marshal(ThreadContext context, InvocationBuffer buffer, IRubyObject parameter) { buffer.putFloat((float) RubyNumeric.num2dbl(parameter)); } }
public final void marshal(ThreadContext context, InvocationBuffer buffer, IRubyObject parameter, PointerParameterStrategy strategy) { if (strategy.isDirect()) { buffer.putAddress(strategy.address(parameter)); } else { buffer.putArray(byte[].class.cast(strategy.object(parameter)), strategy.offset(parameter), strategy.length(parameter), flags); } } }
public final void marshal(ThreadContext context, InvocationBuffer buffer, IRubyObject parameter) { buffer.putLong(JITRuntime.u64Value64(parameter)); } }
public final void marshal(ThreadContext context, InvocationBuffer buffer, IRubyObject parameter) { buffer.putShort(JITRuntime.u16Value32(parameter)); } }
public final void marshal(ThreadContext context, InvocationBuffer buffer, IRubyObject parameter) { buffer.putInt(JITRuntime.s32Value32(parameter)); } }
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, PointerParameterStrategy strategy) { if (strategy.isDirect()) { buffer.putAddress(strategy.address(parameter)); } else { buffer.putArray(byte[].class.cast(strategy.object(parameter)), strategy.offset(parameter), strategy.length(parameter), flags); } } }
public final void marshal(ThreadContext context, InvocationBuffer buffer, IRubyObject parameter) { buffer.putLong(JITRuntime.s64Value64(parameter)); } }
public final void marshal(ThreadContext context, InvocationBuffer buffer, IRubyObject parameter) { buffer.putShort(JITRuntime.u16Value32(parameter)); } }
public final void marshal(ThreadContext context, InvocationBuffer buffer, IRubyObject parameter) { buffer.putInt(JITRuntime.u32Value32(parameter)); } }
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, PointerParameterStrategy strategy) { if (strategy.isDirect()) { buffer.putAddress(strategy.address(parameter)); } else { buffer.putArray(byte[].class.cast(strategy.object(parameter)), strategy.offset(parameter), strategy.length(parameter), flags); } } }
public final void marshal(ThreadContext context, InvocationBuffer buffer, IRubyObject parameter) { buffer.putByte(JITRuntime.s8Value32(parameter)); } }
public final void marshal(ThreadContext context, InvocationBuffer buffer, IRubyObject parameter) { buffer.putLong(JITRuntime.u64Value64(parameter)); } }
public final void marshal(ThreadContext context, InvocationBuffer buffer, IRubyObject parameter) { buffer.putShort(JITRuntime.s16Value32(parameter)); } }
public final void marshal(ThreadContext context, InvocationBuffer buffer, IRubyObject parameter) { buffer.putInt(JITRuntime.u32Value32(parameter)); } }
public final void marshal(ThreadContext context, InvocationBuffer buffer, IRubyObject parameter) { buffer.putFloat((float) RubyNumeric.num2dbl(parameter)); } }
public final void marshal(ThreadContext context, InvocationBuffer buffer, IRubyObject parameter) { buffer.putDouble(RubyNumeric.num2dbl(parameter)); } }