X-Git-Url: https://git.jsancho.org/?a=blobdiff_plain;f=src%2Fgui-listbox.cpp;h=a839690c1034711cd93910f74c733514bdbaff3f;hb=79e12d94cc21232477796a4e76fc2ddb5d88f9dc;hp=599eca70a0f29408cfc3712d97df0d765be16130;hpb=f800b6da773b92fad5ebf3db07b8efa2e4e1b46f;p=guile-irrlicht.git diff --git a/src/gui-listbox.cpp b/src/gui-listbox.cpp index 599eca7..a839690 100644 --- a/src/gui-listbox.cpp +++ b/src/gui-listbox.cpp @@ -21,42 +21,35 @@ #include #include - #include "gui-listbox.h" #include "gsubr.h" -#include "wchar.h" #include "wrapped.h" -extern "C" { - - void - init_gui_listbox (void) - { - init_gui_listbox_type (); - DEFINE_GSUBR ("add-listbox-item!", 2, 1, 0, irr_gui_IGUIListBox_addItem); - } - - DEFINE_WRAPPED_TYPE (irr::gui::IGUIListBox*, "gui-listbox", - init_gui_listbox_type, gui_listbox_p, - wrap_gui_listbox, unwrap_gui_listbox); - - SCM - irr_gui_IGUIListBox_addItem (SCM wrapped_gui_listbox, - SCM text, - SCM icon) - { - irr::gui::IGUIListBox* listbox = unwrap_gui_listbox (wrapped_gui_listbox); - irr::u32 item_id; - if (icon == SCM_UNDEFINED) - { - item_id = listbox->addItem (scm_to_wide_char_string (text)); - } - else - { - item_id = listbox->addItem (scm_to_wide_char_string (text), - scm_to_int32 (icon)); - } - return scm_from_uint32 (item_id); - } +using namespace irr; + +SCM +IGUIListBox_addItem (SCM gui_listbox, + SCM text, + SCM icon) +{ + gui::IGUIListBox* listbox = (gui::IGUIListBox*)scm_to_irr_pointer (gui_listbox); + wchar_t* wtext = (wchar_t*) scm_to_utf32_string (text); + u32 item_id; + if (icon == SCM_UNDEFINED) + { + item_id = listbox->addItem (wtext); + } + else + { + item_id = listbox->addItem (wtext, + scm_to_int32 (icon)); + } + free (wtext); + return scm_from_uint32 (item_id); +} +void +init_gui_listbox (void) +{ + DEFINE_GSUBR ("IGUIListBox_addItem", 2, 1, 0, IGUIListBox_addItem); }