diff options
Diffstat (limited to 'luni/src/main/native/hy2sie.h')
-rw-r--r-- | luni/src/main/native/hy2sie.h | 114 |
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 */ |