]> gerrit.simantics Code Review - simantics/python.git/blobdiff - org.simantics.pythonlink.win32.x86_64/src/sclpy.h
Added support for dynamically typed data access and a Variable interface.
[simantics/python.git] / org.simantics.pythonlink.win32.x86_64 / src / sclpy.h
index ec3b400325b6f6e4b02ee2f701bcf3bfede88c30..4a2c7de919bcd90700bb9f17f968b7db8c3ff726 100644 (file)
@@ -1,6 +1,19 @@
 #ifndef __MAIN_H__\r
 #define __MAIN_H__\r
 \r
+#define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION\r
+#ifdef _DEBUG\r
+       #undef _DEBUG\r
+       #include <Python.h>  //header for system python import; add include paths\r
+       #include <numpy/arrayobject.h>\r
+       #define _DEBUG 1\r
+#else\r
+       #include <Python.h>  //header for system python import; add include paths\r
+       #include <numpy/arrayobject.h>\r
+#endif\r
+\r
+#include <jni.h> //java connection header\r
+\r
 /*  To use this exported function of dll, include this header\r
  *  in your project.\r
  */\r
     #define DLL_EXPORT __declspec(dllimport)\r
 #endif\r
 \r
+\r
+#define JAVA_MAXINT (0x7fffffff)\r
+\r
+#define RUNTIME_EXCEPTION "java/lang/RuntimeException"\r
+#define ILLEGAL_ARGUMENT_EXCEPTION "java/lang/IllegalArgumentException"\r
+#define OBJECT_CLASS "java/lang/Object"\r
+#define STRING_CLASS "java/lang/String"\r
+#define MAP_CLASS "java/util/Map"\r
+#define SET_CLASS "java/util/Set"\r
+\r
+#define PACKAGE_PREFIX "org/simantics/pythonlink/"\r
+\r
+#define NDARRAY_CLASS (PACKAGE_PREFIX "NDArray")\r
+\r
+#define VARIANT_CLASS "org/simantics/databoard/binding/mutable/Variant"\r
+#define BINDINGS_CLASS "org/simantics/databoard/Bindings"\r
+#define BINDING_CLASS "org/simantics/databoard/binding/Binding"\r
+#define DATATYPE_CLASS "org/simantics/databoard/type/Datatype"\r
+\r
+#define BOOLEANTYPE_CLASS "org/simantics/databoard/type/BooleanType"\r
+#define BYTETYPE_CLASS "org/simantics/databoard/type/ByteType"\r
+#define INTEGERTYPE_CLASS "org/simantics/databoard/type/IntegerType"\r
+#define LONGTYPE_CLASS "org/simantics/databoard/type/LongType"\r
+#define FLOATTYPE_CLASS "org/simantics/databoard/type/FloatType"\r
+#define DOUBLETYPE_CLASS "org/simantics/databoard/type/DoubleType"\r
+#define STRINGTYPE_CLASS "org/simantics/databoard/type/StringType"\r
+#define RECORDTYPE_CLASS "org/simantics/databoard/type/RecordType"\r
+#define ARRAYTYPE_CLASS "org/simantics/databoard/type/ArrayType"\r
+#define MAPTYPE_CLASS "org/simantics/databoard/type/MapType"\r
+#define OPTIONALTYPE_CLASS "org/simantics/databoard/type/OptionalType"\r
+#define UNIONTYPE_CLASS "org/simantics/databoard/type/UnionType"\r
+#define VARIANTTYPE_CLASS "org/simantics/databoard/type/VariantType"\r
+\r
+#define BOOLEANBINDING_CLASS "org/simantics/databoard/binding/BooleanBinding"\r
+#define BYTEBINDING_CLASS "org/simantics/databoard/binding/ByteBinding"\r
+#define INTEGERBINDING_CLASS "org/simantics/databoard/binding/IntegerBinding"\r
+#define LONGBINDING_CLASS "org/simantics/databoard/binding/LongBinding"\r
+#define FLOATBINDING_CLASS "org/simantics/databoard/binding/FloatBinding"\r
+#define DOUBLEBINDING_CLASS "org/simantics/databoard/binding/DoubleBinding"\r
+#define STRINGBINDING_CLASS "org/simantics/databoard/binding/StringBinding"\r
+#define RECORDBINDING_CLASS "org/simantics/databoard/binding/RecordBinding"\r
+#define ARRAYBINDING_CLASS "org/simantics/databoard/binding/ArrayBinding"\r
+#define MAPBINDING_CLASS "org/simantics/databoard/binding/MapBinding"\r
+#define OPTIONALBINDING_CLASS "org/simantics/databoard/binding/OptionalBinding"\r
+#define UNIONBINDING_CLASS "org/simantics/databoard/binding/UnionBinding"\r
+#define VARIANTBINDING_CLASS "org/simantics/databoard/binding/VariantBinding"\r
+\r
+#define COMPONENT_CLASS "org/simantics/databoard/type/Component"\r
+#define TAGGEDOBJECT_CLASS "org/simantics/databoard/binding/mutable/TaggedObject"\r
+\r
+PyObject *getPythonBooleanList(JNIEnv *env, jbooleanArray value);\r
+PyObject *getPythonByteArray(JNIEnv *env, jbyteArray value);\r
+PyObject *getPythonIntegerList(JNIEnv *env, jintArray value);\r
+PyObject *getPythonLongList(JNIEnv *env, jlongArray value);\r
+PyObject *getPythonFloatList(JNIEnv *env, jfloatArray value);\r
+PyObject *getPythonDoubleList(JNIEnv *env, jdoubleArray value);\r
+\r
+PyObject *getPythonObject(JNIEnv *env, jobject object, jobject binding);\r
+\r
+PyObject *getPythonBooleanObject(JNIEnv *env, jobject object, jobject binding);\r
+PyObject *getPythonByteObject(JNIEnv *env, jobject object, jobject binding);\r
+PyObject *getPythonIntegerObject(JNIEnv *env, jobject object, jobject binding);\r
+PyObject *getPythonLongObject(JNIEnv *env, jobject object, jobject binding);\r
+PyObject *getPythonFloatObject(JNIEnv *env, jobject object, jobject binding);\r
+PyObject *getPythonDoubleObject(JNIEnv *env, jobject object, jobject binding);\r
+PyObject *getPythonRecordObject(JNIEnv *env, jobjectArray object, jobject binding);\r
+PyObject *getPythonArrayObject(JNIEnv *env, jobject object, jobject binding);\r
+PyObject *getPythonMapObject(JNIEnv *env, jobject object, jobject binding);\r
+PyObject *getPythonOptionalObject(JNIEnv *env, jobject object, jobject binding);\r
+PyObject *getPythonUnionObject(JNIEnv *env, jobject object, jobject binding);\r
+PyObject *getPythonVariantObject(JNIEnv *env, jobject object, jobject binding);\r
+\r
+void setPythonVariable(PyObject *module, PyObject *name, PyObject *value);\r
+\r
+jobject pythonBoolAsBooleanObject(JNIEnv *env, PyObject *value);\r
+jobject pythonLongAsLongObject(JNIEnv *env, PyObject *value);\r
+jobject pythonFloatAsDoubleObject(JNIEnv *env, PyObject *value);\r
+jobject pythonByteArrayAsByteArray(JNIEnv *env, PyObject *value);\r
+jstring pythonStringAsJavaString(JNIEnv *env, PyObject *string);\r
+jobjectArray pythonSequenceAsObjectArray(JNIEnv *env, PyObject *seq);\r
+jobjectArray pythonSequenceAsStringArray(JNIEnv *env, PyObject *list);\r
+jintArray pythonSequenceAsIntegerArray(JNIEnv *env, PyObject *list);\r
+jlongArray pythonSequenceAsLongArray(JNIEnv *env, PyObject *list);\r
+jdoubleArray pythonSequenceAsDoubleArray(JNIEnv *env, PyObject *list);\r
+jobject pythonDictionaryAsMap(JNIEnv *env, PyObject *dict);\r
+jobject pythonArrayAsNDArray(JNIEnv *env, PyArrayObject *array);\r
+jobject pythonObjectAsObject(JNIEnv *env, PyObject *value);\r
+\r
 #endif // __MAIN_H__\r