コード例 #1
0
ファイル: gfec.c プロジェクト: kleopatra999/gnucash-2
static SCM
gfec_file_helper(void *data)
{
    char *file = data;

    return scm_c_primitive_load(file);
}
コード例 #2
0
ファイル: guile.c プロジェクト: ers35/modserver
static int mod_load_servlet(lua_State *l)
{
  const char *path = luaL_checkstring(l, -1);
  SCM module = scm_c_define_module(path, NULL, NULL);
  SCM prev_module = scm_set_current_module(module);
  
  // TODO: don't define these functions every time for each servlet
  scm_c_define_gsubr("get_arg", 2, 0, 0, &api_get_arg);
  scm_c_define_gsubr("get_method", 1, 0, 0, &api_get_method);
  scm_c_define_gsubr("get_header", 2, 0, 0, &api_get_header);
  scm_c_define_gsubr("set_status", 2, 0, 0, &api_set_status);
  scm_c_define_gsubr("set_header", 3, 0, 0, &api_set_header);
  scm_c_define_gsubr("rwrite", 2, 0, 0, &api_rwrite);
  scm_c_define_gsubr("rflush", 1, 0, 0, &api_rflush);
  
  SCM foo = scm_c_primitive_load(path);
  SCM run_symbol = scm_c_lookup("run");
  SCM run_ref = scm_variable_ref(run_symbol);
  scm_set_current_module(prev_module);
  
  lua_newtable(l);
  lua_pushlightuserdata(l, (void*)run_ref);
  lua_pushcclosure(l, servlet_run, 1);
  lua_setfield(l, -2, "run");
  
  return 1;
}
コード例 #3
0
int main( ){

	SCM func;
	scm_init_guile();
	scm_c_primitive_load( "helloworld.scm" );
	func = scm_variable_ref( scm_c_lookup( "hello_world" ) );
	scm_call_0( func );

	return 0;
}
コード例 #4
0
ファイル: engine.c プロジェクト: gpipes/game_engine_c
int main (int argc, char **argv)
{
  scm_init_guile();
  register_functions(NULL);

  //init script, loads the entire script
  scm_c_primitive_load("init.scm");

  //main script, please write update function, and draw function
  scm_c_primitive_load("main.scm");

  if(SDL_Init(SDL_INIT_VIDEO) != 0) {
    printf("it didn't work :(");
    return 1;
  }
  printf("it worked\n");
  SDL_Quit();
  
  return 0;
}
コード例 #5
0
int main(int argc, char **argv)
{

     /* initialize Guile */
     scm_init_guile();

     /* Register the new C-Guile functions */
		scm_c_define_gsubr("hello-world", 0, 0, 0, (SCM (*)()) scm_hello_world); 

     /* Load the library of Guile functions */
     scm_c_primitive_load("scheme-calling-c.scm");

     return 0;
}
コード例 #6
0
ファイル: scripting.c プロジェクト: pimp-my-code/sxiv
bool init_guile(const char *script) {
  int i;

  static const funcmap_t functions[] = {
    {"it-quit", 0, 0, 0, it_quit_wrapper},
    {"it-switch-mode", 0, 0, 0, it_switch_mode_wrapper},
    {"it-toggle-fullscreen", 0, 0, 0, it_toggle_fullscreen_wrapper},
    {"it-toggle-bar", 0, 0, 0, it_toggle_bar_wrapper},
    {"t-reload-all", 0, 0, 0, t_reload_all_wrapper},
    {"it-reload-image", 0, 0, 0, it_reload_image_wrapper},
    {"it-remove-image", 0, 0, 0, it_remove_image_wrapper},
    {"i-navigate", 1, 0, 0, i_navigate_wrapper},
    {"i-alternate", 0, 0, 0, i_alternate_wrapper},
    {"it-first", 0, 0, 0, it_first_wrapper},
    {"it-n-or-last", 1, 0, 0, it_n_or_last_wrapper},
    {"i-navigate-frame", 1, 0, 0, i_navigate_frame_wrapper},
    {"i-toggle-animation", 0, 0, 0, i_toggle_animation_wrapper},
    {"it-scroll-move", 2, 0, 0, it_scroll_move_wrapper},
    {"it-scroll-screen", 1, 0, 0, it_scroll_screen_wrapper},
    {"i-scroll-to-edge", 1, 0, 0, i_scroll_to_edge_wrapper},
    {"i-zoom", 1, 0, 0, i_zoom_wrapper},
    {"i-set-zoom", 1, 0, 0, i_set_zoom_wrapper},
    {"i-fit-to-win", 1, 0, 0, i_fit_to_win_wrapper},
    {"i-fit-to-img", 0, 0, 0, i_fit_to_img_wrapper},
    {"i-rotate", 1, 0, 0, i_rotate_wrapper},
    {"i-flip", 1, 0, 0, i_flip_wrapper},
    {"i-toggle-antialias", 0, 0, 0, i_toggle_antialias_wrapper},
    {"it-toggle-alpha", 0, 0, 0, it_toggle_alpha_wrapper},
    {"p-set-bar-left", 1, 0, 0, p_set_bar_left_wrapper},
    {"p-set-bar-right", 1, 0, 0, p_set_bar_right_wrapper},
    {"it-add-image", 1, 0, 0, it_add_image_wrapper},
    {"p-get-file-index", 0, 0, 0, p_get_file_index_wrapper},
    {"p-get-file-count", 0, 0, 0, p_get_file_count_wrapper},
    {"it-redraw", 0, 0, 0, it_redraw_wrapper},
  };

  scm_init_guile();
  for (i = 0; i < ARRLEN(functions); i++) {
    scm_c_define_gsubr(functions[i].name,
                       functions[i].req,
                       functions[i].opt,
                       functions[i].rst,
                       functions[i].func);
  }
  
  scm_c_primitive_load(script);
  return true;
}
コード例 #7
0
ファイル: scm_loader.c プロジェクト: Aluminium95/ScmGtkCalc
/**
 * wrapper_body_proc:
 *
 * Wrapper pour lancer la fonction de chargement dans un catch
 */
