]> git.jsancho.org Git - guile-irrlicht.git/blobdiff - src/reference-counted.cpp
Revert "reference counted refactor"
[guile-irrlicht.git] / src / reference-counted.cpp
index b13cbb02f799c656c7c65a652147209d90a4837e..1060df4b56c9d657216ace980e44190719c7df89 100644 (file)
 
 extern "C" {
 
-  DEFINE_WRAPPED_TYPE (irr::IReferenceCounted*, "reference-counted",
-                       init_reference_counted_type, reference_counted_p,
-                       wrap_reference_counted, unwrap_reference_counted);
-
   void
   init_reference_counted (void)
   {
-    init_reference_counted_type ();
     DEFINE_GSUBR ("drop!", 1, 0, 0, irr_drop);
   }
 
-  bool
-  is_reference_counted_object (SCM wrapped_obj)
-  {
-    return
-      device_p (wrapped_obj) ||
-      reference_counted_p (wrapped_obj) ||
-      scene_node_animator_p (wrapped_obj);
-  }
-
   SCM
   irr_drop (SCM wrapped_obj)
   {
-    if (is_reference_counted_object (wrapped_obj))
+    bool result = 0;
+    if (device_p (wrapped_obj))
+      {
+        result = unwrap_device (wrapped_obj)->drop ();
+      }
+    else if (scene_node_animator_p (wrapped_obj))
       {
-        irr::IReferenceCounted* obj = unwrap_reference_counted (wrapped_obj, false);
-        return scm_from_bool (obj->drop ());
+        result = unwrap_scene_node_animator (wrapped_obj)->drop ();
       }
     else
       {
         scm_error (scm_arg_type_key, NULL, "Object cannot be dropped: ~S",
                    scm_list_1 (wrapped_obj), scm_list_1 (wrapped_obj));
       }
+    return scm_from_bool (result);
   }
 
 }