lib/core: Inlined implementation of `abs`
[nit.git] / lib / java / base.nit
index 0db04a4..10950a2 100644 (file)
@@ -193,3 +193,95 @@ redef extern class JavaObject
                return to_java_string.to_s
        end
 end
+
+# Java class: java.lang.Throwable
+extern class JavaThrowable in "Java" `{ java.lang.Throwable `}
+       super JavaObject
+
+       # Java implementation: java.lang.String java.lang.Throwable.getMessage()
+       fun message: JavaString in "Java" `{
+               return self.getMessage();
+       `}
+
+       # Java implementation: java.lang.String java.lang.Throwable.getLocalizedMessage()
+       fun localized_message: JavaString in "Java" `{
+               return self.getLocalizedMessage();
+       `}
+
+       # Java implementation:  java.lang.Throwable.printStackTrace()
+       fun print_stack_trace in "Java" `{
+               self.printStackTrace();
+       `}
+
+       # Java implementation: java.lang.Throwable java.lang.Throwable.getCause()
+       fun cause: JavaThrowable in "Java" `{
+               return self.getCause();
+       `}
+
+       redef fun new_global_ref import sys, Sys.jni_env `{
+               Sys sys = JavaThrowable_sys(self);
+               JNIEnv *env = Sys_jni_env(sys);
+               return (*env)->NewGlobalRef(env, self);
+       `}
+
+       redef fun pop_from_local_frame_with_env(jni_env) `{
+               return (*jni_env)->PopLocalFrame(jni_env, self);
+       `}
+end
+
+# Java class: java.lang.Exception
+extern class JavaException in "Java" `{ java.lang.Exception `}
+       super JavaThrowable
+
+       redef fun new_global_ref import sys, Sys.jni_env `{
+               Sys sys = JavaException_sys(self);
+               JNIEnv *env = Sys_jni_env(sys);
+               return (*env)->NewGlobalRef(env, self);
+       `}
+
+       redef fun pop_from_local_frame_with_env(jni_env) `{
+               return (*jni_env)->PopLocalFrame(jni_env, self);
+       `}
+end
+
+redef class JniEnv
+       # Create new `Java.nio.ByteBuffer` referring to `address` with the given `capacity` in bytes
+       #
+       # JNI function: NewDirectByteBuffer
+       fun new_direct_byte_buffer(address: Pointer, capacity: Int): Java_nio_ByteBuffer `{
+               return (*self)->NewDirectByteBuffer(self, address, capacity);
+       `}
+end
+
+# Container for data of a specific primitive type
+#
+# Java class: java.nio.Buffer
+extern class Java_nio_Buffer in "Java" `{ java.nio.Buffer `}
+       super JavaObject
+
+       # Address pointed by this buffer
+       #
+       # JNI function: GetDirectBufferAddress
+       fun direct_buffer_address(jni_env: JniEnv): Pointer `{
+               return (*jni_env)->GetDirectBufferAddress(jni_env, self);
+       `}
+
+       # Capacity of this this buffer
+       #
+       # JNI function: GetDirectBufferCapacity
+       fun direct_buffer_capacity(jni_env: JniEnv): Int `{
+               return (*jni_env)->GetDirectBufferCapacity(jni_env, self);
+       `}
+end
+
+# A byte buffer
+#
+# Java class: java.nio.ByteBuffer
+extern class Java_nio_ByteBuffer in "Java" `{ java.nio.ByteBuffer `}
+       super Java_nio_Buffer
+
+       # Allocate a new `java.nio.ByteBuffer` with `allocateDirect`
+       new direct(size: Int) in "Java" `{
+               return java.nio.ByteBuffer.allocateDirect((int)size);
+       `}
+end