static SCM
wrapper_body_proc (gpointer data)
{
	gchar* cmd = (gchar*) data;
	return scm_c_primitive_load (cmd);
}
コード例 #8
0
void
GameSession::init()
{
  loops = 0;
  deltas = 0.0;

  start_time = CL_System::get_time ();
  frames = 0;

  collision_mgr       = new CollisionManager();
  buildingtypemanager = new BuildingTypeManager();

  // Load helper functions
  // FIXME: These functions need a better place
  scm_c_primitive_load(path_manager.complete("feuerkraft.scm").c_str());
  scm_c_primitive_load(path_manager.complete("input.scm").c_str());
  
  // Deserialize the game world
  {
    std::cout << "<<<<<<<<<<<<< Parsing map <<<<<<<<<<<<<" << std::endl;
    SCM fdes = scm_open_file (scm_makfrom0str(filename.c_str()), 
                              scm_makfrom0str("r"));
    SCM lst = scm_read (fdes);
    scm_close (fdes);

    // unstable Testing stuff
    //OutputWorldBuilder builder;
    //SexprWorldReader(lst, &builder).run();

    // Now we create the real world
    world = new GameWorld(lst);
    std::cout << ">>>>>>>>>>>>> Parsing map >>>>>>>>>>>>>" << std::endl;
  }
  // End: Test of parsing code

  // The all mighty soldier that the player controlls
  Soldier* soldier = new Soldier(AList());
  soldier->set_position(FloatVector2d (500, 1100));

  {
    Soldier* soldier = new Soldier(AList());
    soldier->set_position(FloatVector2d (1400, 1500));
    SoldierAI* ai = new SoldierAI(soldier);
    world->add(soldier);
    AIManager::instance()->add(ai);
  }

  {
    Soldier* soldier = new Soldier(AList());
    soldier->set_position(FloatVector2d (1300, 1600));
    SoldierAI* ai = new SoldierAI(soldier);
    world->add(soldier);
    AIManager::instance()->add(ai);
  }

  world->add(new RobotTank(660, 1245, 0, 100.0f));
  world->add(new Helicopter(AList()
                            .set_float("x-pos", 600)
                            .set_float("y-pos", 1245)
                            .set_int("type", 0)));
  world->add(new Helicopter(AList()
                            .set_float("x-pos", 600)
                            .set_float("y-pos", 1445)
                            .set_int("type", 1)));
  world->add(new Helicopter(AList()
                            .set_float("x-pos", 660)
                            .set_float("y-pos", 1645)
                            .set_int("type", 2)));

  world->add(new Tank(FloatVector2d (650, 1245), 5, "feuerkraft/tank", "feuerkraft/turret", "feuerkraft/fire2"));
  world->add(new Tank(FloatVector2d (750, 1245), 5, "feuerkraft/tank", "feuerkraft/turret", "feuerkraft/fire2"));
  world->add(new Tank(FloatVector2d (850, 1245), 5, "feuerkraft/tank", "feuerkraft/turret", "feuerkraft/fire2"));

  {
    Tank* tank = new Tank(FloatVector2d (450, 1245), 5, "feuerkraft/tank", "feuerkraft/turret", "feuerkraft/fire2");
    world->add(tank);
    AIManager::instance()->add(new VehicleRoboAI(tank));
  }

  {
    Tank* tank = new Tank(FloatVector2d (0, 1245), 5, "feuerkraft/tank2", "feuerkraft/turret", "feuerkraft/fire2");
    world->add(tank);
    AIManager::instance()->add(new VehicleRoboAI(tank));
  }

  {
    Tank* tank = new Tank(FloatVector2d (-100, 1245), 5, "feuerkraft/tank", "feuerkraft/turret2", "feuerkraft/fire2");
    world->add(tank);
    AIManager::instance()->add(new VehicleRoboAI(tank));
  }

  {
    Tank* tank = new Tank(FloatVector2d (560, 1245), 5, "feuerkraft/tank2", "feuerkraft/turret2", "feuerkraft/fire2");
    world->add(tank);
    VehiclePathAI* ai = new VehiclePathAI(tank);

    ai->drive_to(FloatVector2d(200, 200));
    ai->drive_to(FloatVector2d(500, 200));
    ai->drive_to(FloatVector2d(500, 500));
    ai->drive_to(FloatVector2d(1500, 500));
    ai->drive_to(FloatVector2d(1500, 300));

    AIManager::instance()->add(ai);
  }

  world->add(new Background (resources->get_sprite("feuerkraft/sand"), -10.0f));
  world->add(soldier);

  player = new Player(soldier);
  view   = new View(0, 0, CL_Display::get_width(), CL_Display::get_height(), new PlayerViewUpdater(player));
  DisplayManager::init();
}
コード例 #9
0
ファイル: app.c プロジェクト: pasoev/guile-words
/* Initialise Guile and load the Scheme file containing procedures */
void init(void){
  scm_init_guile();
  scm_c_primitive_load ("../scm/words.scm");
}
コード例 #10
0
ファイル: testguile2.c プロジェクト: Zedzap/play
static SCM scheme_environment(void * userdata)
{
    scm_c_primitive_load(threadData.filename);
    return SCM_UNSPECIFIED;
}
コード例 #11
0
ファイル: main.c プロジェクト: pmyadlowsky/qmx
int main(int argc, char **argv) {
	struct pollfd polls[MAX_POLL_ITEMS];
	int opt, background, fdin, nfds, watch_alsa;
	int con_in, msg_in;
	background = 0;
	watch_alsa = 0;
	client_name = DEFAULT_CLIENT_NAME;
	server_name = DEFAULT_SERVER_NAME;
	msg_port = DEFAULT_MSG_PORT;
	sampling_rate = DEFAULT_SAMPLING_RATE;
	period_frames = DEFAULT_PERIOD_SIZE;
	while ((opt = getopt(argc, argv, "adn:p:P:r:s:")) != -1) {
		switch (opt) {
			case 'a': watch_alsa = 1; break;
			case 'd': background = 1; break;
			case 'j': use_jack = 1; break;
			case 'n': client_name = optarg; break;
			case 'P': msg_port = atoi(optarg); break;
			case 'p': period_frames = atoi(optarg); break;
			case 'r': sampling_rate = atoi(optarg); break;
			case 's': server_name = optarg; break;
			default:
				fprintf(stderr, "invalid option: %c", opt);
				exit(1);
			}
		}
	if (background) {
		set_handler(SIGCHLD, sigsnag);
		if (fork() > 0) _exit(0);
		}
	set_handler(SIGINT, sigsnag);
	set_handler(SIGTERM, sigsnag);
	set_handler(SIGABRT, sigsnag);
	set_handler(SIGHUP, sigsnag);
	set_handler(SIGQUIT, sigsnag);
	scm_init_guile();
	init_env();
	if (use_jack) start_jack(NULL);
	else {
		size_t memsize = QMX_CHANNELS * period_frames * sizeof(sample_t);
		fixed_cauldron = (sample_t *)malloc(memsize);
		int ret = mlock(fixed_cauldron, memsize);
		if (ret == 0) log_msg("MIXMEM locked: %lu\n", memsize);
		else log_msg("MIXMEM not locked: %s\n", strerror(errno));
		}
	start_outbuffer();
	scm_c_define("jack-sampling-rate", scm_from_int(sampling_rate));
	while (optind < argc) {
		log_msg("load %s\n", argv[optind]);
		scm_c_primitive_load(argv[optind]);
		optind++;
		}
	fdin = fileno(stdin);
	nfds = 0;
	con_in = -1;
	if (!background) {
		con_in = nfds;
		polls[nfds].fd = fdin;
		polls[nfds].events = POLLIN;
		nfds++;
		}
	msg_in = -1;
	if (msg_socket() >= 0) {
		msg_in = nfds;
		polls[nfds].fd = msg_socket();
		polls[nfds].events = POLLIN;
		nfds++;
		}
	if (isatty(fdin)) rl_callback_handler_install(prompt, line_handler);
	running = 1;
	if (!use_jack) spawn_detached_thread(mix_thread_abs, NULL);
	while (running) {
		if (watch_alsa) check_card_event();
		if (poll(polls, nfds, POLL_TIMEOUT) < 1) continue;
		if ((con_in >= 0) && (polls[con_in].revents & POLLIN))
			process_line(fdin);
		if ((msg_in >= 0) && (polls[msg_in].revents & POLLIN))
			msg_process();
		}
	if (isatty(fdin)) rl_callback_handler_remove();
	shutdown_env();
	log_msg("bye!\n");
	cleanup();
	return 0;
	}