* src/native/jni.cpp (GetObjectClass): Remove null pointer check.
[cacao.git] / src / native / llni.h
index 865d2b9629546470000feec37efd6c3dbc666ae1..77cb9299b68a2000778c09bc10d8cb0599568513 100644 (file)
 #endif
 
 
-#include "native/localref.h"
+#include "native/localref.hpp"
 
-#include "threads/thread.h"
+#include "threads/thread.hpp"
 
 
-/* LLNI macros *****************************************************************
-
-   The following macros should be used whenever a Java Object is
-   accessed in native code without the use of an JNI function.
-
-   LLNI_field_set_val, LLNI_field_get_val:
-     Deal with primitive values like integer and float values. Do
-     not use these macros to access pointers or references!
-
-   LLNI_field_set_ref, LLNI_field_get_ref:
-     Deal with references to other objects.
-
-   LLNI_field_set_cls, LLNI_field_get_cls:
-     Deal with references to Java Classes which are internally
-     represented by classinfo or java_lang_Class.
-
-*******************************************************************************/
-
-#define LLNI_field_set_val(obj, field, value) \
-       LLNI_field_direct(obj, field) = (value)
-
-#define LLNI_field_set_ref(obj, field, reference) \
-       LLNI_field_direct(obj, field) = LLNI_UNWRAP(reference)
-
-#define LLNI_field_set_cls(obj, field, value) \
-       LLNI_field_direct(obj, field) = (java_lang_Class *) (value)
-
-#define LLNI_field_get_val(obj, field, variable) \
-       (variable) = LLNI_field_direct(obj, field)
-
-#define LLNI_field_get_ref(obj, field, variable) \
-       (variable) = LLNI_WRAP(LLNI_field_direct(obj, field))
-
-#define LLNI_field_get_cls(obj, field, variable) \
-       (variable) = (classinfo *) LLNI_field_direct(obj, field)
-
 #define LLNI_class_get(obj, variable) \
-       (variable) = LLNI_field_direct((java_handle_t *) obj, vftbl->class)
+       (variable) = LLNI_field_direct((java_handle_t *) obj, vftbl->clazz)
 
 
 /* LLNI_equals ****************************************************************
 *******************************************************************************/
 
 #define LLNI_classinfo_wrap(classinfo) \
-       ((java_lang_Class *) LLNI_WRAP(classinfo))
+       ((java_handle_t*) LLNI_WRAP(classinfo))
 
 #define LLNI_classinfo_unwrap(clazz) \
        ((classinfo *) LLNI_UNWRAP((java_handle_t *) (clazz)))
 
 #define LLNI_field_direct(obj, field) (LLNI_DIRECT(obj)->field)
 #define LLNI_vftbl_direct(obj)        (LLNI_DIRECT((java_handle_t *) (obj))->vftbl)
-#define LLNI_array_direct(arr, index) (LLNI_DIRECT(arr)->data[(index)])
-#define LLNI_array_data(arr)          (LLNI_DIRECT(arr)->data)
-#define LLNI_array_size(arr)          (LLNI_DIRECT((java_handle_objectarray_t *) (arr))->header.size)
 
 
 /* LLNI critical sections ******************************************************
 # define LLNI_CRITICAL_END_THREAD(t)
 #endif
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 void llni_critical_start();
 void llni_critical_end();
 void llni_critical_start_thread(threadobject *t);
 void llni_critical_end_thread(threadobject *t);
 
+#ifdef __cplusplus
+}
+#endif
 
 #endif /* _LLNI_H */