#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
{
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);
}
void
init_event_receiver (void)
{
- DEFINE_GSUBR ("IEventRecevier_make", 1, 0, 0, IEventRecevier_make);
+ 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);