#include "arch.h"
-#include "mm/memory.h"
+#include "mm/memory.hpp"
#include "threads/mutex.hpp"
-#include "toolbox/list.h"
-#include "toolbox/logging.h"
+#include "toolbox/list.hpp"
+#include "toolbox/logging.hpp"
#include "toolbox/util.h"
#include "vm/exceptions.hpp"
#include "vm/properties.hpp"
#include "vm/suck.hpp"
#include "vm/vm.hpp"
-#include "vm/zip.h"
-
-
-/* global variables ***********************************************************/
-
-list_t *list_classpath_entries;
-
-
-/* suck_init *******************************************************************
-
- Initializes the suck subsystem like initializing the classpath
- entries list.
-
-*******************************************************************************/
-
-bool suck_init(void)
-{
- TRACESUBSYSTEMINITIALIZATION("suck_init");
-
- list_classpath_entries = list_create(OFFSET(list_classpath_entry, linkage));
-
- /* everything's ok */
-
- return true;
-}
+#include "vm/zip.hpp"
/* scandir_filter **************************************************************
}
-/* suck_add ********************************************************************
-
- Adds a classpath to the global classpath entries list.
-
-*******************************************************************************/
-
-void suck_add(char *classpath)
+/**
+ * Adds a classpath to the global classpath entries list.
+ */
+void SuckClasspath::add(char *classpath)
{
list_classpath_entry *lce;
char *start;
}
#else
- VM::get_current()->abort("suck_add: zip/jar files not supported");
+ os::abort("suck_add: zip/jar files not supported");
#endif
}
else {
/* add current classpath entry, if no error */
if (lce != NULL)
- list_add_last(list_classpath_entries, lce);
+ push_back(lce);
}
/* goto next classpath entry, skip ':' delimiter */
}
-/* suck_add_from_property ******************************************************
-
- Adds a classpath form a property entry to the global classpath
- entries list.
-
-*******************************************************************************/
-
-void suck_add_from_property(const char *key)
+/**
+ * Adds a classpath form a property entry to the global classpath
+ * entries list.
+ */
+void SuckClasspath::add_from_property(const char *key)
{
const char *value;
const char *start;
s4 namlen;
char *p;
- /* get the property value */
- Properties properties = VM::get_current()->get_properties();
+ // Get the property value.
+ Properties& properties = VM::get_current()->get_properties();
value = properties.get(key);
if (value == NULL)
u8 suck_u8(classbuffer *cb)
{
-#if U8_AVAILABLE == 1
u8 a;
a = SUCK_BE_U8(cb->pos);
cb->pos += 8;
return a;
-#else
- u8 v;
-
- v.high = suck_u4(cb);
- v.low = suck_u4(cb);
-
- return v;
-#endif
}
utf_copy(filename, c->name);
strcat(filename, ".class");
+ // Get current list of classpath entries.
+ SuckClasspath& suckclasspath = VM::get_current()->get_suckclasspath();
+
/* walk through all classpath entries */
- for (lce = (list_classpath_entry*) list_first(list_classpath_entries); lce != NULL && cb == NULL;
- lce = (list_classpath_entry*) list_next(list_classpath_entries, lce)) {
+ for (SuckClasspath::iterator it = suckclasspath.begin(); it != suckclasspath.end() && cb == NULL; it++) {
+ lce = *it;
+
#if defined(ENABLE_ZLIB)
if (lce->type == CLASSPATH_ARCHIVE) {