Example #1
0
void JPClass::postLoad() 
{
	// Is this an interface?
	m_IsInterface = JPJni::isInterface(m_Class);

	loadSuperClass();
	loadSuperInterfaces();
	loadFields();
	loadMethods();
	loadConstructors();
}
Example #2
0
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;
}