]> git.jsancho.org Git - guile-irrlicht.git/blobdiff - src/event-receiver.cpp
Some doc
[guile-irrlicht.git] / src / event-receiver.cpp
index 293f48f794f1a6b028003aa50c9b5ad2d438f11e..1d8e09722e887d784f3bef4e707ca12123fc3d05 100644 (file)
 #include "event-receiver.h"
 #include "gsubr.h"
 #include "keycodes.h"
-
+#include "wrapped.h"
 
 using namespace irr;
 
-
 SCM
-IEventRecevier_make (SCM proc_on_event)
+IEventReceiver_make (SCM proc_on_event)
 {
   class CustomReceiver : public IEventReceiver
   {
@@ -44,69 +43,60 @@ IEventRecevier_make (SCM proc_on_event)
 
     virtual bool OnEvent (const SEvent& event)
     {
-      return scm_to_bool (scm_call_1 (scm_on_event, scm_from_pointer ((void*)&event, NULL)));
+      SCM wrapped_event = scm_from_irr_pointer ("<event>", (void*) &event);
+      return scm_to_bool (scm_call_1 (scm_on_event, wrapped_event));
     }
   };
 
   CustomReceiver* receiver = new CustomReceiver (proc_on_event);
-  return scm_from_pointer ((void*)receiver, NULL);
+  return scm_from_irr_pointer ("<event-receiver>", (void*) receiver);
 }
 
-
 SCM
 SEvent_EventType (SCM event)
 {
   return scm_from_event_type
-    (((SEvent*)scm_to_pointer (event))->EventType);
+    (((SEvent*)scm_to_irr_pointer (event))->EventType);
 }
 
-
 SCM
 SEvent_SGUIEvent_Caller (SCM event)
 {
   gui::IGUIElement* caller =
-    ((SEvent*)scm_to_pointer (event))->GUIEvent.Caller;
-  return scm_from_pointer ((void*)caller, NULL);
+    ((SEvent*)scm_to_irr_pointer (event))->GUIEvent.Caller;
+  return scm_from_irr_pointer ("<gui-element>", (void*) caller);
 }
 
-
 SCM
 SEvent_SGUIEvent_EventType (SCM event)
 {
   return scm_from_gui_event_type
-    (((SEvent*)scm_to_pointer (event))->GUIEvent.EventType);
+    (((SEvent*)scm_to_irr_pointer (event))->GUIEvent.EventType);
 }
 
-
 SCM
 SEvent_SKeyInput_Key (SCM event)
 {
   return scm_from_key_code
-    (((SEvent*)scm_to_pointer (event))->KeyInput.Key);
+    (((SEvent*)scm_to_irr_pointer (event))->KeyInput.Key);
 }
 
-
 SCM
 SEvent_SKeyInput_PressedDown (SCM event)
 {
   return scm_from_bool
-    (((SEvent*)scm_to_pointer (event))->KeyInput.PressedDown);
+    (((SEvent*)scm_to_irr_pointer (event))->KeyInput.PressedDown);
 }
 
-
-extern "C" {
-
-  void
-  init_event_receiver (void)
-  {
-    DEFINE_GSUBR ("IEventRecevier_make", 1, 0, 0, IEventRecevier_make);
-    DEFINE_GSUBR ("SEvent_EventType", 1, 0, 0, SEvent_EventType);
-    DEFINE_GSUBR ("SEvent_SGUIEvent_Caller", 1, 0, 0, SEvent_SGUIEvent_Caller);
-    DEFINE_GSUBR ("SEvent_SGUIEvent_EventType", 1, 0, 0, SEvent_SGUIEvent_EventType);
-    DEFINE_GSUBR ("SEvent_SKeyInput_Key", 1, 0, 0, SEvent_SKeyInput_Key);
-    DEFINE_GSUBR ("SEvent_SKeyInput_PressedDown", 1, 0, 0, SEvent_SKeyInput_PressedDown);
-  }
-
+void
+init_event_receiver (void)
+{
+  DEFINE_GSUBR ("IEventReceiver_make", 1, 0, 0, IEventReceiver_make);
+  DEFINE_GSUBR ("SEvent_EventType", 1, 0, 0, SEvent_EventType);
+  DEFINE_GSUBR ("SEvent_SGUIEvent_Caller", 1, 0, 0, SEvent_SGUIEvent_Caller);
+  DEFINE_GSUBR ("SEvent_SGUIEvent_EventType", 1, 0, 0, SEvent_SGUIEvent_EventType);
+  DEFINE_GSUBR ("SEvent_SKeyInput_Key", 1, 0, 0, SEvent_SKeyInput_Key);
+  DEFINE_GSUBR ("SEvent_SKeyInput_PressedDown", 1, 0, 0, SEvent_SKeyInput_PressedDown);
 }
 
 SCM
@@ -145,7 +135,6 @@ scm_from_event_type (EEVENT_TYPE event_type)
     }
 }
 
-
 SCM
 scm_from_gui_event_type (gui::EGUI_EVENT_TYPE gui_event_type)
 {