X-Git-Url: https://git.jsancho.org/?a=blobdiff_plain;f=gacela.c;h=343f1ba87a751600b3601b47511be60b8fe2cae9;hb=9736129fb8de61a2ba9750564715557df22c4afc;hp=24dda3d5d18c4253eeece9dfecdd24df3933793d;hpb=a77a0257caeeaaa3cc0977008d4cf9a92a9ee1cd;p=gacela.git diff --git a/gacela.c b/gacela.c index 24dda3d..343f1ba 100644 --- a/gacela.c +++ b/gacela.c @@ -1,68 +1,33 @@ -#include -#include -#include -#include +#include +#include -SCM prueba () { - int flags; - - SDL_Init (SDL_INIT_EVERYTHING); - - SDL_GL_SetAttribute (SDL_GL_DOUBLEBUFFER, 1); - - flags = SDL_OPENGL | SDL_GL_DOUBLEBUFFER | SDL_HWPALETTE | SDL_RESIZABLE | SDL_SWSURFACE; - SDL_SetVideoMode (200, 200, 32, flags); - - glShadeModel (GL_SMOOTH); - glClearColor (0, 0, 0, 0); - glHint (GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); - glViewport (0, 0, 200, 200); - glMatrixMode (GL_PROJECTION); - glLoadIdentity (); - glOrtho (-200, 200, -200, 200, 0, 1); - glMatrixMode (GL_MODELVIEW); - glLoadIdentity (); - - return SCM_UNSPECIFIED; -} - -void *bucle () { - while (1) { - scm_c_eval_string("(define contador (+ contador incremento))"); - scm_c_eval_string("(if (> contador 1000) (define incremento -1))"); - scm_c_eval_string("(if (< contador 0) (define incremento 1))"); +/* Read-Send-Print-Loop */ +void rspl () +{ + static char *line = (char *)NULL; + int exit = 0; + + while (!exit) + { + if (line) + { + free (line); + line = (char *)NULL; } - pthread_exit(NULL); -} - -SCM lanzar_bucle () { - pthread_t t; - - pthread_create(&t, NULL, bucle, NULL); - return SCM_UNSPECIFIED; + + line = readline ("gacela>"); + + if (line && *line) + { + add_history (line); + if (strcmp (line, "(quit)") == 0) + exit = 1; + } + } } -/*SCM ver_contador () { - return scm_from_int(contador); -}*/ - -static void* -register_functions (void* data) +int main (int argc, char *argv[]) { - scm_c_define_gsubr ("prueba", 0, 0, 0, &prueba); -// scm_c_define_gsubr ("ver-contador", 0, 0, 0, &ver_contador); - scm_c_define_gsubr ("lanzar-bucle", 0, 0, 0, &lanzar_bucle); - return NULL; + rspl (); + return 0; } - - -int main (int argc, char *argv[]) { - scm_with_guile (®ister_functions, NULL); - 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("(define contador 0)"); - scm_c_eval_string("(define incremento 1)"); - scm_shell (argc, argv); -} -