static SCM gfec_file_helper(void *data) { char *file = data; return scm_c_primitive_load(file); }
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; }
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; }
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; }
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; }
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; }
/** * 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); }
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(); }
/* Initialise Guile and load the Scheme file containing procedures */ void init(void){ scm_init_guile(); scm_c_primitive_load ("../scm/words.scm"); }
static SCM scheme_environment(void * userdata) { scm_c_primitive_load(threadData.filename); return SCM_UNSPECIFIED; }
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; }