X-Git-Url: https://git.jsancho.org/?a=blobdiff_plain;f=src%2FIrrlichtDevice.cpp;h=026df21fa8c889118db96aee51462d323c07fb43;hb=03d4e13abc392abec3ef9cb6a97d83a5ae722ca8;hp=aa492e15da58fa3b9e42f0eada092d8d8e13842b;hpb=84e93e7eac45dde889fc436a247838da3c87edf6;p=guile-irrlicht.git diff --git a/src/IrrlichtDevice.cpp b/src/IrrlichtDevice.cpp index aa492e1..026df21 100644 --- a/src/IrrlichtDevice.cpp +++ b/src/IrrlichtDevice.cpp @@ -29,6 +29,7 @@ #include "IrrlichtDevice.h" #include "ISceneManager.h" #include "IVideoDriver.h" +#include "util.h" extern "C" { @@ -43,34 +44,8 @@ extern "C" { scm_c_define_gsubr ("set-window-caption!", 2, 0, 0, (scm_t_subr)irr_setWindowCaption); } - static SCM device_type; - - void - init_device_type (void) - { - SCM name, slots; - scm_t_struct_finalize finalizer; - - name = scm_from_utf8_symbol ("device"); - slots = scm_list_1 (scm_from_utf8_symbol ("data")); - finalizer = NULL; - - device_type = - scm_make_foreign_object_type (name, slots, finalizer); - } - - SCM - wrap_device (irr::IrrlichtDevice* device) - { - return scm_make_foreign_object_1 (device_type, device); - } - - irr::IrrlichtDevice* - unwrap_device (SCM device_obj) - { - scm_assert_foreign_object_type (device_type, device_obj); - return (irr::IrrlichtDevice*)scm_foreign_object_ref (device_obj, 0); - } + DEFINE_WRAPPED_TYPE (irr::IrrlichtDevice*, "device", + init_device_type, wrap_device, unwrap_device); SCM irr_createDevice (SCM deviceType,