docs: def get() -> Iterator[Any]:
      """Return an iterator for all pending events.
  
      Events are processed as the iterator is consumed.  Breaking out of, or
      discarding the iterator will leave the remaining events on the event queue.
  
      Example::
  
          for event in tcod.event.get():
              if event.type == "QUIT":
                  print(event)
                  raise SystemExit()
              elif event.type == "KEYDOWN":
                  print(event)
              elif event.type == "MOUSEBUTTONDOWN":
                  print(event)
              elif event.type == "MOUSEMOTION":
                  print(event)
              else:
                  print(event)
      """
      sdl_event = tcod.ffi.new("SDL_Event*")
      while tcod.lib.SDL_PollEvent(sdl_event):
          if sdl_event.type in _SDL_TO_CLASS_TABLE:
              yield _SDL_TO_CLASS_TABLE[sdl_event.type].from_sdl_event(sdl_event)
          else:
              yield Undefined.from_sdl_event(sdl_event)