@@ -223,5 +223,65 @@ GETTER(jboolean, check)
223223GETTER(jboolean, isMultiPart)
224224GETTER(jboolean, hasNewNamespaceScheme)
225225
226+ #define ITER_BY_PATH 0
227+ #define ITER_BY_TITLE 1
228+ #define ITER_EFFICIENT 2
229+ METHOD0 (jobject, Archive, iterByPath) {
230+ auto range = THIS->iterByPath ();
231+ jclass objClass = env->FindClass (" org/kiwix/libzim/EntryIterator" );
232+ jmethodID initMethod = env->GetMethodID (objClass, " <init>" , " (I)V" );
233+ jobject obj = env->NewObject (objClass, initMethod, ITER_BY_PATH);
234+ SET_HANDLE (zim::Archive::iterator<zim::EntryOrder::pathOrder>, obj, range.begin ());
235+
236+ auto end_ptr = std::make_shared<zim::Archive::iterator<zim::EntryOrder::pathOrder>>(range.end ());
237+ setPtr (env, obj, std::move (end_ptr), " nativeHandleEnd" );
238+ return obj;
239+ }
240+
241+ METHOD0 (jobject, Archive, iterByTitle) {
242+ auto range = THIS->iterByTitle ();
243+ jclass objClass = env->FindClass (" org/kiwix/libzim/EntryIterator" );
244+ jmethodID initMethod = env->GetMethodID (objClass, " <init>" , " (I)V" );
245+ jobject obj = env->NewObject (objClass, initMethod, ITER_BY_TITLE);
246+ SET_HANDLE (zim::Archive::iterator<zim::EntryOrder::titleOrder>, obj, range.begin ());
247+
248+ auto end_ptr = std::make_shared<zim::Archive::iterator<zim::EntryOrder::titleOrder>>(range.end ());
249+ setPtr (env, obj, std::move (end_ptr), " nativeHandleEnd" );
250+ return obj;
251+ }
252+
253+ METHOD0 (jobject, Archive, iterEfficient) {
254+ auto range = THIS->iterEfficient ();
255+ jclass objClass = env->FindClass (" org/kiwix/libzim/EntryIterator" );
256+ jmethodID initMethod = env->GetMethodID (objClass, " <init>" , " (I)V" );
257+ jobject obj = env->NewObject (objClass, initMethod, ITER_EFFICIENT);
258+ SET_HANDLE (zim::Archive::iterator<zim::EntryOrder::efficientOrder>, obj, range.begin ());
259+
260+ auto end_ptr = std::make_shared<zim::Archive::iterator<zim::EntryOrder::efficientOrder>>(range.end ());
261+ setPtr (env, obj, std::move (end_ptr), " nativeHandleEnd" );
262+ return obj;
263+ }
264+
265+ METHOD (jobject, Archive, findByPath, jstring path) {
266+ auto range = THIS->findByPath (TO_C (path));
267+ jclass objClass = env->FindClass (" org/kiwix/libzim/EntryIterator" );
268+ jmethodID initMethod = env->GetMethodID (objClass, " <init>" , " (I)V" );
269+ jobject obj = env->NewObject (objClass, initMethod, ITER_BY_PATH);
270+ SET_HANDLE (zim::Archive::iterator<zim::EntryOrder::pathOrder>, obj, range.begin ());
271+
272+ auto end_ptr = std::make_shared<zim::Archive::iterator<zim::EntryOrder::pathOrder>>(range.end ());
273+ setPtr (env, obj, std::move (end_ptr), " nativeHandleEnd" );
274+ return obj;
275+ }
226276
277+ METHOD (jobject, Archive, findByTitle, jstring title) {
278+ auto range = THIS->findByTitle (TO_C (title));
279+ jclass objClass = env->FindClass (" org/kiwix/libzim/EntryIterator" );
280+ jmethodID initMethod = env->GetMethodID (objClass, " <init>" , " (I)V" );
281+ jobject obj = env->NewObject (objClass, initMethod, ITER_BY_TITLE);
282+ SET_HANDLE (zim::Archive::iterator<zim::EntryOrder::titleOrder>, obj, range.begin ());
227283
284+ auto end_ptr = std::make_shared<zim::Archive::iterator<zim::EntryOrder::titleOrder>>(range.end ());
285+ setPtr (env, obj, std::move (end_ptr), " nativeHandleEnd" );
286+ return obj;
287+ }
0 commit comments