* bug fixing in native library hash code, it should work now completely, at
[cacao.git] / src / native / native.h
index ab5aecddeac8ca2b45c3c00a17f165dfee4a59c3..07dc02ab2d451246cb4eac082fe6e080004c4377 100644 (file)
@@ -28,7 +28,7 @@
 
    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;
@@ -72,15 +100,21 @@ struct nativecompref {
 
 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);