void JPClass::postLoad() { // Is this an interface? m_IsInterface = JPJni::isInterface(m_Class); loadSuperClass(); loadSuperInterfaces(); loadFields(); loadMethods(); loadConstructors(); }
int ClassFile::loadClass(std::string classFileName) { std::ifstream file; int length; char * p; file.open(classFileName.c_str()); if(file.is_open()) { file.seekg(0,std::ios::end); length = file.tellg(); file.seekg(0, std::ios::beg); p = new char[length]; file.read(p, length); file.close(); } else { std::cout << "File (" << classFileName << ") load failed!" << std::endl; throw 25; } magic = getu4(p); p += 4; if(magic != 0xCAFEBABE) { std::cout << "Magic constant is not right!:" << std::endl; return 1; } minor_version = getu2(p); p += 2; major_version = getu2(p); p += 2; constant_pool_count = getu2(p); p += 2; if(constant_pool_count > 0) { loadConstants(p); } access_flags = getu2(p); p += 2; this_class = getu2(p); p += 2; super_class = getu2(p); p += 2; interfaces_count = getu2(p); p += 2; if(interfaces_count > 0) { loadInterfaces(p); } fields_count = getu2(p); p += 2; if(fields_count > 0) { loadFields(p); } methods_count = getu2(p); p += 2; if(methods_count > 0) { loadMethods(p); } attributes_count = getu2(p); p += 2; if(attributes_count > 0) { loadAttributes(p); } return 0; }