aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/java/native/com_libmailcore_IndexSet.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/java/native/com_libmailcore_IndexSet.cpp')
-rw-r--r--src/java/native/com_libmailcore_IndexSet.cpp123
1 files changed, 123 insertions, 0 deletions
diff --git a/src/java/native/com_libmailcore_IndexSet.cpp b/src/java/native/com_libmailcore_IndexSet.cpp
new file mode 100644
index 00000000..d38d9859
--- /dev/null
+++ b/src/java/native/com_libmailcore_IndexSet.cpp
@@ -0,0 +1,123 @@
+#include "com_libmailcore_IndexSet.h"
+
+#include "TypesUtils.h"
+#include "JavaHandle.h"
+#include "MCDefines.h"
+#include "MCIndexSet.h"
+
+using namespace mailcore;
+
+#define nativeType IndexSet
+#define javaType nativeType
+
+JNIEXPORT jobject JNICALL Java_com_libmailcore_IndexSet_indexSet
+ (JNIEnv * env, jclass cls)
+{
+ return MC_TO_JAVA(IndexSet::indexSet());
+}
+
+JNIEXPORT jobject JNICALL Java_com_libmailcore_IndexSet_indexSetWithRange
+ (JNIEnv * env, jclass cls, jobject range)
+{
+ Range mcRange = rangeFromJava(env, range);
+ return MC_TO_JAVA(IndexSet::indexSetWithRange(mcRange));
+}
+
+JNIEXPORT jobject JNICALL Java_com_libmailcore_IndexSet_indexSetWithIndex
+ (JNIEnv * env, jclass cls, jlong idx)
+{
+ return MC_TO_JAVA(IndexSet::indexSetWithIndex((uint64_t) idx));
+}
+
+JNIEXPORT jint JNICALL Java_com_libmailcore_IndexSet_count
+ (JNIEnv * env, jobject obj)
+{
+ return MC_JAVA_BRIDGE_GET_SCALAR(jint, count);
+}
+
+JNIEXPORT void JNICALL Java_com_libmailcore_IndexSet_addIndex
+ (JNIEnv * env, jobject obj, jlong idx)
+{
+ MC_JAVA_NATIVE_INSTANCE->addIndex((uint64_t) idx);
+}
+
+JNIEXPORT void JNICALL Java_com_libmailcore_IndexSet_removeIndex
+ (JNIEnv * env, jobject obj, jlong idx)
+{
+ MC_JAVA_NATIVE_INSTANCE->removeIndex((uint64_t) idx);
+}
+
+JNIEXPORT jboolean JNICALL Java_com_libmailcore_IndexSet_containsIndex
+ (JNIEnv * env, jobject obj, jlong idx)
+{
+ return (jboolean) MC_JAVA_NATIVE_INSTANCE->containsIndex((uint64_t) idx);
+}
+
+JNIEXPORT void JNICALL Java_com_libmailcore_IndexSet_addRange
+ (JNIEnv * env, jobject obj, jobject range)
+{
+ Range mcRange = rangeFromJava(env, range);
+ MC_JAVA_NATIVE_INSTANCE->addRange(mcRange);
+}
+
+JNIEXPORT void JNICALL Java_com_libmailcore_IndexSet_removeRange
+ (JNIEnv * env, jobject obj, jobject range)
+{
+ Range mcRange = rangeFromJava(env, range);
+ MC_JAVA_NATIVE_INSTANCE->removeRange(mcRange);
+}
+
+JNIEXPORT void JNICALL Java_com_libmailcore_IndexSet_intersectsRange
+ (JNIEnv * env, jobject obj, jobject range)
+{
+ Range mcRange = rangeFromJava(env, range);
+ MC_JAVA_NATIVE_INSTANCE->intersectsRange(mcRange);
+}
+
+JNIEXPORT void JNICALL Java_com_libmailcore_IndexSet_addIndexSet
+ (JNIEnv * env, jobject obj, jobject otherIndexSet)
+{
+ MC_JAVA_NATIVE_INSTANCE->addIndexSet(MC_FROM_JAVA(IndexSet, otherIndexSet));
+}
+
+JNIEXPORT void JNICALL Java_com_libmailcore_IndexSet_removeIndexSet
+ (JNIEnv * env, jobject obj, jobject otherIndexSet)
+{
+ MC_JAVA_NATIVE_INSTANCE->removeIndexSet(MC_FROM_JAVA(IndexSet, otherIndexSet));
+}
+
+JNIEXPORT void JNICALL Java_com_libmailcore_IndexSet_intersectsIndexSet
+ (JNIEnv * env, jobject obj, jobject otherIndexSet)
+{
+ MC_JAVA_NATIVE_INSTANCE->intersectsIndexSet(MC_FROM_JAVA(IndexSet, otherIndexSet));
+}
+
+JNIEXPORT jobject JNICALL Java_com_libmailcore_IndexSet_allRanges
+ (JNIEnv * env, jobject obj)
+{
+ jclass cls = env->FindClass("java/util/Vector");
+ jmethodID constructor = env->GetMethodID(cls, "<init>", "(I)V");
+ unsigned int count = MC_JAVA_NATIVE_INSTANCE->rangesCount();
+ jobject javaVector = env->NewObject(cls, constructor, count);
+ jmethodID method = env->GetMethodID(cls, "add", "(Ljava.lang.Object;)Z");
+ Range * ranges = MC_JAVA_NATIVE_INSTANCE->allRanges();
+ for(unsigned int i = 0 ; i < count ; i ++) {
+ jobject javaObject = rangeToJava(env, ranges[i]);
+ env->CallBooleanMethod(javaVector, method, javaObject);
+ }
+ return javaVector;
+}
+
+JNIEXPORT jint JNICALL Java_com_libmailcore_IndexSet_rangesCount
+ (JNIEnv * env, jobject obj)
+{
+ return MC_JAVA_BRIDGE_GET_SCALAR(jint, rangesCount);
+}
+
+JNIEXPORT void JNICALL Java_com_libmailcore_IndexSet_removeAllIndexes
+ (JNIEnv * env, jobject obj)
+{
+ MC_JAVA_NATIVE_INSTANCE->removeAllIndexes();
+}
+
+MC_JAVA_BRIDGE