From 79768ddc14609be1a6552eff55d8f60b6f85ad55 Mon Sep 17 00:00:00 2001 From: Ser Lev Arris Date: Sat, 28 Mar 2015 14:21:47 +0100 Subject: [PATCH 1/4] prepare for removal of hardcoded struct and primitive sizes. added getter to determine struct and primitive sizes. (cleanup in the java code can be done later.) --- port/jassimp/jassimp-native/src/jassimp.cpp | 48 ++++++++++++++++ port/jassimp/jassimp-native/src/jassimp.h | 14 +++++ port/jassimp/jassimp/src/jassimp/AiMesh.java | 12 ++-- .../jassimp/src/jassimp/AiNodeAnim.java | 6 +- port/jassimp/jassimp/src/jassimp/Jassimp.java | 55 ++++++++++++++++++- 5 files changed, 126 insertions(+), 9 deletions(-) diff --git a/port/jassimp/jassimp-native/src/jassimp.cpp b/port/jassimp/jassimp-native/src/jassimp.cpp index 710168e98..e093bb178 100644 --- a/port/jassimp/jassimp-native/src/jassimp.cpp +++ b/port/jassimp/jassimp-native/src/jassimp.cpp @@ -1344,7 +1344,55 @@ JNIEXPORT jint JNICALL Java_jassimp_Jassimp_getVKeysize (JNIEnv *env, jclass jClazz) { const int res = sizeof(aiVectorKey); + return res; +} +JNIEXPORT jint JNICALL Java_jassimp_Jassimp_getQKeysize + (JNIEnv *env, jclass jClazz) +{ + const int res = sizeof(aiQuatKey); + return res; +} + +JNIEXPORT jint JNICALL Java_jassimp_Jassimp_getV3Dsize + (JNIEnv *env, jclass jClazz) +{ + const int res = sizeof(aiVector3D); + return res; +} + +JNIEXPORT jint JNICALL Java_jassimp_Jassimp_getfloatsize + (JNIEnv *env, jclass jClazz) +{ + const int res = sizeof(float); + return res; +} + +JNIEXPORT jint JNICALL Java_jassimp_Jassimp_getintsize + (JNIEnv *env, jclass jClazz) +{ + const int res = sizeof(int); + return res; +} + +JNIEXPORT jint JNICALL Java_jassimp_Jassimp_getuintsize + (JNIEnv *env, jclass jClazz) +{ + const int res = sizeof(unsigned int); + return res; +} + +JNIEXPORT jint JNICALL Java_jassimp_Jassimp_getdoubletsize + (JNIEnv *env, jclass jClazz) +{ + const int res = sizeof(double); + return res; +} + +JNIEXPORT jint JNICALL Java_jassimp_Jassimp_getlongsize + (JNIEnv *env, jclass jClazz) +{ + const int res = sizeof(long); return res; } diff --git a/port/jassimp/jassimp-native/src/jassimp.h b/port/jassimp/jassimp-native/src/jassimp.h index fadea4fe6..188a4e904 100644 --- a/port/jassimp/jassimp-native/src/jassimp.h +++ b/port/jassimp/jassimp-native/src/jassimp.h @@ -9,6 +9,20 @@ extern "C" { #endif JNIEXPORT jint JNICALL Java_jassimp_Jassimp_getVKeysize (JNIEnv *, jclass); +JNIEXPORT jint JNICALL Java_jassimp_Jassimp_getQKeysize + (JNIEnv *, jclass); +JNIEXPORT jint JNICALL Java_jassimp_Jassimp_getV3Dsize + (JNIEnv *, jclass); +JNIEXPORT jint JNICALL Java_jassimp_Jassimp_getfloatsize + (JNIEnv *, jclass); +JNIEXPORT jint JNICALL Java_jassimp_Jassimp_getintsize + (JNIEnv *, jclass); +JNIEXPORT jint JNICALL Java_jassimp_Jassimp_getuintsize + (JNIEnv *, jclass); +JNIEXPORT jint JNICALL Java_jassimp_Jassimp_getdoublesize + (JNIEnv *, jclass); +JNIEXPORT jint JNICALL Java_jassimp_Jassimp_getlongsize + (JNIEnv *, jclass); /* * Class: jassimp_Jassimp diff --git a/port/jassimp/jassimp/src/jassimp/AiMesh.java b/port/jassimp/jassimp/src/jassimp/AiMesh.java index c9cb3669a..c2ebcd307 100644 --- a/port/jassimp/jassimp/src/jassimp/AiMesh.java +++ b/port/jassimp/jassimp/src/jassimp/AiMesh.java @@ -140,13 +140,17 @@ public final class AiMesh { /** * Number of bytes per float value. */ - private static final int SIZEOF_FLOAT = 4; - - + private static final int SIZEOF_FLOAT = Jassimp.NATIVE_FLOAT_SIZE; + /** * Number of bytes per int value. */ - private static final int SIZEOF_INT = 4; + private static final int SIZEOF_INT = Jassimp.NATIVE_INT_SIZE; + + /** + * Size of an AiVector3D in the native world. + */ + private static final int SIZEOF_V3D = Jassimp.NATIVE_AIVEKTOR3D_SIZE; /** diff --git a/port/jassimp/jassimp/src/jassimp/AiNodeAnim.java b/port/jassimp/jassimp/src/jassimp/AiNodeAnim.java index c084accd6..cb1c6987c 100644 --- a/port/jassimp/jassimp/src/jassimp/AiNodeAnim.java +++ b/port/jassimp/jassimp/src/jassimp/AiNodeAnim.java @@ -70,17 +70,17 @@ public final class AiNodeAnim { /** * Size of one position key entry. */ - private static final int POS_KEY_SIZE = Jassimp.getVKeysize(); + private static final int POS_KEY_SIZE = Jassimp.NATIVE_AIVEKTORKEY_SIZE; /** * Size of one rotation key entry. */ - private static final int ROT_KEY_SIZE = 24; + private static final int ROT_KEY_SIZE = Jassimp.NATIVE_AIQUATKEY_SIZE; /** * Size of one scaling key entry. */ - private static final int SCALE_KEY_SIZE = Jassimp.getVKeysize(); + private static final int SCALE_KEY_SIZE = Jassimp.NATIVE_AIVEKTORKEY_SIZE; /** diff --git a/port/jassimp/jassimp/src/jassimp/Jassimp.java b/port/jassimp/jassimp/src/jassimp/Jassimp.java index 25b8f6371..8850e68ff 100644 --- a/port/jassimp/jassimp/src/jassimp/Jassimp.java +++ b/port/jassimp/jassimp/src/jassimp/Jassimp.java @@ -97,12 +97,47 @@ public final class Jassimp { /** - * Returns the size of a struct.

+ * Returns the size of a struct or ptimitive.

* * @return the result of sizeof call */ public static native int getVKeysize(); + /** + * @see #getVKeysize + */ + public static native int getQKeysize(); + + /** + * @see #getVKeysize + */ + public static native int getV3Dsize(); + + /** + * @see #getVKeysize + */ + public static native int getfloatsize(); + + /** + * @see #getVKeysize + */ + public static native int getintsize(); + + /** + * @see #getVKeysize + */ + public static native int getuintsize(); + + /** + * @see #getVKeysize + */ + public static native int getboublesize(); + + /** + * @see #getVKeysize + */ + public static native int getlongsize(); + /** * Returns a human readable error description.

* @@ -256,8 +291,24 @@ public final class Jassimp { /* nothing to do */ } - + public static final int NATIVE_AIVEKTORKEY_SIZE; + public static final int NATIVE_AIQUATKEY_SIZE; + public static final int NATIVE_AIVEKTOR3D_SIZE; + public static final int NATIVE_FLOAT_SIZE; + public static final int NATIVE_INT_SIZE; + public static final int NATIVE_UINT_SIZE; + public static final int NATIVE_DOUBLE_SIZE; + public static final int NATIVE_LONG_SIZE; + static { System.loadLibrary("jassimp"); + NATIVE_AIVEKTORKEY_SIZE = getVKeysize(); + NATIVE_AIQUATKEY_SIZE = getQKeysize(); + NATIVE_AIVEKTOR3D_SIZE = getV3Dsize(); + NATIVE_FLOAT_SIZE = getfloatsize(); + NATIVE_INT_SIZE = getintsize(); + NATIVE_UINT_SIZE = getuintsize(); + NATIVE_DOUBLE_SIZE = getdoublesize(); + NATIVE_LONG_SIZE = getlongsize(); } } From 311c1ecadbb659a1e4c5c845e684f9cd69095f0a Mon Sep 17 00:00:00 2001 From: Ser Lev Arris Date: Sat, 28 Mar 2015 14:32:06 +0100 Subject: [PATCH 2/4] typo in method name fixed --- port/jassimp/jassimp/src/jassimp/Jassimp.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/port/jassimp/jassimp/src/jassimp/Jassimp.java b/port/jassimp/jassimp/src/jassimp/Jassimp.java index 8850e68ff..eb4665f17 100644 --- a/port/jassimp/jassimp/src/jassimp/Jassimp.java +++ b/port/jassimp/jassimp/src/jassimp/Jassimp.java @@ -131,7 +131,7 @@ public final class Jassimp { /** * @see #getVKeysize */ - public static native int getboublesize(); + public static native int getdoublesize(); /** * @see #getVKeysize From 19d9b31d56553a0de864e7f595ce81296cbf7f90 Mon Sep 17 00:00:00 2001 From: Ser Lev Arris Date: Sat, 28 Mar 2015 14:45:21 +0100 Subject: [PATCH 3/4] =?UTF-8?q?makro=20=C2=BBlprintf=C2=AB=20substitution?= =?UTF-8?q?=20gcc=20warnings=20cleanup?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- port/jassimp/jassimp-native/src/jassimp.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/port/jassimp/jassimp-native/src/jassimp.cpp b/port/jassimp/jassimp-native/src/jassimp.cpp index e093bb178..d42126c9d 100644 --- a/port/jassimp/jassimp-native/src/jassimp.cpp +++ b/port/jassimp/jassimp-native/src/jassimp.cpp @@ -284,7 +284,7 @@ static bool copyBuffer(JNIEnv *env, jobject jMesh, const char* jBufferName, void if (env->GetDirectBufferCapacity(jBuffer) != size) { - lprintf("invalid direct buffer, expected %u, got %u\n", size, env->GetDirectBufferCapacity(jBuffer)); + lprintf("invalid direct buffer, expected %u, got %llu\n", size, env->GetDirectBufferCapacity(jBuffer)); return false; } @@ -315,7 +315,7 @@ static bool copyBufferArray(JNIEnv *env, jobject jMesh, const char* jBufferName, if (env->GetDirectBufferCapacity(jBuffer) != size) { - lprintf("invalid direct buffer, expected %u, got %u\n", size, env->GetDirectBufferCapacity(jBuffer)); + lprintf("invalid direct buffer, expected %u, got %llu\n", size, env->GetDirectBufferCapacity(jBuffer)); return false; } @@ -839,7 +839,7 @@ static bool loadMaterials(JNIEnv *env, const aiScene* cScene, jobject& jScene) { const aiMaterial* cMaterial = cScene->mMaterials[m]; - lprintf("converting material ...\n", m); + lprintf("converting material %d ...\n", m); jobject jMaterial = NULL; From 38a1abc908e4102e2fd9ea32052d6ea40ed4eb83 Mon Sep 17 00:00:00 2001 From: Ser Lev Arris Date: Sat, 28 Mar 2015 15:01:01 +0100 Subject: [PATCH 4/4] ... method name ... --- port/jassimp/jassimp-native/src/jassimp.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/port/jassimp/jassimp-native/src/jassimp.cpp b/port/jassimp/jassimp-native/src/jassimp.cpp index d42126c9d..8093db7ba 100644 --- a/port/jassimp/jassimp-native/src/jassimp.cpp +++ b/port/jassimp/jassimp-native/src/jassimp.cpp @@ -1382,7 +1382,7 @@ JNIEXPORT jint JNICALL Java_jassimp_Jassimp_getuintsize return res; } -JNIEXPORT jint JNICALL Java_jassimp_Jassimp_getdoubletsize +JNIEXPORT jint JNICALL Java_jassimp_Jassimp_getdoublesize (JNIEnv *env, jclass jClazz) { const int res = sizeof(double);