MCPcopy Create free account
hub / github.com/OmixVisualization/qtjambi / convertQListToJavaObject

Function convertQListToJavaObject

src/cpp/QtJambi/containers.cpp:364–433  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

362
363template<template<typename> class SmartPointer>
364jobject convertQListToJavaObject(JNIEnv *env,
365 const SmartPointer<char>& smartPointer,
366 QtJambiAPI::ListType listType,
367 AbstractListAccess* containerAccess
368 )
369{
370 void* listPtr = smartPointer.get();
371 if(Q_UNLIKELY(!listPtr))
372 return nullptr;
373 for(const QSharedPointer<QtJambiLink>& link : QtJambiLink::findLinksForPointer(listPtr)){
374 if(Q_LIKELY(link)){
375 jobject obj = link->getJavaObjectLocalRef(env);
376 switch(listType){
377 case QtJambiAPI::ListType::QQueue:
378 if(Java::QtCore::QQueue::isInstanceOf(env, obj)){
379 containerAccess->dispose();
380 return obj;
381 }
382 break;
383 case QtJambiAPI::ListType::QStack:
384 if(Java::QtCore::QStack::isInstanceOf(env, obj)){
385 containerAccess->dispose();
386 return obj;
387 }
388 break;
389 default:
390 if(Java::QtCore::QList::isInstanceOf(env, obj)){
391 containerAccess->dispose();
392 return obj;
393 }
394 break;
395 }
396 }
397 }
398 if(listType==QtJambiAPI::ListType::QList && containerAccess->elementMetaType().id()==QMetaType::QString){
399 containerAccess->dispose();
400 return QtJambiAPI::convertQStringListToJavaObject(env, smartPointer);
401 }
402
403 jobject returned = nullptr;
404 CHECK_CONTAINER_ACCESS(env, containerAccess)
405 QByteArray containerName;
406 switch(listType){
407 case QtJambiAPI::ListType::QQueue:
408 returned = Java::QtCore::QQueue::newInstance(env, nullptr);
409 containerName = "QQueue<";
410 break;
411 case QtJambiAPI::ListType::QStack:
412 returned = Java::QtCore::QStack::newInstance(env, nullptr);
413 containerName = "QStack<";
414 break;
415 default:
416 returned = Java::QtCore::QList::newInstance(env, nullptr);
417 containerName = "QList<";
418 break;
419 }
420 containerName += containerAccess->elementMetaType().name();
421 containerName += ">";

Callers 2

typemanager.cppFile · 0.85

Calls 7

getMethod · 0.65
disposeMethod · 0.65
nameMethod · 0.65
getJavaObjectLocalRefMethod · 0.45
elementMetaTypeMethod · 0.45
registerContainerMethod · 0.45

Tested by

no test coverage detected