Add NativeProblem that loads libeva2problem.jnilib if present.
				
					
				
			closes #47
This commit is contained in:
		
							
								
								
									
										31
									
								
								resources/NativeInterface/eva2_problems_NativeProblem.h
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										31
									
								
								resources/NativeInterface/eva2_problems_NativeProblem.h
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,31 @@ | ||||
| /* DO NOT EDIT THIS FILE - it is machine generated */ | ||||
| #include <jni.h> | ||||
| /* 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 | ||||
							
								
								
									
										29
									
								
								resources/NativeInterface/eva2problem.c
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										29
									
								
								resources/NativeInterface/eva2problem.c
									
									
									
									
									
										Executable file
									
								
							| @@ -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; i<len; i++) { | ||||
|     result[0] += body[i] * body[i]; | ||||
|   } | ||||
|  | ||||
|   // Release input array | ||||
|   (*env)->ReleaseDoubleArrayElements(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"); | ||||
| } | ||||
							
								
								
									
										27
									
								
								src/eva2/problems/NativeProblem.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								src/eva2/problems/NativeProblem.java
									
									
									
									
									
										Normal file
									
								
							| @@ -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(); | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user