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