summaryrefslogtreecommitdiffstats
path: root/luni/src/main/native/hy2sie.h
diff options
context:
space:
mode:
Diffstat (limited to 'luni/src/main/native/hy2sie.h')
-rw-r--r--luni/src/main/native/hy2sie.h114
1 files changed, 114 insertions, 0 deletions
diff --git a/luni/src/main/native/hy2sie.h b/luni/src/main/native/hy2sie.h
new file mode 100644
index 0000000..d40d0e8
--- /dev/null
+++ b/luni/src/main/native/hy2sie.h
@@ -0,0 +1,114 @@
+#if !defined(hy2sie_h)
+#define hy2sie_h
+
+
+#include "JNIHelp.h"
+#include "jni.h"
+#include "sieb.h"
+
+
+typedef int BOOLEAN;
+#define TRUE 1
+#define FALSE 0
+
+
+// mc: Stuff adopted from hyport.h:
+
+/** HyMaxPath was chosen from unix MAXPATHLEN. Override in platform
+ * specific hyfile implementations if needed.
+ */
+#define HyMaxPath 1024
+
+
+
+// Following definitions from hycomp.h:
+
+/**
+ * Define common types:
+ * <ul>
+ * <li><code>U_32 / I_32</code> - unsigned/signed 32 bits</li>
+ * <li><code>U_16 / I_16</code> - unsigned/signed 16 bits</li>
+ * <li><code>U_8 / I_8</code> - unsigned/signed 8 bits (bytes -- not to be
+ * confused with char)</li>
+ * </ul>
+ */
+
+typedef int I_32;
+typedef short I_16;
+typedef signed char I_8; /* chars can be unsigned */
+typedef unsigned int U_32;
+typedef unsigned short U_16;
+typedef unsigned char U_8;
+
+typedef long long I_64;
+typedef unsigned long long U_64;
+
+/**
+ * Define platform specific types:
+ * <ul>
+ * <li><code>UDATA</code> - unsigned data, can be used as an integer or
+ * pointer storage</li>
+ * <li><code>IDATA</code> - signed data, can be used as an integer or
+ * pointer storage</li>
+ * </ul>
+ */
+/* FIXME: POINTER64 */
+
+typedef I_32 IDATA;
+typedef U_32 UDATA;
+
+
+// Further required definitions from Harmony:
+
+#define HYCONST64(x) x##L
+
+
+#define HY_CFUNC
+#define HY_CDATA
+#define PROTOTYPE(x) x
+#define VMCALL
+#define PVMCALL *
+#define NORETURN
+
+#define GLOBAL_DATA(symbol) ((void*)&(symbol))
+
+
+// Following definitions substitute the HyPortLibrary simply with the JNIEnv
+
+typedef JNIEnv HyPortLibrary;
+
+#define PORT_ACCESS_FROM_ENV(env) HyPortLibrary *privatePortLibrary = env
+#define PORT_ACCESS_FROM_PORT(portLibrary) HyPortLibrary *privatePortLibrary = portLibrary
+#define PORTLIB privatePortLibrary
+
+
+// Following defintion is used to avoide quite a few signedness warnings:
+#define mcSignednessBull void *
+
+
+// Following the substitution of hyfile:
+
+#include <fcntl.h>
+
+#define HyOpenRead O_RDONLY
+#define hyfile_open(a, b, c) open(a, b, c)
+
+#define HySeekEnd SEEK_END
+#define HySeekSet SEEK_SET
+#define HySeekCur SEEK_CUR
+#define hyfile_seek(a, b, c) lseek(a, b, c)
+
+#define hyfile_read(a, b, c) read(a, b, c)
+
+#define hyfile_close(a) close(a)
+
+
+// And further substitutions:
+
+#define hymem_allocate_memory(byteCount) sieb_malloc(privatePortLibrary, byteCount)
+#define hymem_free_memory(pointer) sieb_free(privatePortLibrary, pointer)
+
+#define ioh_convertToPlatform(path) sieb_convertToPlatform (path)
+
+
+#endif /* hy2sie_h */