Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  
  package org.jruby.ext.ffi.jffi;
  
 
 abstract public class NativeInvoker extends DynamicMethod {
     protected final Arity arity;
     protected final com.kenai.jffi.Function function;
     private final int cbIndex;
     private final NativeCallbackFactory cbFactory;
     private final Signature signature;
 
 
     public NativeInvoker(RubyModule implementationClasscom.kenai.jffi.Function functionSignature signature) {
         super(implementationClass..);
         this. = Arity.fixed(signature.getParameterCount());
         this. = function;
         this. = signature;
 
         int cbIndex = -1;
         NativeCallbackFactory cbFactory = null;
         for (int i = 0; i < signature.getParameterCount(); ++i) {
             if (signature.getParameterType(iinstanceof CallbackInfo) {
                 cbFactory = CallbackManager.getInstance().getCallbackFactory(implementationClass.getRuntime(),
                         (CallbackInfosignature.getParameterType(i));
                 cbIndex = i;
                 break;
             }
         }
         this. = cbIndex;
         this. = cbFactory;
     }
 
     @Override
     public final DynamicMethod dup() {
         return this;
     }
 
     @Override
     public final Arity getArity() {
         return ;
     }
     @Override
     public final boolean isNative() {
         return true;
     }
 
     Signature getSignature() {
         return ;
     }
 
         return .getCallContext();
     }
 
     long getFunctionAddress() {
         return .getFunctionAddress();
     }
 
     @Override
     public IRubyObject call(ThreadContext contextIRubyObject self,
                             RubyModule clazzString nameIRubyObject[] argsBlock block) {
 
         if (!block.isGiven() ||  < 0) {
             .checkArity(context.runtimeargs);
             return call(contextselfclazznameargs);
 
         } else {
             Arity.checkArgumentCount(context.runtimenameargs,
                     .getValue() - 1, .getValue());
 
             IRubyObject[] params = new IRubyObject[.getValue()];
             for (int i = 0; i < i++) {
                 params[i] = args[i];
             }
 
             NativeCallbackPointer cb;
             params[] = cb = .newCallback(block);
 
             for (int i =  + 1; i < params.lengthi++) {
                 params[i] = args[i - 1];
             }
 
             try {
                 return call(contextselfclazznameparams);
             } finally {
                 cb.dispose();
            }
        }
    }
New to GrepCode? Check out our FAQ X