diff --git a/resources/NativeInterface/eva2_problems_NativeProblem.h b/resources/NativeInterface/eva2_problems_NativeProblem.h new file mode 100755 index 00000000..109fada7 --- /dev/null +++ b/resources/NativeInterface/eva2_problems_NativeProblem.h @@ -0,0 +1,31 @@ +/* DO NOT EDIT THIS FILE - it is machine generated */ +#include +/* Header for class eva2_problems_NativeProblem */ + +#ifndef _Included_eva2_problems_NativeProblem +#define _Included_eva2_problems_NativeProblem +#ifdef __cplusplus +extern "C" { +#endif +#undef eva2_problems_NativeProblem_serialVersionUID +#define eva2_problems_NativeProblem_serialVersionUID -3904130243174390134LL +/* + * Class: eva2_problems_NativeProblem + * Method: evaluate + * Signature: ([D)[D + */ +JNIEXPORT jdoubleArray JNICALL Java_eva2_problems_NativeProblem_evaluate + (JNIEnv *, jobject, jdoubleArray); + +/* + * Class: eva2_problems_NativeProblem + * Method: getName + * Signature: ()Ljava/lang/String; + */ +JNIEXPORT jstring JNICALL Java_eva2_problems_NativeProblem_getName + (JNIEnv *, jobject); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/resources/NativeInterface/eva2problem.c b/resources/NativeInterface/eva2problem.c new file mode 100755 index 00000000..4615f192 --- /dev/null +++ b/resources/NativeInterface/eva2problem.c @@ -0,0 +1,29 @@ +#include "eva2_problems_NativeProblem.h" + +JNIEXPORT jdoubleArray JNICALL Java_eva2_problems_NativeProblem_evaluate + (JNIEnv *env, jobject obj, jdoubleArray array) { + int i; + double result[1] = {0.0}; + jdoubleArray resultArray = (*env)->NewDoubleArray(env, 1); + if (resultArray == NULL) { + return NULL; /* out of memory :( */ + } + jsize len = (*env)->GetArrayLength(env, array); + jdouble *body = (*env)->GetDoubleArrayElements(env, array, 0); + + // Calculate sum(x_i^2) + for(i=0; iReleaseDoubleArrayElements(env, array, body, 0); + // Set result + (*env)->SetDoubleArrayRegion(env, resultArray, 0, 1, result); + return resultArray; +} + +JNIEXPORT jstring JNICALL Java_eva2_problems_NativeProblem_getName + (JNIEnv *env, jobject obj) { + return (*env)->NewStringUTF(env, "Native Sphere"); +} diff --git a/src/eva2/problems/NativeProblem.java b/src/eva2/problems/NativeProblem.java new file mode 100644 index 00000000..1a83797f --- /dev/null +++ b/src/eva2/problems/NativeProblem.java @@ -0,0 +1,27 @@ +package eva2.problems; + +/** + * + */ +public class NativeProblem extends AbstractProblemDouble { + + private static boolean isLibraryLoaded = false; + + public NativeProblem() { + if (!isLibraryLoaded) { + System.loadLibrary("eva2problem"); + } + isLibraryLoaded = true; + } + + @Override + public native double[] evaluate(double[] x); + + @Override + public native String getName(); + + @Override + public Object clone() { + return this.clone(); + } +}