# File lib/ruby-sdl-ffi/sdl/event.rb, line 219
    def unwrap
      case self[:type]
      when ACTIVEEVENT;       ActiveEvent.new(self.pointer)
      when KEYDOWN, KEYUP;    KeyboardEvent.new(self.pointer)
      when MOUSEMOTION;       MouseMotionEvent.new(self.pointer)

      when MOUSEBUTTONDOWN, MOUSEBUTTONUP;
                              MouseButtonEvent.new(self.pointer)

      when JOYAXISMOTION;     JoyAxisEvent.new(self.pointer)
      when JOYBALLMOTION;     JoyBallEvent.new(self.pointer)
      when JOYHATMOTION;      JoyHatEvent.new(self.pointer)

      when JOYBUTTONDOWN, JOYBUTTONUP;
                              JoyButtonEvent.new(self.pointer)

      when QUIT;              QuitEvent.new( self.pointer )
      when SYSWMEVENT;        SysWMEvent.new( self.pointer )
      when VIDEORESIZE;       ResizeEvent.new( self.pointer )
      when VIDEOEXPOSE;       ExposeEvent.new( self.pointer )
      when USEREVENT;         UserEvent.new( self.pointer )

      else; raise TypeError, "Invalid event #{self.inspect}"
      end
    end