4 #include "liba_version.h"
7 #define L Java_liba_version
14 JNIEXPORT
void JNICALL
Java_liba_version_clinit(JNIEnv
*_env
, jclass _cls
)
16 jclass _nbb
= (*_env
)->FindClass(_env
, "Ljava/nio/ByteBuffer;");
17 L
._new
= (*_env
)->GetStaticMethodID(_env
, _nbb
, "allocateDirect", "(I)Ljava/nio/ByteBuffer;");
18 L
.ctx
= (*_env
)->GetFieldID(_env
, _cls
, "ctx", "Ljava/nio/ByteBuffer;");
19 (*_env
)->SetStaticIntField(_env
, _cls
, (*_env
)->GetStaticFieldID(_env
, _cls
, "MAJOR", "I"), A_VERSION_MAJOR
);
20 (*_env
)->SetStaticIntField(_env
, _cls
, (*_env
)->GetStaticFieldID(_env
, _cls
, "MINOR", "I"), A_VERSION_MINOR
);
21 (*_env
)->SetStaticIntField(_env
, _cls
, (*_env
)->GetStaticFieldID(_env
, _cls
, "PATCH", "I"), A_VERSION_PATCH
);
22 (*_env
)->SetStaticIntField(_env
, _cls
, (*_env
)->GetStaticFieldID(_env
, _cls
, "TWEAK", "I"), A_VERSION_TWEAK
);
25 JNIEXPORT
void JNICALL
Java_liba_version_initS(JNIEnv
*_env
, jobject _obj
, jstring _ver
)
27 jobject _ctx
= (*_env
)->CallObjectMethod(_env
, _obj
, L
._new
, (jint
)sizeof(a_version
));
28 a_version
*ctx
= (a_version
*)(*_env
)->GetDirectBufferAddress(_env
, _ctx
);
29 char const *ver
= (*_env
)->GetStringUTFChars(_env
, _ver
, NULL
);
31 a_version_parse(ctx
, ver
);
32 (*_env
)->ReleaseStringUTFChars(_env
, _ver
, ver
);
35 JNIEXPORT
void JNICALL
Java_liba_version_init(JNIEnv
*_env
, jobject _obj
, jint major
, jint minor
, jint third
, jint extra
)
37 jobject _ctx
= (*_env
)->CallObjectMethod(_env
, _obj
, L
._new
, (jint
)sizeof(a_version
));
38 a_version
*ctx
= (a_version
*)(*_env
)->GetDirectBufferAddress(_env
, _ctx
);
39 (*_env
)->SetObjectField(_env
, _obj
, L
.ctx
, _ctx
);
40 ctx
->major
= (unsigned int)major
;
41 ctx
->minor
= (unsigned int)minor
;
42 ctx
->third
= (unsigned int)third
;
43 ctx
->extra
= (unsigned int)extra
;
47 JNIEXPORT jint JNICALL
Java_liba_version_check(JNIEnv
*_env
, jclass _cls
, jint major
, jint minor
, jint patch
)
49 return (void)(_env
), (void)(_cls
), a_version_check((unsigned int)major
, (unsigned int)minor
, (unsigned int)patch
);
52 JNIEXPORT jstring JNICALL
Java_liba_version_toString(JNIEnv
*_env
, jobject _obj
)
55 jobject _ctx
= (*_env
)->GetObjectField(_env
, _obj
, L
.ctx
);
56 a_version
*ctx
= (a_version
*)(*_env
)->GetDirectBufferAddress(_env
, _ctx
);
57 a_version_tostr(ctx
, str
, sizeof(str
));
58 return (*_env
)->NewStringUTF(_env
, str
);
61 JNIEXPORT jint JNICALL
Java_liba_version_major__(JNIEnv
*_env
, jobject _obj
)
63 jobject _ctx
= (*_env
)->GetObjectField(_env
, _obj
, L
.ctx
);
64 a_version
*ctx
= (a_version
*)(*_env
)->GetDirectBufferAddress(_env
, _ctx
);
65 return (jint
)ctx
->major
;
68 JNIEXPORT jobject JNICALL
Java_liba_version_major__I(JNIEnv
*_env
, jobject _obj
, jint major
)
70 jobject _ctx
= (*_env
)->GetObjectField(_env
, _obj
, L
.ctx
);
71 a_version
*ctx
= (a_version
*)(*_env
)->GetDirectBufferAddress(_env
, _ctx
);
72 ctx
->major
= (unsigned int)major
;
76 JNIEXPORT jint JNICALL
Java_liba_version_minor__(JNIEnv
*_env
, jobject _obj
)
78 jobject _ctx
= (*_env
)->GetObjectField(_env
, _obj
, L
.ctx
);
79 a_version
*ctx
= (a_version
*)(*_env
)->GetDirectBufferAddress(_env
, _ctx
);
80 return (jint
)ctx
->minor
;
83 JNIEXPORT jobject JNICALL
Java_liba_version_minor__I(JNIEnv
*_env
, jobject _obj
, jint minor
)
85 jobject _ctx
= (*_env
)->GetObjectField(_env
, _obj
, L
.ctx
);
86 a_version
*ctx
= (a_version
*)(*_env
)->GetDirectBufferAddress(_env
, _ctx
);
87 ctx
->minor
= (unsigned int)minor
;
91 JNIEXPORT jint JNICALL
Java_liba_version_third__(JNIEnv
*_env
, jobject _obj
)
93 jobject _ctx
= (*_env
)->GetObjectField(_env
, _obj
, L
.ctx
);
94 a_version
*ctx
= (a_version
*)(*_env
)->GetDirectBufferAddress(_env
, _ctx
);
95 return (jint
)ctx
->third
;
98 JNIEXPORT jobject JNICALL
Java_liba_version_third__I(JNIEnv
*_env
, jobject _obj
, jint third
)
100 jobject _ctx
= (*_env
)->GetObjectField(_env
, _obj
, L
.ctx
);
101 a_version
*ctx
= (a_version
*)(*_env
)->GetDirectBufferAddress(_env
, _ctx
);
102 ctx
->third
= (unsigned int)third
;
106 JNIEXPORT jint JNICALL
Java_liba_version_extra__(JNIEnv
*_env
, jobject _obj
)
108 jobject _ctx
= (*_env
)->GetObjectField(_env
, _obj
, L
.ctx
);
109 a_version
*ctx
= (a_version
*)(*_env
)->GetDirectBufferAddress(_env
, _ctx
);
110 return (jint
)ctx
->extra
;
113 JNIEXPORT jobject JNICALL
Java_liba_version_extra__I(JNIEnv
*_env
, jobject _obj
, jint extra
)
115 jobject _ctx
= (*_env
)->GetObjectField(_env
, _obj
, L
.ctx
);
116 a_version
*ctx
= (a_version
*)(*_env
)->GetDirectBufferAddress(_env
, _ctx
);
117 ctx
->extra
= (unsigned int)extra
;
121 JNIEXPORT jstring JNICALL
Java_liba_version_alpha__(JNIEnv
*_env
, jobject _obj
)
123 jobject _ctx
= (*_env
)->GetObjectField(_env
, _obj
, L
.ctx
);
124 a_version
*ctx
= (a_version
*)(*_env
)->GetDirectBufferAddress(_env
, _ctx
);
125 char alpha
[sizeof(ctx
->alpha
) + 1];
126 a_version_alpha(ctx
, alpha
);
127 return (*_env
)->NewStringUTF(_env
, alpha
);
130 JNIEXPORT jobject JNICALL
Java_liba_version_alpha__Ljava_lang_String_2(JNIEnv
*_env
, jobject _obj
, jstring _alpha
)
132 jobject _ctx
= (*_env
)->GetObjectField(_env
, _obj
, L
.ctx
);
133 a_version
*ctx
= (a_version
*)(*_env
)->GetDirectBufferAddress(_env
, _ctx
);
134 char const *alpha
= (*_env
)->GetStringUTFChars(_env
, _alpha
, 0);
135 a_version_set_alpha(ctx
, alpha
);
136 (*_env
)->ReleaseStringUTFChars(_env
, _alpha
, alpha
);
140 JNIEXPORT jobject JNICALL
Java_liba_version_parse(JNIEnv
*_env
, jobject _obj
, jstring _ver
)
142 jobject _ctx
= (*_env
)->GetObjectField(_env
, _obj
, L
.ctx
);
143 a_version
*ctx
= (a_version
*)(*_env
)->GetDirectBufferAddress(_env
, _ctx
);
144 char const *ver
= (*_env
)->GetStringUTFChars(_env
, _ver
, NULL
);
145 a_version_parse(ctx
, ver
);
146 (*_env
)->ReleaseStringUTFChars(_env
, _ver
, ver
);
150 JNIEXPORT jboolean JNICALL
Java_liba_version_lt(JNIEnv
*_env
, jobject _obj
, jobject _ver
)
152 jobject _ctx
= (*_env
)->GetObjectField(_env
, _obj
, L
.ctx
);
153 jobject _rhs
= (*_env
)->GetObjectField(_env
, _ver
, L
.ctx
);
154 a_version
*ctx
= (a_version
*)(*_env
)->GetDirectBufferAddress(_env
, _ctx
);
155 a_version
*rhs
= (a_version
*)(*_env
)->GetDirectBufferAddress(_env
, _rhs
);
156 return a_version_lt(ctx
, rhs
);
159 JNIEXPORT jboolean JNICALL
Java_liba_version_gt(JNIEnv
*_env
, jobject _obj
, jobject _ver
)
161 jobject _ctx
= (*_env
)->GetObjectField(_env
, _obj
, L
.ctx
);
162 jobject _rhs
= (*_env
)->GetObjectField(_env
, _ver
, L
.ctx
);
163 a_version
*ctx
= (a_version
*)(*_env
)->GetDirectBufferAddress(_env
, _ctx
);
164 a_version
*rhs
= (a_version
*)(*_env
)->GetDirectBufferAddress(_env
, _rhs
);
165 return a_version_gt(ctx
, rhs
);
168 JNIEXPORT jboolean JNICALL
Java_liba_version_le(JNIEnv
*_env
, jobject _obj
, jobject _ver
)
170 jobject _ctx
= (*_env
)->GetObjectField(_env
, _obj
, L
.ctx
);
171 jobject _rhs
= (*_env
)->GetObjectField(_env
, _ver
, L
.ctx
);
172 a_version
*ctx
= (a_version
*)(*_env
)->GetDirectBufferAddress(_env
, _ctx
);
173 a_version
*rhs
= (a_version
*)(*_env
)->GetDirectBufferAddress(_env
, _rhs
);
174 return a_version_le(ctx
, rhs
);
177 JNIEXPORT jboolean JNICALL
Java_liba_version_ge(JNIEnv
*_env
, jobject _obj
, jobject _ver
)
179 jobject _ctx
= (*_env
)->GetObjectField(_env
, _obj
, L
.ctx
);
180 jobject _rhs
= (*_env
)->GetObjectField(_env
, _ver
, L
.ctx
);
181 a_version
*ctx
= (a_version
*)(*_env
)->GetDirectBufferAddress(_env
, _ctx
);
182 a_version
*rhs
= (a_version
*)(*_env
)->GetDirectBufferAddress(_env
, _rhs
);
183 return a_version_ge(ctx
, rhs
);
186 JNIEXPORT jboolean JNICALL
Java_liba_version_eq(JNIEnv
*_env
, jobject _obj
, jobject _ver
)
188 jobject _ctx
= (*_env
)->GetObjectField(_env
, _obj
, L
.ctx
);
189 jobject _rhs
= (*_env
)->GetObjectField(_env
, _ver
, L
.ctx
);
190 a_version
*ctx
= (a_version
*)(*_env
)->GetDirectBufferAddress(_env
, _ctx
);
191 a_version
*rhs
= (a_version
*)(*_env
)->GetDirectBufferAddress(_env
, _rhs
);
192 return a_version_eq(ctx
, rhs
);
195 JNIEXPORT jboolean JNICALL
Java_liba_version_ne(JNIEnv
*_env
, jobject _obj
, jobject _ver
)
197 jobject _ctx
= (*_env
)->GetObjectField(_env
, _obj
, L
.ctx
);
198 jobject _rhs
= (*_env
)->GetObjectField(_env
, _ver
, L
.ctx
);
199 a_version
*ctx
= (a_version
*)(*_env
)->GetDirectBufferAddress(_env
, _ctx
);
200 a_version
*rhs
= (a_version
*)(*_env
)->GetDirectBufferAddress(_env
, _rhs
);
201 return a_version_ne(ctx
, rhs
);
204 JNIEXPORT jint JNICALL
Java_liba_version_cmp(JNIEnv
*_env
, jobject _obj
, jobject _ver
)
206 jobject _ctx
= (*_env
)->GetObjectField(_env
, _obj
, L
.ctx
);
207 jobject _rhs
= (*_env
)->GetObjectField(_env
, _ver
, L
.ctx
);
208 a_version
*ctx
= (a_version
*)(*_env
)->GetDirectBufferAddress(_env
, _ctx
);
209 a_version
*rhs
= (a_version
*)(*_env
)->GetDirectBufferAddress(_env
, _rhs
);
210 return a_version_cmp(ctx
, rhs
);