+ /* Advance to next inferior, skipping filtered inferiors. */
+ void advance ()
+ {
+ /* The loop below is written in the natural way as-if we'd always
+ start at the beginning of the inferior list. This
+ fast-forwards the algorithm to the actual current position. */
+ goto start;
+
+ while (m_inf != NULL)
+ {
+ if (m_inf_matches ())
+ return;
+ start:
+ m_inf = m_inf->next;
+ }
+ }
+
+ bool m_inf_matches ()
+ {
+ return (m_proc_target == nullptr
+ || m_proc_target == m_inf->process_target ());
+ }
+
+ process_stratum_target *m_proc_target;