JAVA_OBJECT java_io_File_listImpl___byte_1ARRAY(JAVA_OBJECT n1) { //XMLVM_BEGIN_NATIVE[java_io_File_listImpl___byte_1ARRAY] // TODO: There may be memory management issues in this implementation org_xmlvm_runtime_XMLVMArray *array = (org_xmlvm_runtime_XMLVMArray *) __NEW_org_xmlvm_runtime_XMLVMArray(); array->fields.org_xmlvm_runtime_XMLVMArray.type_ = __CLASS_org_xmlvm_runtime_XMLVMArray; array->fields.org_xmlvm_runtime_XMLVMArray.length_ = 256; array->fields.org_xmlvm_runtime_XMLVMArray.array_ = XMLVM_MALLOC(sizeof(JAVA_OBJECT) * 256); JAVA_OBJECT *subarray = (JAVA_OBJECT *) array->fields.org_xmlvm_runtime_XMLVMArray.array_; int i = 0; for (i = 0; i < 256; i++) { org_xmlvm_runtime_XMLVMArray *array2 = (org_xmlvm_runtime_XMLVMArray *) __NEW_org_xmlvm_runtime_XMLVMArray(); array2->fields.org_xmlvm_runtime_XMLVMArray.type_ = __CLASS_byte; array2->fields.org_xmlvm_runtime_XMLVMArray.length_ = 256; array2->fields.org_xmlvm_runtime_XMLVMArray.array_ = XMLVM_MALLOC(sizeof(char) * 256); subarray[i] = (JAVA_OBJECT) array2; } // Get the char* fileName = XMLVMUtil_convertFromByteArray(n1); DIR *d; struct dirent *e; if (d = opendir(fileName)) { i = 0; int j = 0; while (e = readdir(d)) { if (i < 256) { // TODO: What if there are more than 256 files? org_xmlvm_runtime_XMLVMArray *array2 = (org_xmlvm_runtime_XMLVMArray *) (subarray[i]); char *bytearray = array2->fields.org_xmlvm_runtime_XMLVMArray.array_; for (j = 0; j < 256; j++) { bytearray[j] = e->d_name[j]; if (e->d_name[j] == 0) { array2->fields.org_xmlvm_runtime_XMLVMArray.length_ = j; break; } } i++; } // Add e->d_name to array! } array->fields.org_xmlvm_runtime_XMLVMArray.length_ = i; closedir(d); } else { // TODO: Throw IOException? } return array; //XMLVM_END_NATIVE }
static JAVA_OBJECT constructor_dispatcher(JAVA_OBJECT constructor, JAVA_OBJECT arguments) { JAVA_OBJECT obj = __NEW_org_xmlvm_runtime_XMLVMArray(); java_lang_reflect_Constructor* c = (java_lang_reflect_Constructor*) constructor; org_xmlvm_runtime_XMLVMArray* args = (org_xmlvm_runtime_XMLVMArray*) arguments; JAVA_ARRAY_OBJECT* argsArray = (JAVA_ARRAY_OBJECT*) args->fields.org_xmlvm_runtime_XMLVMArray.array_; switch (c->fields.java_lang_reflect_Constructor.slot_) { case 0: org_xmlvm_runtime_XMLVMArray___INIT____java_lang_Class_int_java_lang_Object(obj, argsArray[0], ((java_lang_Integer*) argsArray[1])->fields.java_lang_Integer.value_, argsArray[2]); break; default: XMLVM_INTERNAL_ERROR(); break; } return obj; }