Exemplo n.º 1
0
        //------------------------------------------------------------------------------
        //------------------------------------------------------------------------------
        JavaStaticClass::JavaStaticClass(const JavaStaticClassDef& in_javaStaticClassDef)
        {
            auto environment = JavaVirtualMachine::Get()->GetJNIEnvironment();

            //Get the class
            m_className = in_javaStaticClassDef.GetClassName();
            jclass jClass = environment->FindClass(m_className.c_str());
            CS_ASSERT(jClass != nullptr, "Could not find Java class: '" + m_className + "'");

            m_javaClass = static_cast<jclass>(environment->NewGlobalRef(jClass));
            environment->DeleteLocalRef(jClass);

            //setup the method references
            for (const auto& method : in_javaStaticClassDef.GetMethods())
            {
                CS_ASSERT(m_methods.find(method.first) == m_methods.end(), "Method '" + method.first + "' has already been added to Java static class '" + m_className + "'");

                MethodInfo info;
                info.m_returnType = JavaMethodSignature::CalcReturnType(method.second);
                info.m_numArguments = JavaMethodSignature::CalcNumArguments(method.second);
                info.m_methodId = environment->GetStaticMethodID(m_javaClass, method.first.c_str(), method.second.c_str());

                CS_ASSERT(info.m_methodId != nullptr, "Could not find method '" + method.first + "' in Java static class '" + m_className + "'");

                m_methods.emplace(method.first, info);
            }
        }
Exemplo n.º 2
0
char *
initReflectanceMethods(JNIEnv *env)
{
 jclass MethodClass;
  MethodClass = VMENV FindClass(env, "java/lang/reflect/Method");

  MUST_GET_METHOD_ID(MethodIDs.getModifiers,  MethodClass, NULL, "getModifiers","()I", env);
  MUST_GET_METHOD_ID(MethodIDs.getReturnType, MethodClass, NULL, "getReturnType","()Ljava/lang/Class;", env);
  MUST_GET_METHOD_ID(MethodIDs.getParameters, MethodClass, NULL, "getParameterTypes","()[Ljava/lang/Class;", env);
  MUST_GET_METHOD_ID(MethodIDs.getClass,      MethodClass, NULL, "getDeclaringClass","()Ljava/lang/Class;", env);
  MUST_GET_METHOD_ID(MethodIDs.getName,       MethodClass, NULL, "getName","()Ljava/lang/String;", env);
  MUST_GET_METHOD_ID(MethodIDs.getExceptions, MethodClass, NULL, "getExceptionTypes","()[Ljava/lang/Class;", env);



  MethodClass = VMENV FindClass(env, "java/lang/reflect/Constructor");

  MUST_GET_METHOD_ID(ConstructorIDs.getModifiers,  MethodClass, NULL, "getModifiers","()I", env);

  MUST_GET_METHOD_ID(ConstructorIDs.getParameters, MethodClass, NULL, "getParameterTypes","()[Ljava/lang/Class;", env);
  MUST_GET_METHOD_ID(ConstructorIDs.getClass,      MethodClass, NULL, "getDeclaringClass","()Ljava/lang/Class;", env);
  MUST_GET_METHOD_ID(ConstructorIDs.getName,       MethodClass, NULL, "getName","()Ljava/lang/String;", env);
  MUST_GET_METHOD_ID(ConstructorIDs.getExceptions, MethodClass, NULL, "getExceptionTypes","()[Ljava/lang/Class;", env);

  MethodClass = VMENV FindClass(env, "java/lang/reflect/Modifier");
  ModifierStringID = VMENV GetStaticMethodID(env, MethodClass, "toString", "(I)Ljava/lang/String;");
  if(ModifierStringID == NULL)
     fprintf(stderr, "Exception getting static method for Modifier - toString\n");fflush(stderr);    
 
 return(NULL);
}
Exemplo n.º 3
0
void Application::quit()
{
    auto env = df3d::AndroidServices::getEnv();

    auto cls = env->FindClass("org/flaming0/df3d/Df3dAndroidServices");
    auto methId = env->GetStaticMethodID(cls, "quitApp", "()V");

    env->CallStaticVoidMethod(cls, methId);
}