*/
#include <libguile.h>
+#include <libgen.h>
#include "gacela_SDL.h"
#include "gacela_GL.h"
+#include "gacela_FTGL.h"
static void*
-register_functions (void* data)
+init_gacela (void *data, int argc, char **argv)
{
+ // Guile configuration
+ scm_c_eval_string ("(set-repl-prompt! \"gacela>\")");
+ scm_c_eval_string ("(use-modules (ice-9 readline))");
+ scm_c_eval_string ("(activate-readline)");
+ scm_c_eval_string ("(use-modules (ice-9 optargs))");
+ scm_c_eval_string ("(use-modules (ice-9 receive))");
+
+ // Bindings for C functions and structs
SDL_register_functions (NULL);
GL_register_functions (NULL);
+ FTGL_register_functions (NULL);
+
return NULL;
}
void
-load_scheme_files (void)
+load_scheme_files (char *path)
{
-// scm_c_primitive_load ("gacela.scm");
+ char load_path[strlen (path) + 1024];
+
+ sprintf (load_path, "(set! %%load-path (cons \"%s\" %%load-path))", path);
+ scm_c_eval_string (load_path);
+ scm_primitive_load_path (scm_from_locale_string ("gacela_loader.scm"));
}
int
main (int argc, char *argv[])
{
- scm_with_guile (®ister_functions, NULL);
- scm_init_guile ();
- scm_c_eval_string ("(set-repl-prompt! \"gacela>\")");
- scm_c_eval_string ("(use-modules (ice-9 readline))");
- scm_c_eval_string ("(activate-readline)");
- load_scheme_files ();
+ scm_with_guile (&init_gacela, NULL);
+ load_scheme_files (dirname (argv[0]));
scm_shell (argc, argv);
}