]> gerrit.simantics Code Review - simantics/python.git/blob - org.simantics.pythonlink.win32.x86_64/src/sclpy.h
e71e107040475b26a1afba11aa2cf0aa6f07953c
[simantics/python.git] / org.simantics.pythonlink.win32.x86_64 / src / sclpy.h
1 #ifndef __MAIN_H__
2 #define __MAIN_H__
3
4 #define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION
5 #ifdef _DEBUG
6         #undef _DEBUG
7         #include <Python.h>  //header for system python import; add include paths
8         #include <numpy/arrayobject.h>
9         #define _DEBUG 1
10 #else
11         #include <Python.h>  //header for system python import; add include paths
12         #include <numpy/arrayobject.h>
13 #endif
14
15 #include <jni.h> //java connection header
16
17 /*  To use this exported function of dll, include this header
18  *  in your project.
19  */
20
21 #ifdef BUILD_DLL
22     #define DLL_EXPORT __declspec(dllexport)
23 #else
24     #define DLL_EXPORT __declspec(dllimport)
25 #endif
26
27
28 #define JAVA_MAXINT (0x7fffffff)
29
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"
36
37 #define WRITER_CLASS "java/io/Writer"
38
39 #define PACKAGE_PREFIX "org/simantics/pythonlink/"
40
41 #define NDARRAY_CLASS (PACKAGE_PREFIX "NDArray")
42
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"
47
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"
61
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"
75
76 #define COMPONENT_CLASS "org/simantics/databoard/type/Component"
77 #define TAGGEDOBJECT_CLASS "org/simantics/databoard/binding/mutable/TaggedObject"
78
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);
85
86 PyObject *getPythonObject(JNIEnv *env, jobject object, jobject binding);
87
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);
100
101 void setPythonVariable(PyObject *module, PyObject *name, PyObject *value);
102
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);
116
117 #endif // __MAIN_H__