/* */ static VALUE Event_Initialize( VALUE self, VALUE aType ) { sf::Event * object = NULL; Data_Get_Struct( self, sf::Event, object ); int typeNum = FIX2INT( aType ); if(typeNum >= 0 && typeNum < sf::Event::Count) { rb_iv_set( self, "@type", aType ); object->Type = static_cast< sf::Event::EventType >( typeNum ); } else { rb_raise( rb_eTypeError, "expected Fixnum in range of 0...SFML::Event::Count" ); } bool noSpecialType = false; VALUE eventType; const char * name = NULL; switch( object->Type ) { case sf::Event::JoyButtonPressed: case sf::Event::JoyButtonReleased: eventType = Data_Wrap_Struct( globalJoyButtonEventClass, 0, 0, &object->JoyButton ); name = "@joyButton"; break; case sf::Event::JoyMoved: eventType = Data_Wrap_Struct( globalJoyMoveEventClass, 0, 0, &object->JoyMove ); name = "@joyMove"; break; case sf::Event::KeyPressed: case sf::Event::KeyReleased: eventType = Data_Wrap_Struct( globalKeyEventClass, 0, 0, &object->Key ); name = "@key"; break; case sf::Event::MouseButtonPressed: case sf::Event::MouseButtonReleased: eventType = Data_Wrap_Struct( globalMouseButtonEventClass, 0, 0, &object->MouseButton ); name = "@mouseButton"; break; case sf::Event::MouseMoved: eventType = Data_Wrap_Struct( globalMouseMoveEventClass, 0, 0, &object->MouseMove ); name = "@mouseMove"; break; case sf::Event::MouseWheelMoved: eventType = Data_Wrap_Struct( globalMouseWheelEventClass, 0, 0, &object->MouseWheel ); name = "@mouseWheel"; break; case sf::Event::Resized: eventType = Data_Wrap_Struct( globalSizeEventClass, 0, 0, &object->Size ); name = "@resized"; break; case sf::Event::TextEntered: eventType = Data_Wrap_Struct( globalTextEventClass, 0, 0, &object->Text ); name = "@text"; break; default: noSpecialType = true; }; if( noSpecialType == false ) { rb_obj_call_init( eventType, 0, 0 ); rb_iv_set( eventType, "@internal__parent_ref", self ); rb_iv_set( self, name, eventType ); } }