]> git.jsancho.org Git - guile-irrlicht.git/blobdiff - src/file-system.cpp
Some doc
[guile-irrlicht.git] / src / file-system.cpp
index 76892ef7a74ac78a86113ff06659b36b5b996b2d..30a89ce5e4aaf368a7779b2e4d98a0534b06dc11 100644 (file)
 #include "file-archive.h"
 #include "file-system.h"
 #include "gsubr.h"
-
+#include "wrapped.h"
 
 using namespace irr;
 
-
 SCM
-io_IFileSystem_addFileArchive (SCM file_system,
-                               SCM filename,
-                               SCM ignore_case,
-                               SCM ignore_paths,
-                               SCM archive_type,
-                               SCM password,
-                               SCM ret_archive)
+IFileSystem_addFileArchive (SCM file_system,
+                            SCM filename,
+                            SCM ignore_case,
+                            SCM ignore_paths,
+                            SCM archive_type,
+                            SCM password,
+                            SCM ret_archive)
 {
-  io::IFileArchive* retArchive = (io::IFileArchive*)scm_to_pointer (ret_archive);
+  io::IFileArchive* retArchive = (io::IFileArchive*)scm_to_irr_pointer (ret_archive);
   io::IFileArchive** retArchiveReference = 0;
   if (retArchive != NULL)
     {
       retArchiveReference = &retArchive;
     }
 
-  return scm_from_bool
-    (((io::IFileSystem*)scm_to_pointer (file_system))->
-     addFileArchive (scm_to_utf8_stringn (filename, NULL),
+  char* cfilename = scm_to_utf8_string (filename);
+  char* cpassword = scm_to_utf8_string (password);
+  bool result =
+    (((io::IFileSystem*)scm_to_irr_pointer (file_system))->
+     addFileArchive (cfilename,
                      scm_to_bool (ignore_case),
                      scm_to_bool (ignore_paths),
                      scm_to_file_archive_type (archive_type),
-                     scm_to_utf8_stringn (password, NULL),
+                     cpassword,
                      retArchiveReference));
-}
-
 
-extern "C" {
-
-  void
-  init_file_system (void)
-  {
-    DEFINE_GSUBR ("io_IFileSystem_addFileArchive", 7, 0, 0, io_IFileSystem_addFileArchive);
-  }
+  free (cfilename);
+  free (cpassword);
+  return scm_from_bool (result);
+}
 
+void
+init_file_system (void)
+{
+  DEFINE_GSUBR ("IFileSystem_addFileArchive", 7, 0, 0, IFileSystem_addFileArchive);
 }