Changes: Christian Thalinger
- $Id: native.h 2690 2005-06-14 17:48:49Z twisti $
+ $Id: native.h 2707 2005-06-15 13:40:36Z twisti $
*/
#ifndef _NATIVE_H
#define _NATIVE_H
+#if !defined(STATIC_CLASSPATH)
+# include "libltdl/ltdl.h"
+#endif
+
#include "vm/class.h"
#include "vm/global.h"
#include "vm/method.h"
typedef struct nativeref nativeref;
typedef struct nativecompref nativecompref;
+
+#if !defined(STATIC_CLASSPATH)
+typedef struct library_hash_loader_entry library_hash_loader_entry;
+typedef struct library_hash_name_entry library_hash_name_entry;
+
+/* library_hash_loader_entry **************************************************/
+
+struct library_hash_loader_entry {
+ java_objectheader *loader; /* class loader */
+ library_hash_name_entry *namelink;/* libraries loaded by this loader */
+ library_hash_loader_entry *hashlink;/* link for external chaining */
+};
+
+
+/* library_hash_name_entry ****************************************************/
+
+struct library_hash_name_entry {
+ utf *name; /* library name */
+ lt_dlhandle handle; /* libtool library handle */
+ library_hash_name_entry *hashlink; /* link for external chaining */
+};
+#endif
+
+
struct nativeref {
char *classname;
char *methodname;
void use_class_as_object(classinfo *c);
-/* load classes required for native methods */
+/* initialize native subsystem */
bool native_init(void);
/* find native function */
functionptr native_findfunction(utf *cname, utf *mname,
utf *desc, bool isstatic);
+#if !defined(STATIC_CLASSPATH)
+/* add a library to the library hash */
+void native_library_hash_add(utf *filename, java_objectheader *loader,
+ lt_dlhandle handle);
+
/* resolve native function */
functionptr native_resolve_function(methodinfo *m);
+#endif
/* create new object on the heap and call the initializer */
java_objectheader *native_new_and_init(classinfo *c);