-/* loader.h - class loader header
+/* vm/loader.h - class loader header
- Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
- R. Grafl, A. Krall, C. Kruegel, C. Oates, R. Obermaisser,
- M. Probst, S. Ring, E. Steiner, C. Thalinger, D. Thuernbeck,
- P. Tomsich, J. Wenninger
+ Copyright (C) 1996-2005 R. Grafl, A. Krall, C. Kruegel, C. Oates,
+ R. Obermaisser, M. Platter, M. Probst, S. Ring, E. Steiner,
+ C. Thalinger, D. Thuernbeck, P. Tomsich, C. Ullrich, J. Wenninger,
+ Institut f. Computersprachen - TU Wien
This file is part of CACAO.
Authors: Reinhard Grafl
- $Id: loader.h 1112 2004-05-31 15:47:20Z jowenn $
+ $Id: loader.h 1735 2004-12-07 14:33:27Z twisti $
*/
#include <stdio.h>
-#ifdef USE_ZLIB
-#include "unzip.h"
+#if defined(USE_ZLIB)
+# include "vm/unzip.h"
#endif
extern classinfo *pseudo_class_Arraystub;
extern classinfo *pseudo_class_Null;
extern classinfo *pseudo_class_New;
-extern vftbl *pseudo_class_Arraystub_vftbl;
+extern vftbl_t *pseudo_class_Arraystub_vftbl;
extern utf *array_packagename;
/* (used by class_new, don't use directly) */
void class_new_array(classinfo *c);
+#define LAZYLOADING(class) { \
+ if (!class->loaded) \
+ if (!class_load(class)) \
+ return 0; \
+ if (!class->linked) \
+ if (!class_link(class)) \
+ return 0; }
+
+
classinfo *class_load(classinfo *c);
classinfo *class_load_intern(classbuffer *cb);
classinfo *class_link(classinfo *c);
+void class_free(classinfo *c);
void field_display(fieldinfo *f);
void method_display(methodinfo *m);
+void method_display_w_class(methodinfo *m);
utf* clinit_desc();
utf* clinit_name();
typedef union classpath_info {
struct {
- int type;
+ s4 type;
union classpath_info *next;
- char *filename;
- int pathlen; } filepath;
-#ifdef USE_ZLIB
+ char *path;
+ s4 pathlen;
+ } filepath;
+#if defined(USE_ZLIB)
struct {
- int type;
+ s4 type;
union classpath_info *next;
- unzFile uf;
+ unzFile uf;
} archive;
#endif
} classpath_info;