@@ -121,6 +121,8 @@ class QMgrHelper
121121 static __dppl_give DPPLSyclQueueRef
122122 getCurrentQueue ();
123123
124+ static bool isCurrentQueue (__dppl_keep const DPPLSyclQueueRef QRef);
125+
124126 static void
125127 setAsDefaultQueue (enum DPPLSyclBEType BETy,
126128 enum DPPLSyclDeviceType DeviceTy,
@@ -144,13 +146,14 @@ class QMgrHelper
144146 */
145147DPPLSyclQueueRef QMgrHelper::getCurrentQueue ()
146148{
147- if (get_active_queues ().empty ()) {
149+ auto activated_q = get_active_queues ();
150+ if (activated_q.empty ()) {
148151 // \todo handle error
149152 std::cerr << " No currently active queues.\n " ;
150153 return nullptr ;
151154 }
152- auto last = QMgrHelper::get_active_queues () .size () - 1 ;
153- return wrap (new queue (QMgrHelper::get_active_queues () [last]));
155+ auto last = activated_q .size () - 1 ;
156+ return wrap (new queue (activated_q [last]));
154157}
155158
156159/* !
@@ -212,6 +215,28 @@ QMgrHelper::getQueue (enum DPPLSyclBEType BETy,
212215 return wrap (QRef);
213216}
214217
218+ /* !
219+ * Compares the context and device of the current queue to the context and
220+ * device of the queue passed as input. Return true if both queues have the
221+ * same context and device.
222+ */
223+ bool QMgrHelper::isCurrentQueue (__dppl_keep const DPPLSyclQueueRef QRef)
224+ {
225+ auto activated_q = get_active_queues ();
226+ if (activated_q.empty ()) {
227+ // \todo handle error
228+ std::cerr << " No currently active queues.\n " ;
229+ return false ;
230+ }
231+ auto last = activated_q.size () - 1 ;
232+ auto currQ = activated_q[last];
233+ auto currCtx = currQ.get_context ();
234+ auto currD = currQ.get_device ();
235+ auto InD = unwrap (QRef)->get_device ();
236+ auto InCtx = unwrap (QRef)->get_context ();
237+ return (currCtx == InCtx && currD == InD);
238+ }
239+
215240/* !
216241 * Changes the first entry into the stack, i.e., the default queue to a new
217242 * sycl::queue corresponding to the device type and device number.
@@ -420,6 +445,13 @@ DPPLSyclQueueRef DPPLQueueMgr_GetQueue (enum DPPLSyclBEType BETy,
420445 return QMgrHelper::getQueue (BETy, DeviceTy, DNum);
421446}
422447
448+ /* !
449+
450+ * */
451+ bool DPPLQueueMgr_IsCurrentQueue (__dppl_keep const DPPLSyclQueueRef QRef)
452+ {
453+ return QMgrHelper::isCurrentQueue (QRef);
454+ }
423455/* !
424456 * The function sets the global queue, i.e., the sycl::queue object at
425457 * QMgrHelper::active_queues[0] vector to the sycl::queue corresponding to the
0 commit comments