All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.jruby.ext.ffi.jffi.NativeFunctionInfo Maven / Gradle / Ivy

There is a newer version: 9.4.7.0
Show newest version

package org.jruby.ext.ffi.jffi;

import com.kenai.jffi.CallingConvention;
import org.jruby.Ruby;

/**
 * Holds information for creating JFFI functions
 */
class NativeFunctionInfo {
    final org.jruby.ext.ffi.Type returnType;
    final org.jruby.ext.ffi.Type[] parameterTypes;
    final com.kenai.jffi.Type jffiReturnType;
    final com.kenai.jffi.Type[] jffiParameterTypes;
    final com.kenai.jffi.CallingConvention convention;

    public NativeFunctionInfo(Ruby runtime, org.jruby.ext.ffi.Type returnType,
            org.jruby.ext.ffi.Type[] parameterTypes, CallingConvention convention) {
        this.returnType = returnType;
        this.parameterTypes = parameterTypes;
        this.jffiReturnType = FFIUtil.getFFIType(returnType);
        if (jffiReturnType == null) {
            throw runtime.newTypeError("invalid FFI return type: " + returnType);
        }

        this.jffiParameterTypes = new com.kenai.jffi.Type[parameterTypes.length];
        for (int i = 0; i < parameterTypes.length; ++i) {
            jffiParameterTypes[i] = FFIUtil.getFFIType(parameterTypes[i]);
            if (jffiParameterTypes[i] == null) {
                throw runtime.newTypeError("invalid FFI parameter type: " + parameterTypes[i]);
            }
        }

        this.convention = convention;
    }




}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy