aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/java/native/com_libmailcore_IndexSet.cpp
blob: 72f3a746665dfaefeabb4949f71f840d5ba836b3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
#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)
{
    MC_POOL_BEGIN;
    jobject result = MC_TO_JAVA(IndexSet::indexSet());
    MC_POOL_END;
    return result;
}

JNIEXPORT jobject JNICALL Java_com_libmailcore_IndexSet_indexSetWithRange
  (JNIEnv * env, jclass cls, jobject range)
{
    MC_POOL_BEGIN;
    Range mcRange = rangeFromJava(env, range);
    jobject result = MC_TO_JAVA(IndexSet::indexSetWithRange(mcRange));
    MC_POOL_END;
    return result;
}

JNIEXPORT jobject JNICALL Java_com_libmailcore_IndexSet_indexSetWithIndex
  (JNIEnv * env, jclass cls, jlong idx)
{
    MC_POOL_BEGIN;
    jobject result = MC_TO_JAVA(IndexSet::indexSetWithIndex((uint64_t) idx));
    MC_POOL_END;
    return result;
}

JNIEXPORT jint JNICALL Java_com_libmailcore_IndexSet_count
  (JNIEnv * env, jobject obj)
{
    MC_POOL_BEGIN;
    jint result = MC_JAVA_BRIDGE_GET_SCALAR(jint, count);
    MC_POOL_END;
    return result;
}

JNIEXPORT void JNICALL Java_com_libmailcore_IndexSet_addIndex
  (JNIEnv * env, jobject obj, jlong idx)
{
    MC_POOL_BEGIN;
    MC_JAVA_NATIVE_INSTANCE->addIndex((uint64_t) idx);
    MC_POOL_END;
}

JNIEXPORT void JNICALL Java_com_libmailcore_IndexSet_removeIndex
  (JNIEnv * env, jobject obj, jlong idx)
{
    MC_POOL_BEGIN;
    MC_JAVA_NATIVE_INSTANCE->removeIndex((uint64_t) idx);
    MC_POOL_END;
}

JNIEXPORT jboolean JNICALL Java_com_libmailcore_IndexSet_containsIndex
  (JNIEnv * env, jobject obj, jlong idx)
{
    MC_POOL_BEGIN;
    jboolean result = (jboolean) MC_JAVA_NATIVE_INSTANCE->containsIndex((uint64_t) idx);
    MC_POOL_END;
    return result;
}

JNIEXPORT void JNICALL Java_com_libmailcore_IndexSet_addRange
  (JNIEnv * env, jobject obj, jobject range)
{
    MC_POOL_BEGIN;
    Range mcRange = rangeFromJava(env, range);
    MC_JAVA_NATIVE_INSTANCE->addRange(mcRange);
    MC_POOL_END;
}

JNIEXPORT void JNICALL Java_com_libmailcore_IndexSet_removeRange
  (JNIEnv * env, jobject obj, jobject range)
{
    MC_POOL_BEGIN;
    Range mcRange = rangeFromJava(env, range);
    MC_JAVA_NATIVE_INSTANCE->removeRange(mcRange);
    MC_POOL_END;
}

JNIEXPORT void JNICALL Java_com_libmailcore_IndexSet_intersectsRange
  (JNIEnv * env, jobject obj, jobject range)
{
    MC_POOL_BEGIN;
    Range mcRange = rangeFromJava(env, range);
    MC_JAVA_NATIVE_INSTANCE->intersectsRange(mcRange);
    MC_POOL_END;
}

JNIEXPORT void JNICALL Java_com_libmailcore_IndexSet_addIndexSet
  (JNIEnv * env, jobject obj, jobject otherIndexSet)
{
    MC_POOL_BEGIN;
    MC_JAVA_NATIVE_INSTANCE->addIndexSet(MC_FROM_JAVA(IndexSet, otherIndexSet));
    MC_POOL_END;
}

JNIEXPORT void JNICALL Java_com_libmailcore_IndexSet_removeIndexSet
  (JNIEnv * env, jobject obj, jobject otherIndexSet)
{
    MC_POOL_BEGIN;
    MC_JAVA_NATIVE_INSTANCE->removeIndexSet(MC_FROM_JAVA(IndexSet, otherIndexSet));
    MC_POOL_END;
}

JNIEXPORT void JNICALL Java_com_libmailcore_IndexSet_intersectsIndexSet
  (JNIEnv * env, jobject obj, jobject otherIndexSet)
{
    MC_POOL_BEGIN;
    MC_JAVA_NATIVE_INSTANCE->intersectsIndexSet(MC_FROM_JAVA(IndexSet, otherIndexSet));
    MC_POOL_END;
}

JNIEXPORT jobject JNICALL Java_com_libmailcore_IndexSet_allRanges
  (JNIEnv * env, jobject obj)
{
    MC_POOL_BEGIN;
    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);
        env->DeleteLocalRef(javaObject);
    }
    MC_POOL_END;
    return javaVector;
}

JNIEXPORT jint JNICALL Java_com_libmailcore_IndexSet_rangesCount
  (JNIEnv * env, jobject obj)
{
    MC_POOL_BEGIN;
    jint result = MC_JAVA_BRIDGE_GET_SCALAR(jint, rangesCount);
    MC_POOL_END;
    return result;
}

JNIEXPORT void JNICALL Java_com_libmailcore_IndexSet_removeAllIndexes
  (JNIEnv * env, jobject obj)
{
    MC_POOL_BEGIN;
    MC_JAVA_NATIVE_INSTANCE->removeAllIndexes();
    MC_POOL_END;
}

MC_JAVA_BRIDGE