Esempio n. 1
0
___END_C_LINKAGE

int main (int argc, char **argv)
{
  char *temp;

  /*
   * Setup the Scheme library by calling "___setup" with appropriate
   * parameters.  The call to "___setup_params_reset" sets all parameters
   * to their default setting.
   */

  ___setup_params_struct setup_params;

  ___setup_params_reset (&setup_params);

  setup_params.version = ___VERSION;
  setup_params.linker  = SCHEME_LIBRARY_LINKER;

  ___setup (&setup_params);

  /* Main part of program: call Scheme functions */

  temp = eval_string ("(define x 200)");
  if (temp != 0)
    {
      printf ("result = %s\n", temp);
      ___release_string (temp); /* don't forget to reclaim string */
    }

  temp = eval_string ("(expt 2 x)");
  if (temp != 0)
    {
      printf ("result = %s\n", temp);
      ___release_string (temp);
    }

  temp = eval_string ("(+ 1 2"); /* note: missing closing parenthesis */
  if (temp != 0)
    {
      printf ("result = %s\n", temp);
      ___release_string (temp);
    }

  temp = eval_string ("(+ x y)"); /* note: y is unbound */
  if (temp != 0)
    {
      printf ("result = %s\n", temp);
      ___release_string (temp);
    }

  fflush (stdout);

  /* Cleanup the Scheme library */

  ___cleanup ();

  return 0;
}
Esempio n. 2
0
int main (int argc, char **argv)
{
  /*
   * Setup the Scheme library by calling "___setup" with appropriate
   * parameters.  The call to "___setup_params_reset" sets all parameters
   * to their default setting.
   */

  ___setup_params_struct setup_params;

  ___setup_params_reset (&setup_params);

  setup_params.version = ___VERSION;
  setup_params.linker  = SCHEME_LIBRARY_LINKER;

  ___setup (&setup_params);

  /* Main part of program: start N threads that increment a counter */

  counter = new_counter (); /* create a new counter */

  pthread_mutex_init (&mut, NULL); /* initialize mutex */

  {
    int i;
    pthread_t tid[N];
    void* results[N];

    for (i = 0; i<N; i++)
      pthread_create (&tid[i], NULL, thread_main, NULL);

    for (i = 0; i<N; i++)
      pthread_join (tid[i], &results[i]);
  }

  {
    int got_throw = 0;
    int count = 0;

    ___ON_THROW(count = get_counter (counter), got_throw=1);

    if (got_throw)
      printf ("Scheme threw an exception\n");
    else
      printf ("final count = %d\n", count);
  }

  /* we don't need the counter anymore */

  ___ON_THROW(release_counter (counter),);

  /* Cleanup the Scheme library */

  ___cleanup ();

  return 0;
}
Esempio n. 3
0
void lambdanative_payload_setup(char *path)
{
  DMSG("lambdanative_payload_setup [scm]");
  ___setup_params_reset (&setup_params);
  setup_params.version = ___VERSION;
  setup_params.linker = LINKER;
  debug_settings = (debug_settings & ~___DEBUG_SETTINGS_REPL_MASK) |
  (___DEBUG_SETTINGS_REPL_STDIO << ___DEBUG_SETTINGS_REPL_SHIFT);
  setup_params.debug_settings = debug_settings;
  ___setup(&setup_params);
  #if defined(ANDROID)
  ___disable_heartbeat_interrupts();
  #endif
}
Esempio n. 4
0
void run_gambit()
{
  printf("%s", "Setting up Gambit...\n");
  // Taken from gambit, lib/main.c.
  int debug_settings = ___DEBUG_SETTINGS_INITIAL;

  // -:d- (force repl io to be stdin/stdout since terminal isn't
  // -attached)
  debug_settings =
  (debug_settings
   & ~___DEBUG_SETTINGS_REPL_MASK)
  | (___DEBUG_SETTINGS_REPL_STDIO
     << ___DEBUG_SETTINGS_REPL_SHIFT);
  // -:da
  debug_settings =
  (debug_settings
   & ~___DEBUG_SETTINGS_UNCAUGHT_MASK)
  | (___DEBUG_SETTINGS_UNCAUGHT_ALL
     << ___DEBUG_SETTINGS_UNCAUGHT_SHIFT);
  // -:dr
  debug_settings =
  (debug_settings
   & ~___DEBUG_SETTINGS_ERROR_MASK)
  | (___DEBUG_SETTINGS_ERROR_REPL
     << ___DEBUG_SETTINGS_ERROR_SHIFT);

  ___setup_params_reset (&setup_params);
  setup_params.version = ___VERSION;
  setup_params.linker = SCHEME_LIBRARY_LINKER;
  setup_params.debug_settings = debug_settings;

  printf("%s", "Setting up Gambit...\n");

  ___setup(&setup_params);

  printf("%s", "Gambit setup finished...\n");
}
Esempio n. 5
0
void SDL_main(int argc, char** argv)
{
  LOGD("SchemeSpheres", "Setting up Gambit...");
	// Taken from gambit, lib/main.c. 
	int debug_settings = ___DEBUG_SETTINGS_INITIAL;

    // -:d- (force repl io to be stdin/stdout since terminal isn't
    // -attached)
    debug_settings =
        (debug_settings
         & ~___DEBUG_SETTINGS_REPL_MASK)
        | (___DEBUG_SETTINGS_REPL_STDIO
           << ___DEBUG_SETTINGS_REPL_SHIFT);
    // -:da
    debug_settings =
        (debug_settings
         & ~___DEBUG_SETTINGS_UNCAUGHT_MASK)
        | (___DEBUG_SETTINGS_UNCAUGHT_ALL
           << ___DEBUG_SETTINGS_UNCAUGHT_SHIFT);
    // -:dr
    debug_settings =
        (debug_settings
         & ~___DEBUG_SETTINGS_ERROR_MASK)
        | (___DEBUG_SETTINGS_ERROR_REPL
           << ___DEBUG_SETTINGS_ERROR_SHIFT);

  ___setup_params_reset (&setup_params);
	setup_params.version = ___VERSION;
	setup_params.linker = LINKER;
  setup_params.debug_settings = debug_settings;
	
	___setup(&setup_params);

  LOGD("SchemeSpheres", "Running (main)...");
  scheme_main();
}