/* * This is the main function for dumping any node. */ SV * load_node(perl_yaml_loader_t *loader) { /* Get the next parser event */ if (!yaml_parser_parse(&loader->parser, &loader->event)) goto load_error; /* Return NULL when we hit the end of a scope */ if (loader->event.type == YAML_DOCUMENT_END_EVENT || loader->event.type == YAML_MAPPING_END_EVENT || loader->event.type == YAML_SEQUENCE_END_EVENT) return NULL; /* Handle loading a mapping */ if (loader->event.type == YAML_MAPPING_START_EVENT) { SV *hash_ref; char *tag = (char *)loader->event.data.mapping_start.tag; /* Handle mapping tagged as a Perl hard reference */ if (tag && strEQ(tag, TAG_PERL_REF)) return load_scalar_ref(loader); /* Handle mapping tagged as a Perl typeglob */ if (tag && strEQ(tag, TAG_PERL_GLOB)) return load_glob(loader); /* Load the mapping into a hash ref and return it */ return load_mapping(loader, NULL); } /* Handle loading a sequence into an array */ if (loader->event.type == YAML_SEQUENCE_START_EVENT) return load_sequence(loader); /* Handle loading a scalar */ if (loader->event.type == YAML_SCALAR_EVENT) return load_scalar(loader); /* Handle loading an alias node */ if (loader->event.type == YAML_ALIAS_EVENT) return load_alias(loader); /* Some kind of error occurred */ if (loader->event.type == YAML_NO_EVENT) croak(loader_error_msg(loader, NULL)); croak(ERRMSG "Invalid event '%d' at top level", (int) loader->event.type); load_error: croak(loader_error_msg(loader, NULL)); }
/** * Computes a partitionment of actors on threads from an XML file given in parameter. */ mapping_t* map_actors(network_t *network) { mapping_t *mapping; assert(network != NULL); if (mapping_file == NULL) { // Create mapping with only one partition mapping = allocate_mapping(1, network->nb_actors); mapping->threads_affinities[0] = 0; mapping->partitions_size[0] = network->nb_actors; memcpy(mapping->partitions_of_actors[0], network->actors, network->nb_actors * sizeof(actor_t*)); return mapping; } else { mapping = load_mapping(mapping_file, network); } return mapping; }
/** * Computes a partitionment of actors on threads from an XML file given in parameter. */ mapping_t* map_actors(network_t *network) { mapping_t *mapping; assert(network != NULL); if (opt->mapping_input_file == NULL) { // Create mapping with only one partition mapping = allocate_mapping(1, network->nb_actors); mapping->threads_affinities[0] = 0; mapping->partitions_size[0] = network->nb_actors; memcpy(mapping->partitions_of_actors[0], network->actors, network->nb_actors * sizeof(actor_t*)); return mapping; } else { #ifdef ROXML_ENABLE mapping = load_mapping(opt->mapping_input_file, network); if(mapping->number_of_threads > opt->nb_processors){ opt->nb_processors = mapping->number_of_threads; } #endif } return mapping; }
int input_evdev_init(EvdevController* controller, const char* device, const char* custom_mapping_fname = NULL) { load_libevdev(); char name[256] = "Unknown"; printf("evdev: Trying to open device at '%s'\n", device); int fd = open(device, O_RDWR); if (fd >= 0) { fcntl(fd, F_SETFL, O_NONBLOCK); if(ioctl(fd, EVIOCGNAME(sizeof(name)), name) < 0) { perror("evdev: ioctl"); return -2; } else { printf("evdev: Found '%s' at '%s'\n", name, device); controller->fd = fd; const char* mapping_fname; if(custom_mapping_fname != NULL) { mapping_fname = custom_mapping_fname; } else { #if defined(TARGET_PANDORA) mapping_fname = "controller_pandora.cfg"; #elif defined(TARGET_GCW0) mapping_fname = "controller_gcwz.cfg"; #else if (strcmp(name, "Microsoft X-Box 360 pad") == 0 || strcmp(name, "Xbox 360 Wireless Receiver") == 0 || strcmp(name, "Xbox 360 Wireless Receiver (XBOX)") == 0) { mapping_fname = "controller_xpad.cfg"; } else if (strstr(name, "Xbox Gamepad (userspace driver)") != NULL) { mapping_fname = "controller_xboxdrv.cfg"; } else if (strstr(name, "keyboard") != NULL || strstr(name, "Keyboard") != NULL) { mapping_fname = "keyboard.cfg"; } else { mapping_fname = "controller_generic.cfg"; } #endif } if(loaded_mappings.count(string(mapping_fname)) == 0) { FILE* mapping_fd = NULL; if(mapping_fname[0] == '/') { // Absolute mapping mapping_fd = fopen(mapping_fname, "r"); } else { // Mapping from ~/.reicast/mappings/ size_t size_needed = snprintf(NULL, 0, EVDEV_MAPPING_PATH, mapping_fname) + 1; char* mapping_path = (char*)malloc(size_needed); sprintf(mapping_path, EVDEV_MAPPING_PATH, mapping_fname); mapping_fd = fopen(get_readonly_data_path(mapping_path).c_str(), "r"); free(mapping_path); } if(mapping_fd != NULL) { printf("evdev: reading mapping file: '%s'\n", mapping_fname); loaded_mappings.insert(std::make_pair(string(mapping_fname), load_mapping(mapping_fd))); fclose(mapping_fd); } else { printf("evdev: unable to open mapping file '%s'\n", mapping_fname); perror("evdev"); return -3; } } controller->mapping = &loaded_mappings[string(mapping_fname)]; printf("evdev: Using '%s' mapping\n", controller->mapping->name); controller->init(); return 0; } } else { perror("evdev: open"); return -1; } }
int main( int argc, char* argv[] ) { //Initialisieren ZWattribute=ZWgetattribute(); load_options(); ZWinitparameter(); ZWattribute->strech=stretched; if (fullscreen) { ZWattribute->width=resolutionx; ZWattribute->height=resolutiony; ZWattribute->sdlflags|=SDL_FULLSCREEN; } else { ZWattribute->width=windowx; ZWattribute->height=windowy; } ZWattribute->quit_function=quit_function; ZWattribute->initflags|=SDL_INIT_AUDIO; load_mapping(); ZWinitsdl(); int audio_rate = 44100; Uint16 audio_format = AUDIO_S16SYS; int audio_channels = 2; int audio_buffers = 2048; if (Mix_OpenAudio(audio_rate, audio_format, audio_channels, audio_buffers)) { printf("Unable to open audio!\n"); exit(1); } if ((ZWattribute->sdlflags & SDL_FULLSCREEN)==0) //SDL_FULLSCREEN nicht mehr gesetzt? AAAAHHHH! { fullscreen=0; windowx=ZWattribute->width; windowy=ZWattribute->height; resolutionx=ZWattribute->resolution[0].x; resolutiony=ZWattribute->resolution[0].y; } ZWinitopengl(); setup_opengl(); glHint(GL_POLYGON_SMOOTH_HINT,GL_FASTEST); init_var(); //Level laden if (argc<2) { printf("Not enough arguments\n"); printf("testboard file.opxml [player]\n"); ZWquitfont(); ZWquitsdl(); return 1; } if (loadlevel(argv[1])==1) { printf("File %s not found\n",argv[1]); ZWquitfont(); ZWquitsdl(); return 1; } refreshsetlist(); //Minispielliste laden load_minigames(); save_minigames(); /*//zu Debugzwecken Set 0 bis 60 ausgeben: for (int a=0;a<61;a++) { if (setbynr[a]==NULL) printf("Set %i: NULL\n",a); else printf("Set %i: \"%s\"\n",a,setbynr[a]->type); }*/ //Debug if (argc>3 && argv[3][0]=='c') all_are_cpu=1; //Spielvorbereitungen if (argc>2) playernum=atoi(argv[2]); playernum=(playernum-1)%8+1; if (argc>3 && argv[3][1]=='2') { playernum=((playernum+1)/2)*2; if (playernum<4) playernum=4; teamsize=2; } if (argc>3 && argv[3][1]=='3') { playernum=6; teamsize=3; } if (argc>3 && argv[3][1]=='4') { playernum=8; teamsize=4; } pset startset=getsetbyname((char*)"start"); if (startset==NULL) startset=firstset; prepare_game(startset,1); ZWreset_virtuell_joytick(); //Controller festlegen: for (int a=0;a<playernum;a++) { if (all_are_cpu) maindata.player[a].joystick_nr=-1; else maindata.player[a].joystick_nr=a%ZWattribute->realjoystickcount; } calib_all_controllers(); //Spiel starten Mix_FadeInMusic(backgroundmusic, -1,FADE_IN_TIME); ZWattribute->newticks=SDL_GetTicks(); ZWschleifeex((void(*)(void*))draw_main,(int(*)(void*))calc_main_thread,(int(*)(void*))calc_main, (void*)(&maindata),sizeof(tmaindata)); Mix_HaltMusic(); //alles wieder freigeben reset_after_game(); del_objects(); del_sounds(); Mix_CloseAudio(); ZWquitfont(); ZWquitsdl(); return 0; }
/* * This is the main function for dumping any node. */ SV * load_node(perl_yaml_loader_t *loader) { SV* return_sv = NULL; /* This uses stack, but avoids (severe!) memory leaks */ yaml_event_t uplevel_event; uplevel_event = loader->event; /* Get the next parser event */ if (!yaml_parser_parse(&loader->parser, &loader->event)) goto load_error; /* These events don't need yaml_event_delete */ /* Some kind of error occurred */ if (loader->event.type == YAML_NO_EVENT) goto load_error; /* Return NULL when we hit the end of a scope */ if (loader->event.type == YAML_DOCUMENT_END_EVENT || loader->event.type == YAML_MAPPING_END_EVENT || loader->event.type == YAML_SEQUENCE_END_EVENT) { /* restore the uplevel event, so it can be properly deleted */ loader->event = uplevel_event; return return_sv; } /* The rest all need cleanup */ switch (loader->event.type) { char *tag; /* Handle loading a mapping */ case YAML_MAPPING_START_EVENT: tag = (char *)loader->event.data.mapping_start.tag; /* Handle mapping tagged as a Perl hard reference */ if (tag && strEQ(tag, TAG_PERL_REF)) { return_sv = load_scalar_ref(loader); break; } /* Handle mapping tagged as a Perl typeglob */ if (tag && strEQ(tag, TAG_PERL_GLOB)) { return_sv = load_glob(loader); break; } return_sv = load_mapping(loader, NULL); break; /* Handle loading a sequence into an array */ case YAML_SEQUENCE_START_EVENT: return_sv = load_sequence(loader); break; /* Handle loading a scalar */ case YAML_SCALAR_EVENT: return_sv = load_scalar(loader); break; /* Handle loading an alias node */ case YAML_ALIAS_EVENT: return_sv = load_alias(loader); break; default: croak("%sInvalid event '%d' at top level", ERRMSG, (int) loader->event.type); } yaml_event_delete(&loader->event); /* restore the uplevel event, so it can be properly deleted */ loader->event = uplevel_event; return return_sv; load_error: croak("%s", loader_error_msg(loader, NULL)); }