]> git.jsancho.org Git - guile-irrlicht.git/blobdiff - src/file-archive.cpp
Some doc
[guile-irrlicht.git] / src / file-archive.cpp
index 97d842bbe02b6978e3960992dac937cdddeba0a1..751da745e95647230d3fc074c019e53a4b75d33c 100644 (file)
 #include <libguile.h>
 #include "file-archive.h"
 
-extern "C" {
+using namespace irr;
 
-  void
-  init_file_archive (void)
-  {
-    init_file_archive_type ();
-  }
+io::E_FILE_ARCHIVE_TYPE
+scm_to_file_archive_type (SCM file_archive_type)
+{
+  char* type_name = scm_to_utf8_string (scm_symbol_to_string (file_archive_type));
+  io::E_FILE_ARCHIVE_TYPE type;
 
-  DEFINE_WRAPPED_TYPE (irr::io::IFileArchive*, "file-archive",
-                       init_file_archive_type, file_archive_p,
-                       wrap_file_archive, unwrap_file_archive);
-
-  irr::io::E_FILE_ARCHIVE_TYPE
-  scm_to_file_archive_type (SCM file_archive_type)
-  {
-    char* type = scm_to_utf8_stringn (scm_symbol_to_string (file_archive_type), NULL);
-    if (!strcmp (type, "zip"))
-      {
-        return irr::io::EFAT_ZIP;
-      }
-    else if (!strcmp (type, "gzip"))
-      {
-        return irr::io::EFAT_GZIP;
-      }
-    else if (!strcmp (type, "folder"))
-      {
-        return irr::io::EFAT_FOLDER;
-      }
-    else if (!strcmp (type, "pak"))
-      {
-        return irr::io::EFAT_PAK;
-      }
-    else if (!strcmp (type, "npk"))
-      {
-        return irr::io::EFAT_NPK;
-      }
-    else if (!strcmp (type, "tar"))
-      {
-        return irr::io::EFAT_TAR;
-      }
-    else if (!strcmp (type, "wad"))
-      {
-        return irr::io::EFAT_WAD;
-      }
-    else if (!strcmp (type, "unknown"))
-      {
-        return irr::io::EFAT_UNKNOWN;
-      }
-    else
-      {
-        scm_error (scm_arg_type_key, NULL, "Wrong file archive type: ~S",
-                   scm_list_1 (file_archive_type), scm_list_1 (file_archive_type));
-      }
-  }
+  if (!strcmp (type_name, "zip"))
+    {
+      type = io::EFAT_ZIP;
+    }
+  else if (!strcmp (type_name, "gzip"))
+    {
+      type = io::EFAT_GZIP;
+    }
+  else if (!strcmp (type_name, "folder"))
+    {
+      type = io::EFAT_FOLDER;
+    }
+  else if (!strcmp (type_name, "pak"))
+    {
+      type = io::EFAT_PAK;
+    }
+  else if (!strcmp (type_name, "npk"))
+    {
+      type = io::EFAT_NPK;
+    }
+  else if (!strcmp (type_name, "tar"))
+    {
+      type = io::EFAT_TAR;
+    }
+  else if (!strcmp (type_name, "wad"))
+    {
+      type = io::EFAT_WAD;
+    }
+  else if (!strcmp (type_name, "unknown"))
+    {
+      type = io::EFAT_UNKNOWN;
+    }
+  else
+    {
+      scm_error (scm_arg_type_key, NULL, "Wrong file archive type: ~S",
+                 scm_list_1 (file_archive_type), scm_list_1 (file_archive_type));
+    }
 
+  free (type_name);
+  return type;
 }