ANY EVENT_CATCHER NONE VISION
class interface VISION_LOOP_STACK
   -- It's some loop_stack (see lib/sequencer) EVENT_CATCHER as
   -- "special job". Use it like LOOP_STACK.

feature(s) from LOOP_STACK
   stop: BOOLEAN

   new_loop
      -- create new loop with graphic events management and push it
      -- on the stack

   push_loop (l: LOOP_ITEM)
      -- l is restarted and pushed on the stack
      -- Use push_loop to reuse some loop (reuse the same modal window).
      require
         l /= Void
      ensure
         current_loop = l

   run
      -- run current_loop (ie execute it's jobs)
      require
         current_loop /= Void
      ensure
         loop_stack.is_empty or stop

   add_job (j: JOB)
      -- Add some job to the current loop
      require
         j /= Void

   break
      -- Exit current loop
      require
         current_loop /= Void
      ensure
         current_loop /= old current_loop

   exit_all
      --TODO: Really needed feature ?
      require
         stop = False
      ensure
         stop = True

   current_loop: LOOP_ITEM
      --TODO: change this function into an attribute to be more efficient

feature(s) from VISION_LOOP_STACK
   event_catcher_stack: FAST_ARRAY[EVENT_CATCHER]



end of VISION_LOOP_STACK