blob: 83438f1eeda4dc958c877e8ed9491cad8648bc2c [file] [log] [blame]
#include <stdio.h>
#include "Test.h"
void Java_Test_println__Z(JNIEnv *env, jclass clazz, jboolean aBoolean)
{
if (aBoolean)
puts("true");
else
puts("false");
}
void Java_Test_println__I(JNIEnv *env, jclass clazz, jint aInt)
{
printf("%d\n", aInt);
}
void Java_Test_println__J(JNIEnv *env, jclass clazz, jlong aLong)
{
printf("%Ld\n", aLong);
}
void Java_Test_println__F(JNIEnv *env, jclass clazz, jfloat aFloat)
{
printf("%f\n", aFloat);
}
void Java_Test_println__D(JNIEnv *env, jclass clazz, jdouble aDouble)
{
printf("%f\n", aDouble);
}
void Java_Test_println___3B(JNIEnv *env, jclass clazz, jbyteArray array)
{
jint size = (*env)->GetArrayLength(env, array);
jbyte* elements = (*env)->GetByteArrayElements(env, array, NULL);
printf("%.*s\n", size, elements);
// Since we didn't modify the array there is no point in copying it back
(*env)->ReleaseByteArrayElements(env, array, elements, JNI_ABORT);
}
void Java_Test_printFields(JNIEnv *env, jobject obj)
{
jclass classTest;
jclass objClass;
jfieldID id;
jboolean z;
jint i;
jlong l;
jfloat f;
jdouble d;
jshort s;
jbyte b;
classTest = (*env)->FindClass(env, "Test");
if (!classTest)
printf("ERROR: Class Test not found!\n");
if (!(*env)->IsInstanceOf(env, obj, classTest))
printf("ERROR: IsInstanceOf\n");
objClass = (*env)->GetObjectClass(env, obj);
if (!(*env)->IsAssignableFrom(env, objClass, classTest))
printf("ERROR: IsAssignableFrom\n");
id = (*env)->GetFieldID(env, objClass, "z", "Z");
z = (*env)->GetBooleanField(env, obj, id);
Java_Test_println__Z(env, objClass, z);
id = (*env)->GetFieldID(env, objClass, "i", "I");
i = (*env)->GetIntField(env, obj, id);
Java_Test_println__I(env, objClass, i);
id = (*env)->GetFieldID(env, objClass, "l", "J");
l = (*env)->GetLongField(env, obj, id);
Java_Test_println__J(env, objClass, l);
id = (*env)->GetFieldID(env, objClass, "f", "F");
f = (*env)->GetFloatField(env, obj, id);
Java_Test_println__F(env, objClass, f);
id = (*env)->GetFieldID(env, objClass, "d", "D");
d = (*env)->GetDoubleField(env, obj, id);
Java_Test_println__D(env, objClass, d);
id = (*env)->GetFieldID(env, objClass, "s", "S");
s = (*env)->GetShortField(env, obj, id);
Java_Test_println__I(env, objClass, s);
id = (*env)->GetFieldID(env, objClass, "b", "B");
b = (*env)->GetByteField(env, obj, id);
Java_Test_println__I(env, objClass, b);
}
void Java_Test_printStaticFields(JNIEnv *env, jclass clazz)
{
jclass classTest;
jfieldID id;
jboolean z;
jint i;
jlong l;
jfloat f;
jdouble d;
jshort s;
jbyte b;
classTest = (*env)->FindClass(env, "Test");
if (!classTest)
printf("ERROR: Class Test not found!\n");
if (!(*env)->IsAssignableFrom(env, clazz, classTest))
printf("ERROR: IsAssignableFrom\n");
id = (*env)->GetStaticFieldID(env, clazz, "Z", "Z");
z = (*env)->GetStaticBooleanField(env, clazz, id);
Java_Test_println__Z(env, clazz, z);
id = (*env)->GetStaticFieldID(env, clazz, "I", "I");
i = (*env)->GetStaticIntField(env, clazz, id);
Java_Test_println__I(env, clazz, i);
id = (*env)->GetStaticFieldID(env, clazz, "L", "J");
l = (*env)->GetStaticLongField(env, clazz, id);
Java_Test_println__J(env, clazz, l);
id = (*env)->GetStaticFieldID(env, clazz, "F", "F");
f = (*env)->GetStaticFloatField(env, clazz, id);
Java_Test_println__F(env, clazz, f);
id = (*env)->GetStaticFieldID(env, clazz, "D", "D");
d = (*env)->GetStaticDoubleField(env, clazz, id);
Java_Test_println__D(env, clazz, d);
id = (*env)->GetStaticFieldID(env, clazz, "S", "S");
s = (*env)->GetStaticShortField(env, clazz, id);
Java_Test_println__I(env, clazz, s);
id = (*env)->GetStaticFieldID(env, clazz, "B", "B");
b = (*env)->GetStaticByteField(env, clazz, id);
Java_Test_println__I(env, clazz, b);
}
void Java_Test_printMethods(JNIEnv *env, jobject obj)
{
jclass classTest;
jclass objClass;
jfieldID id;
jboolean z;
jint i;
jlong l;
jfloat f;
jdouble d;
jshort s;
jbyte b;
classTest = (*env)->FindClass(env, "Test");
if (!classTest)
printf("ERROR: Class Test not found!\n");
if (!(*env)->IsInstanceOf(env, obj, classTest))
printf("ERROR: IsInstanceOf\n");
objClass = (*env)->GetObjectClass(env, obj);
if (!(*env)->IsAssignableFrom(env, objClass, classTest))
printf("ERROR: IsAssignableFrom\n");
id = (*env)->GetMethodID(env, objClass, "z", "()Z");
z = (*env)->CallBooleanMethod(env, obj, id);
Java_Test_println__Z(env, objClass, z);
id = (*env)->GetMethodID(env, objClass, "i", "(I)I");
i = (*env)->CallIntMethod(env, obj, id, 2);
Java_Test_println__I(env, objClass, i);
id = (*env)->GetMethodID(env, objClass, "j", "(BS)J");
l = (*env)->CallLongMethod(env, obj, id, 23, 45);
Java_Test_println__J(env, objClass, l);
id = (*env)->GetMethodID(env, objClass, "f", "(B)F");
f = (*env)->CallFloatMethod(env, obj, id, 123);
Java_Test_println__F(env, objClass, f);
id = (*env)->GetMethodID(env, objClass, "d", "(IJ)D");
d = (*env)->CallDoubleMethod(env, obj, id, 654, 123ll);
Java_Test_println__D(env, objClass, d);
id = (*env)->GetMethodID(env, objClass, "s", "(DB)S");
s = (*env)->CallShortMethod(env, obj, id, 2.0, 123);
Java_Test_println__I(env, objClass, s);
id = (*env)->GetMethodID(env, objClass, "b", "(SF)B");
b = (*env)->CallByteMethod(env, obj, id, 23, -2.0);
Java_Test_println__I(env, objClass, b);
}
void Java_Test_printStaticMethods(JNIEnv *env, jobject clazz)
{
jclass classTest;
jfieldID id;
jboolean z;
jint i;
jlong l;
jfloat f;
jdouble d;
jshort s;
jbyte b;
classTest = (*env)->FindClass(env, "Test");
if (!classTest)
printf("ERROR: Class Test not found!\n");
if (!(*env)->IsAssignableFrom(env, clazz, classTest))
printf("ERROR: IsAssignableFrom\n");
id = (*env)->GetStaticMethodID(env, clazz, "Z", "()Z");
z = (*env)->CallStaticBooleanMethod(env, clazz, id);
Java_Test_println__Z(env, clazz, z);
id = (*env)->GetStaticMethodID(env, clazz, "I", "(I)I");
i = (*env)->CallStaticIntMethod(env, clazz, id, 2);
Java_Test_println__I(env, clazz, i);
id = (*env)->GetStaticMethodID(env, clazz, "J", "(BS)J");
l = (*env)->CallStaticLongMethod(env, clazz, id, 23, 45);
Java_Test_println__J(env, clazz, l);
id = (*env)->GetStaticMethodID(env, clazz, "F", "(B)F");
f = (*env)->CallStaticFloatMethod(env, clazz, id, 123);
Java_Test_println__F(env, clazz, f);
id = (*env)->GetStaticMethodID(env, clazz, "D", "(IJ)D");
d = (*env)->CallStaticDoubleMethod(env, clazz, id, 654, 12354123ll);
Java_Test_println__D(env, clazz, d);
id = (*env)->GetStaticMethodID(env, clazz, "S", "(DB)S");
s = (*env)->CallStaticShortMethod(env, clazz, id, 2.0, 123);
Java_Test_println__I(env, clazz, s);
id = (*env)->GetStaticMethodID(env, clazz, "B", "(SF)B");
b = (*env)->CallStaticByteMethod(env, clazz, id, 21, -58.0);
Java_Test_println__I(env, clazz, b);
}