4 #define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION
7 #include <Python.h> //header for system python import; add include paths
8 #include <numpy/arrayobject.h>
11 #include <Python.h> //header for system python import; add include paths
12 #include <numpy/arrayobject.h>
15 #include <jni.h> //java connection header
17 /* To use this exported function of dll, include this header
22 #define DLL_EXPORT __declspec(dllexport)
24 #define DLL_EXPORT __declspec(dllimport)
28 #define JAVA_MAXINT (0x7fffffff)
30 #define PYTHON_EXCEPTION "org/simantics/pythonlink/PythonException"
31 #define ILLEGAL_ARGUMENT_EXCEPTION "java/lang/IllegalArgumentException"
32 #define OBJECT_CLASS "java/lang/Object"
33 #define STRING_CLASS "java/lang/String"
34 #define MAP_CLASS "java/util/Map"
35 #define SET_CLASS "java/util/Set"
37 #define WRITER_CLASS "java/io/Writer"
39 #define PACKAGE_PREFIX "org/simantics/pythonlink/"
41 #define NDARRAY_CLASS (PACKAGE_PREFIX "NDArray")
43 #define VARIANT_CLASS "org/simantics/databoard/binding/mutable/Variant"
44 #define BINDINGS_CLASS "org/simantics/databoard/Bindings"
45 #define BINDING_CLASS "org/simantics/databoard/binding/Binding"
46 #define DATATYPE_CLASS "org/simantics/databoard/type/Datatype"
48 #define BOOLEANTYPE_CLASS "org/simantics/databoard/type/BooleanType"
49 #define BYTETYPE_CLASS "org/simantics/databoard/type/ByteType"
50 #define INTEGERTYPE_CLASS "org/simantics/databoard/type/IntegerType"
51 #define LONGTYPE_CLASS "org/simantics/databoard/type/LongType"
52 #define FLOATTYPE_CLASS "org/simantics/databoard/type/FloatType"
53 #define DOUBLETYPE_CLASS "org/simantics/databoard/type/DoubleType"
54 #define STRINGTYPE_CLASS "org/simantics/databoard/type/StringType"
55 #define RECORDTYPE_CLASS "org/simantics/databoard/type/RecordType"
56 #define ARRAYTYPE_CLASS "org/simantics/databoard/type/ArrayType"
57 #define MAPTYPE_CLASS "org/simantics/databoard/type/MapType"
58 #define OPTIONALTYPE_CLASS "org/simantics/databoard/type/OptionalType"
59 #define UNIONTYPE_CLASS "org/simantics/databoard/type/UnionType"
60 #define VARIANTTYPE_CLASS "org/simantics/databoard/type/VariantType"
62 #define BOOLEANBINDING_CLASS "org/simantics/databoard/binding/BooleanBinding"
63 #define BYTEBINDING_CLASS "org/simantics/databoard/binding/ByteBinding"
64 #define INTEGERBINDING_CLASS "org/simantics/databoard/binding/IntegerBinding"
65 #define LONGBINDING_CLASS "org/simantics/databoard/binding/LongBinding"
66 #define FLOATBINDING_CLASS "org/simantics/databoard/binding/FloatBinding"
67 #define DOUBLEBINDING_CLASS "org/simantics/databoard/binding/DoubleBinding"
68 #define STRINGBINDING_CLASS "org/simantics/databoard/binding/StringBinding"
69 #define RECORDBINDING_CLASS "org/simantics/databoard/binding/RecordBinding"
70 #define ARRAYBINDING_CLASS "org/simantics/databoard/binding/ArrayBinding"
71 #define MAPBINDING_CLASS "org/simantics/databoard/binding/MapBinding"
72 #define OPTIONALBINDING_CLASS "org/simantics/databoard/binding/OptionalBinding"
73 #define UNIONBINDING_CLASS "org/simantics/databoard/binding/UnionBinding"
74 #define VARIANTBINDING_CLASS "org/simantics/databoard/binding/VariantBinding"
76 #define COMPONENT_CLASS "org/simantics/databoard/type/Component"
77 #define TAGGEDOBJECT_CLASS "org/simantics/databoard/binding/mutable/TaggedObject"
79 PyObject *getPythonBooleanList(JNIEnv *env, jbooleanArray value);
80 PyObject *getPythonByteArray(JNIEnv *env, jbyteArray value);
81 PyObject *getPythonIntegerList(JNIEnv *env, jintArray value);
82 PyObject *getPythonLongList(JNIEnv *env, jlongArray value);
83 PyObject *getPythonFloatList(JNIEnv *env, jfloatArray value);
84 PyObject *getPythonDoubleList(JNIEnv *env, jdoubleArray value);
86 PyObject *getPythonObject(JNIEnv *env, jobject object, jobject binding);
88 PyObject *getPythonBooleanObject(JNIEnv *env, jobject object, jobject binding);
89 PyObject *getPythonByteObject(JNIEnv *env, jobject object, jobject binding);
90 PyObject *getPythonIntegerObject(JNIEnv *env, jobject object, jobject binding);
91 PyObject *getPythonLongObject(JNIEnv *env, jobject object, jobject binding);
92 PyObject *getPythonFloatObject(JNIEnv *env, jobject object, jobject binding);
93 PyObject *getPythonDoubleObject(JNIEnv *env, jobject object, jobject binding);
94 PyObject *getPythonRecordObject(JNIEnv *env, jobjectArray object, jobject binding);
95 PyObject *getPythonArrayObject(JNIEnv *env, jobject object, jobject binding);
96 PyObject *getPythonMapObject(JNIEnv *env, jobject object, jobject binding);
97 PyObject *getPythonOptionalObject(JNIEnv *env, jobject object, jobject binding);
98 PyObject *getPythonUnionObject(JNIEnv *env, jobject object, jobject binding);
99 PyObject *getPythonVariantObject(JNIEnv *env, jobject object, jobject binding);
101 void setPythonVariable(PyObject *module, PyObject *name, PyObject *value);
103 jobject pythonBoolAsBooleanObject(JNIEnv *env, PyObject *value);
104 jobject pythonLongAsLongObject(JNIEnv *env, PyObject *value);
105 jobject pythonFloatAsDoubleObject(JNIEnv *env, PyObject *value);
106 jobject pythonByteArrayAsByteArray(JNIEnv *env, PyObject *value);
107 jstring pythonStringAsJavaString(JNIEnv *env, PyObject *string);
108 jobjectArray pythonSequenceAsObjectArray(JNIEnv *env, PyObject *seq);
109 jobjectArray pythonSequenceAsStringArray(JNIEnv *env, PyObject *list);
110 jintArray pythonSequenceAsIntegerArray(JNIEnv *env, PyObject *list);
111 jlongArray pythonSequenceAsLongArray(JNIEnv *env, PyObject *list);
112 jdoubleArray pythonSequenceAsDoubleArray(JNIEnv *env, PyObject *list);
113 jobject pythonDictionaryAsMap(JNIEnv *env, PyObject *dict);
114 jobject pythonArrayAsNDArray(JNIEnv *env, PyArrayObject *array);
115 jobject pythonObjectAsObject(JNIEnv *env, PyObject *value);