[Jython-checkins] jython: Extend ctypes Invoker#invoke() up to arity 6
wayne.meissner
jython-checkins at python.org
Sun Sep 4 03:55:25 CEST 2011
http://hg.python.org/jython/rev/e99b0b6a6a9a
changeset: 6238:e99b0b6a6a9a
user: Wayne Meissner <wmeissner at gmail.com>
date: Fri Jun 17 22:09:57 2011 +1000
summary:
Extend ctypes Invoker#invoke() up to arity 6
files:
src/org/python/modules/jffi/DefaultInvokerFactory.java | 14 ++++++-
src/org/python/modules/jffi/Function.java | 19 +++++++++-
src/org/python/modules/jffi/Invoker.java | 16 ++++---
src/org/python/modules/jffi/JITInvoker.java | 6 +--
4 files changed, 41 insertions(+), 14 deletions(-)
diff --git a/src/org/python/modules/jffi/DefaultInvokerFactory.java b/src/org/python/modules/jffi/DefaultInvokerFactory.java
--- a/src/org/python/modules/jffi/DefaultInvokerFactory.java
+++ b/src/org/python/modules/jffi/DefaultInvokerFactory.java
@@ -178,7 +178,7 @@
void marshal(HeapInvocationBuffer buffer, PyObject arg);
}
- private static abstract class BaseInvoker implements Invoker {
+ private static abstract class BaseInvoker extends Invoker {
final Function jffiFunction;
final com.kenai.jffi.Invoker jffiInvoker = com.kenai.jffi.Invoker.getInstance();
final ParameterMarshaller[] marshallers;
@@ -217,6 +217,18 @@
return invoke(new PyObject[] { arg0, arg1, arg2 });
}
+ public final PyObject invoke(PyObject arg0, PyObject arg1, PyObject arg2, PyObject arg3) {
+ return invoke(new PyObject[] { arg0, arg1, arg2, arg3 });
+ }
+
+ public final PyObject invoke(PyObject arg0, PyObject arg1, PyObject arg2, PyObject arg3, PyObject arg4) {
+ return invoke(new PyObject[] { arg0, arg1, arg2, arg3, arg4 });
+ }
+
+ public final PyObject invoke(PyObject arg0, PyObject arg1, PyObject arg2, PyObject arg3, PyObject arg4, PyObject arg5) {
+ return invoke(new PyObject[] { arg0, arg1, arg2, arg3, arg4, arg5 });
+ }
+
final void checkArity(PyObject[] args) {
checkArity(args.length);
}
diff --git a/src/org/python/modules/jffi/Function.java b/src/org/python/modules/jffi/Function.java
--- a/src/org/python/modules/jffi/Function.java
+++ b/src/org/python/modules/jffi/Function.java
@@ -106,6 +106,11 @@
return getInvoker().invoke(arg0, arg1, arg2);
}
+ @Override
+ public PyObject __call__(PyObject arg0, PyObject arg1, PyObject arg2, PyObject arg3) {
+ return getInvoker().invoke(arg0, arg1, arg2, arg3);
+ }
+
@ExposedGet(name = "restype")
public PyObject getResultType() {
@@ -216,7 +221,7 @@
this.jffiFunction = null;
}
- private static final class ErrCheckInvoker implements Invoker {
+ private static final class ErrCheckInvoker extends Invoker {
private final Invoker invoker;
private final PyObject errcheck;
@@ -244,5 +249,17 @@
public PyObject invoke(PyObject arg1, PyObject arg2, PyObject arg3) {
return errcheck.__call__(invoker.invoke(arg1, arg2, arg3));
}
+
+ public PyObject invoke(PyObject arg1, PyObject arg2, PyObject arg3, PyObject arg4) {
+ return errcheck.__call__(invoker.invoke(arg1, arg2, arg3, arg4));
+ }
+
+ public PyObject invoke(PyObject arg1, PyObject arg2, PyObject arg3, PyObject arg4, PyObject arg5) {
+ return errcheck.__call__(invoker.invoke(arg1, arg2, arg3, arg4, arg5));
+ }
+
+ public PyObject invoke(PyObject arg1, PyObject arg2, PyObject arg3, PyObject arg4, PyObject arg5, PyObject arg6) {
+ return errcheck.__call__(invoker.invoke(arg1, arg2, arg3, arg4, arg5, arg6));
+ }
}
}
diff --git a/src/org/python/modules/jffi/Invoker.java b/src/org/python/modules/jffi/Invoker.java
--- a/src/org/python/modules/jffi/Invoker.java
+++ b/src/org/python/modules/jffi/Invoker.java
@@ -3,11 +3,13 @@
import org.python.core.PyObject;
-public interface Invoker {
- public PyObject invoke(PyObject[] args);
- public PyObject invoke();
- public PyObject invoke(PyObject arg1);
- public PyObject invoke(PyObject arg1, PyObject arg2);
- public PyObject invoke(PyObject arg1, PyObject arg2, PyObject arg3);
-
+abstract public class Invoker {
+ abstract public PyObject invoke(PyObject[] args);
+ abstract public PyObject invoke();
+ abstract public PyObject invoke(PyObject arg1);
+ abstract public PyObject invoke(PyObject arg1, PyObject arg2);
+ abstract public PyObject invoke(PyObject arg1, PyObject arg2, PyObject arg3);
+ abstract public PyObject invoke(PyObject arg1, PyObject arg2, PyObject arg3, PyObject arg4);
+ abstract public PyObject invoke(PyObject arg1, PyObject arg2, PyObject arg3, PyObject arg4, PyObject arg5);
+ abstract public PyObject invoke(PyObject arg1, PyObject arg2, PyObject arg3, PyObject arg4, PyObject arg5, PyObject arg6);
}
diff --git a/src/org/python/modules/jffi/JITInvoker.java b/src/org/python/modules/jffi/JITInvoker.java
--- a/src/org/python/modules/jffi/JITInvoker.java
+++ b/src/org/python/modules/jffi/JITInvoker.java
@@ -7,7 +7,7 @@
/**
*
*/
-abstract public class JITInvoker implements Invoker {
+abstract public class JITInvoker extends Invoker {
protected static final com.kenai.jffi.Invoker jffiInvoker = com.kenai.jffi.Invoker.getInstance();
private final int arity;
@@ -59,8 +59,4 @@
throw Py.RuntimeError("invalid fast-int arity");
}
}
-
- abstract public PyObject invoke(PyObject arg1, PyObject arg2, PyObject arg3, PyObject arg4);
- abstract public PyObject invoke(PyObject arg1, PyObject arg2, PyObject arg3, PyObject arg4, PyObject arg5);
- abstract public PyObject invoke(PyObject arg1, PyObject arg2, PyObject arg3, PyObject arg4, PyObject arg5, PyObject arg6);
}
--
Repository URL: http://hg.python.org/jython
More information about the Jython-checkins
mailing list