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