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